Skip to content

Commit 7303de4

Browse files
Merge pull request NREL#330 from softwareengineerprogrammer/main
Output Heat to Power Conversion Efficiency [v3.7.3]
2 parents 81caf47 + 7e28bed commit 7303de4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+257
-157
lines changed

.bumpversion.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 3.7.0
2+
current_version = 3.7.3
33
commit = True
44
tag = True
55

.cookiecutterrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ default_context:
5454
sphinx_doctest: "no"
5555
sphinx_theme: "sphinx-py3doc-enhanced-theme"
5656
test_matrix_separate_coverage: "no"
57-
version: 3.7.0
57+
version: 3.7.3
5858
version_manager: "bump2version"
5959
website: "https://github.com/NREL"
6060
year_from: "2023"

CHANGELOG.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ GEOPHIRES-X (2023-2025)
1212

1313
"Well depth (or total length, if not vertical)" output field renamed to "Well depth" per https://github.com/NREL/GEOPHIRES-X/issues/321
1414

15+
3.7.3: Heat to Power Conversion Efficiency output added.
16+
1517

1618
3.6
1719
^^^

README.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ Free software: `MIT license <LICENSE>`__
5656
:alt: Supported implementations
5757
:target: https://pypi.org/project/geophires-x
5858

59-
.. |commits-since| image:: https://img.shields.io/github/commits-since/softwareengineerprogrammer/GEOPHIRES-X/v3.7.0.svg
59+
.. |commits-since| image:: https://img.shields.io/github/commits-since/softwareengineerprogrammer/GEOPHIRES-X/v3.7.3.svg
6060
:alt: Commits since latest release
61-
:target: https://github.com/softwareengineerprogrammer/GEOPHIRES-X/compare/v3.7.0...main
61+
:target: https://github.com/softwareengineerprogrammer/GEOPHIRES-X/compare/v3.7.3...main
6262

6363
.. |docs| image:: https://readthedocs.org/projects/GEOPHIRES-X/badge/?style=flat
6464
:target: https://nrel.github.io/GEOPHIRES-X

docs/conf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
source_suffix = ['.rst', '.md']
1616
master_doc = 'index'
1717
project = 'geophires-x'
18-
year = '2024'
18+
year = '2025'
1919
author = 'NREL'
2020
copyright = f'{year}, {author}'
21-
version = release = '3.7.0'
21+
version = release = '3.7.3'
2222

2323
pygments_style = 'trac'
2424
templates_path = ['./templates']

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def read(*names, **kwargs):
1313

1414
setup(
1515
name='geophires-x',
16-
version='3.7.0',
16+
version='3.7.3',
1717
license='MIT',
1818
description='GEOPHIRES is a free and open-source geothermal techno-economic simulator.',
1919
long_description='{}\n{}'.format(

src/geophires_x/Outputs.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
PlantType
2424
from geophires_x.GeoPHIRESUtils import UpgradeSymbologyOfUnits, render_default, InsertImagesIntoHTML
2525
from geophires_x.Parameter import Parameter
26-
from geophires_x.Units import convertible_unit, Units, PercentUnit
2726

2827
NL = '\n'
2928
validFilenameChars = "-_.() %s%s" % (string.ascii_letters, string.digits)
@@ -1912,6 +1911,11 @@ def PrintOutputs(self, model: Model):
19121911

19131912
f.write(f' Average Pumping Power: {np.average(model.wellbores.PumpingPower.value):10.2f} {model.wellbores.PumpingPower.CurrentUnits.value}{NL}')
19141913

1914+
if model.surfaceplant.heat_to_power_conversion_efficiency.value is not None:
1915+
hpce = model.surfaceplant.heat_to_power_conversion_efficiency
1916+
f.write(f' {Outputs._field_label(hpce.Name, 50)}'
1917+
f'{hpce.value:10.2f} {model.surfaceplant.heat_to_power_conversion_efficiency.CurrentUnits.value}\n')
1918+
19151919
f.write(NL)
19161920
f.write(' ************************************************************\n')
19171921
f.write(' * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE *\n')

src/geophires_x/Parameter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ class OutputParameter(HasQuantity):
6363
"""
6464

6565
Name: str = ""
66-
value: int = 0
67-
ToolTipText: str = "This is ToolTip Text"
66+
value: Any = 0
67+
ToolTipText: str = ""
6868
UnitType: IntEnum = Units.NONE
6969
PreferredUnits: Enum = Units.NONE
7070
# set to PreferredUnits by default assuming that the current units are the preferred units -

src/geophires_x/SurfacePlant.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import os
33
import numpy as np
44

5+
from .GeoPHIRESUtils import quantity
56
from .OptionList import EndUseOptions, PlantType
67
from .Parameter import floatParameter, intParameter, strParameter, OutputParameter, ReadParameter, \
78
coerce_int_params_to_enum_values
@@ -486,7 +487,16 @@ def __init__(self, model: Model):
486487
Name="First Law Efficiency",
487488
UnitType=Units.PERCENT,
488489
PreferredUnits=PercentUnit.PERCENT,
489-
CurrentUnits=PercentUnit.PERCENT
490+
CurrentUnits=PercentUnit.PERCENT, # FIXME default values are actually in tenths, not percent.
491+
ToolTipText='Net electricity produced divided by heat extracted towards electricity'
492+
)
493+
self.heat_to_power_conversion_efficiency = self.OutputParameterDict[self.heat_to_power_conversion_efficiency.Name] = OutputParameter(
494+
Name='Heat to Power Conversion Efficiency',
495+
value=None,
496+
UnitType=Units.PERCENT,
497+
PreferredUnits=PercentUnit.PERCENT,
498+
CurrentUnits=PercentUnit.PERCENT,
499+
ToolTipText='First law efficiency average over project lifetime'
490500
)
491501
self.HeatExtracted = self.OutputParameterDict[self.HeatExtracted.Name] = OutputParameter(
492502
Name="Heat Extracted",
@@ -636,4 +646,20 @@ def Calculate(self, model: Model) -> None:
636646

637647
# All calculations are handled in subclasses of this class, so this function is empty.
638648

649+
# Subclasses should call _calculate_derived_outputs at the end of their Calculate methods.
650+
self._calculate_derived_outputs(model)
651+
639652
model.logger.info(f'Complete {self.__class__.__name__}: {__name__}')
653+
654+
def _calculate_derived_outputs(self, model: Model) -> None:
655+
"""
656+
Subclasses should call _calculate_derived_outputs at the end of their Calculate methods to populate output
657+
values that are derived from subclass-calculated outputs.
658+
"""
659+
660+
if self.FirstLawEfficiency is not None:
661+
fle_unit = PercentUnit.TENTH # See FIXME on self.FirstLawEfficiency re: CurrentUnit being incorrect.
662+
avg_efficiency = quantity(np.average(model.surfaceplant.FirstLawEfficiency.value), fle_unit).to(
663+
convertible_unit(self.heat_to_power_conversion_efficiency.CurrentUnits)).magnitude
664+
if avg_efficiency > 0: # 0 is presumed to mean N/A
665+
self.heat_to_power_conversion_efficiency.value = avg_efficiency

src/geophires_x/SurfacePlantAGS.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,4 +783,5 @@ def Calculate(self, model: Model) -> None:
783783
print(f'Error: {class_file_info_msg}. Exiting....')
784784
raise RuntimeError(base_msg)
785785

786+
self._calculate_derived_outputs(model)
786787
model.logger.info(f"complete {str(__class__)}: {sys._getframe().f_code.co_name}")

0 commit comments

Comments
 (0)