@@ -2424,41 +2424,7 @@ def Calculate(self, model: Model) -> None:
2424
2424
model .reserv .depth .value = model .reserv .depth .value / 1000.0
2425
2425
model .reserv .depth .CurrentUnits = LengthUnit .KILOMETERS
2426
2426
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 )
2462
2428
2463
2429
# do the additional economic calculations first, if needed, so the summaries below work.
2464
2430
if self .DoAddOnCalculations .value :
@@ -2641,11 +2607,6 @@ def calculate_stimulation_costs(self, model: Model) -> PlainQuantity:
2641
2607
2642
2608
return quantity (stimulation_costs , self .Cstim .CurrentUnits )
2643
2609
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
-
2649
2610
def calculate_field_gathering_costs (self , model : Model ) -> None :
2650
2611
if self .ccgathfixed .Valid :
2651
2612
self .Cgath .value = self .ccgathfixed .value
@@ -2938,7 +2899,7 @@ def calculate_plant_costs(self, model: Model) -> None:
2938
2899
if not self .CAPEX_heat_electricity_plant_ratio .Provided :
2939
2900
self .CAPEX_heat_electricity_plant_ratio .value = self .CAPEX_cost_electricity_plant / self .Cplant .value
2940
2901
2941
- def calculate_total_capital_costs (self , model ) :
2902
+ def calculate_total_capital_costs (self , model : Model ) -> None :
2942
2903
if not self .totalcapcost .Valid :
2943
2904
# exploration costs (same as in Geophires v1.2) (M$)
2944
2905
if self .ccexplfixed .Valid :
@@ -2994,7 +2955,7 @@ def calculate_total_capital_costs(self, model):
2994
2955
# Add in the FlatLicenseEtc, OtherIncentives, & TotalGrant
2995
2956
self .CCap .value = self .CCap .value + self .FlatLicenseEtc .value - self .OtherIncentives .value - self .TotalGrant .value
2996
2957
2997
- def calculate_operating_and_maintenance_costs (self , model ) :
2958
+ def calculate_operating_and_maintenance_costs (self , model : Model ) -> None :
2998
2959
# O&M costs
2999
2960
# calculate first O&M costs independent of whether oamtotalfixed is provided or not
3000
2961
# additional electricity cost for heat pump as end-use
@@ -3099,6 +3060,51 @@ def calculate_operating_and_maintenance_costs(self, model):
3099
3060
self .OPEX_cost_electricity_plant = self .Coam .value * self .CAPEX_heat_electricity_plant_ratio .value
3100
3061
self .OPEX_cost_heat_plant = self .Coam .value * (1.0 - self .CAPEX_heat_electricity_plant_ratio .value )
3101
3062
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
+
3102
3108
def calculate_cashflow (self , model : Model ) -> None :
3103
3109
"""
3104
3110
Calculate cashflow and cumulative cash flow
0 commit comments