Skip to content

Commit 140fb75

Browse files
Break out Economics.build_price_models
1 parent 1c90e3a commit 140fb75

File tree

1 file changed

+48
-42
lines changed

1 file changed

+48
-42
lines changed

src/geophires_x/Economics.py

Lines changed: 48 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2424,41 +2424,7 @@ def Calculate(self, model: Model) -> None:
24242424
model.reserv.depth.value = model.reserv.depth.value / 1000.0
24252425
model.reserv.depth.CurrentUnits = LengthUnit.KILOMETERS
24262426

2427-
# build the PTC price models
2428-
self.PTCElecPrice = [0.0] * model.surfaceplant.plant_lifetime.value
2429-
self.PTCHeatPrice = [0.0] * model.surfaceplant.plant_lifetime.value
2430-
self.PTCCoolingPrice = [0.0] * model.surfaceplant.plant_lifetime.value
2431-
self.PTCCarbonPrice = [0.0] * model.surfaceplant.plant_lifetime.value
2432-
if self.PTCElec.Provided:
2433-
self.PTCElecPrice = BuildPTCModel(model.surfaceplant.plant_lifetime.value,
2434-
self.PTCDuration.value, self.PTCElec.value, self.PTCInflationAdjusted.value,
2435-
self.RINFL.value)
2436-
if self.PTCHeat.Provided:
2437-
self.PTCHeatPrice = BuildPTCModel(model.surfaceplant.plant_lifetime.value,
2438-
self.PTCDuration.value, self.PTCHeat.value, self.PTCInflationAdjusted.value,
2439-
self.RINFL.value)
2440-
if self.PTCCooling.Provided:
2441-
self.PTCCoolingPrice = BuildPTCModel(model.surfaceplant.plant_lifetime.value,
2442-
self.PTCDuration.value,self.PTCCooling.value, self.PTCInflationAdjusted.value,
2443-
self.RINFL.value)
2444-
2445-
# build the price models
2446-
self.ElecPrice.value = BuildPricingModel(model.surfaceplant.plant_lifetime.value,
2447-
self.ElecStartPrice.value, self.ElecEndPrice.value,
2448-
self.ElecEscalationStart.value, self.ElecEscalationRate.value,
2449-
self.PTCElecPrice)
2450-
self.HeatPrice.value = BuildPricingModel(model.surfaceplant.plant_lifetime.value,
2451-
self.HeatStartPrice.value, self.HeatEndPrice.value,
2452-
self.HeatEscalationStart.value, self.HeatEscalationRate.value,
2453-
self.PTCHeatPrice)
2454-
self.CoolingPrice.value = BuildPricingModel(model.surfaceplant.plant_lifetime.value,
2455-
self.CoolingStartPrice.value, self.CoolingEndPrice.value,
2456-
self.CoolingEscalationStart.value, self.CoolingEscalationRate.value,
2457-
self.PTCCoolingPrice)
2458-
self.CarbonPrice.value = BuildPricingModel(model.surfaceplant.plant_lifetime.value,
2459-
self.CarbonStartPrice.value, self.CarbonEndPrice.value,
2460-
self.CarbonEscalationStart.value, self.CarbonEscalationRate.value,
2461-
self.PTCCarbonPrice)
2427+
self.build_price_models(model)
24622428

24632429
# do the additional economic calculations first, if needed, so the summaries below work.
24642430
if self.DoAddOnCalculations.value:
@@ -2641,11 +2607,6 @@ def calculate_stimulation_costs(self, model: Model) -> PlainQuantity:
26412607

26422608
return quantity(stimulation_costs, self.Cstim.CurrentUnits)
26432609

2644-
def calculate_redrilling_costs(self, model) -> PlainQuantity:
2645-
return ((self.Cwell.quantity() + self.Cstim.quantity())
2646-
* model.wellbores.redrill.quantity()
2647-
/ model.surfaceplant.plant_lifetime.quantity())
2648-
26492610
def calculate_field_gathering_costs(self, model: Model) -> None:
26502611
if self.ccgathfixed.Valid:
26512612
self.Cgath.value = self.ccgathfixed.value
@@ -2938,7 +2899,7 @@ def calculate_plant_costs(self, model: Model) -> None:
29382899
if not self.CAPEX_heat_electricity_plant_ratio.Provided:
29392900
self.CAPEX_heat_electricity_plant_ratio.value = self.CAPEX_cost_electricity_plant/self.Cplant.value
29402901

