@@ -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