Skip to content

Commit de4298c

Browse files
output of which {Electrical, Heat} Plant Cost
1 parent 86ab6b5 commit de4298c

8 files changed

Lines changed: 43 additions & 17 deletions

File tree

src/geophires_x/Economics.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2076,14 +2076,16 @@ def __init__(self, model: Model):
20762076
'estimate the surface equipment cost for geothermal district-heating systems.'
20772077
)
20782078

2079-
self.CAPEX_cost_electricity_plant = self.OutputParameterDict[self.CAPEX_cost_electricity_plant.Name] = OutputParameter(
2080-
Name="Electricity Plant cost", # WIP...
2079+
self.CAPEX_cost_electrical_plant = self.OutputParameterDict[self.CAPEX_cost_electrical_plant.Name] = OutputParameter(
2080+
Name='Electrical Plant cost',
2081+
display_name='of which Electrical Plant Cost',
20812082
UnitType=Units.CURRENCY,
20822083
PreferredUnits=CurrencyUnit.MDOLLARS,
20832084
CurrentUnits=CurrencyUnit.MDOLLARS,
20842085
)
20852086
self.CAPEX_cost_heat_plant= self.OutputParameterDict[self.CAPEX_cost_heat_plant.Name] = OutputParameter(
2086-
Name="Heat Plant cost", # WIP...
2087+
Name='Heat Plant cost',
2088+
display_name='of which Heat Plant Cost',
20872089
UnitType=Units.CURRENCY,
20882090
PreferredUnits=CurrencyUnit.MDOLLARS,
20892091
CurrentUnits=CurrencyUnit.MDOLLARS,
@@ -2507,7 +2509,7 @@ def __init__(self, model: Model):
25072509

25082510
@property
25092511
def CAPEX_cost_electricity_plant_musd(self) -> float:
2510-
return self.CAPEX_cost_electricity_plant.quantity().to('MUSD').magnitude
2512+
return self.CAPEX_cost_electrical_plant.quantity().to('MUSD').magnitude
25112513

25122514
@property
25132515
def CAPEX_cost_heat_plant_musd(self) -> float:
@@ -3315,7 +3317,7 @@ def calculate_plant_costs(self, model: Model) -> None:
33153317
# TODO enhance message user-friendliness
33163318
raise RuntimeError(f'{self.CAPEX_heat_electricity_plant_ratio.Name} is required.')
33173319

3318-
self.CAPEX_cost_electricity_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_electricity_plant.CurrentUnits).magnitude * self.CAPEX_heat_electricity_plant_ratio.quantity().to('dimensionless').magnitude
3320+
self.CAPEX_cost_electrical_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_electrical_plant.CurrentUnits).magnitude * self.CAPEX_heat_electricity_plant_ratio.quantity().to('dimensionless').magnitude
33193321
self.CAPEX_cost_heat_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_heat_plant.CurrentUnits).magnitude * (1.0 - self.CAPEX_heat_electricity_plant_ratio.quantity().to('dimensionless').magnitude)
33203322
else:
33213323
if self.Power_plant_cost_per_kWe.Provided:
@@ -3329,7 +3331,7 @@ def calculate_plant_costs(self, model: Model) -> None:
33293331
direct_plant_cost_MUSD = self.ccplantadjfactor.value * self.Cplantcorrelation * 1.02 * 1.10
33303332

33313333
self.Cplant.value = self._indirect_cost_factor * self._contingency_factor * direct_plant_cost_MUSD
3332-
self.CAPEX_cost_electricity_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_electricity_plant.CurrentUnits).magnitude
3334+
self.CAPEX_cost_electrical_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_electrical_plant.CurrentUnits).magnitude
33333335

33343336
# add direct-use plant cost of co-gen system to Cplant (only if no total Cplant was provided)
33353337
if not self.ccplantfixed.Valid:

src/geophires_x/Outputs.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,10 @@ def PrintOutputs(self, model: Model):
496496
f.write(f' {econ.Cstim.display_name}: {econ.Cstim.value:10.2f} {econ.Cstim.CurrentUnits.value}\n')
497497

