Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
7e52cb2
Add Project Latitude/Longitude parameters to SurfacePlant
softwareengineerprogrammer Apr 28, 2026
ca62972
Add Project Latitude/Longitude to Fervo_Project_Cape-{5,6}
softwareengineerprogrammer Apr 28, 2026
2915289
add project lat/long to example8 (cornell)
softwareengineerprogrammer Apr 28, 2026
4b100cf
example9 cornell lat/long (estimated location)
softwareengineerprogrammer May 8, 2026
cc7e305
apply sig figs to construction capex schedule adjustment message for …
softwareengineerprogrammer May 15, 2026
a3f62c1
add Project location (lat, long) output
softwareengineerprogrammer May 16, 2026
483dc7f
set Project location default value to None
softwareengineerprogrammer May 17, 2026
09c6c3d
regenerate schema
softwareengineerprogrammer May 17, 2026
01956c9
regenerate examples
softwareengineerprogrammer May 17, 2026
477840e
Treat Project location as string value field to prevent comma-separat…
softwareengineerprogrammer May 17, 2026
da085d9
Bump version: 3.13.6 → 3.13.7
softwareengineerprogrammer May 17, 2026
1479cf5
3.13.7 CHANGELOG entry
softwareengineerprogrammer May 18, 2026
aa0fb5b
WIP - example_SHR-3 update (in preparation to add Project location)
softwareengineerprogrammer May 18, 2026
17ad7b9
more example_SHR-3 updates including project location (still WIP)
softwareengineerprogrammer May 18, 2026
d6acc16
more example_3-SHR refinements
softwareengineerprogrammer May 18, 2026
16b4e4c
clean up description references
softwareengineerprogrammer May 18, 2026
508a000
example_SHR-3 refinments, generally acceptable now
softwareengineerprogrammer May 18, 2026
a982364
Merge branch 'example_SHR-3_update' into project-lat-long-3
softwareengineerprogrammer May 18, 2026
b294a38
switch example_SHR-3 to double flash power plant
softwareengineerprogrammer May 18, 2026
58fcf03
decrease FPC5/6 lat/long precision to 6 decimals (12 is unnecessary a…
softwareengineerprogrammer May 19, 2026
abf07c7
Bump version: 3.13.7 → 3.13.8
softwareengineerprogrammer May 19, 2026
4790349
update CHANGELOG for v3.13.8 (PR will be combined with v3.13.6)
softwareengineerprogrammer May 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 3.13.6
current_version = 3.13.8
commit = True
tag = True

Expand Down
2 changes: 1 addition & 1 deletion .cookiecutterrc
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ default_context:
sphinx_doctest: "no"
sphinx_theme: "sphinx-py3doc-enhanced-theme"
test_matrix_separate_coverage: "no"
version: 3.13.6
version: 3.13.8
version_manager: "bump2version"
website: "https://github.com/NREL"
year_from: "2023"
Expand Down
2 changes: 1 addition & 1 deletion CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ GEOPHIRES v3 (2023-2026)
3.13
^^^^

3.13.6: `Fix drilling cost types output unit conversion issue. <https://github.com/NatLabRockies/GEOPHIRES-X/pull/497>`__ | `release <https://github.com/NREL/GEOPHIRES-X/releases/tag/v3.13.6>`__
3.13.8: `Fix drilling cost types output unit conversion issue; Project Location (Latitude & Longitude); SHR Example 3 update <https://github.com/NatLabRockies/GEOPHIRES-X/pull/497>`__ | `release <https://github.com/NREL/GEOPHIRES-X/releases/tag/v3.13.8>`__

3.13.5: `Fix CHP Electrical Plant Cost Allocation Ratio check for non-cogen end-use option with fixed Surface Plant Capital Cost. Add example_SHR-3. <https://github.com/NatLabRockies/GEOPHIRES-X/pull/496>`__ | `release <https://github.com/NREL/GEOPHIRES-X/releases/tag/v3.13.5>`__

Expand Down
4 changes: 2 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@ Free software: `MIT license <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.13.6.svg
.. |commits-since| image:: https://img.shields.io/github/commits-since/softwareengineerprogrammer/GEOPHIRES-X/v3.13.8.svg
:alt: Commits since latest release
:target: https://github.com/softwareengineerprogrammer/GEOPHIRES-X/compare/v3.13.6...main
:target: https://github.com/softwareengineerprogrammer/GEOPHIRES-X/compare/v3.13.8...main

.. |docs| image:: https://readthedocs.org/projects/GEOPHIRES-X/badge/?style=flat
:target: https://softwareengineerprogrammer.github.io/GEOPHIRES
Expand Down
206 changes: 103 additions & 103 deletions docs/_images/fervo_project_cape-5-sensitivity-analysis-irr.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
200 changes: 100 additions & 100 deletions docs/_images/fervo_project_cape-5-sensitivity-analysis-lcoe.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
210 changes: 105 additions & 105 deletions docs/_images/fervo_project_cape-5-sensitivity-analysis-project_npv.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
year = '2025'
author = 'NREL'
copyright = f'{year}, {author}'
version = release = '3.13.6'
version = release = '3.13.8'

pygments_style = 'trac'
templates_path = ['./templates']
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def read(*names, **kwargs):

setup(
name='geophires-x',
version='3.13.6',
version='3.13.8',
license='MIT',
description='GEOPHIRES is a free and open-source geothermal techno-economic simulator.',
long_description='{}\n{}'.format(
Expand Down
2 changes: 1 addition & 1 deletion src/geophires_x/EconomicsSam.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ def _validate_construction_capex_schedule(

msg = f'{econ_capex_schedule.Name} ({econ_capex_schedule.value}) '
msg += ' and '.join(adjust_schedule_reasons)
msg += f'. It has been adjusted to: {capex_schedule}'
msg += f'. It has been adjusted to: {[sig_figs(it, 3) for it in capex_schedule]}'

model.logger.warning(msg)

Expand Down
3 changes: 3 additions & 0 deletions src/geophires_x/Outputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,9 @@ def PrintOutputs(self, model: Model):
f.write(f' Segment {str(i):s} Thickness: {round(model.reserv.layerthickness.value[i-1], 10)} {model.reserv.layerthickness.CurrentUnits.value}\n')
f.write(f' Segment {str(i+1):s} Geothermal gradient: {model.reserv.gradient.value[i]:10.4g} {model.reserv.gradient.CurrentUnits.value}\n')

if model.surfaceplant.project_location.value is not None:
f.write(f' {Outputs._field_label(model.surfaceplant.project_location.display_name,54)}{model.surfaceplant.project_location.value}\n')

f.write(NL)
f.write(NL)
f.write(' ***RESERVOIR PARAMETERS***\n')
Expand Down
33 changes: 32 additions & 1 deletion src/geophires_x/SurfacePlant.py
Original file line number Diff line number Diff line change
Expand Up @@ -472,6 +472,26 @@ def __init__(self, model: Model):
ToolTipText="Dynamic viscosity of the working fluid"
)

self.project_latitude = self.ParameterDict[self.project_latitude.Name] = floatParameter(
"Project Latitude",
UnitType=Units.NONE,
CurrentUnits=Units.NONE,
PreferredUnits=Units.NONE,
Min=-90,
Max=90,
ToolTipText="Latitude of the project location."
)
self.project_longitude = self.ParameterDict[self.project_longitude.Name] = floatParameter(
"Project Longitude",
UnitType=Units.NONE,
CurrentUnits=Units.NONE,
PreferredUnits=Units.NONE,
Min=-180,
Max=180,
ToolTipText="Longitude of the project location."
)


# local variable initialization
self.setinjectionpressurefixed = False
sclass = str(__class__).replace("<class \'", "")
Expand Down Expand Up @@ -622,6 +642,14 @@ def __init__(self, model: Model):
PreferredUnits=PowerUnit.MW,
CurrentUnits=PowerUnit.MW
)
self.project_location = self.OutputParameterDict[self.project_location.Name] = OutputParameter(
Name='Project location',
UnitType=Units.NONE,
CurrentUnits=Units.NONE,
PreferredUnits=Units.NONE,
value=None,
ToolTipText='Project location (latitude, longitude)'
)

model.logger.info(f'Complete {self.__class__.__name__}: {__name__}')

Expand Down Expand Up @@ -772,4 +800,7 @@ def _calculate_derived_outputs(self, model: Model) -> None:

if model.surfaceplant.enduse_option.value.has_direct_use_heat_component or model.surfaceplant.plant_type.value in [
PlantType.ABSORPTION_CHILLER, PlantType.HEAT_PUMP]:
self.HeatProducedMax.value = np.max(model.surfaceplant.HeatProduced.value)
self.HeatProducedMax.value = np.max(model.surfaceplant.HeatProduced.value)

if self.project_latitude.Provided and self.project_longitude.Provided:
self.project_location.value = f'{self.project_latitude.value}, {self.project_longitude.value}'
2 changes: 1 addition & 1 deletion src/geophires_x/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '3.13.6'
__version__ = '3.13.8'
1 change: 1 addition & 0 deletions src/geophires_x_client/geophires_x_result.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ class GeophiresXResult:
'Segment 3 Geothermal gradient',
'Segment 3 Thickness',
'Segment 4 Geothermal gradient',
_StringValueField('Project location'),
],
'RESERVOIR PARAMETERS': [
_EqualSignDelimitedField('Reservoir Model'),
Expand Down
18 changes: 18 additions & 0 deletions src/geophires_x_schema_generator/geophires-request.json
Original file line number Diff line number Diff line change
Expand Up @@ -1350,6 +1350,24 @@
"minimum": 0.0,
"maximum": 1
},
"Project Latitude": {
"description": "Latitude of the project location.",
"type": "number",
"units": null,
"category": "Surface Plant",
"default": 0.0,
"minimum": -90,
"maximum": 90
},
"Project Longitude": {
"description": "Longitude of the project location.",
"type": "number",
"units": null,
"category": "Surface Plant",
"default": 0.0,
"minimum": -180,
"maximum": 180
},
"Dead-state Pressure": {
"description": "",
"type": "number",
Expand Down
7 changes: 6 additions & 1 deletion src/geophires_x_schema_generator/geophires-result.json
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,12 @@
"Segment 2 Thickness": {},
"Segment 3 Geothermal gradient": {},
"Segment 3 Thickness": {},
"Segment 4 Geothermal gradient": {}
"Segment 4 Geothermal gradient": {},
"Project location": {
"type": "object",
"description": "Project location (latitude, longitude)",
"units": null
}
}
},
"RESERVOIR PARAMETERS": {
Expand Down
9 changes: 5 additions & 4 deletions tests/examples/Fervo_Project_Cape-5.out
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

Simulation Metadata
----------------------
GEOPHIRES Version: 3.12.1
Simulation Date: 2026-04-01
Simulation Time: 10:35
Calculation Time: 1.788 sec
GEOPHIRES Version: 3.13.7
Simulation Date: 2026-05-19
Simulation Time: 09:33
Calculation Time: 1.809 sec

***SUMMARY OF RESULTS***

Expand Down Expand Up @@ -69,6 +69,7 @@ Simulation Metadata
Segment 2 Geothermal gradient: 41 degC/km
Segment 2 Thickness: 0.5 kilometer
Segment 3 Geothermal gradient: 39.1 degC/km
Project location: 38.506196, -112.918155


***RESERVOIR PARAMETERS***
Expand Down
3 changes: 3 additions & 0 deletions tests/examples/Fervo_Project_Cape-5.txt
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,6 @@ Maximum Drawdown, 0.0025, -- This value represents the fractional drop in produc
# *****************************
Maximum Temperature, 500
Time steps per year, 12

Project Latitude, 38.506196
Project Longitude, -112.918155
9 changes: 5 additions & 4 deletions tests/examples/Fervo_Project_Cape-6.out
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

Simulation Metadata
----------------------
GEOPHIRES Version: 3.12.1
Simulation Date: 2026-04-01
Simulation Time: 10:35
Calculation Time: 1.793 sec
GEOPHIRES Version: 3.13.7
Simulation Date: 2026-05-19
Simulation Time: 09:33
Calculation Time: 1.837 sec

***SUMMARY OF RESULTS***

Expand Down Expand Up @@ -69,6 +69,7 @@ Simulation Metadata
Segment 2 Geothermal gradient: 41 degC/km
Segment 2 Thickness: 0.5 kilometer
Segment 3 Geothermal gradient: 39.1 degC/km
Project location: 38.506196, -112.918155


***RESERVOIR PARAMETERS***
Expand Down
3 changes: 3 additions & 0 deletions tests/examples/Fervo_Project_Cape-6.txt
Original file line number Diff line number Diff line change
Expand Up @@ -116,3 +116,6 @@ Maximum Drawdown, 0.0025, -- This value represents the fractional drop in produc
# *****************************
Maximum Temperature, 500
Time steps per year, 12

Project Latitude, 38.506196
Project Longitude, -112.918155
14 changes: 7 additions & 7 deletions tests/examples/example8.out
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

Simulation Metadata
----------------------
GEOPHIRES Version: 3.9.28
Simulation Date: 2025-07-02
Simulation Time: 12:19
Calculation Time: 0.854 sec
GEOPHIRES Version: 3.13.6
Simulation Date: 2026-05-16
Simulation Time: 18:25
Calculation Time: 1.151 sec

***SUMMARY OF RESULTS***

Expand All @@ -25,7 +25,7 @@ Simulation Metadata

Economic Model = Fixed Charge Rate (FCR)
Fixed Charge Rate (FCR): 5.00
Accrued financing during construction: 0.00 %
Accrued financing during construction: 0.00 %
Project lifetime: 30 yr
Capacity factor: 60.0 %
Project NPV: -7.63 MUSD
Expand Down Expand Up @@ -55,6 +55,7 @@ Simulation Metadata
Maximum reservoir temperature: 400.0 degC
Number of segments: 1
Geothermal gradient: 28 degC/km
Project location: 42.441977082209235, -76.43242140337269


***RESERVOIR PARAMETERS***
Expand Down Expand Up @@ -92,13 +93,13 @@ Simulation Metadata

***CAPITAL COSTS (M$)***

Exploration costs: 4.20 MUSD
Drilling and completion costs: 7.91 MUSD
Drilling and completion costs per well: 3.96 MUSD
Stimulation costs: 1.51 MUSD
Surface power plant costs: 3.52 MUSD
Field gathering system costs: 1.14 MUSD
Total surface equipment costs: 4.66 MUSD
Exploration costs: 4.20 MUSD
Total capital costs: 18.28 MUSD
Annualized capital costs: 0.91 MUSD

Expand All @@ -113,7 +114,6 @@ Simulation Metadata


***SURFACE EQUIPMENT SIMULATION RESULTS***

Maximum Net Heat Production: 9.84 MW
Average Net Heat Production: 9.60 MW
Minimum Net Heat Production: 9.04 MW
Expand Down
3 changes: 3 additions & 0 deletions tests/examples/example8.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ Surface Temperature,20, ---[deg.C]
Ambient Temperature,20, ---[deg.C]
Electricity Rate,0.1, ---Electricity rate for pumping power [$/kWh]

Project Latitude, 42.441977082209235, -- Estimated location; https://www.google.com/maps/search/?api=1&query=42.441977082209235,76.43242140337269
Project Longitude, -76.43242140337269

***FINANCIAL PARAMETERS***
**************************
Plant Lifetime,30, ---[years]
Expand Down
14 changes: 7 additions & 7 deletions tests/examples/example9.out
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

Simulation Metadata
----------------------
GEOPHIRES Version: 3.9.28
Simulation Date: 2025-07-02
Simulation Time: 12:19
Calculation Time: 0.861 sec
GEOPHIRES Version: 3.13.6
Simulation Date: 2026-05-16
Simulation Time: 18:26
Calculation Time: 1.042 sec

***SUMMARY OF RESULTS***

Expand All @@ -25,7 +25,7 @@ Simulation Metadata

Economic Model = Fixed Charge Rate (FCR)
Fixed Charge Rate (FCR): 5.00
Accrued financing during construction: 0.00 %
Accrued financing during construction: 0.00 %
Project lifetime: 30 yr
Capacity factor: 90.0 %
Project NPV: -26.12 MUSD
Expand Down Expand Up @@ -57,6 +57,7 @@ Simulation Metadata
Maximum reservoir temperature: 400.0 degC
Number of segments: 1
Geothermal gradient: 28 degC/km
Project location: 42.441977082209235, -76.43242140337269


***RESERVOIR PARAMETERS***
Expand Down Expand Up @@ -94,13 +95,13 @@ Simulation Metadata

***CAPITAL COSTS (M$)***

Exploration costs: 5.79 MUSD
Drilling and completion costs: 12.25 MUSD
Drilling and completion costs per well: 6.12 MUSD
Stimulation costs: 1.51 MUSD
Surface power plant costs: 2.43 MUSD
Field gathering system costs: 1.13 MUSD
Total surface equipment costs: 3.56 MUSD
Exploration costs: 5.79 MUSD
Total capital costs: 23.11 MUSD
Annualized capital costs: 1.16 MUSD

Expand All @@ -114,7 +115,6 @@ Simulation Metadata


***SURFACE EQUIPMENT SIMULATION RESULTS***

Initial geofluid availability: 0.06 MW/(kg/s)
Maximum Total Electricity Generation: 0.57 MW
Average Total Electricity Generation: 0.55 MW
Expand Down
3 changes: 3 additions & 0 deletions tests/examples/example9.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ Surface Temperature,20, ---[deg.C]
Ambient Temperature,20, ---[deg.C]
Electricity Rate,0.1, ---Electricity rate for pumping power [$/kWh]

Project Latitude, 42.441977082209235, -- Estimated location; https://www.google.com/maps/search/?api=1&query=42.441977082209235,76.43242140337269
Project Longitude, -76.43242140337269

# ***FINANCIAL PARAMETERS***
# **************************
Plant Lifetime,30, ---[years]
Expand Down
Loading
Loading