From a022fd63f593d8358f4ee5825c3f77c7efac924a Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 13 Nov 2024 11:05:37 -0800 Subject: [PATCH 01/19] Fix CLGS validation failure message --- src/geophires_x/AGSEconomics.py | 2 +- src/geophires_x/AGSWellBores.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/geophires_x/AGSEconomics.py b/src/geophires_x/AGSEconomics.py index 4db72ec5..b4d99424 100644 --- a/src/geophires_x/AGSEconomics.py +++ b/src/geophires_x/AGSEconomics.py @@ -189,7 +189,7 @@ def Calculate(self, model: Model) -> None: # use the CLGS-Style economic calculations err = self.verify(model) if err > 0: - msg = 'Error: GEOPHIRES failed to Failed to validate CLGS input value. Exiting....' + msg = 'Error: GEOPHIRES failed to validate CLGS input value. Exiting...' print(msg) raise RuntimeError(msg) diff --git a/src/geophires_x/AGSWellBores.py b/src/geophires_x/AGSWellBores.py index c46f5f29..7604a8ae 100644 --- a/src/geophires_x/AGSWellBores.py +++ b/src/geophires_x/AGSWellBores.py @@ -977,7 +977,7 @@ def Calculate(self, model: Model) -> None: # do the CLGS-style calculation err = self.verify(model) if err > 0: - msg = 'Error: GEOPHIRES failed to Failed to validate CLGS input value. Exiting....' + msg = 'Error: GEOPHIRES failed to validate CLGS input value. Exiting...' model.logger.fatal(msg) print(msg) From 4f73e4846b1afe12beb6e65fe9f10871a6f8c0c1 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Thu, 14 Nov 2024 09:18:12 -0800 Subject: [PATCH 02/19] DefaultValue instead of value --- src/geophires_x/SurfacePlantHeatPump.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/geophires_x/SurfacePlantHeatPump.py b/src/geophires_x/SurfacePlantHeatPump.py index 09316b65..34f72e1c 100644 --- a/src/geophires_x/SurfacePlantHeatPump.py +++ b/src/geophires_x/SurfacePlantHeatPump.py @@ -41,7 +41,7 @@ def __init__(self, model: Model): self.heat_pump_cop = self.ParameterDict[self.heat_pump_cop.Name] = floatParameter( "Heat Pump COP", - value=5, + DefaultValue=5, Min=1, Max=10, UnitType=Units.PERCENT, From 6413ae48d51b47c10e450886f078034d656df2d7 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 19 Nov 2024 10:01:41 -0800 Subject: [PATCH 03/19] Parse Investment Tax Credit in result - https://github.com/NREL/GEOPHIRES-X/issues/312 --- src/geophires_x_client/geophires_x_result.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/geophires_x_client/geophires_x_result.py b/src/geophires_x_client/geophires_x_result.py index fe21645d..ab6a7b76 100644 --- a/src/geophires_x_client/geophires_x_result.py +++ b/src/geophires_x_client/geophires_x_result.py @@ -205,6 +205,7 @@ class GeophiresXResult: 'Field gathering system costs', 'Total surface equipment costs', 'Exploration costs', + 'Investment Tax Credit', 'Total capital costs', # AGS/CLGS 'Total CAPEX', From 4125bd07f602a9962803079d5d9d5fd3092fbdd4 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 19 Nov 2024 10:02:24 -0800 Subject: [PATCH 04/19] =?UTF-8?q?Bump=20version:=203.6.4=20=E2=86=92=203.6?= =?UTF-8?q?.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bumpversion.cfg | 2 +- .cookiecutterrc | 2 +- README.rst | 4 ++-- docs/conf.py | 2 +- setup.py | 2 +- src/geophires_x/__init__.py | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index efb7b0c6..f994e286 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 3.6.4 +current_version = 3.6.5 commit = True tag = True diff --git a/.cookiecutterrc b/.cookiecutterrc index 9d533fde..fba9d45e 100644 --- a/.cookiecutterrc +++ b/.cookiecutterrc @@ -54,7 +54,7 @@ default_context: sphinx_doctest: "no" sphinx_theme: "sphinx-py3doc-enhanced-theme" test_matrix_separate_coverage: "no" - version: 3.6.4 + version: 3.6.5 version_manager: "bump2version" website: "https://github.com/NREL" year_from: "2023" diff --git a/README.rst b/README.rst index c533b420..a6c2d66c 100644 --- a/README.rst +++ b/README.rst @@ -51,9 +51,9 @@ Free software: `MIT license `__ :alt: Supported implementations :target: https://pypi.org/project/geophires-x -.. |commits-since| image:: https://img.shields.io/github/commits-since/softwareengineerprogrammer/GEOPHIRES-X/v3.6.4.svg +.. |commits-since| image:: https://img.shields.io/github/commits-since/softwareengineerprogrammer/GEOPHIRES-X/v3.6.5.svg :alt: Commits since latest release - :target: https://github.com/softwareengineerprogrammer/GEOPHIRES-X/compare/v3.6.4...main + :target: https://github.com/softwareengineerprogrammer/GEOPHIRES-X/compare/v3.6.5...main .. |docs| image:: https://readthedocs.org/projects/GEOPHIRES-X/badge/?style=flat :target: https://nrel.github.io/GEOPHIRES-X diff --git a/docs/conf.py b/docs/conf.py index 7e0de891..21a2dced 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -18,7 +18,7 @@ year = '2024' author = 'NREL' copyright = f'{year}, {author}' -version = release = '3.6.4' +version = release = '3.6.5' pygments_style = 'trac' templates_path = ['./templates'] diff --git a/setup.py b/setup.py index d632b58b..2e382d49 100755 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ def read(*names, **kwargs): setup( name='geophires-x', - version='3.6.4', + version='3.6.5', license='MIT', description='GEOPHIRES is a free and open-source geothermal techno-economic simulator.', long_description='{}\n{}'.format( diff --git a/src/geophires_x/__init__.py b/src/geophires_x/__init__.py index 99a10f6d..8c2897aa 100644 --- a/src/geophires_x/__init__.py +++ b/src/geophires_x/__init__.py @@ -1 +1 @@ -__version__ = '3.6.4' +__version__ = '3.6.5' From 49d6503b3ed476d9e32f42bb866ee3df9c33dd9d Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 19 Nov 2024 14:34:14 -0800 Subject: [PATCH 05/19] Re-enable S-DAC-GT example test case --- tests/test_geophires_x.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_geophires_x.py b/tests/test_geophires_x.py index 140c64e6..49689ae9 100644 --- a/tests/test_geophires_x.py +++ b/tests/test_geophires_x.py @@ -159,7 +159,7 @@ def get_output_file_for_example(example_file: str): example_files = list( filter( lambda example_file_path: example_file_path.startswith( - ('example', 'Beckers_et_al', 'SUTRA', 'Wanju', 'Fervo') + ('example', 'Beckers_et_al', 'SUTRA', 'Wanju', 'Fervo', 'S-DAC-GT') ) and '.out' not in example_file_path, self._list_test_files_dir(test_files_dir='examples'), From 8e4fb213d15baeafcfc6836f89a0a554db2eecb0 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 19 Nov 2024 14:35:11 -0800 Subject: [PATCH 06/19] =?UTF-8?q?Bump=20version:=203.6.5=20=E2=86=92=203.6?= =?UTF-8?q?.6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bumpversion.cfg | 2 +- .cookiecutterrc | 2 +- README.rst | 4 ++-- docs/conf.py | 2 +- setup.py | 2 +- src/geophires_x/__init__.py | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index f994e286..17e40237 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 3.6.5 +current_version = 3.6.6 commit = True tag = True diff --git a/.cookiecutterrc b/.cookiecutterrc index fba9d45e..df8e5819 100644 --- a/.cookiecutterrc +++ b/.cookiecutterrc @@ -54,7 +54,7 @@ default_context: sphinx_doctest: "no" sphinx_theme: "sphinx-py3doc-enhanced-theme" test_matrix_separate_coverage: "no" - version: 3.6.5 + version: 3.6.6 version_manager: "bump2version" website: "https://github.com/NREL" year_from: "2023" diff --git a/README.rst b/README.rst index a6c2d66c..10a4e411 100644 --- a/README.rst +++ b/README.rst @@ -51,9 +51,9 @@ Free software: `MIT license `__ :alt: Supported implementations :target: https://pypi.org/project/geophires-x -.. |commits-since| image:: https://img.shields.io/github/commits-since/softwareengineerprogrammer/GEOPHIRES-X/v3.6.5.svg +.. |commits-since| image:: https://img.shields.io/github/commits-since/softwareengineerprogrammer/GEOPHIRES-X/v3.6.6.svg :alt: Commits since latest release - :target: https://github.com/softwareengineerprogrammer/GEOPHIRES-X/compare/v3.6.5...main + :target: https://github.com/softwareengineerprogrammer/GEOPHIRES-X/compare/v3.6.6...main .. |docs| image:: https://readthedocs.org/projects/GEOPHIRES-X/badge/?style=flat :target: https://nrel.github.io/GEOPHIRES-X diff --git a/docs/conf.py b/docs/conf.py index 21a2dced..188fde8c 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -18,7 +18,7 @@ year = '2024' author = 'NREL' copyright = f'{year}, {author}' -version = release = '3.6.5' +version = release = '3.6.6' pygments_style = 'trac' templates_path = ['./templates'] diff --git a/setup.py b/setup.py index 2e382d49..7769be33 100755 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ def read(*names, **kwargs): setup( name='geophires-x', - version='3.6.5', + version='3.6.6', license='MIT', description='GEOPHIRES is a free and open-source geothermal techno-economic simulator.', long_description='{}\n{}'.format( diff --git a/src/geophires_x/__init__.py b/src/geophires_x/__init__.py index 8c2897aa..20333d18 100644 --- a/src/geophires_x/__init__.py +++ b/src/geophires_x/__init__.py @@ -1 +1 @@ -__version__ = '3.6.5' +__version__ = '3.6.6' From a930d609e8759d907f99615f8550390998a73bfa Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 20 Nov 2024 08:56:23 -0800 Subject: [PATCH 07/19] Link version 3.5 announcement session recording in v3.5 changelog entry --- CHANGELOG.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index b539288b..ac3550da 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -31,6 +31,7 @@ Affected users who do not want the new behavior can specify absolute output path `release `__ | `diff `__ Milestone version for case studies, SHR temperatures, and other changes since 3.0. +An overview is given in the July 2024 NREL GEOPHIRES Workshop `Version 3.5 Announcement session recording `__. 3.5.3: SBT Reservoir Model (Slender Body Theory) From 69e51f261478b24adb2efef7d89d67472bbd46a1 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 20 Nov 2024 08:59:55 -0800 Subject: [PATCH 08/19] README updates: Tweak descriptions in Examples table, list Parameters section first in Documentation section, add NREL GEOPHIRES Workshop session recordings Videos section, add HIP-RA & Monte Carlo web interface links. --- README.rst | 53 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/README.rst b/README.rst index 10a4e411..4d746c40 100644 --- a/README.rst +++ b/README.rst @@ -251,6 +251,13 @@ You may also optionally pass the output file as well:: Documentation ============= + +Parameters +---------- + +Available parameters are documented in the `Parameters Reference `__. + + Examples -------- @@ -317,27 +324,27 @@ Example-specific web interface deeplinks are listed in the Link column. - `example13.txt `__ - `.out `__ - `link `__ - * - AGS: Coaxial sCO2: Heat (Beckers et. al 2023) + * - AGS: Coaxial sCO2: Heat - `Beckers_et_al_2023_Tabulated_Database_Coaxial_sCO2_heat.txt `__ - `.out `__ - `link `__ - * - AGS: Coaxial Water: Heat (Beckers et. al 2023) + * - AGS: Coaxial Water: Heat - `Beckers_et_al_2023_Tabulated_Database_Coaxial_water_heat.txt `__ - `.out `__ - `link `__ - * - AGS: Uloop sCO2: Electricity (Beckers et. al 2023) + * - AGS: Uloop sCO2: Electricity - `Beckers_et_al_2023_Tabulated_Database_Uloop_sCO2_elec.txt `__ - `.out `__ - `link `__ - * - AGS: Uloop sCO2: Heat (Beckers et. al 2023) + * - AGS: Uloop sCO2: Heat - `Beckers_et_al_2023_Tabulated_Database_Uloop_sCO2_heat.txt `__ - `.out `__ - `link `__ - * - AGS: Uloop Water: Electricity (Beckers et. al 2023) + * - AGS: Uloop Water: Electricity - `Beckers_et_al_2023_Tabulated_Database_Uloop_water_elec.txt `__ - `.out `__ - `link `__ - * - CLGS: Uloop Water: Heat (Beckers et. al 2023) + * - CLGS: Uloop Water: Heat - `Beckers_et_al_2023_Tabulated_Database_Uloop_water_heat.txt `__ - `.out `__ - `link `__ @@ -353,15 +360,15 @@ Example-specific web interface deeplinks are listed in the Link column. - `Fervo_Norbeck_Latimer_2023.txt `__ - `.out `__ - `link `__ - * - Fervo Project Cape + * - Fervo Cape Station 1 - `Fervo_Project_Cape.txt `__ - `.out `__ - `link `__ - * - Fervo Project Cape 2 + * - Fervo Cape Station 2: 2024 Results - `Fervo_Project_Cape-2.txt `__ - `.out `__ - `link `__ - * - Fervo Project Cape 3 + * - Fervo Cape Station 3: 400 MWe Production - `Fervo_Project_Cape-3.txt `__ - `.out `__ - `link `__ @@ -382,33 +389,35 @@ Example-specific web interface deeplinks are listed in the Link column. - `.out `__ - `link `__ +Videos +------ -Parameters ----------- - -Available parameters are documented in the `Parameters Reference `__. - - -Extending GEOPHIRES-X ---------------------- -* `How to extend GEOPHIRES-X `__ user guide - - - `Extension example: SUTRA `__ +`NREL GEOPHIRES Workshop: Features Overview & Examples `__ +`NREL GEOPHIRES Workshop: Case Studies `__ HIP-RA: Heat in Place - Resource Assessment ------------------------------------------- * `HIP-RA-X README `__ -* `HIP-RA-X Parameters Reference `__ +* `HIP-RA-X Parameters Reference `__ +* A HIP-RA web interface is available at `gtp.scientificwebservices.com/hip-ra `__. -.. TODO switch over to https://nrel.github.io/GEOPHIRES-X/hip_ra_x_parameters.html once merged Monte Carlo ----------- `Monte Carlo User Guide `__ +A Monte Carlo web interface is available at `gtp.scientificwebservices.com/monte-carlo `__. + +Extending GEOPHIRES-X +--------------------- +* `How to extend GEOPHIRES-X `__ user guide + + - `Extension example: SUTRA `__ + + Additional Documentation ------------------------ The `GEOPHIRES v2.0 (previous version's) user manual `__ describes GEOPHIRES's high-level software architecture. From c7f3f0cf2c3bc969aab496b394774aaa30779065 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 20 Nov 2024 10:03:30 -0800 Subject: [PATCH 09/19] Port overview from GEOPHIRES v2.0 user manual to README --- README.rst | 55 +++++++++++++++++- ...phires-architecture-diagram_2024-11-20.png | Bin 0 -> 87660 bytes 2 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 References/geophires-architecture-diagram_2024-11-20.png diff --git a/README.rst b/README.rst index 4d746c40..5d7befe9 100644 --- a/README.rst +++ b/README.rst @@ -251,17 +251,66 @@ You may also optionally pass the output file as well:: Documentation ============= +Overview +-------- + +GEOPHIRES combines reservoir, wellbore, surface plant, and economic and cost models +and correlations to estimate the capital and operation and maintenance costs, +instantaneous and lifetime energy production, and overall levelized cost of energy of a +geothermal plant. + +The high-level software architecture is illustrated in the diagram below. Green, orange and blue rectangles +refer to internal GEOPHIRES components, external user-interface components, and +external reservoir simulators (TOUGH2), respectively. Rectangles with solid outline are +always executed during a simulation run; rectangles with dashed outline refer to optional +or user-provided components. + +|GEOPHIRES Architecture Diagram| + +.. |GEOPHIRES Architecture Diagram| image:: References/geophires-architecture-diagram_2024-11-20.png + :alt: GEOPHIRES Architecture Diagram + +GEOPHIRES has a variety of different reservoir models including (1) Multiple parallel fractures model; +(2) 1-Dimensional linear heat sweep model; +(3) M/A thermal drawdown parameter model; +(4) Percentage temperature drawdown model; +(5) User-provided reservoir temperature production data; +(6) Coupling to TOUGH2 external reservoir simulator; +(7) SUTRA: Reservoir Thermal Energy Storage (RTES; also known as Underground Thermal Energy Storage - UTES); +(8) Slender Body Theory (SBT); +(9) Cylindrical. + +GEOPHIRES can simulate three different end-uses of the geothermal heat: (1) +direct-use heat (e.g. for industrial processing heating or residential space heating); +(2) electricity (with subcritical ORC, supercritical ORC, single-flash, or double-flash plant); +(3) co-generation of heat and electricity. The co-generation option considers bottoming +cycle, topping cycle, and parallel cycle. + +GEOPHIRES has 4 economic models to calculate the levelized cost of heat or +electricity: (1) fixed charge rate (FCR) model; +(2) standard discounting levelized cost model; +(3) BICYCLE model; +(4) CLGS. + +The capital and O&M costs for the different geothermal system components (exploration, +well drilling, surface plant, etc.) are either provided by the user or calculated with built-in +correlations. Parameters ---------- Available parameters are documented in the `Parameters Reference `__. +Note that many parameters are interrelated and/or conditionally dependent on one another; +reviewing the GEOPHIRES example(s) relevant to your use case in the following section +is strongly recommended to gain a working understanding of how to construct valid sets of input parameters. + Examples -------- -GEOPHIRES includes a variety of examples demonstrating its features and case studies for different types of geothermal systems. +GEOPHIRES includes a variety of examples input files demonstrating its features for different types of geothermal systems +and case studies of real-world geothermal projects. Starting with an existing GEOPHIRES example that is similar to your intended use/application can be an easier approach to using GEOPHIRES than constructing your own inputs from scratch. Example input ``.txt`` files and corresponding case report ``.out`` files are available in the `tests/examples directory `__ of the repository. @@ -356,11 +405,11 @@ Example-specific web interface deeplinks are listed in the Link column. - `example_multiple_gradients.txt `__ - `.out `__ - `link `__ - * - Fervo Project Red (Norbeck J.H. and Latimer T.M. 2023.) + * - Fervo Project Red (2023) - `Fervo_Norbeck_Latimer_2023.txt `__ - `.out `__ - `link `__ - * - Fervo Cape Station 1 + * - Fervo Cape Station 1: 2023 Results - `Fervo_Project_Cape.txt `__ - `.out `__ - `link `__ diff --git a/References/geophires-architecture-diagram_2024-11-20.png b/References/geophires-architecture-diagram_2024-11-20.png new file mode 100644 index 0000000000000000000000000000000000000000..3171fb5726ca05d5cf97461975448177aed908ee GIT binary patch literal 87660 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