2941-
def calculate_total_capital_costs(self, model):
2902+
def calculate_total_capital_costs(self, model: Model) -> None:
29422903
if not self.totalcapcost.Valid:
29432904
# exploration costs (same as in Geophires v1.2) (M$)
29442905
if self.ccexplfixed.Valid:
@@ -2994,7 +2955,7 @@ def calculate_total_capital_costs(self, model):
29942955
# Add in the FlatLicenseEtc, OtherIncentives, & TotalGrant
29952956
self.CCap.value = self.CCap.value + self.FlatLicenseEtc.value - self.OtherIncentives.value - self.TotalGrant.value
29962957

2997-
def calculate_operating_and_maintenance_costs(self, model):
2958+
def calculate_operating_and_maintenance_costs(self, model: Model) -> None:
29982959
# O&M costs
29992960
# calculate first O&M costs independent of whether oamtotalfixed is provided or not
30002961
# additional electricity cost for heat pump as end-use
@@ -3099,6 +3060,51 @@ def calculate_operating_and_maintenance_costs(self, model):
30993060
self.OPEX_cost_electricity_plant = self.Coam.value * self.CAPEX_heat_electricity_plant_ratio.value
31003061
self.OPEX_cost_heat_plant = self.Coam.value * (1.0 - self.CAPEX_heat_electricity_plant_ratio.value)
31013062

3063+
def calculate_redrilling_costs(self, model: Model) -> PlainQuantity:
3064+
return ((self.Cwell.quantity() + self.Cstim.quantity())
3065+
* model.wellbores.redrill.quantity()
3066+
/ model.surfaceplant.plant_lifetime.quantity())
3067+
3068+
def build_price_models(self, model: Model) -> None:
3069+
# build the PTC price models
3070+
self.PTCElecPrice = [0.0] * model.surfaceplant.plant_lifetime.value
3071+
self.PTCHeatPrice = [0.0] * model.surfaceplant.plant_lifetime.value
3072+
self.PTCCoolingPrice = [0.0] * model.surfaceplant.plant_lifetime.value
3073+
self.PTCCarbonPrice = [0.0] * model.surfaceplant.plant_lifetime.value
3074+
if self.PTCElec.Provided:
3075+
self.PTCElecPrice = BuildPTCModel(model.surfaceplant.plant_lifetime.value,
3076+
self.PTCDuration.value, self.PTCElec.value,
3077+
self.PTCInflationAdjusted.value,
3078+
self.RINFL.value)
3079+
if self.PTCHeat.Provided:
3080+
self.PTCHeatPrice = BuildPTCModel(model.surfaceplant.plant_lifetime.value,
3081+
self.PTCDuration.value, self.PTCHeat.value,
3082+
self.PTCInflationAdjusted.value,
3083+
self.RINFL.value)
3084+
if self.PTCCooling.Provided:
3085+
self.PTCCoolingPrice = BuildPTCModel(model.surfaceplant.plant_lifetime.value,
3086+
self.PTCDuration.value, self.PTCCooling.value,
3087+
self.PTCInflationAdjusted.value,
3088+
self.RINFL.value)
3089+
3090+
# build the price models
3091+
self.ElecPrice.value = BuildPricingModel(model.surfaceplant.plant_lifetime.value,
3092+
self.ElecStartPrice.value, self.ElecEndPrice.value,
3093+
self.ElecEscalationStart.value, self.ElecEscalationRate.value,
3094+
self.PTCElecPrice)
3095+
self.HeatPrice.value = BuildPricingModel(model.surfaceplant.plant_lifetime.value,
3096+
self.HeatStartPrice.value, self.HeatEndPrice.value,
3097+
self.HeatEscalationStart.value, self.HeatEscalationRate.value,
3098+
self.PTCHeatPrice)
3099+
self.CoolingPrice.value = BuildPricingModel(model.surfaceplant.plant_lifetime.value,
3100+
self.CoolingStartPrice.value, self.CoolingEndPrice.value,
3101+
self.CoolingEscalationStart.value, self.CoolingEscalationRate.value,
3102+
self.PTCCoolingPrice)
3103+
self.CarbonPrice.value = BuildPricingModel(model.surfaceplant.plant_lifetime.value,
3104+
self.CarbonStartPrice.value, self.CarbonEndPrice.value,
3105+
self.CarbonEscalationStart.value, self.CarbonEscalationRate.value,
3106+
self.PTCCarbonPrice)
3107+
31023108
def calculate_cashflow(self, model: Model) -> None:
31033109
"""
31043110
Calculate cashflow and cumulative cash flow

0 commit comments

Comments
 (0)