498498
f.write(f' {econ.Cplant.display_name}: {econ.Cplant.value:10.2f} {econ.Cplant.CurrentUnits.value}\n')
499+
if model.surfaceplant.enduse_option.value.is_cogeneration_end_use_option:
500+
f.write(f' {econ.CAPEX_cost_electrical_plant.display_name}: {econ.CAPEX_cost_electrical_plant.value:10.2f} {econ.CAPEX_cost_electrical_plant.CurrentUnits.value}\n')
501+
f.write(f' {econ.CAPEX_cost_heat_plant.display_name}: {econ.CAPEX_cost_heat_plant.value:10.2f} {econ.CAPEX_cost_heat_plant.CurrentUnits.value}\n')
502+
499503
if model.surfaceplant.plant_type.value == PlantType.ABSORPTION_CHILLER:
500504
f.write(f' of which Absorption Chiller Cost: {econ.chillercapex.value:10.2f} {econ.chillercapex.CurrentUnits.value}\n')
501505
if model.surfaceplant.plant_type.value == PlantType.HEAT_PUMP:

src/geophires_x_client/geophires_x_result.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,8 @@ class GeophiresXResult:
263263
'Stimulation costs',
264264
'Stimulation costs (for redrilling)',
265265
'Surface power plant costs',
266+
'of which Electrical Plant Cost',
267+
'of which Heat Plant Cost',
266268
'of which Absorption Chiller Cost',
267269
'of which Heat Pump Cost',
268270
'of which Peaking Boiler Cost',

src/geophires_x_schema_generator/geophires-result.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,16 @@
442442
"description": "Surface Plant cost. The built-in power plant cost correlations are based on the original correlations developed by Beckers (2016), indexed to 2017 using the IHS Markit North American Power Capital Costs Index (NAPCCI) excluding nuclear plants (IHS 2018). The ORC power plant cost data have been updated with data from the 2016 GETEM tool (DOE 2016) and the geothermal binary power plants study by Verkis (2014). Figure 4 in the Theoretical Basis shows the power plant capital cost expressed in $ kWe-1 as a function of plant size and initial production temperature for subcritical ORC and double-flash power plants. The default correlations in GEOPHIRES include 15% contingency plus 12% indirect costs. For the same plant size and production temperature, double-flash power plants are considered about 25% more expensive than single-flash power plants (Zeyghami 2010), and supercritical ORC plants are roughly 10% more than subcritical ORC plants (Astolfi et al. 2014). A wide range in power plant specific cost values is reported in academic and popular literature. The GEOPHIRES built-in surface plant cost correlations represent typical values. However, the user is recommended to provide their own power plant cost data if available for their case study. The ORC plant specific cost decreases only moderately at higher temperatures. The reasons are that when increasing the temperature, the ORC plant design also changes: (1) a different organic fluid is selected, (2) piping, pump, heat exchangers, and other equipment are designed to handle the higher temperature (and potentially also pressure), requiring thicker walls, potentially different materials, etc., and (3) additional components may be implemented, such as a heat recuperator, making the design and operation more complex. Unlike flash power plants, ORC plants are a small, niche market, typically case specific, and rely on relatively young technology, which has not been subject yet to decades of technological advancement. The cost for direct-use heat applications is highly dependent on the type of application. A generic cost of $250 kWth-1 is assumed plus 15% contingency plus 12% indirect costs. However, users are encouraged to provide their own cost figures for their specific application. Beckers and Young (2017) collected several cost figures to estimate the surface equipment cost for geothermal district-heating systems.",
443443
"units": "MUSD"
444444
},
445+
"of which Electrical Plant Cost": {
446+
"type": "number",
447+
"description": "Electrical Plant cost",
448+
"units": "MUSD"
449+
},
450+
"of which Heat Plant Cost": {
451+
"type": "number",
452+
"description": "Heat Plant cost",
453+
"units": "MUSD"
454+
},
445455
"of which Absorption Chiller Cost": {},
446456
"of which Heat Pump Cost": {},
447457
"of which Peaking Boiler Cost": {},

