Skip to content

Commit 14bc59d

Browse files
Set discount rate = fixed internal rate = 6.25%, per NREL#301. Includes fixes/tweaks to outputting interest rate unit/percent. TODO: resolve missing interest rate percent sign in SUTRAExample1.out; set discount rate/fixed internal rate to same value if exactly one is provided
1 parent a19c652 commit 14bc59d

17 files changed

+86
-90
lines changed

src/geophires_x/AGSEconomics.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,8 @@ def read_parameters(self, model: Model) -> None:
110110
# including the ones that are specific to this class
111111

112112
# inputs we already have - needs to be set at ReadParameter time so values set at the latest possible time
113-
self.Discount_rate = model.economics.discountrate.value # same units are GEOPHIRES
114-
self.Electricity_rate = model.surfaceplant.electricity_cost_to_buy.value # same units are GEOPHIRES
113+
self.Discount_rate = model.economics.discountrate.value # same units as GEOPHIRES
114+
self.Electricity_rate = model.surfaceplant.electricity_cost_to_buy.value # same units as GEOPHIRES
115115

116116
model.logger.info(f'complete {__class__!s}: {sys._getframe().f_code.co_name}')
117117

src/geophires_x/Economics.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -837,15 +837,17 @@ def __init__(self, model: Model):
837837
ErrMessage="assume default fixed charge rate (0.1)",
838838
ToolTipText="Fixed charge rate (FCR) used in the Fixed Charge Rate Model"
839839
)
840+
841+
discount_rate_default_val = 0.0625
840842
self.discountrate = self.ParameterDict[self.discountrate.Name] = floatParameter(
841843
"Discount Rate",
842-
DefaultValue=0.07,
844+
DefaultValue=discount_rate_default_val,
843845
Min=0.0,
844846
Max=1.0,
845847
UnitType=Units.PERCENT,
846-
PreferredUnits=PercentUnit.TENTH,
848+
PreferredUnits=PercentUnit.PERCENT,
847849
CurrentUnits=PercentUnit.TENTH,
848-
ErrMessage="assume default discount rate (0.07)",
850+
ErrMessage=f'assume default discount rate ({discount_rate_default_val})',
849851
ToolTipText="Discount rate used in the Standard Levelized Cost Model"
850852
)
851853
self.FIB = self.ParameterDict[self.FIB.Name] = floatParameter(
@@ -1379,15 +1381,18 @@ def __init__(self, model: Model):
13791381
PreferredUnits=CurrencyUnit.MDOLLARS,
13801382
CurrentUnits=CurrencyUnit.MDOLLARS
13811383
)
1384+
1385+
fir_default_unit = PercentUnit.PERCENT
1386+
fir_default_val = self.discountrate.quantity().to(fir_default_unit.value).magnitude
13821387
self.FixedInternalRate = self.ParameterDict[self.FixedInternalRate.Name] = floatParameter(
13831388
"Fixed Internal Rate",
1384-
DefaultValue=6.25,
1389+
DefaultValue=fir_default_val,
13851390
Min=0.0,
13861391
Max=100.0,
13871392
UnitType=Units.PERCENT,
13881393
PreferredUnits=PercentUnit.PERCENT,
1389-
CurrentUnits=PercentUnit.PERCENT,
1390-
ErrMessage="assume default for fixed internal rate (6.25%)",
1394+
CurrentUnits=fir_default_unit,
1395+
ErrMessage=f'assume default for fixed internal rate ({fir_default_val}%)',
13911396
ToolTipText="Fixed Internal Rate (used in NPV calculation)"
13921397
)
13931398
self.CAPEX_heat_electricity_plant_ratio = self.ParameterDict[self.CAPEX_heat_electricity_plant_ratio.Name] = floatParameter(

src/geophires_x/Outputs.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1634,7 +1634,11 @@ def PrintOutputs(self, model: Model):
16341634
f.write(f' Fixed Charge Rate (FCR): {model.economics.FCR.value*100.0:10.2f} ' + model.economics.FCR.CurrentUnits.value + NL)
16351635
elif model.economics.econmodel.value == EconomicModel.STANDARDIZED_LEVELIZED_COST:
16361636
f.write(' Economic Model = ' + model.economics.econmodel.value.value + NL)
1637-
f.write(f' Interest Rate: {model.economics.discountrate.value*100.0:10.2f} ' + model.economics.discountrate.CurrentUnits.value + NL)
1637+
1638+
# FIXME discountrate should not be multiplied by 100 here -
1639+
# it appears to be incorrectly claiming its units are percent when the actual value is in tenths.
1640+
f.write(f' Interest Rate: {model.economics.discountrate.value*100.0:10.2f} {model.economics.discountrate.CurrentUnits.value}\n')
1641+
16381642
elif model.economics.econmodel.value == EconomicModel.BICYCLE:
16391643
f.write(' Economic Model = ' + model.economics.econmodel.value.value + NL)
16401644
f.write(f' Accrued financing during construction: {model.economics.inflrateconstruction.value*100:10.2f} ' + model.economics.inflrateconstruction.CurrentUnits.value + NL)

src/geophires_x/SUTRAEconomics.py

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -111,19 +111,6 @@ def __init__(self, model: Model):
111111
ToolTipText="Multiplier for built-in surface plant capital cost correlation",
112112
)
113113

