Skip to content

Commit dba7472

Browse files
Honor 'Capital Cost for Power Plant for Electricity Generation' parameter for all electricity end-use, not just AGS. Affects Fervo_Project_Cape-4 and example_SAM-single-owner-PPA, which have this parameter in their inputs (but was not having an effect on results, which was not noticed until today)
1 parent 0ce8d54 commit dba7472

File tree

5 files changed

+177
-170
lines changed

5 files changed

+177
-170
lines changed

src/geophires_x/AGSEconomics.py

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -74,19 +74,7 @@ def __init__(self, model: Model):
7474
Required=False,
7575
ErrMessage="assume default Capital cost for surface plant for direct-use system (100 $/kWth)"
7676
)
77-
self._default_Power_plant_cost_USD_per_kWe = 3000
78-
self.Power_plant_cost_per_kWe = self.ParameterDict[self.Power_plant_cost_per_kWe.Name] = floatParameter(
79-
"Capital Cost for Power Plant for Electricity Generation",
80-
DefaultValue=self._default_Power_plant_cost_USD_per_kWe,
81-
Min=0.0,
82-
Max=10000.0,
83-
UnitType=Units.ENERGYCOST,
84-
PreferredUnits=EnergyCostUnit.DOLLARSPERKW,
85-
CurrentUnits=EnergyCostUnit.DOLLARSPERKW,
86-
Required=True,
87-
ErrMessage=f'assume default Power plant capital cost per kWe '
88-
f'({self._default_Power_plant_cost_USD_per_kWe} USD/kWe)'
89-
)
77+
self.Power_plant_cost_per_kWe.Required = True
9078

9179
# results are stored here and in the parent ProducedTemperature array
9280

src/geophires_x/Economics.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -700,6 +700,7 @@ def __init__(self, model: Model):
700700
Valid=True,
701701
ToolTipText="Multiplier for built-in wellfield O&M cost correlation"
702702
)
703+
703704
self.ccplantfixed = self.ParameterDict[self.ccplantfixed.Name] = floatParameter(
704705
"Surface Plant Capital Cost",
705706
DefaultValue=-1.0,
@@ -724,6 +725,19 @@ def __init__(self, model: Model):
724725
Valid=True,
725726
ToolTipText="Multiplier for built-in surface plant capital cost correlation"
726727
)
728+
self._default_Power_plant_cost_USD_per_kWe = 3000
729+
self.Power_plant_cost_per_kWe = self.ParameterDict[self.Power_plant_cost_per_kWe.Name] = floatParameter(
730+
"Capital Cost for Power Plant for Electricity Generation",
731+
DefaultValue=self._default_Power_plant_cost_USD_per_kWe,
732+
Min=0.0,
733+
Max=10000.0,
734+
UnitType=Units.ENERGYCOST,
735+
PreferredUnits=EnergyCostUnit.DOLLARSPERKW,
736+
CurrentUnits=EnergyCostUnit.DOLLARSPERKW,
737+
ErrMessage=f'assume default Power plant capital cost per kWe '
738+
f'({self._default_Power_plant_cost_USD_per_kWe} USD/kWe)'
739+
)
740+
727741
self.ccgathfixed = self.ParameterDict[self.ccgathfixed.Name] = floatParameter(
728742
"Field Gathering System Capital Cost",
729743
DefaultValue=-1.0,
@@ -2826,13 +2840,19 @@ def calculate_plant_costs(self, model:Model) -> None:
28262840
self.CAPEX_cost_electricity_plant = self.Cplant.value * self.CAPEX_heat_electricity_plant_ratio.value
28272841
self.CAPEX_cost_heat_plant = self.Cplant.value * (1.0 - self.CAPEX_heat_electricity_plant_ratio.value)
28282842
else:
2829-
# 1.02 to convert cost from 2012 to 2016
2843+
if self.Power_plant_cost_per_kWe.Provided:
2844+
nameplate_capacity_kW = np.max(model.surfaceplant.ElectricityProduced.quantity().to('kW'))
2845+
direct_plant_cost_MUSD = (nameplate_capacity_kW.magnitude *
2846+
model.economics.Power_plant_cost_per_kWe
2847+
.quantity().to('MUSD / kW').magnitude)
2848+
else:
2849+
# 1.02 to convert cost from 2012 to 2016
2850+
# factor 1.10 to convert from 2016 to 2022
2851+
direct_plant_cost_MUSD = self.ccplantadjfactor.value * self.Cplantcorrelation * 1.02 * 1.10
28302852

28312853
# factor 1.15 for 15% contingency and 1.12 for 12% indirect costs.
28322854
# TODO https://github.com/NREL/GEOPHIRES-X/issues/383?title=Parameterize+indirect+cost+factor
2833-
2834-
# factor 1.10 to convert from 2016 to 2022
2835-
self.Cplant.value = 1.12 * 1.15 * self.ccplantadjfactor.value * self.Cplantcorrelation * 1.02 * 1.10
2855+
self.Cplant.value = 1.12 * 1.15 * direct_plant_cost_MUSD
28362856
self.CAPEX_cost_electricity_plant = self.Cplant.value
28372857

28382858
# add direct-use plant cost of co-gen system to Cplant (only of no total Cplant was provided)

src/geophires_x_schema_generator/geophires-request.json

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@
3737
"Dead-state Pressure",
3838
"Economic Model",
3939
"Time steps per year",
40-
"Operation & Maintenance Cost of Surface Plant",
41-
"Capital Cost for Power Plant for Electricity Generation"
40+
"Operation & Maintenance Cost of Surface Plant"
4241
],
4342
"properties": {
4443
"Reservoir Model": {
@@ -1486,6 +1485,15 @@
14861485
"minimum": 0,
14871486
"maximum": 10
14881487
},
1488+
"Capital Cost for Power Plant for Electricity Generation": {
1489+
"description": "",
1490+
"type": "number",
1491+
"units": "USD/kW",
1492+
"category": "Economics",
1493+
"default": 3000,
1494+
"minimum": 0.0,
1495+
"maximum": 10000.0
1496+
},
14891497
"Field Gathering System Capital Cost": {
14901498
"description": "Total field gathering system capital cost",
14911499
"type": "number",
@@ -2230,15 +2238,6 @@
22302238
"minimum": 0.0,
22312239
"maximum": 10000.0
22322240
},
2233-
"Capital Cost for Power Plant for Electricity Generation": {
2234-
"description": "",
2235-
"type": "number",
2236-
"units": "USD/kW",
2237-
"category": "Economics",
2238-
"default": 3000.0,
2239-
"minimum": 0.0,
2240-
"maximum": 10000.0
2241-
},
22422241
"AddOn Nickname": {
22432242
"description": "If using multiple add-ons: either (1) specify this value as an array or (2) use multiple parameters suffixed with a number e.g. 'AddOn Nickname 1', 'AddOn Nickname 2', etc.",
22442243
"type": "array",

0 commit comments

Comments
 (0)