FchPa(?-#n$4rxu>u$JGs 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 literal 0 HcmV?d00001 From 48e2c69dcba5568b82be20332686d29a828c3db6 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 20 Nov 2024 10:10:39 -0800 Subject: [PATCH 10/19] Update Additional Documentation section --- README.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 5d7befe9..58289523 100644 --- a/README.rst +++ b/README.rst @@ -469,11 +469,11 @@ Extending GEOPHIRES-X Additional Documentation ------------------------ -The `GEOPHIRES v2.0 (previous version's) user manual `__ describes GEOPHIRES's high-level software architecture. -Theoretical basis for GEOPHIRES: `GEOPHIRES v2.0: updated geothermal techno‐economic simulation tool `__ +Theoretical basis for GEOPHIRES: `GEOPHIRES v2.0: updated geothermal techno‐economic simulation tool `__; +`accompanying GEOPHIRES v2.0 user manual `__. -Additional materials in `/References `__ +Additional materials can be found in `/References `__. Development From 5a432b00c1fd7addbabc3800ea35463130c762a9 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 20 Nov 2024 10:35:18 -0800 Subject: [PATCH 11/19] Example descriptions; formatting consistency --- README.rst | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/README.rst b/README.rst index 58289523..4c7fc3a2 100644 --- a/README.rst +++ b/README.rst @@ -325,7 +325,7 @@ Example-specific web interface deeplinks are listed in the Link column. - Input file - Case report file - Link - * - Example 1 + * - Example 1: EGS Electricity - `example1.txt `__ - `.out `__ - `link `__ @@ -333,27 +333,31 @@ Example-specific web interface deeplinks are listed in the Link column. - `example1_addons.txt `__ - `.out `__ - `link `__ - * - Example 2 + * - Example 2: EGS Direct-Use Heat - `example2.txt `__ - `.out `__ - `link `__ - * - Example 3 + * - Example 3: EGS Co-generation - `example3.txt `__ - `.out `__ - `link `__ - * - Example 4 + * - Example 4: Hydrothermal Electricity - `example4.txt `__ - `.out `__ - `link `__ - * - Example 5 + * - Example 5: User-Provided Reservoir Data - `example5.txt `__ - `.out `__ - `link `__ - * - Example 8 + * - Example 6: TOUGH2 + - `example6.txt `__\* + - + - + * - Example 8: Cornell Direct-Use Heat - `example8.txt `__ - `.out `__ - `link `__ - * - Example 9 + * - Example 9: Cornell Electricity - `example9.txt `__ - `.out `__ - `link `__ @@ -369,7 +373,7 @@ Example-specific web interface deeplinks are listed in the Link column. - `example12_DH.txt `__ - `.out `__ - `link `__ - * - Example 13 + * - Example 13: Redrilling due to Drawdown - `example13.txt `__ - `.out `__ - `link `__ @@ -438,6 +442,8 @@ Example-specific web interface deeplinks are listed in the Link column. - `.out `__ - `link `__ +*\*GEOPHIRES v2.0 input file* + Videos ------ @@ -448,9 +454,11 @@ Videos HIP-RA: Heat in Place - Resource Assessment ------------------------------------------- -* `HIP-RA-X README `__ -* `HIP-RA-X Parameters Reference `__ -* A HIP-RA web interface is available at `gtp.scientificwebservices.com/hip-ra `__. +`HIP-RA-X README `__ + +`HIP-RA-X Parameters Reference `__ + +A HIP-RA web interface is available at `gtp.scientificwebservices.com/hip-ra `__. Monte Carlo @@ -462,9 +470,9 @@ A Monte Carlo web interface is available at `gtp.scientificwebservices.com/monte Extending GEOPHIRES-X --------------------- -* `How to extend GEOPHIRES-X `__ user guide +`How to extend GEOPHIRES-X `__ user guide - - `Extension example: SUTRA `__ +`Extension example: SUTRA `__ Additional Documentation From 2eac69d165febc6ea26427efc05e31c472348252 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 20 Nov 2024 10:52:15 -0800 Subject: [PATCH 12/19] Link to Documentation section from README overview --- README.rst | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index 4c7fc3a2..872cbe8d 100644 --- a/README.rst +++ b/README.rst @@ -7,7 +7,12 @@ Overview .. |GEOPHIRES Logo| image:: geophires-logo.png :alt: GEOPHIRES Logo -GEOPHIRES is a free and open-source geothermal techno-economic simulator. GEOPHIRES combines reservoir, wellbore, surface plant, and economic models to estimate the capital and operation and maintenance costs, instantaneous and lifetime energy production, and overall levelized cost of energy of a geothermal plant. Various reservoir conditions (EGS, doublets, etc.) and end-use options (electricity, direct-use heat, cogeneration) can be modeled. Users are encouraged to build upon to the GEOPHIRES framework to implement their own correlations and models. +GEOPHIRES is a free and open-source geothermal techno-economic simulator. +GEOPHIRES combines reservoir, wellbore, surface plant, and economic models to estimate the capital and operation and maintenance costs, +instantaneous and lifetime energy production, and overall levelized cost of energy of a geothermal plant. +Various reservoir conditions (EGS, doublets, etc.) and end-use options (electricity, direct-use heat, cogeneration) can be modeled. +Users are encouraged to build upon to the GEOPHIRES framework to implement their own correlations and models. +See the `Documentation`_ section below for more information. GEOPHIRES-X is the successor version to `GEOPHIRES v2.0 `__ (see `CHANGELOG `__ for more info). @@ -479,7 +484,7 @@ Additional Documentation ------------------------ Theoretical basis for GEOPHIRES: `GEOPHIRES v2.0: updated geothermal techno‐economic simulation tool `__; -`accompanying GEOPHIRES v2.0 user manual `__. +accompanying `GEOPHIRES v2.0 user manual `__. Additional materials can be found in `/References `__. From 57690c23744acd92b3521bc3bb73df224a4c9afc Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 20 Nov 2024 10:59:06 -0800 Subject: [PATCH 13/19] Address duplicate Overview section check failure (remove unnecessary Overview sub-header from Documentation section) --- README.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.rst b/README.rst index 872cbe8d..d03bb399 100644 --- a/README.rst +++ b/README.rst @@ -256,9 +256,6 @@ You may also optionally pass the output file as well:: Documentation ============= -Overview --------- - GEOPHIRES combines reservoir, wellbore, surface plant, and economic and cost models and correlations to estimate the capital and operation and maintenance costs, instantaneous and lifetime energy production, and overall levelized cost of energy of a From 3617d86f36bd8d272a6d3c1c1300f2b1e2e9d5c3 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Thu, 21 Nov 2024 09:58:59 -0800 Subject: [PATCH 14/19] Update Fervo example descriptions/citations --- tests/examples/Fervo_Norbeck_Latimer_2023.txt | 2 +- tests/examples/Fervo_Project_Cape-2.txt | 3 ++- tests/examples/Fervo_Project_Cape-3.txt | 4 ++-- tests/examples/Fervo_Project_Cape.txt | 5 ++++- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/tests/examples/Fervo_Norbeck_Latimer_2023.txt b/tests/examples/Fervo_Norbeck_Latimer_2023.txt index c22658f3..ec5eb1bf 100644 --- a/tests/examples/Fervo_Norbeck_Latimer_2023.txt +++ b/tests/examples/Fervo_Norbeck_Latimer_2023.txt @@ -1,4 +1,4 @@ -# Case Study: Fervo Energy Whitepaper +# Case Study: Fervo Project Red (2023) # Norbeck J.H. and Latimer T.M. 2023. # "Commercial-Scale Demonstration of a First-of-a-Kind Enhanced Geothermal System." # https://doi.org/10.31223/X52X0B diff --git a/tests/examples/Fervo_Project_Cape-2.txt b/tests/examples/Fervo_Project_Cape-2.txt index 10324219..351b049c 100644 --- a/tests/examples/Fervo_Project_Cape-2.txt +++ b/tests/examples/Fervo_Project_Cape-2.txt @@ -1,4 +1,5 @@ -# Case Study: Fervo Project Cape 2: Matches/approximates Fervo results pre-published 2024-09-10 at +# Case Study: Fervo Cape Station 2: 2024 Results +# Matches/approximates Fervo results pre-published 2024-09-10 at # https://eartharxiv.org/repository/view/7665/ (citation below) using available data from paper and other sources. # Norbeck J., Gradl C., and Latimer T. 2024. # "Deployment of Enhanced Geothermal System technology leads to rapid cost reductions and performance improvements." diff --git a/tests/examples/Fervo_Project_Cape-3.txt b/tests/examples/Fervo_Project_Cape-3.txt index 6d03af95..afefa389 100644 --- a/tests/examples/Fervo_Project_Cape-3.txt +++ b/tests/examples/Fervo_Project_Cape-3.txt @@ -1,5 +1,5 @@ -# Case Study: Fervo Project Cape 3: Extrapolation from Fervo results pre-published 2024-09-10 at -# https://eartharxiv.org/repository/view/7665/ to 400MWe capacity. +# Case Study: Fervo Cape Station 3: 400 MWe Production +# Extrapolation from Fervo results pre-published 2024-09-10 at https://eartharxiv.org/repository/view/7665/ to 400MWe capacity. # Norbeck J., Gradl C., and Latimer T. 2024. # "Deployment of Enhanced Geothermal System technology leads to rapid cost reductions and performance improvements." # https://doi.org/10.31223/X5VH8C diff --git a/tests/examples/Fervo_Project_Cape.txt b/tests/examples/Fervo_Project_Cape.txt index 20cc597e..506d6c53 100644 --- a/tests/examples/Fervo_Project_Cape.txt +++ b/tests/examples/Fervo_Project_Cape.txt @@ -1,5 +1,8 @@ -# Case Study: Fervo Project Cape +# Case Study: Fervo Cape Station 1: 2023 Results (from paper published in February 2024) # Presented at NREL GEOPHIRES workshop 2024-07-18 +# Fercho S., Matson G., McConville E., Rhodes G., Jordan R., and Norbeck J. 2024. +# "Geology, Temperature, Geophysics, Stress Orientations, and Natural Fracturing in the Milford Valley, UT Informed by the Drilling Results of the First Horizontal Wells at the Cape Modern Geothermal Project." +# https://pangea.stanford.edu/ERE/db/GeoConf/papers/SGW/2024/Fercho.pdf Reservoir Model, 1 Reservoir Volume Option, 1 From 8a06c5bd26a0acabd8aabf9a0eb3e956a6383bdd Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Thu, 21 Nov 2024 10:04:48 -0800 Subject: [PATCH 15/19] Add ITC & PTC to examples table --- README.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.rst b/README.rst index d03bb399..d58a8a2b 100644 --- a/README.rst +++ b/README.rst @@ -411,6 +411,14 @@ Example-specific web interface deeplinks are listed in the Link column. - `example_multiple_gradients.txt `__ - `.out `__ - `link `__ + * - Investment Tax Credit + - `example_ITC.txt `__ + - `.out `__ + - `link `__ + * - Production Tax Credit + - `example_PTC.txt `__ + - `.out `__ + - `link `__ * - Fervo Project Red (2023) - `Fervo_Norbeck_Latimer_2023.txt `__ - `.out `__ From 6be11324838c3177288320afbac529dddd5c8a83 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Thu, 21 Nov 2024 10:39:07 -0800 Subject: [PATCH 16/19] Synchronize Project Red example with workshop version https://github.com/NREL/GEOPHIRES-X/issues/273 --- tests/examples/Fervo_Norbeck_Latimer_2023.out | 162 +++++++++--------- tests/examples/Fervo_Norbeck_Latimer_2023.txt | 78 ++++----- 2 files changed, 120 insertions(+), 120 deletions(-) diff --git a/tests/examples/Fervo_Norbeck_Latimer_2023.out b/tests/examples/Fervo_Norbeck_Latimer_2023.out index 92f1d358..2fb56c8a 100644 --- a/tests/examples/Fervo_Norbeck_Latimer_2023.out +++ b/tests/examples/Fervo_Norbeck_Latimer_2023.out @@ -4,21 +4,21 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.6.3 - Simulation Date: 2024-11-18 - Simulation Time: 16:48 - Calculation Time: 1.672 sec + GEOPHIRES Version: 3.6.6 + Simulation Date: 2024-11-21 + Simulation Time: 10:38 + Calculation Time: 0.439 sec ***SUMMARY OF RESULTS*** End-Use Option: Electricity - Average Net Electricity Production: 2.08 MW - Electricity breakeven price: 27.85 cents/kWh + Average Net Electricity Production: 2.26 MW + Electricity breakeven price: 26.95 cents/kWh Number of production wells: 1 Number of injection wells: 1 Flowrate per production well: 41.0 kg/sec Well depth (or total length, if not vertical): 2.3 kilometer - Geothermal gradient: 76.74 degC/km + Geothermal gradient: 74 degC/km ***ECONOMIC PARAMETERS*** @@ -27,10 +27,10 @@ Simulation Metadata Accrued financing during construction: 5.00 Project lifetime: 10 yr Capacity factor: 90.0 % - Project NPV: -13.14 MUSD - Project IRR: -5.39 % - Project VIR=PI=PIR: 0.51 - Project MOIC: -0.21 + Project NPV: -13.17 MUSD + Project IRR: -4.65 % + Project VIR=PI=PIR: 0.53 + Project MOIC: -0.19 Project Payback Period: N/A Estimated Jobs Created: 6 @@ -43,25 +43,25 @@ Simulation Metadata Pump efficiency: 80.0 % Injection temperature: 41.0 degC Production Wellbore heat transmission calculated with Ramey's model - Average production well temperature drop: 4.1 degC + Average production well temperature drop: 3.8 degC Flowrate per production well: 41.0 kg/sec Injection well casing ID: 7.000 in Production well casing ID: 7.000 in Number of times redrilling: 0 - Power plant type: Subcritical ORC + Power plant type: Supercritical ORC ***RESOURCE CHARACTERISTICS*** Maximum reservoir temperature: 400.0 degC Number of segments: 1 - Geothermal gradient: 76.74 degC/km + Geothermal gradient: 74 degC/km ***RESERVOIR PARAMETERS*** Reservoir Model = Multiple Parallel Fractures Model - Bottom-hole temperature: 188.11 degC + Bottom-hole temperature: 179.42 degC Fracture model = Rectangular Well separation: fracture height: 160.00 meter Fracture width: 160.00 meter @@ -70,7 +70,7 @@ Simulation Metadata Number of fractures: 100.00 Fracture separation: 10.00 meter Reservoir volume: 25344000 m**3 - Reservoir impedance: 0.33 GPa.s/m**3 + Reservoir impedance: 0.30 GPa.s/m**3 Reservoir density: 2800.00 kg/m**3 Reservoir thermal conductivity: 2.70 W/m/K Reservoir heat capacity: 1000.00 J/kg/K @@ -78,57 +78,57 @@ Simulation Metadata ***RESERVOIR SIMULATION RESULTS*** - Maximum Production Temperature: 184.1 degC - Average Production Temperature: 182.4 degC - Minimum Production Temperature: 169.6 degC - Initial Production Temperature: 181.8 degC - Average Reservoir Heat Extraction: 24.20 MW + Maximum Production Temperature: 175.7 degC + Average Production Temperature: 174.1 degC + Minimum Production Temperature: 162.2 degC + Initial Production Temperature: 173.5 degC + Average Reservoir Heat Extraction: 22.74 MW Production Wellbore Heat Transmission Model = Ramey Model - Average Production Well Temperature Drop: 4.1 degC - Total Average Pressure Drop: 12325.6 kPa - Average Injection Well Pressure Drop: 392.5 kPa - Average Reservoir Pressure Drop: 14029.4 kPa - Average Production Well Pressure Drop: 350.0 kPa - Average Buoyancy Pressure Drop: -2446.4 kPa + Average Production Well Temperature Drop: 3.8 degC + Total Average Pressure Drop: 11221.8 kPa + Average Injection Well Pressure Drop: 387.1 kPa + Average Reservoir Pressure Drop: 12713.2 kPa + Average Production Well Pressure Drop: 342.1 kPa + Average Buoyancy Pressure Drop: -2220.6 kPa ***CAPITAL COSTS (M$)*** - Drilling and completion costs: 10.21 MUSD - Drilling and completion costs per vertical production well: 3.06 MUSD - Drilling and completion costs per vertical injection well: 3.06 MUSD + Drilling and completion costs: 10.13 MUSD + Drilling and completion costs per vertical production well: 3.02 MUSD + Drilling and completion costs per vertical injection well: 3.02 MUSD Drilling and completion costs per non-vertical sections: 3.61 MUSD Stimulation costs: 1.51 MUSD - Surface power plant costs: 9.85 MUSD - Field gathering system costs: 1.55 MUSD - Total surface equipment costs: 11.40 MUSD - Exploration costs: 3.65 MUSD - Total capital costs: 26.77 MUSD + Surface power plant costs: 11.34 MUSD + Field gathering system costs: 1.52 MUSD + Total surface equipment costs: 12.85 MUSD + Exploration costs: 3.62 MUSD + Total capital costs: 28.12 MUSD ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** - Wellfield maintenance costs: 0.20 MUSD/yr - Power plant maintenance costs: 0.41 MUSD/yr + Wellfield maintenance costs: 0.21 MUSD/yr + Power plant maintenance costs: 0.45 MUSD/yr Water costs: 0.11 MUSD/yr - Total operating and maintenance costs: 0.72 MUSD/yr + Total operating and maintenance costs: 0.76 MUSD/yr ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.16 MW/(kg/s) - Maximum Total Electricity Generation: 2.85 MW - Average Total Electricity Generation: 2.77 MW - Minimum Total Electricity Generation: 2.22 MW - Initial Total Electricity Generation: 2.74 MW - Maximum Net Electricity Generation: 2.16 MW - Average Net Electricity Generation: 2.08 MW - Minimum Net Electricity Generation: 1.50 MW - Initial Net Electricity Generation: 2.05 MW - Average Annual Total Electricity Generation: 21.67 GWh - Average Annual Net Electricity Generation: 16.26 GWh - Initial pumping power/net installed power: 33.79 % - Average Pumping Power: 0.69 MW + Initial geofluid availability: 0.15 MW/(kg/s) + Maximum Total Electricity Generation: 2.97 MW + Average Total Electricity Generation: 2.90 MW + Minimum Total Electricity Generation: 2.38 MW + Initial Total Electricity Generation: 2.87 MW + Maximum Net Electricity Generation: 2.34 MW + Average Net Electricity Generation: 2.26 MW + Minimum Net Electricity Generation: 1.74 MW + Initial Net Electricity Generation: 2.24 MW + Average Annual Total Electricity Generation: 22.63 GWh + Average Annual Net Electricity Generation: 17.70 GWh + Initial pumping power/net installed power: 28.16 % + Average Pumping Power: 0.63 MW ************************************************************ * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * @@ -136,16 +136,16 @@ Simulation Metadata YEAR THERMAL GEOFLUID PUMP NET FIRST LAW DRAWDOWN TEMPERATURE POWER POWER EFFICIENCY (degC) (MW) (MW) (%) - 1 1.0000 181.78 0.6927 2.0502 8.5097 - 2 1.0090 183.41 0.6921 2.1272 8.7283 - 3 1.0108 183.75 0.6920 2.1434 8.7738 - 4 1.0118 183.93 0.6920 2.1518 8.7974 - 5 1.0124 184.04 0.6919 2.1574 8.8131 - 6 1.0129 184.12 0.6919 2.1612 8.8239 - 7 1.0129 184.13 0.6920 2.1612 8.8237 - 8 1.0108 183.75 0.6925 2.1430 8.7720 - 9 1.0019 182.13 0.6948 2.0640 8.5464 - 10 0.9771 177.63 0.7009 1.8532 7.9258 + 1 1.0000 173.47 0.6305 2.2385 9.8871 + 2 1.0088 175.01 0.6300 2.3076 10.0758 + 3 1.0107 175.32 0.6299 2.3220 10.1147 + 4 1.0116 175.49 0.6298 2.3295 10.1349 + 5 1.0123 175.60 0.6298 2.3345 10.1483 + 6 1.0127 175.67 0.6298 2.3379 10.1576 + 7 1.0127 175.68 0.6298 2.3380 10.1576 + 8 1.0107 175.34 0.6303 2.3221 10.1142 + 9 1.0021 173.83 0.6323 2.2525 9.9225 + 10 0.9780 169.65 0.6377 2.0628 9.3820 ******************************************************************* @@ -154,16 +154,16 @@ Simulation Metadata YEAR ELECTRICITY HEAT RESERVOIR PERCENTAGE OF PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED (GWh/year) (GWh/year) (10^15 J) (%) - 1 16.6 191.4 9.75 6.60 - 2 16.8 192.4 9.06 13.23 - 3 16.9 192.7 8.36 19.88 - 4 17.0 192.9 7.67 26.53 - 5 17.0 193.1 6.97 33.19 - 6 17.0 193.1 6.28 39.85 - 7 17.0 192.9 5.58 46.50 - 8 16.6 191.7 4.89 53.12 - 9 15.6 187.8 4.22 59.59 - 10 12.0 161.5 3.64 65.16 + 1 18.0 179.8 9.18 6.59 + 2 18.3 180.8 8.52 13.22 + 3 18.3 181.1 7.87 19.85 + 4 18.4 181.3 7.22 26.50 + 5 18.4 181.4 6.57 33.15 + 6 18.4 181.5 5.91 39.80 + 7 18.4 181.3 5.26 46.44 + 8 18.1 180.2 4.61 53.05 + 9 17.1 176.6 3.98 59.52 + 10 13.6 151.9 3.43 65.09 ******************************** @@ -173,13 +173,13 @@ Year Electricity | Heat | Since Price Ann. Rev. Cumm. Rev. | Price Ann. Rev. Cumm. Rev. | Price Ann. Rev. Cumm. Rev. | Price Ann. Rev. Cumm. Rev. | OPEX Net Rev. Net Cashflow Start (cents/kWh)(MUSD/yr) (MUSD) |(cents/kWh) (MUSD/yr) (MUSD) |(cents/kWh) (MUSD/yr) (MUSD) |(USD/tonne) (MUSD/yr) (MUSD) |(MUSD/yr) (MUSD/yr) (MUSD) ________________________________________________________________________________________________________________________________________________________________________________________ - 1 0.00 -26.77 0.00 | 0.00 0.00 0.00 | 0.00 0.00 0.00 | 0.00 0.00 0.00 | 0.00 -26.77 -26.77 - 2 15.00 1.77 2.48 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.72 1.77 -25.00 - 3 15.00 1.81 5.01 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.72 1.81 -23.20 - 4 15.41 1.89 7.62 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.72 1.89 -21.30 - 5 15.81 1.97 10.30 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.72 1.97 -19.34 - 6 16.22 2.04 13.07 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.72 2.04 -17.29 - 7 16.62 2.11 15.90 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.72 2.11 -15.18 - 8 17.03 2.17 18.79 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.72 2.17 -13.01 - 9 17.43 2.18 21.69 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.72 2.18 -10.82 - 10 17.84 2.06 24.47 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.72 2.06 -8.77 + 1 0.00 -28.12 0.00 | 0.00 0.00 0.00 | 0.00 0.00 0.00 | 0.00 0.00 0.00 | 0.00 -28.12 -28.12 + 2 15.00 1.94 2.70 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.76 1.94 -26.18 + 3 15.00 1.97 5.44 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.76 1.97 -24.21 + 4 15.41 2.06 8.26 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.76 2.06 -22.15 + 5 15.81 2.14 11.17 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.76 2.14 -20.00 + 6 16.22 2.22 14.16 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.76 2.22 -17.78 + 7 16.62 2.30 17.22 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.76 2.30 -15.48 + 8 17.03 2.37 20.35 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.76 2.37 -13.12 + 9 17.43 2.39 23.51 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.76 2.39 -10.73 + 10 17.84 2.29 26.56 | 2.50 0.00 0.00 | 2.50 0.00 0.00 | 0.00 0.00 0.00 | 0.76 2.29 -8.44 diff --git a/tests/examples/Fervo_Norbeck_Latimer_2023.txt b/tests/examples/Fervo_Norbeck_Latimer_2023.txt index ec5eb1bf..486950ad 100644 --- a/tests/examples/Fervo_Norbeck_Latimer_2023.txt +++ b/tests/examples/Fervo_Norbeck_Latimer_2023.txt @@ -13,58 +13,58 @@ Reservoir Model, 1 Reservoir Volume Option, 1, -Reservoir Density, 2800, per the paper phyllite + quartzite + diorite + granodiorite, -Reservoir Depth, 7700 feet, per the paper -Reservoir Heat Capacity, 1000 +Reservoir Density, 2800, -- per the paper phyllite + quartzite + diorite + granodiorite +Reservoir Depth, 7600 feet, -- per the paper +Reservoir Heat Capacity, 1000, -- [J/kg/K] Reservoir Thermal Conductivity, 2.7 -Number of Fractures, 100, per the paper -Fracture Shape, 4, per the paper -Fracture Height, 160, per the paper -Fracture Width, 160, per the paper (distance between wellbores assumes a dipole flow field) +Number of Fractures, 100, -- per the paper +Fracture Shape, 4, -- per the paper +Fracture Height, 160, -- per the paper +Fracture Width, 160, -- per the paper (distance between wellbores assumes a dipole flow field) Fracture Separation, 10 meter Number of Segments, 1 -Gradient 1, 76.74, per the paper -Plant Outlet Pressure, 1500 psi, per the paper +Gradient 1, 74, -- per the paper +Plant Outlet Pressure, 1500 psi, -- per the paper Number of Injection Wells, 1 Number of Production Wells, 1 Well Geometry Configuration, 4 Has Nonvertical Section, True Multilaterals Cased, True -Number of Multilateral Sections, 2, Two parallel horizontal sections -Nonvertical Length per Multilateral Section, 3250 feet, per the paper -Well Drilling Cost Correlation, 10, per the drill cost paper - works out to $400/ft -Horizontal Well Drilling Cost Correlation, 10, per the drill cost paper - works out to $400/ft -Production Flow Rate per Well, 41.02, =650 gpm per the paper - per the paper the maximum flow rate was 63 L/s but the range was 550-750 gpm -Production Well Diameter, 7, per the paper -Injection Well Diameter, 7, per the paper -Well Separation, 365 feet, per the paper -Injection Temperature, 38 degC, per the paper 75 to 125 degF -Injection Wellbore Temperature Gain, 3 -Reservoir Impedance, 0.33, per paper, matching pumping power report 500-1000 kW -Ramey Production Wellbore Model, True +Number of Multilateral Sections, 2, -- Two parallel horizontal sections +Total Nonvertical Length, 3250 feet, -- per the paper +Well Drilling Cost Correlation, 10, -- per the drill cost paper - works out to $400/ft +Horizontal Well Drilling Cost Correlation, 10, -- per the drill cost paper - works out to $400/ft +Production Flow Rate per Well, 41, -- =650 gpm per the paper - per the paper the maximum flow rate was 63 L/s but the range was 550-750 gpm +Production Well Diameter, 7, -- per the paper +Injection Well Diameter, 7, -- per the paper +Well Separation, 365 feet, -- per the paper +Injection Temperature, 38 degC, -- per the paper 75 to 125 degF +Injection Wellbore Temperature Gain, 3, -- [degC] +Reservoir Impedance, 0.30, -- per paper, matching pumping power report 500-1000 kW +Ramey Production Wellbore Model, 1 Utilization Factor, .9 Water Loss Fraction, 0.1 -Maximum Drawdown, 1, no redrilling considered -Ambient Temperature, 8 degC, per the paper. Published ambient is 10.27 degC -Surface Temperature, 8 degC, per the paper. Published ambient is 10.27 degC -End-Use Option, 1, electricity as the main product +Maximum Drawdown, 1, -- no redrilling considered +Ambient Temperature, 8 degC, -- per the paper. Published ambient is 10.27 degC +Surface Temperature, 8 degC, -- per the paper. Published ambient is 10.27 degC +End-Use Option, 1, -- electricity as the main product Plant Lifetime, 10 -Power Plant Type, 1, subcritical binary cycle +Power Plant Type, 2, -- supercritical binary cycle End-Use Efficiency Factor, .9 -Circulation Pump Efficiency, 0.80, per the paper -Economic Model, 3, BICYCLE Levelized Cost Model +Circulation Pump Efficiency, 0.80, -- per the paper +Economic Model, 3, -- BICYCLE Levelized Cost Model Starting Electricity Sale Price, 0.15 -Ending Electricity Sale Price, 1.00, essentially no limit as the rate can rise continuously with inflation -Electricity Escalation Rate Per Year, 0.004053223, End up being about 2% inflation +Ending Electricity Sale Price, 1.00, -- essentially no limit as the rate can rise continuously with inflation +Electricity Escalation Rate Per Year, 0.004053223, -- End up being about 2% inflation Electricity Escalation Start Year, 1 -Fraction of Investment in Bonds, .5, Required for BICYCLE model -Combined Income Tax Rate, .3, Required for BICYCLE model -Gross Revenue Tax Rate, 0, Required for BICYCLE model -Inflated Bond Interest Rate, .05, Required for BICYCLE model -Inflated Equity Interest Rate, .08, Required for BICYCLE model -Inflation Rate, .02, Required for BICYCLE model -Investment Tax Credit Rate, 0, Required for BICYCLE model -Inflation Rate During Construction, 0.05, -Property Tax Rate, 0, Required for BICYCLE model +Fraction of Investment in Bonds, .5, -- Required for BICYCLE model +Combined Income Tax Rate, .3, -- Required for BICYCLE model +Gross Revenue Tax Rate, 0, -- Required for BICYCLE model +Inflated Bond Interest Rate, .05, -- Required for BICYCLE model +Inflated Equity Interest Rate, .08, -- Required for BICYCLE model +Inflation Rate, .02, -- Required for BICYCLE model +Investment Tax Credit Rate, 0, -- Required for BICYCLE model +Inflation Rate During Construction, 0.05 +Property Tax Rate, 0, -- Required for BICYCLE model Print Output to Console, 1 Time steps per year, 10 From b7420731111acc021ce75c195c005c65f354ac3a Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 22 Nov 2024 10:23:17 -0800 Subject: [PATCH 17/19] Remove redundant default value definitions from HIP-RA-X tooltip text --- .../hip-ra-x-request.json | 20 +++++++++---------- src/hip_ra_x/hip_ra_x.py | 20 +++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/geophires_x_schema_generator/hip-ra-x-request.json b/src/geophires_x_schema_generator/hip-ra-x-request.json index 5840892e..8420f0be 100644 --- a/src/geophires_x_schema_generator/hip-ra-x-request.json +++ b/src/geophires_x_schema_generator/hip-ra-x-request.json @@ -17,7 +17,7 @@ ], "properties": { "Reservoir Temperature": { - "description": "Reservoir Temperature [150 degC]", + "description": "Reservoir Temperature", "type": "number", "units": "degC", "category": null, @@ -26,7 +26,7 @@ "maximum": 1000 }, "Rejection Temperature": { - "description": "Rejection Temperature [25 degC]", + "description": "Rejection Temperature", "type": "number", "units": "degC", "category": null, @@ -35,7 +35,7 @@ "maximum": 200 }, "Reservoir Porosity": { - "description": "Reservoir Porosity [18%]", + "description": "Reservoir Porosity", "type": "number", "units": "%", "category": null, @@ -44,7 +44,7 @@ "maximum": 100.0 }, "Reservoir Area": { - "description": "Reservoir Area [81 km2]", + "description": "Reservoir Area", "type": "number", "units": "km**2", "category": null, @@ -53,7 +53,7 @@ "maximum": 10000.0 }, "Reservoir Thickness": { - "description": "Reservoir Thickness [0.286 km]", + "description": "Reservoir Thickness", "type": "number", "units": "kilometer", "category": null, @@ -62,7 +62,7 @@ "maximum": 10000.0 }, "Reservoir Life Cycle": { - "description": "Reservoir Life Cycle [30 years]", + "description": "Reservoir Life Cycle", "type": "integer", "units": "yr", "category": null, @@ -71,7 +71,7 @@ "maximum": 100 }, "Rock Heat Capacity": { - "description": "Rock Heat Capacity [2.84E+12 kJ/km3C]", + "description": "Rock Heat Capacity", "type": "number", "units": "kJ/km**3C", "category": null, @@ -80,7 +80,7 @@ "maximum": 100000000000000.0 }, "Fluid Specific Heat Capacity": { - "description": "Specific Heat Capacity Of Water [4.18 kJ/kgC]", + "description": "Specific Heat Capacity Of Water", "type": "number", "units": "kJ/kgC", "category": null, @@ -89,7 +89,7 @@ "maximum": 10.0 }, "Density Of Reservoir Fluid": { - "description": "Density Of Water [1.0E+12 kg/km3]", + "description": "Density Of Water", "type": "number", "units": "kg/km**3", "category": null, @@ -98,7 +98,7 @@ "maximum": 10000000000000.0 }, "Density Of Reservoir Rock": { - "description": "Density Of Rock [2.55E+12 kg/km3]", + "description": "Density Of Rock", "type": "number", "units": "kg/km**3", "category": null, diff --git a/src/hip_ra_x/hip_ra_x.py b/src/hip_ra_x/hip_ra_x.py index e7d2f623..ff587220 100644 --- a/src/hip_ra_x/hip_ra_x.py +++ b/src/hip_ra_x/hip_ra_x.py @@ -120,7 +120,7 @@ def parameter_dict_entry(param: Parameter) -> Parameter: CurrentUnits=TemperatureUnit.CELSIUS, Required=True, ErrMessage='assume default reservoir temperature (150 degC)', - ToolTipText='Reservoir Temperature [150 degC]', + ToolTipText='Reservoir Temperature', ) ) self.rejection_temperature: Parameter = parameter_dict_entry( @@ -134,7 +134,7 @@ def parameter_dict_entry(param: Parameter) -> Parameter: CurrentUnits=TemperatureUnit.CELSIUS, Required=True, ErrMessage='assume default rejection temperature (25 degC)', - ToolTipText='Rejection Temperature [25 degC]', + ToolTipText='Rejection Temperature', ) ) self.reservoir_porosity: Parameter = parameter_dict_entry( @@ -148,7 +148,7 @@ def parameter_dict_entry(param: Parameter) -> Parameter: CurrentUnits=PercentUnit.PERCENT, Required=True, ErrMessage='assume default reservoir porosity (18%)', - ToolTipText='Reservoir Porosity [18%]', + ToolTipText='Reservoir Porosity', ) ) self.reservoir_area: Parameter = parameter_dict_entry( @@ -162,7 +162,7 @@ def parameter_dict_entry(param: Parameter) -> Parameter: CurrentUnits=AreaUnit.KILOMETERS2, Required=True, ErrMessage='assume default reservoir area (81 km2)', - ToolTipText='Reservoir Area [81 km2]', + ToolTipText='Reservoir Area', ) ) self.reservoir_thickness: Parameter = parameter_dict_entry( @@ -176,7 +176,7 @@ def parameter_dict_entry(param: Parameter) -> Parameter: CurrentUnits=LengthUnit.KILOMETERS, Required=True, ErrMessage='assume default reservoir thickness (0.286 km2)', - ToolTipText='Reservoir Thickness [0.286 km]', + ToolTipText='Reservoir Thickness', ) ) self.reservoir_life_cycle: Parameter = parameter_dict_entry( @@ -189,7 +189,7 @@ def parameter_dict_entry(param: Parameter) -> Parameter: AllowableRange=list(range(1, 101, 1)), Required=True, ErrMessage='assume default Reservoir Life Cycle (25 years)', - ToolTipText='Reservoir Life Cycle [30 years]', + ToolTipText='Reservoir Life Cycle', ) ) @@ -205,7 +205,7 @@ def parameter_dict_entry(param: Parameter) -> Parameter: CurrentUnits=HeatCapacityUnit.KJPERKM3C, Required=True, ErrMessage='assume default Rock Heat Capacity (2.84E+12 kJ/km3C)', - ToolTipText='Rock Heat Capacity [2.84E+12 kJ/km3C]', + ToolTipText='Rock Heat Capacity', ) ) self.fluid_heat_capacity: Parameter = parameter_dict_entry( @@ -219,7 +219,7 @@ def parameter_dict_entry(param: Parameter) -> Parameter: CurrentUnits=HeatCapacityUnit.kJPERKGC, Required=True, ErrMessage='calculate a value based on the water temperature', - ToolTipText='Specific Heat Capacity Of Water [4.18 kJ/kgC]', + ToolTipText='Specific Heat Capacity Of Water', ) ) self.fluid_density: Parameter = parameter_dict_entry( @@ -233,7 +233,7 @@ def parameter_dict_entry(param: Parameter) -> Parameter: CurrentUnits=DensityUnit.KGPERKILOMETERS3, Required=True, ErrMessage='calculate a value based on the water temperature', - ToolTipText='Density Of Water [1.0E+12 kg/km3]', + ToolTipText='Density Of Water', ) ) self.rock_density: Parameter = parameter_dict_entry( @@ -247,7 +247,7 @@ def parameter_dict_entry(param: Parameter) -> Parameter: CurrentUnits=DensityUnit.KGPERKILOMETERS3, Required=True, ErrMessage='assume default Density Of Rock (2.55E+12 kg/km3)', - ToolTipText='Density Of Rock [2.55E+12 kg/km3]', + ToolTipText='Density Of Rock', ) ) self.rock_recoverable_heat: Parameter = parameter_dict_entry( From e434bc31efc8fb56a67a4203a6d3406c7e189b35 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 22 Nov 2024 11:31:23 -0800 Subject: [PATCH 18/19] Update HIP-RA unit test impacted by previous commit --- tests/hip_ra_x_tests/test_hip_ra_x.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/hip_ra_x_tests/test_hip_ra_x.py b/tests/hip_ra_x_tests/test_hip_ra_x.py index c3120f0c..d73f0883 100644 --- a/tests/hip_ra_x_tests/test_hip_ra_x.py +++ b/tests/hip_ra_x_tests/test_hip_ra_x.py @@ -374,7 +374,7 @@ def test_initialization_with_default_parameters(self): assert hip_ra.reservoir_temperature.CurrentUnits == TemperatureUnit.CELSIUS assert hip_ra.reservoir_temperature.Required is True assert hip_ra.reservoir_temperature.ErrMessage == 'assume default reservoir temperature (150 degC)' - assert hip_ra.reservoir_temperature.ToolTipText == 'Reservoir Temperature [150 degC]' + assert hip_ra.reservoir_temperature.ToolTipText == 'Reservoir Temperature' assert hip_ra.rejection_temperature.value == 25.0 assert hip_ra.reservoir_porosity.value == 18.0 From c96e5dd979bc5523e807428bd887c75f57c9d49a Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 22 Nov 2024 16:15:20 -0800 Subject: [PATCH 19/19] Fix README typo --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index d58a8a2b..a9f01b56 100644 --- a/README.rst +++ b/README.rst @@ -311,7 +311,7 @@ is strongly recommended to gain a working understanding of how to construct vali Examples -------- -GEOPHIRES includes a variety of examples input files demonstrating its features for different types of geothermal systems +GEOPHIRES includes a variety of example input files demonstrating its features for different types of geothermal systems and case studies of real-world geothermal projects. Starting with an existing GEOPHIRES example that is similar to your intended use/application can be an easier approach to using GEOPHIRES than constructing your own inputs from scratch.