114-
self.discountrate = self.ParameterDict[self.discountrate.Name] = floatParameter(
115-
"Discount Rate",
116-
value=0.07,
117-
DefaultValue=0.07,
118-
Min=0.0,
119-
Max=1.0,
120-
UnitType=Units.PERCENT,
121-
PreferredUnits=PercentUnit.PERCENT,
122-
CurrentUnits=PercentUnit.TENTH,
123-
ErrMessage="assume default discount rate (0.07)",
124-
ToolTipText="Discount rate used in the Standard Levelized Cost Model",
125-
)
126-
127114
self.inflrateconstruction = self.ParameterDict[self.inflrateconstruction.Name] = floatParameter(
128115
"Inflation Rate During Construction",
129116
value=0.0,

src/geophires_x/SUTRAOutputs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def PrintOutputs(self, model: Model):
8383
f.write(f" Fixed Charge Rate (FCR): {model.economics.FCR.value*100.0:10.2f} " + model.economics.FCR.CurrentUnits.value + NL)
8484
elif model.economics.econmodel.value == EconomicModel.STANDARDIZED_LEVELIZED_COST:
8585
f.write(" Economic Model = " + model.economics.econmodel.value.value + NL)
86-
f.write(f" Interest Rate: {model.economics.discountrate.value*100.0:10.2f} " + model.economics.discountrate.PreferredUnits.value + NL)
86+
f.write(f" Interest Rate: {model.economics.discountrate.value*100.0:10.2f} " + model.economics.discountrate.CurrentUnits.value + NL)
8787
elif model.economics.econmodel.value == EconomicModel.BICYCLE:
8888
f.write(" Economic Model = " + model.economics.econmodel.value.value + NL)
8989
f.write(f" Accrued financing during construction: {model.economics.inflrateconstruction.value*100:10.2f} " + model.economics.inflrateconstruction.PreferredUnits.value + NL)

tests/examples/Beckers_et_al_2023_Tabulated_Database_Coaxial_sCO2_heat.out

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
Simulation Metadata
66
----------------------
7-
GEOPHIRES Version: 3.4.4
8-
Simulation Date: 2024-03-02
9-
Simulation Time: 14:11
10-
Calculation Time: 1.178 sec
7+
GEOPHIRES Version: 3.6.0
8+
Simulation Date: 2024-10-10
9+
Simulation Time: 11:54
10+
Calculation Time: 0.730 sec
1111

1212

1313
***AGS/CLGS STYLE OUTPUT***
@@ -19,7 +19,7 @@ Simulation Metadata
1919
Flow rate: 40.0 kg/sec
2020
Lateral Length: 1000 meter
2121
Vertical Depth: 3 kilometer
22-
Geothermal Gradient: 0.0600 degC/km
22+
Geothermal Gradient: 60.0000 degC/km
2323
Wellbore Diameter: 8.5000 in
2424
Injection Temperature: 60.0 degC
2525
Thermal Conductivity: 3.00 W/m/K
@@ -33,7 +33,7 @@ Simulation Metadata
3333
Drilling Cost: 7.0 MUSD
3434
Surface Plant Cost: 0.1 MUSD
3535
OPEX: 2.1 KUSD/yr
36-
LCOH: 54.1 USD/MWh
36+
LCOH: 50.1 USD/MWh
3737

3838
******************************
3939
* POWER GENERATION PROFILE *

tests/examples/Beckers_et_al_2023_Tabulated_Database_Coaxial_water_heat.out

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
Simulation Metadata
66
----------------------
7-
GEOPHIRES Version: 3.4.4
8-
Simulation Date: 2024-03-02
9-
Simulation Time: 14:12
10-
Calculation Time: 1.004 sec
7+
GEOPHIRES Version: 3.6.0
8+
Simulation Date: 2024-10-10
9+
Simulation Time: 11:54
10+
Calculation Time: 0.662 sec
1111

1212

1313
***AGS/CLGS STYLE OUTPUT***
@@ -19,7 +19,7 @@ Simulation Metadata
1919
Flow rate: 20.0 kg/sec
2020
Lateral Length: 9000 meter
2121
Vertical Depth: 3 kilometer
22-
Geothermal Gradient: 0.0600 degC/m
22+
Geothermal Gradient: 60.0000 degC/km
2323
Wellbore Diameter: 8.5000 in
2424
Injection Temperature: 60.0 degC
2525
Thermal Conductivity: 3.00 W/m/K
@@ -33,7 +33,7 @@ Simulation Metadata
3333
Drilling Cost: 12.0 MUSD
3434
Surface Plant Cost: 0.5 MUSD
3535
OPEX: 142.2 KUSD/yr
36-
LCOH: 29.7 USD/MWh
36+
LCOH: 27.8 USD/MWh
3737

3838
******************************
3939
* POWER GENERATION PROFILE *

tests/examples/Beckers_et_al_2023_Tabulated_Database_Uloop_sCO2_elec.out

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
Simulation Metadata
66
----------------------
7-
GEOPHIRES Version: 3.4.4
8-
Simulation Date: 2024-03-02
9-
Simulation Time: 14:13
10-
Calculation Time: 1.085 sec
7+
GEOPHIRES Version: 3.6.0
8+
Simulation Date: 2024-10-10
9+
Simulation Time: 11:55
10+
Calculation Time: 0.790 sec
1111

1212

1313
***AGS/CLGS STYLE OUTPUT***
@@ -19,7 +19,7 @@ Simulation Metadata
1919
Flow rate: 40.0 kg/sec
2020
Lateral Length: 9000 meter
2121
Vertical Depth: 3 kilometer
22-
Geothermal Gradient: 0.0600 degC/m
22+
Geothermal Gradient: 60.0000 degC/km
2323
Wellbore Diameter: 8.5000 in
2424
Injection Temperature: 60.0 degC
2525
Thermal Conductivity: 3.00 W/m/K
@@ -35,7 +35,7 @@ Simulation Metadata
3535
Drilling Cost: 15.0 MUSD
3636
Surface Plant Cost: 0.9 MUSD
3737
OPEX: 13.2 KUSD/yr
38-
LCOE: 601.4 USD/MWh
38+
LCOE: 557.6 USD/MWh
3939

4040
******************************
4141
* POWER GENERATION PROFILE *

tests/examples/Beckers_et_al_2023_Tabulated_Database_Uloop_sCO2_heat.out

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
Simulation Metadata
66
----------------------
7-
GEOPHIRES Version: 3.4.4
8-
Simulation Date: 2024-03-02
9-
Simulation Time: 14:13
10-
Calculation Time: 1.093 sec
7+
GEOPHIRES Version: 3.6.0
8+
Simulation Date: 2024-10-10
9+
Simulation Time: 11:54
10+
Calculation Time: 0.724 sec
1111

1212

1313
***AGS/CLGS STYLE OUTPUT***
@@ -19,7 +19,7 @@ Simulation Metadata
1919
Flow rate: 40.0 kg/sec
2020
Lateral Length: 9000 meter
2121
Vertical Depth: 3 kilometer
22-
Geothermal Gradient: 0.0600 degC/m
22+
Geothermal Gradient: 60.0000 degC/km
2323
Wellbore Diameter: 8.5000 in
2424
Injection Temperature: 60.0 degC
2525
Thermal Conductivity: 3.00 W/m/K
@@ -33,7 +33,7 @@ Simulation Metadata
3333
Drilling Cost: 15.0 MUSD
3434
Surface Plant Cost: 0.4 MUSD
3535
OPEX: 6.0 KUSD/yr
36-
LCOH: 38.8 USD/MWh
36+
LCOH: 35.9 USD/MWh
3737

3838
******************************
3939
* POWER GENERATION PROFILE *

tests/examples/Beckers_et_al_2023_Tabulated_Database_Uloop_water_elec.out

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
Simulation Metadata
66
----------------------
7-
GEOPHIRES Version: 3.4.4
8-
Simulation Date: 2024-03-02
9-
Simulation Time: 14:14
10-
Calculation Time: 1.073 sec
7+
GEOPHIRES Version: 3.6.0
8+
Simulation Date: 2024-10-10
9+
Simulation Time: 11:54
10+
Calculation Time: 0.741 sec
1111

1212

1313
***AGS/CLGS STYLE OUTPUT***
@@ -19,7 +19,7 @@ Simulation Metadata
1919
Flow rate: 20.0 kg/sec
2020
Lateral Length: 9000 meter
2121
Vertical Depth: 3 kilometer
22-
Geothermal Gradient: 0.0600 degC/m
22+
Geothermal Gradient: 60.0000 degC/km
2323
Wellbore Diameter: 8.5000 in
2424
Injection Temperature: 60.0 degC
2525
Thermal Conductivity: 3.00 W/m/K
@@ -35,7 +35,7 @@ Simulation Metadata
3535
Drilling Cost: 15.0 MUSD
3636
Surface Plant Cost: 1.2 MUSD
3737
OPEX: 18.6 KUSD/yr
38-
LCOE: 437.5 USD/MWh
38+
LCOE: 405.7 USD/MWh
3939

4040
******************************
4141
* POWER GENERATION PROFILE *

0 commit comments

Comments
 (0)