@@ -98,6 +98,8 @@ static var_info _cm_vtab_geothermal_costs[] = {
98
98
// need defaults?
99
99
{ SSC_INPUT, SSC_NUMBER, " geotherm.cost.pump_fixed" , " Fixed pump workover and casing cost" , " $" , " " , " GeoHourly" , " " , " " , " " },
100
100
{ SSC_INPUT, SSC_NUMBER, " geotherm.cost.pump_per_foot" , " Pump cost per foot" , " $/ft" , " " , " GeoHourly" , " " , " " , " " },
101
+ { SSC_INPUT, SSC_NUMBER, " geotherm.cost.pump_casing_cost" , " Pump casing cost per foot" , " $/ft" , " " , " GeoHourly" , " " , " " , " " },
102
+
101
103
// name change to match assign statement
102
104
// { SSC_INPUT, SSC_NUMBER, "geotherm.cost.pump_geotherm.cost.pump_depth", "Pump depth", "ft", "", "GeoHourly", "", "", "" },
103
105
{ SSC_INPUT, SSC_NUMBER, " geotherm.cost.pump_depth" , " Pump depth" , " ft" , " " , " GeoHourly" , " " , " " , " ?=1123120" },
@@ -853,15 +855,22 @@ class cm_geothermal_costs : public compute_module
853
855
}
854
856
855
857
// Pump costs
856
- double workover_casing_cost = as_double (" geotherm.cost.pump_fixed " );
858
+ double workover_casing_cost = as_double (" geotherm.cost.pump_casing_cost " );
857
859
// double casing_cost = as_double("casing_cost");
858
860
double installation_cost_per_foot = as_double (" geotherm.cost.pump_per_foot" );
859
861
double pump_set_depth = as_double (" geotherm.cost.pump_depth" );
860
862
double num_prod_wells = as_double (" geotherm.cost.prod_req" );
861
863
double num_inj_pumps = as_double (" inj_num_pumps" );
862
864
double prod_pump_power = as_double (" pump_size_hp" );
865
+ double prod_pump_cost = 1750 * pow (prod_pump_power, 0.7 ) * pump_ppi[ppi_base_year];
863
866
double other_pump_install_cost = 5750 * pow (prod_pump_power, 0.2 ) * pump_ppi[ppi_base_year];
864
- double prod_pump_cost_per_well = workover_casing_cost + installation_cost_per_foot * pump_set_depth * pump_ppi[ppi_base_year] + other_pump_install_cost;
867
+ double prod_casing_cost = pump_set_depth * workover_casing_cost * pipe_ppi[ppi_base_year];
868
+ // double installation_cost_per_foot = 5.0 * drilling_ppi[ppi_base_year];
869
+ // double workover_casing_cost = 44.74 * pipe_ppi[ppi_base_year];
870
+ double pump_installation_cost = prod_casing_cost + (10000.0 * drilling_ppi[ppi_base_year]) + installation_cost_per_foot * drilling_ppi[ppi_base_year] * pump_set_depth;
871
+ double install_cost_only = pump_installation_cost - prod_casing_cost;
872
+ double prod_pump_cost_per_well = prod_pump_cost + pump_installation_cost + other_pump_install_cost;
873
+ // double prod_pump_cost_per_well = prod_pump_cost + workover_casing_cost + installation_cost_per_foot * pump_set_depth * pump_ppi[ppi_base_year] + other_pump_install_cost;
865
874
double production_pump_cost = prod_pump_cost_per_well * num_prod_wells;
866
875
if ((conversion_type + 1 ) == FLASH) {
867
876
production_pump_cost = 0 ;
@@ -876,8 +885,8 @@ class cm_geothermal_costs : public compute_module
876
885
double injection_pump_cost = num_injection_pumps * inj_pump_cost_per_pump * pump_ppi[ppi_base_year];
877
886
878
887
double indirect_pump_cost = (production_pump_cost + injection_pump_cost) * (1.0 / (1.0 - 0.12 ) - 1.0 );
879
- assign (" pump_only_cost" , prod_pump_cost_per_well );
880
- assign (" pump_cost_install" , prod_pump_cost_per_well - workover_casing_cost );
888
+ assign (" pump_only_cost" , prod_pump_cost );
889
+ assign (" pump_cost_install" , install_cost_only );
881
890
double total_pump_cost = production_pump_cost + injection_pump_cost + indirect_pump_cost;
882
891
assign (" total_pump_cost" , var_data (static_cast <ssc_number_t >(total_pump_cost)));
883
892
@@ -896,7 +905,7 @@ class cm_geothermal_costs : public compute_module
896
905
double prod_wells_drilled = as_double (" num_wells_getem_prod_drilled" );
897
906
double inj_wells_drilled = as_double (" num_wells_getem_inj_drilled" );
898
907
double prod_wells_failed = as_double (" num_wells_getem_prod_failed" );
899
- double gathering_cost_total = piping_cost_per_well * (prod_wells_drilled + inj_wells_drilled + prod_wells_failed);
908
+ double gathering_cost_total = piping_cost_per_well * (num_prod_wells + inj_wells_drilled + prod_wells_failed);
900
909
assign (" total_gathering_cost" , var_data (static_cast <ssc_number_t >(gathering_cost_total)));
901
910
902
911
double indirect_pump_gathering_cost = (total_pump_cost + gathering_cost_total) * (1.0 / (1 - 0.12 ) - 1 );
0 commit comments