tests/examples/example14_data-center.out

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
Simulation Metadata
66
----------------------
77
GEOPHIRES Version: 3.12.1
8-
Simulation Date: 2026-04-05
9-
Simulation Time: 09:00
10-
Calculation Time: 2.094 sec
8+
Simulation Date: 2026-04-07
9+
Simulation Time: 10:14
10+
Calculation Time: 1.803 sec
1111

1212
***SUMMARY OF RESULTS***
1313

@@ -108,6 +108,8 @@ Simulation Metadata
108108
Drilling and completion costs per well: 5.61 MUSD
109109
Stimulation costs: 1514.98 MUSD
110110
Surface power plant costs: 4782.88 MUSD
111+
of which Electrical Plant Cost: 4614.62 MUSD
112+
of which Heat Plant Cost: 168.26 MUSD
111113
Field gathering system costs: 68.88 MUSD
112114
Transmission pipeline cost: 2.00 MUSD
113115
Total surface equipment costs: 4851.77 MUSD

tests/examples/example_SAM-single-owner-PPA-7_chp.out

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
Simulation Metadata
66
----------------------
77
GEOPHIRES Version: 3.12.1
8-
Simulation Date: 2026-04-05
9-
Simulation Time: 08:15
8+
Simulation Date: 2026-04-07
9+
Simulation Time: 10:14
1010
Calculation Time: 1.793 sec
1111

1212
***SUMMARY OF RESULTS***
@@ -116,6 +116,8 @@ Simulation Metadata
116116
Drilling and completion costs per well: 4.65 MUSD
117117
Stimulation costs: 48.30 MUSD
118118
Surface power plant costs: 154.20 MUSD
119+
of which Electrical Plant Cost: 131.92 MUSD
120+
of which Heat Plant Cost: 22.28 MUSD
119121
Field gathering system costs: 3.20 MUSD
120122
Total surface equipment costs: 157.40 MUSD
121123
Overnight Capital Cost: 256.90 MUSD

tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
Simulation Metadata
66
----------------------
77
GEOPHIRES Version: 3.12.1
8-
Simulation Date: 2026-04-05
9-
Simulation Time: 08:15
10-
Calculation Time: 1.793 sec
8+
Simulation Date: 2026-04-07
9+
Simulation Time: 10:14
10+
Calculation Time: 1.798 sec
1111

1212
***SUMMARY OF RESULTS***
1313

@@ -117,6 +117,8 @@ Simulation Metadata
117117
Drilling and completion costs per well: 4.65 MUSD
118118
Stimulation costs: 48.30 MUSD
119119
Surface power plant costs: 154.20 MUSD
120+
of which Electrical Plant Cost: 131.92 MUSD
121+
of which Heat Plant Cost: 22.28 MUSD
120122
Field gathering system costs: 3.20 MUSD
121123
Total surface equipment costs: 157.40 MUSD
122124
Overnight Capital Cost: 256.90 MUSD

tests/examples/example_SAM-single-owner-PPA-7c.out

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
Simulation Metadata
66
----------------------
77
GEOPHIRES Version: 3.12.1
8-
Simulation Date: 2026-04-05
9-
Simulation Time: 09:31
10-
Calculation Time: 2.216 sec
8+
Simulation Date: 2026-04-07
9+
Simulation Time: 10:14
10+
Calculation Time: 1.800 sec
1111

1212
***SUMMARY OF RESULTS***
1313

@@ -117,6 +117,8 @@ Simulation Metadata
117117
Drilling and completion costs per well: 4.65 MUSD
118118
Stimulation costs: 48.30 MUSD
119119
Surface power plant costs: 200.00 MUSD
120+
of which Electrical Plant Cost: 160.00 MUSD
121+
of which Heat Plant Cost: 40.00 MUSD
120122
Field gathering system costs: 3.20 MUSD
121123
Total surface equipment costs: 203.20 MUSD
122124
Overnight Capital Cost: 302.70 MUSD

0 commit comments

Comments
 (0)