From 5a7d5ec09e03dddbdb3f2c06b7d16a4ee5bf179c Mon Sep 17 00:00:00 2001 From: tyneises Date: Sun, 24 May 2026 09:06:02 -0500 Subject: [PATCH 01/74] comment out geothermal ssc equations to prep for adding ssc_auto_exec --- deploy/runtime/ui/Geothermal Costs.json | 10 +++--- deploy/runtime/ui/Geothermal OM Costs.json | 5 +-- .../ui/Geothermal Plant and Equipment.json | 35 ++++++++++++++++--- 3 files changed, 40 insertions(+), 10 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 680668e795..131ec5e3e7 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12733,12 +12733,13 @@ "\t\tssc_var( geothermal, 'hc_ctl8', ${hc_ctl8});", "\t\tssc_var( geothermal, 'hc_ctl9', ${hc_ctl9});", "\t\tssc_var( geothermal, 'hybrid_dispatch_schedule', ${hybrid_dispatch_schedule});", - "\t\tresult = ssc_exec(geothermal, 'geothermal');", + "\t\t//result = ssc_exec(geothermal, 'geothermal');", + "\t\tresult = 1;\r", "\t\tif ( typeof(result) != 'number' && result != 0 )\r", "\t\t{\r", "\t\t\tmsgbox('geothermal mimo error, result =' + result); \r", "\t\t}", - "\t\tif (ssc_exec(geothermal, 'geothermal') == 0) ", + "\t\tif (result == 0) ", "\t\t{", "\t\t\t//geothermal = ssc_create('geothermal_geothermals');\r", "\t\t\t", @@ -12831,8 +12832,9 @@ "\t\t\t\tssc_var(cost,'flash_count', flash_count);", "\t\t\t\t*/", "\t\t\t}", - "\t\t\t", - "\t\t\tif (ssc_exec(geothermal, 'geothermal_costs') == 0) {\t", + "\t\t\t\t\t\t", + "\t\t\t//if (ssc_exec(geothermal, 'geothermal_costs') == 0) {\t\r", + "\t\t\tif(false){", "\t\t\t\t${geotherm.cost.plant_per_kW} = ssc_var(geothermal, 'baseline_cost');\t", "\t\t\t\t${geotherm.cost.pumps_total} = ssc_var(geothermal, \"total_pump_cost\");\r", "\t\t\t\t${geotherm.cost.surf_total} = ssc_var(geothermal, \"total_gathering_cost\");\r", diff --git a/deploy/runtime/ui/Geothermal OM Costs.json b/deploy/runtime/ui/Geothermal OM Costs.json index 3a562cff97..eff2be2fd9 100644 --- a/deploy/runtime/ui/Geothermal OM Costs.json +++ b/deploy/runtime/ui/Geothermal OM Costs.json @@ -210,12 +210,13 @@ "\tssc_var( geothermal, 'hc_ctl8', ${hc_ctl8});\r", "\tssc_var( geothermal, 'hc_ctl9', ${hc_ctl9});\r", "\tssc_var( geothermal, 'hybrid_dispatch_schedule', ${hybrid_dispatch_schedule});\r", - "\tresult = ssc_exec(geothermal, 'geothermal');\r", + "\t//result = ssc_exec(geothermal, 'geothermal');\r", + "\tresult = 1;\r", "\tif ( typeof(result) != 'number' && result != 0 )\r", "\t{\r", "\t\tmsgbox('geothermal mimo error, result =' + result); \r", "\t}\r", - "\tif (ssc_exec(geothermal, 'geothermal') == 0) \r", + "\tif (result == 0) \r", "\t{\r", "\t\tdata.gross_output = ${gross_output};\r", "\t\tdata.conversion_type = ${conversion_type};\r", diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index 29aac79582..3658583ecf 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4230,13 +4230,39 @@ "\t// temp input for testing", "\tssc_var( obj, 'hr_pl_nlev', ${hr_pl_nlev} ); // INTEGER", "", - " result = ssc_exec( obj, 'geothermal' );", + " //result = ssc_exec( obj, 'geothermal' );\r", + " result = 1;", " // use for diagnostics - if it doesn't seem to run, 'result' should have error", - "\tif ( typeof(result) != 'number' && result != 0 )", + "\tif ( typeof(result) != 'number' || result != 0 )", "\t{", - "\t\tmsgbox('geothermal mimo error, result =' + result); ", + "\t\tmsgbox('geothermal mimo error, result =' + result); \r", + "\t\t\r", + "\t\terr = -789;\r", + "\t\t\r", + "\t\t${num_wells_getem} = err;\r", + "\t\t${num_wells_getem_inj} = err;\r", + "\t\t${geotherm.cost.prod_wells_drilled} = err;\r", + "\t\t${geotherm.cost.inj_wells_drilled} = err;\r", + "\t\t${geotherm.plant_efficiency_used} = err;\r", + "\t\tfailed_prod = err;\r", + "\t\t//${geotherm.cost.surf_num_wells} = ${num_wells_getem} + ${geotherm.cost.inj_wells_drilled} + failed_prod;\r", + "\t\t${pump_work_watthr_lb} = err;\r", + "\t\t${pumpwork_prod} = err;\r", + "\t\t${pumpwork_inj} = err;\r", + "\t\t${gross_output} = err;\r", + "\t\t${pump_depth} = err;\r", + "\t\t${inj_pump_hp} = err;\r", + "\t\tif (${specify_pump_work} == 0)\r", + "\t\t\t${pump_work} = err;\r", + "\t\telse\r", + "\t\t\t${pump_work} = ${specified_pump_work_amount};\r", + "\t\t//${pump_size_hp} = ssc_var(obj, 'pump_hp');\r", + "\r", + "\t\t${geotherm.delta_pressure_reservoir} = err;\r", + "\t\t${geotherm.avg_reservoir_temp} = err;\r", + "\t\t${geotherm.bottom_hole_pressure} = err;\r", "\t}", - " ", + " else{", " ${num_wells_getem} = ssc_var( obj, 'num_wells_getem_output');", " ${num_wells_getem_inj} = ssc_var( obj, 'num_wells_getem_inj');\r", " ${geotherm.cost.prod_wells_drilled} = ssc_var( obj, 'num_wells_getem_prod_drilled');\r", @@ -4259,6 +4285,7 @@ " ${geotherm.delta_pressure_reservoir} = ssc_var(obj, 'reservoir_pressure');", " ${geotherm.avg_reservoir_temp} = ssc_var(obj, 'reservoir_avg_temp');", " ${geotherm.bottom_hole_pressure} = ssc_var(obj, 'bottom_hole_pressure');", + "\t}\r", "", "\tssc_free( obj );", "\t", From 93f1185803f869296e0dc5434780176119e38218 Mon Sep 17 00:00:00 2001 From: tyneises Date: Sun, 24 May 2026 11:15:48 -0500 Subject: [PATCH 02/74] add geothermal system design page and run geothermal cmod through ssc auto exec --- deploy/runtime/startup.lk | 2 +- .../runtime/ui/Geothermal System Design.json | 129 ++++++++++++++++++ 2 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 deploy/runtime/ui/Geothermal System Design.json diff --git a/deploy/runtime/startup.lk b/deploy/runtime/startup.lk index a29880d6f2..3ee62a7ad0 100644 --- a/deploy/runtime/startup.lk +++ b/deploy/runtime/startup.lk @@ -788,7 +788,7 @@ function setup_geothermal_power_pages() addpage( [[ 'Geothermal Resource', {'name'='Geothermal Reservoir Input', 'caption'='Geothermal Reservoir Model Input Table', 'collapsible'=true, 'collapsible_var'='reservoir_model_inputs_shown'} ]], { 'sidebar'='Geothermal Resource', 'help'='geothermal/geo_geothermal_resource' } ); - addpage( [[ 'Geothermal Plant and Equipment' ]], { 'sidebar'='Plant and Equipment', 'help'='geothermal/geo_plant_equipment' } ); + addpage( [[ 'Geothermal System Design', 'Geothermal Plant and Equipment' ]], { 'sidebar'='Plant and Equipment', 'help'='geothermal/geo_plant_equipment' } ); addpage( [[ 'Geothermal Power Block' ]], { 'sidebar'='Power Block', 'help'='geothermal/geo_power_block' } ); setup_grid_limits_page(); } diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json new file mode 100644 index 0000000000..79d1a905c7 --- /dev/null +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -0,0 +1,129 @@ +{ + "Name": "Geothermal System Design", + "Width": 824.0, + "Height": 184.0, + "FormObjects": { + "Numeric": { + "Visible": 1.0, + "ObjectProperties": { + "Name": { + "Type": 5.0, + "String": "is_success_auto_exec" + }, + "X": { + "Type": 3.0, + "Integer": 456.0 + }, + "Y": { + "Type": 3.0, + "Integer": 30.0 + }, + "Width": { + "Type": 3.0, + "Integer": 90.0 + }, + "Height": { + "Type": 3.0, + "Integer": 24.0 + }, + "Tool Tip": { + "Type": 5.0, + "String": "" + }, + "Value": { + "Type": 1.0, + "Double": 0.0 + }, + "Mode": { + "Type": 3.0, + "Integer": 1.0 + }, + "Format": { + "Type": 3.0, + "Integer": 0.0 + }, + "Decimals": { + "Type": 3.0, + "Integer": 3.0 + }, + "Prefix": { + "Type": 5.0, + "String": "" + }, + "Suffix": { + "Type": 5.0, + "String": "" + }, + "ThousandsSep": { + "Type": 2.0, + "Boolean": 1.0 + }, + "Editable": { + "Type": 2.0, + "Boolean": 1.0 + }, + "ForeColour": { + "Type": 4.0, + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 0.0, + "Alpha": 255.0 + } + }, + "BackColour": { + "Type": 4.0, + "Color": { + "Red": 255.0, + "Green": 255.0, + "Blue": 255.0, + "Alpha": 255.0 + } + }, + "TabOrder": { + "Type": 3.0, + "Integer": -1.0 + } + } + } + }, + "VarDatabase": { + "is_success_auto_exec": { + "Version": 4.0, + "Type": 1.0, + "Label": "Is success auto exec", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + } + }, + "Equations": [ + "equations{ '$MIMO$ ui_mspt_system_design__mspt_cmod' } = define()\r", + "{\r", + "\tobj = ssc_create();\r", + "\r", + "\t//#ssc_auto_exec(obj, 'geothermal', 2);\r", + "\t\r", + "\t//\tret_d = ssc_dump(obj, 'physical_trough_v2_mimo_ssc_auto_exec.lk');\r", + "\tret = ssc_exec(obj, 'geothermal');\r", + "\t\r", + "\tif(ret == 0)\r", + "\t{\r", + "\t\t${is_success_auto_exec} = 1;\r", + "\t\t// System Design\r", + "\t\t//${csp.dtr.pwrb.nameplate} = ssc_var(obj, \"nameplate\");\r", + "\t\t//${q_pb_design} = ssc_var(obj, \"q_dot_cycle_des\");\r", + "\t}\r", + "\telse{\r", + "\t\t${is_success_auto_exec} = -1;\r", + "\t}\r", + "\t\r", + "};" + ], + "Callbacks": [] +} \ No newline at end of file From 17b09cb553a1dd564c74f1882649b0f554cfdd61 Mon Sep 17 00:00:00 2001 From: tyneises Date: Sun, 24 May 2026 12:00:32 -0500 Subject: [PATCH 03/74] set gross output from ssc auto exec outputs --- deploy/runtime/ui/Geothermal Costs.json | 2 +- deploy/runtime/ui/Geothermal OM Costs.json | 2 +- .../ui/Geothermal Plant and Equipment.json | 18 +++++++++++------- .../runtime/ui/Geothermal System Design.json | 17 +++++++++++++++++ 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 131ec5e3e7..a5d9c7c6b8 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12550,7 +12550,7 @@ "\treturn ${geotherm.cost.epc.fixed}+${geotherm.cost.epc.nonfixed}; };", "", "equations{ 'geotherm.cost.plant_size' } = define() {", - "\treturn ${gross_output} * 1000; };", + "\treturn ${gross_output_calc} * 1000; };", "", "equations{ 'geotherm.cost.inj_num_wells' } = define() {", "\treturn ${geotherm.cost.inj_wells_drilled}; \r", diff --git a/deploy/runtime/ui/Geothermal OM Costs.json b/deploy/runtime/ui/Geothermal OM Costs.json index eff2be2fd9..0eb0281078 100644 --- a/deploy/runtime/ui/Geothermal OM Costs.json +++ b/deploy/runtime/ui/Geothermal OM Costs.json @@ -218,7 +218,7 @@ "\t}\r", "\tif (result == 0) \r", "\t{\r", - "\t\tdata.gross_output = ${gross_output};\r", + "\t\tdata.gross_output = ${gross_output_calc};\r", "\t\tdata.conversion_type = ${conversion_type};\r", "\t\tif (${geotherm.cost.plant_auto_estimate} == 1) {\r", "\t\t\tdata.baseline_cost = ${geotherm.cost.plant_per_kW};\r", diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index 3658583ecf..aa8808aedf 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -1943,7 +1943,7 @@ "ObjectProperties": { "Name": { "Type": 5.0, - "String": "gross_output" + "String": "gross_output_ui" }, "X": { "Type": 3.0, @@ -3773,11 +3773,11 @@ "sscVariableName": " ", "sscVariableValue": "" }, - "gross_output": { + "gross_output_ui": { "Version": 4.0, "Type": 1.0, "Label": "Gross Plant Output", - "Units": "MW", + "Units": "MWe", "Group": "Geothermal Plant and Equipment", "IndexLabels": "", "Flags": 8.0, @@ -4126,6 +4126,10 @@ } }, "Equations": [ + "// -- Set display values from outputs of ssc auto exec\r", + "equations{ 'gross_output_ui' } = define() {\r", + "\treturn ${gross_output_calc};\r", + "};\r", "", "equations{ 'geotherm.total_flow_kg_per_s' } = define() {", "\treturn ${well_flow_rate} * ${num_wells_getem};", @@ -4136,7 +4140,7 @@ "};", "", "equations{ 'geotherm.net_output' } = define() {", - "\treturn ${gross_output} - ${pump_work};", + "\treturn ${gross_output_calc} - ${pump_work};", "};", "", "equations{ 'design_temp' } = define() {", @@ -4249,7 +4253,7 @@ "\t\t${pump_work_watthr_lb} = err;\r", "\t\t${pumpwork_prod} = err;\r", "\t\t${pumpwork_inj} = err;\r", - "\t\t${gross_output} = err;\r", + "\t\t//{gross_output_calc} = err;\r", "\t\t${pump_depth} = err;\r", "\t\t${inj_pump_hp} = err;\r", "\t\tif (${specify_pump_work} == 0)\r", @@ -4273,7 +4277,7 @@ " ${pump_work_watthr_lb} = ssc_var( obj, 'pump_watthr_per_lb');", " ${pumpwork_prod} = ssc_var( obj, 'pumpwork_prod');", " ${pumpwork_inj} = ssc_var( obj, 'pumpwork_inj');", - " ${gross_output} = ssc_var(obj, 'gross_output');", + " //${gross_output} = ssc_var(obj, 'gross_output');", " ${pump_depth} = ssc_var(obj, 'pump_depth_ft');", " ${inj_pump_hp} = ssc_var(obj, 'inj_pump_hp');", " if (${specify_pump_work} == 0)", @@ -4334,7 +4338,7 @@ "};", "", "equations{ 'system_capacity' } = define() {", - "\treturn ${gross_output}*1000;}; // MW to kW", + "\treturn ${gross_output_calc}*1000;}; // MW to kW", "//\treturn ${geotherm.net_output}*1000;}; // MW to kW > 100% with net output", "", "equations{ 'pump_size_hp' } = define() {", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 79d1a905c7..f9ddbe39b8 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -88,6 +88,19 @@ } }, "VarDatabase": { + "gross_output_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "is_success_auto_exec": { "Version": 4.0, "Type": 1.0, @@ -115,12 +128,16 @@ "\tif(ret == 0)\r", "\t{\r", "\t\t${is_success_auto_exec} = 1;\r", + "\t\t\r", + "\t\t${gross_output_calc} = ssc_var(obj, \"gross_output\");\r", "\t\t// System Design\r", "\t\t//${csp.dtr.pwrb.nameplate} = ssc_var(obj, \"nameplate\");\r", "\t\t//${q_pb_design} = ssc_var(obj, \"q_dot_cycle_des\");\r", "\t}\r", "\telse{\r", "\t\t${is_success_auto_exec} = -1;\r", + "\t\t\r", + "\t\t${gross_output_calc} = -6789;\r", "\t}\r", "\t\r", "};" From 5dca33708332fd2867d621eb3bc83b737984606a Mon Sep 17 00:00:00 2001 From: tyneises Date: Sun, 24 May 2026 12:20:25 -0500 Subject: [PATCH 04/74] switch plant brine eff output to ssc exec output --- .../ui/Geothermal Plant and Equipment.json | 10 ++++++++-- .../runtime/ui/Geothermal System Design.json | 20 ++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index aa8808aedf..c8ed414c21 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4130,6 +4130,12 @@ "equations{ 'gross_output_ui' } = define() {\r", "\treturn ${gross_output_calc};\r", "};\r", + "\r", + "equations{ 'geotherm.plant_efficiency_used' } = define() {\r", + "\treturn ${plant_brine_eff_calc};\r", + "};\r", + "\r", + "// ----------------------------------------\r", "", "equations{ 'geotherm.total_flow_kg_per_s' } = define() {", "\treturn ${well_flow_rate} * ${num_wells_getem};", @@ -4247,7 +4253,7 @@ "\t\t${num_wells_getem_inj} = err;\r", "\t\t${geotherm.cost.prod_wells_drilled} = err;\r", "\t\t${geotherm.cost.inj_wells_drilled} = err;\r", - "\t\t${geotherm.plant_efficiency_used} = err;\r", + "\t\t//${geotherm.plant_efficiency_used} = err;\r", "\t\tfailed_prod = err;\r", "\t\t//${geotherm.cost.surf_num_wells} = ${num_wells_getem} + ${geotherm.cost.inj_wells_drilled} + failed_prod;\r", "\t\t${pump_work_watthr_lb} = err;\r", @@ -4271,7 +4277,7 @@ " ${num_wells_getem_inj} = ssc_var( obj, 'num_wells_getem_inj');\r", " ${geotherm.cost.prod_wells_drilled} = ssc_var( obj, 'num_wells_getem_prod_drilled');\r", " ${geotherm.cost.inj_wells_drilled} = ssc_var( obj, 'num_wells_getem_inj_drilled');", - " ${geotherm.plant_efficiency_used} = ssc_var( obj, 'plant_brine_eff');\r", + " //${geotherm.plant_efficiency_used} = ssc_var( obj, 'plant_brine_eff');\r", " failed_prod = ssc_var( obj, 'num_wells_getem_prod_failed');\r", " //${geotherm.cost.surf_num_wells} = ${num_wells_getem} + ${geotherm.cost.inj_wells_drilled} + failed_prod;", " ${pump_work_watthr_lb} = ssc_var( obj, 'pump_watthr_per_lb');", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index f9ddbe39b8..b792993853 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -113,6 +113,19 @@ "UIObject": "Default", "sscVariableName": "", "sscVariableValue": "" + }, + "plant_brine_eff_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" } }, "Equations": [ @@ -129,7 +142,9 @@ "\t{\r", "\t\t${is_success_auto_exec} = 1;\r", "\t\t\r", + "\t\t${plant_brine_eff_calc} = ssc_var( obj, 'plant_brine_eff');\r", "\t\t${gross_output_calc} = ssc_var(obj, \"gross_output\");\r", + "\t\t\r", "\t\t// System Design\r", "\t\t//${csp.dtr.pwrb.nameplate} = ssc_var(obj, \"nameplate\");\r", "\t\t//${q_pb_design} = ssc_var(obj, \"q_dot_cycle_des\");\r", @@ -137,7 +152,10 @@ "\telse{\r", "\t\t${is_success_auto_exec} = -1;\r", "\t\t\r", - "\t\t${gross_output_calc} = -6789;\r", + "\t\tfail = -6789;\r", + "\t\t\r", + "\t\t${plant_brine_eff_calc} = fail;\r", + "\t\t${gross_output_calc} = fail;\r", "\t}\r", "\t\r", "};" From 60c97ef6e6de299cc99fc88d38e7cf27af7fd11c Mon Sep 17 00:00:00 2001 From: tyneises Date: Sun, 24 May 2026 15:08:46 -0500 Subject: [PATCH 05/74] get num_wells_getem from ssc auto exec --- .../ui/Geothermal Plant and Equipment.json | 10 +++++++--- deploy/runtime/ui/Geothermal System Design.json | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index c8ed414c21..7e7eac6b4f 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4135,6 +4135,10 @@ "\treturn ${plant_brine_eff_calc};\r", "};\r", "\r", + "equations{ 'num_wells_getem' } = define() {\r", + "\treturn ${num_wells_calc};\r", + "};\r", + "\r", "// ----------------------------------------\r", "", "equations{ 'geotherm.total_flow_kg_per_s' } = define() {", @@ -4245,11 +4249,11 @@ " // use for diagnostics - if it doesn't seem to run, 'result' should have error", "\tif ( typeof(result) != 'number' || result != 0 )", "\t{", - "\t\tmsgbox('geothermal mimo error, result =' + result); \r", + "\t\t//msgbox('geothermal mimo error, result =' + result); \r", "\t\t\r", "\t\terr = -789;\r", "\t\t\r", - "\t\t${num_wells_getem} = err;\r", + "\t\t//${num_wells_getem} = err;\r", "\t\t${num_wells_getem_inj} = err;\r", "\t\t${geotherm.cost.prod_wells_drilled} = err;\r", "\t\t${geotherm.cost.inj_wells_drilled} = err;\r", @@ -4273,7 +4277,7 @@ "\t\t${geotherm.bottom_hole_pressure} = err;\r", "\t}", " else{", - " ${num_wells_getem} = ssc_var( obj, 'num_wells_getem_output');", + " //${num_wells_getem} = ssc_var( obj, 'num_wells_getem_output');", " ${num_wells_getem_inj} = ssc_var( obj, 'num_wells_getem_inj');\r", " ${geotherm.cost.prod_wells_drilled} = ssc_var( obj, 'num_wells_getem_prod_drilled');\r", " ${geotherm.cost.inj_wells_drilled} = ssc_var( obj, 'num_wells_getem_inj_drilled');", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index b792993853..5fe5067f05 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -114,6 +114,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "num_wells_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "plant_brine_eff_calc": { "Version": 4.0, "Type": 1.0, @@ -144,6 +157,7 @@ "\t\t\r", "\t\t${plant_brine_eff_calc} = ssc_var( obj, 'plant_brine_eff');\r", "\t\t${gross_output_calc} = ssc_var(obj, \"gross_output\");\r", + "\t\t${num_wells_calc} = ssc_var(obj, \"num_wells_getem_output\");\r", "\t\t\r", "\t\t// System Design\r", "\t\t//${csp.dtr.pwrb.nameplate} = ssc_var(obj, \"nameplate\");\r", @@ -156,6 +170,7 @@ "\t\t\r", "\t\t${plant_brine_eff_calc} = fail;\r", "\t\t${gross_output_calc} = fail;\r", + "\t\t${num_wells_calc} = fail;\r", "\t}\r", "\t\r", "};" From 67cddc60321bb92bf5432df2e7903a438700fd00 Mon Sep 17 00:00:00 2001 From: tyneises Date: Sun, 24 May 2026 19:57:45 -0500 Subject: [PATCH 06/74] remove unused ui vars --- .../ui/Geothermal Plant and Equipment.json | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index 7e7eac6b4f..f2cfc920f8 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -3747,32 +3747,6 @@ "sscVariableName": " ", "sscVariableValue": "" }, - "geotherm.total_flow_gpm": { - "Version": 4.0, - "Type": 1.0, - "Label": "Total Flow Rate", - "Units": "gpm", - "Group": "Geothermal Plant and Equipment", - "IndexLabels": "", - "Flags": 8.0, - "DefaultValue": 0.0, - "UIObject": "Default", - "sscVariableName": " ", - "sscVariableValue": "" - }, - "geotherm.total_flow_kg_per_s": { - "Version": 4.0, - "Type": 1.0, - "Label": "Total Flow Rate", - "Units": "kg/s", - "Group": "Geothermal Plant and Equipment", - "IndexLabels": "", - "Flags": 8.0, - "DefaultValue": 0.0, - "UIObject": "Default", - "sscVariableName": " ", - "sscVariableValue": "" - }, "gross_output_ui": { "Version": 4.0, "Type": 1.0, @@ -4141,14 +4115,6 @@ "\r", "// ----------------------------------------\r", "", - "equations{ 'geotherm.total_flow_kg_per_s' } = define() {", - "\treturn ${well_flow_rate} * ${num_wells_getem};", - "};", - "", - "equations{ 'geotherm.total_flow_gpm' } = define() {", - "\treturn ${geotherm.total_flow_kg_per_s} * 15.87;", - "};", - "", "equations{ 'geotherm.net_output' } = define() {", "\treturn ${gross_output_calc} - ${pump_work};", "};", From 79e3ff3d588325df2f68a673fd48c8e55571f68f Mon Sep 17 00:00:00 2001 From: tyneises Date: Sun, 24 May 2026 21:37:58 -0500 Subject: [PATCH 07/74] add calc vars to geo system design --- .../runtime/ui/Geothermal System Design.json | 196 ++++++++++++++++++ 1 file changed, 196 insertions(+) diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 5fe5067f05..f905720161 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -85,6 +85,172 @@ "Integer": -1.0 } } + }, + "Numeric": { + "Visible": 1.0, + "ObjectProperties": { + "Name": { + "Type": 5.0, + "String": "pump_cost_install_calc" + }, + "X": { + "Type": 3.0, + "Integer": 597.0 + }, + "Y": { + "Type": 3.0, + "Integer": 141.0 + }, + "Width": { + "Type": 3.0, + "Integer": 90.0 + }, + "Height": { + "Type": 3.0, + "Integer": 24.0 + }, + "Tool Tip": { + "Type": 5.0, + "String": "" + }, + "Value": { + "Type": 1.0, + "Double": 0.0 + }, + "Mode": { + "Type": 3.0, + "Integer": 1.0 + }, + "Format": { + "Type": 3.0, + "Integer": 0.0 + }, + "Decimals": { + "Type": 3.0, + "Integer": 3.0 + }, + "Prefix": { + "Type": 5.0, + "String": "" + }, + "Suffix": { + "Type": 5.0, + "String": "" + }, + "ThousandsSep": { + "Type": 2.0, + "Boolean": 1.0 + }, + "Editable": { + "Type": 2.0, + "Boolean": 1.0 + }, + "ForeColour": { + "Type": 4.0, + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 0.0, + "Alpha": 255.0 + } + }, + "BackColour": { + "Type": 4.0, + "Color": { + "Red": 255.0, + "Green": 255.0, + "Blue": 255.0, + "Alpha": 255.0 + } + }, + "TabOrder": { + "Type": 3.0, + "Integer": -1.0 + } + } + }, + "Numeric": { + "Visible": 1.0, + "ObjectProperties": { + "Name": { + "Type": 5.0, + "String": "pump_only_cost_calc" + }, + "X": { + "Type": 3.0, + "Integer": 411.0 + }, + "Y": { + "Type": 3.0, + "Integer": 84.0 + }, + "Width": { + "Type": 3.0, + "Integer": 90.0 + }, + "Height": { + "Type": 3.0, + "Integer": 24.0 + }, + "Tool Tip": { + "Type": 5.0, + "String": "" + }, + "Value": { + "Type": 1.0, + "Double": 0.0 + }, + "Mode": { + "Type": 3.0, + "Integer": 1.0 + }, + "Format": { + "Type": 3.0, + "Integer": 0.0 + }, + "Decimals": { + "Type": 3.0, + "Integer": 3.0 + }, + "Prefix": { + "Type": 5.0, + "String": "" + }, + "Suffix": { + "Type": 5.0, + "String": "" + }, + "ThousandsSep": { + "Type": 2.0, + "Boolean": 1.0 + }, + "Editable": { + "Type": 2.0, + "Boolean": 1.0 + }, + "ForeColour": { + "Type": 4.0, + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 0.0, + "Alpha": 255.0 + } + }, + "BackColour": { + "Type": 4.0, + "Color": { + "Red": 255.0, + "Green": 255.0, + "Blue": 255.0, + "Alpha": 255.0 + } + }, + "TabOrder": { + "Type": 3.0, + "Integer": -1.0 + } + } } }, "VarDatabase": { @@ -139,6 +305,32 @@ "UIObject": "Default", "sscVariableName": "", "sscVariableValue": "" + }, + "pump_cost_install_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "pump cost install calc", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "pump_only_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "pump only cost calc", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" } }, "Equations": [ @@ -158,6 +350,8 @@ "\t\t${plant_brine_eff_calc} = ssc_var( obj, 'plant_brine_eff');\r", "\t\t${gross_output_calc} = ssc_var(obj, \"gross_output\");\r", "\t\t${num_wells_calc} = ssc_var(obj, \"num_wells_getem_output\");\r", + "\t\t${pump_only_cost_calc} = ssc_var(obj, \"pump_only_cost\");\r", + "\t\t${pump_cost_install_calc} = ssc_var(obj, \"pump_cost_install\");\r", "\t\t\r", "\t\t// System Design\r", "\t\t//${csp.dtr.pwrb.nameplate} = ssc_var(obj, \"nameplate\");\r", @@ -171,6 +365,8 @@ "\t\t${plant_brine_eff_calc} = fail;\r", "\t\t${gross_output_calc} = fail;\r", "\t\t${num_wells_calc} = fail;\r", + "\t\t${pump_only_cost_calc} = fail;\r", + "\t\t${pump_cost_install_calc} = fail;\r", "\t}\r", "\t\r", "};" From 34fbc91037fb5e927c94c4e470d52ff9e6610d1c Mon Sep 17 00:00:00 2001 From: tyneises Date: Sun, 24 May 2026 22:04:14 -0500 Subject: [PATCH 08/74] delete some newly unused code --- .../ui/Geothermal Plant and Equipment.json | 57 +------------------ 1 file changed, 1 insertion(+), 56 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index f2cfc920f8..d4f611646c 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4129,62 +4129,7 @@ "", "equations{ '$MIMO$ geothermal' } = define() {", " obj = ssc_create();", - "\tssc_var( obj, 'ui_calculations_only', 1 ); // set to 1 so model only does UI calculations (much faster)", - "\tssc_var( obj, 'system_capacity', ${nameplate} );", - "//\tssc_var( obj, 'adjust:constant', 0.0 );", - "//\tssc_var( obj, 'adjust', {\"constant\" = 0.0} );", - "\tssc_var( obj, 'adjust_constant', 0.0 );\r", - "\tssc_var( obj, 'allow_reservoir_replacements', ${allow_reservoir_replacements});", - "\tssc_var( obj, 'resource_type', ${resource_type} ); // INTEGER", - "\tssc_var( obj, 'resource_temp', ${resource_temp} );", - "\tssc_var( obj, 'resource_depth', ${resource_depth} );", - "\tssc_var( obj, 'geotherm.cost.inj_prod_well_ratio', ${geotherm.cost.inj_prod_well_ratio});\r", - "\tssc_var( obj, 'drilling_success_rate', ${drilling_success_rate});\r", - "\tssc_var( obj, 'stim_success_rate', ${stim_success_rate});\r", - "\tssc_var( obj, 'failed_prod_flow_ratio', ${failed_prod_flow_ratio});\r", - "\r", - "\tssc_var( obj, 'dt_prod_well', ${dt_prod_well} );", - "\tssc_var( obj, 'prod_well_choice', ${prod_well_choice} );\t\t\t\t\t\t\t\t\t\t ", - "\t// Other inputs\t\t\t\t\t\t\t ", - "\tssc_var( obj, 'geothermal_analysis_period', ${geothermal_analysis_period} ); // INTEGER", - "\tssc_var( obj, 'model_choice', ${model_choice} ); // INTEGER", - "", - "\t// geothermal plant and equipment\t\t ", - "\tssc_var( obj, 'nameplate', ${nameplate} );", - "\tssc_var( obj, 'analysis_type', ${analysis_type} ); //INTEGER", - "\tssc_var( obj, 'num_wells', ${num_wells} );", - "\tssc_var( obj, 'conversion_type', ${conversion_type} ); // INTEGER", - "\tssc_var( obj, 'plant_efficiency_input', ${plant_efficiency_input} );", - "\tssc_var( obj, 'conversion_subtype', ${conversion_subtype} ); // INTEGER", - "\tif (${resource_type} == 0)", - "\t\tssc_var( obj, 'decline_type', 0 ); // INTEGER", - "\telse if (${conversion_type} == 0) ", - "\t\tssc_var( obj, 'decline_type', ${decline_type});", - "\telse ", - "\t\tssc_var( obj, 'decline_type', 0);", - "\tssc_var( obj, 'temp_decline_rate', ${temp_decline_rate} );", - "\tssc_var( obj, 'temp_decline_max', ${temp_decline_max} );", - "\tssc_var( obj, 'wet_bulb_temp', ${wet_bulb_temp} );\r", - "\tssc_var( obj, 'use_weather_file_conditions', ${use_weather_file_conditions});", - "\tssc_var( obj, 'ambient_pressure', ${ambient_pressure} );", - "\tssc_var( obj, 'well_flow_rate', ${well_flow_rate} );", - "\tssc_var( obj, 'pump_efficiency', ${pump_efficiency} );", - "\tssc_var( obj, 'delta_pressure_equip', ${delta_pressure_equip} );", - "\tssc_var( obj, 'excess_pressure_pump', ${excess_pressure_pump} );", - "\tssc_var( obj, 'geotherm.cost.inj_cost_curve_welltype', ${geotherm.cost.inj_cost_curve_welltype} );", - "\tssc_var( obj, 'geotherm.cost.prod_cost_curve_welltype', ${geotherm.cost.prod_cost_curve_welltype} );", - "\tssc_var( obj, 'geotherm.cost.inj_cost_curve_welldiam', ${geotherm.cost.inj_cost_curve_welldiam} );\r", - "\tssc_var( obj, 'geotherm.cost.prod_cost_curve_welldiam', ${geotherm.cost.prod_cost_curve_welldiam} );\r", - "\r", - "", - "\tssc_var( obj, 'design_temp', ${design_temp} );", - "\tssc_var( obj, 'specify_pump_work', ${specify_pump_work} ); // INTEGER", - "\tssc_var( obj, 'specified_pump_work_amount', ${specified_pump_work_amount} );", - "", - "\t// detailed geothermal inputs", - "\tssc_var( obj, 'rock_thermal_conductivity', ${rock_thermal_conductivity} );", - "\tssc_var( obj, 'rock_specific_heat', ${rock_specific_heat} );", - "\tssc_var( obj, 'rock_density', ${rock_density} );", + "\t\r", "\tif (${resource_type} != 1 && (${reservoir_pressure_change_type} == 1 || ${reservoir_pressure_change_type} == 3)) {", "\t\tssc_var( obj, 'reservoir_pressure_change_type', 0 ); // INTEGER", "\t\t//msgbox('Fracture flow calculations can only be used with EGS resource. Please check the inputs on the Geothermal Resource page. The enter change in reservoir option is being used currently.');", From 1067df00581a60b8458e02ac7efbd16b83e44c48 Mon Sep 17 00:00:00 2001 From: tyneises Date: Sun, 24 May 2026 22:13:41 -0500 Subject: [PATCH 09/74] delete some newly unused code --- .../ui/Geothermal Plant and Equipment.json | 29 +------------------ 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index d4f611646c..83d25d0b1b 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4130,34 +4130,7 @@ "equations{ '$MIMO$ geothermal' } = define() {", " obj = ssc_create();", "\t\r", - "\tif (${resource_type} != 1 && (${reservoir_pressure_change_type} == 1 || ${reservoir_pressure_change_type} == 3)) {", - "\t\tssc_var( obj, 'reservoir_pressure_change_type', 0 ); // INTEGER", - "\t\t//msgbox('Fracture flow calculations can only be used with EGS resource. Please check the inputs on the Geothermal Resource page. The enter change in reservoir option is being used currently.');", - "\t}", - "\telse ", - "\t\tssc_var( obj, 'reservoir_pressure_change_type', ${reservoir_pressure_change_type} ); // INTEGER", - "\tssc_var( obj, 'reservoir_pressure_change', ${reservoir_pressure_change} );\r", - "\tssc_var( obj, 'injectivity_index', ${injectivity_index} );\r", - "\tssc_var( obj, 'exploration_wells_production', ${geotherm.cost.confirm_wells_num} );", - "\tssc_var( obj, 'reservoir_width', ${reservoir_width} );", - "\tssc_var( obj, 'reservoir_height', ${reservoir_height} );", - "\tssc_var( obj, 'reservoir_permeability', ${reservoir_permeability} );\t\t", - "\tssc_var( obj, 'inj_prod_well_distance', ${inj_prod_well_distance} );\t\t", - "\tssc_var( obj, 'subsurface_water_loss', ${subsurface_water_loss} ); \t\t", - "\tssc_var( obj, 'fracture_aperature', ${fracture_aperature} );", - "\tssc_var( obj, 'fracture_width', ${fracture_width} );", - "\tssc_var( obj, 'fracture_length', ${fracture_length} );", - "\tssc_var( obj, 'fracture_spacing', ${fracture_spacing} );", - "\tssc_var( obj, 'num_fractures', ${num_fractures} ); // INTEGER", - "\tssc_var( obj, 'fracture_angle', ${fracture_angle} );", - "\tssc_var( obj, 'reservoir_model_inputs', ${reservoir_model_inputs} );", - "", - "\t// temp input for testing", - "\tssc_var( obj, 'hr_pl_nlev', ${hr_pl_nlev} ); // INTEGER", - "", - " //result = ssc_exec( obj, 'geothermal' );\r", - " result = 1;", - " // use for diagnostics - if it doesn't seem to run, 'result' should have error", + "\t// use for diagnostics - if it doesn't seem to run, 'result' should have error", "\tif ( typeof(result) != 'number' || result != 0 )", "\t{", "\t\t//msgbox('geothermal mimo error, result =' + result); \r", From 165be5adb8fcfc0d05418dbc9bb2d6cf02291e16 Mon Sep 17 00:00:00 2001 From: tyneises Date: Sun, 24 May 2026 22:27:17 -0500 Subject: [PATCH 10/74] switch ui var from ssc equation to auto exec --- .../ui/Geothermal Plant and Equipment.json | 11 +++++++---- .../runtime/ui/Geothermal System Design.json | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index 83d25d0b1b..35ad029919 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4113,6 +4113,10 @@ "\treturn ${num_wells_calc};\r", "};\r", "\r", + "equations{ 'num_wells_getem_inj' } = define() {\r", + "\treturn ${num_wells_getem_inj_calc};\r", + "};\r", + "\r", "// ----------------------------------------\r", "", "equations{ 'geotherm.net_output' } = define() {", @@ -4130,15 +4134,14 @@ "equations{ '$MIMO$ geothermal' } = define() {", " obj = ssc_create();", "\t\r", - "\t// use for diagnostics - if it doesn't seem to run, 'result' should have error", - "\tif ( typeof(result) != 'number' || result != 0 )", + "\tif ( true )", "\t{", "\t\t//msgbox('geothermal mimo error, result =' + result); \r", "\t\t\r", "\t\terr = -789;\r", "\t\t\r", "\t\t//${num_wells_getem} = err;\r", - "\t\t${num_wells_getem_inj} = err;\r", + "\t\t//${num_wells_getem_inj} = err;\r", "\t\t${geotherm.cost.prod_wells_drilled} = err;\r", "\t\t${geotherm.cost.inj_wells_drilled} = err;\r", "\t\t//${geotherm.plant_efficiency_used} = err;\r", @@ -4162,7 +4165,7 @@ "\t}", " else{", " //${num_wells_getem} = ssc_var( obj, 'num_wells_getem_output');", - " ${num_wells_getem_inj} = ssc_var( obj, 'num_wells_getem_inj');\r", + " //${num_wells_getem_inj} = ssc_var( obj, 'num_wells_getem_inj');\r", " ${geotherm.cost.prod_wells_drilled} = ssc_var( obj, 'num_wells_getem_prod_drilled');\r", " ${geotherm.cost.inj_wells_drilled} = ssc_var( obj, 'num_wells_getem_inj_drilled');", " //${geotherm.plant_efficiency_used} = ssc_var( obj, 'plant_brine_eff');\r", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index f905720161..020e171b70 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -293,6 +293,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "num_wells_getem_inj_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "plant_brine_eff_calc": { "Version": 4.0, "Type": 1.0, @@ -349,7 +362,10 @@ "\t\t\r", "\t\t${plant_brine_eff_calc} = ssc_var( obj, 'plant_brine_eff');\r", "\t\t${gross_output_calc} = ssc_var(obj, \"gross_output\");\r", + "\t\t\r", "\t\t${num_wells_calc} = ssc_var(obj, \"num_wells_getem_output\");\r", + "\t\t${num_wells_getem_inj_calc} = ssc_var(obj, \"num_wells_getem_inj\");\r", + "\t\t\r", "\t\t${pump_only_cost_calc} = ssc_var(obj, \"pump_only_cost\");\r", "\t\t${pump_cost_install_calc} = ssc_var(obj, \"pump_cost_install\");\r", "\t\t\r", @@ -364,7 +380,10 @@ "\t\t\r", "\t\t${plant_brine_eff_calc} = fail;\r", "\t\t${gross_output_calc} = fail;\r", + "\t\t\r", "\t\t${num_wells_calc} = fail;\r", + "\t\t${num_wells_getem_inj_calc} = fail;\r", + "\t\t\r", "\t\t${pump_only_cost_calc} = fail;\r", "\t\t${pump_cost_install_calc} = fail;\r", "\t}\r", From acfe2c56f563a8162dcbdf0ca005ce098a3e28c6 Mon Sep 17 00:00:00 2001 From: tyneises Date: Sun, 24 May 2026 22:32:31 -0500 Subject: [PATCH 11/74] switch ui vars from ssc equation to auto exec --- .../ui/Geothermal Plant and Equipment.json | 16 +++++++--- .../runtime/ui/Geothermal System Design.json | 30 +++++++++++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index 35ad029919..5a315189d2 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4117,6 +4117,14 @@ "\treturn ${num_wells_getem_inj_calc};\r", "};\r", "\r", + "equations{ 'geotherm.cost.prod_wells_drilled' } = define() {\r", + "\treturn ${num_wells_getem_prod_drilled_calc};\r", + "};\r", + "\r", + "equations{ 'geotherm.cost.inj_wells_drilled' } = define() {\r", + "\treturn ${num_wells_getem_inj_drilled_calc};\r", + "};\r", + "\r", "// ----------------------------------------\r", "", "equations{ 'geotherm.net_output' } = define() {", @@ -4142,8 +4150,8 @@ "\t\t\r", "\t\t//${num_wells_getem} = err;\r", "\t\t//${num_wells_getem_inj} = err;\r", - "\t\t${geotherm.cost.prod_wells_drilled} = err;\r", - "\t\t${geotherm.cost.inj_wells_drilled} = err;\r", + "\t\t//${geotherm.cost.prod_wells_drilled} = err;\r", + "\t\t//${geotherm.cost.inj_wells_drilled} = err;\r", "\t\t//${geotherm.plant_efficiency_used} = err;\r", "\t\tfailed_prod = err;\r", "\t\t//${geotherm.cost.surf_num_wells} = ${num_wells_getem} + ${geotherm.cost.inj_wells_drilled} + failed_prod;\r", @@ -4166,8 +4174,8 @@ " else{", " //${num_wells_getem} = ssc_var( obj, 'num_wells_getem_output');", " //${num_wells_getem_inj} = ssc_var( obj, 'num_wells_getem_inj');\r", - " ${geotherm.cost.prod_wells_drilled} = ssc_var( obj, 'num_wells_getem_prod_drilled');\r", - " ${geotherm.cost.inj_wells_drilled} = ssc_var( obj, 'num_wells_getem_inj_drilled');", + " //${geotherm.cost.prod_wells_drilled} = ssc_var( obj, 'num_wells_getem_prod_drilled');\r", + " //${geotherm.cost.inj_wells_drilled} = ssc_var( obj, 'num_wells_getem_inj_drilled');", " //${geotherm.plant_efficiency_used} = ssc_var( obj, 'plant_brine_eff');\r", " failed_prod = ssc_var( obj, 'num_wells_getem_prod_failed');\r", " //${geotherm.cost.surf_num_wells} = ${num_wells_getem} + ${geotherm.cost.inj_wells_drilled} + failed_prod;", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 020e171b70..4d8d262561 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -306,6 +306,32 @@ "sscVariableName": "", "sscVariableValue": "" }, + "num_wells_getem_inj_drilled_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "num_wells_getem_prod_drilled_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "plant_brine_eff_calc": { "Version": 4.0, "Type": 1.0, @@ -365,6 +391,8 @@ "\t\t\r", "\t\t${num_wells_calc} = ssc_var(obj, \"num_wells_getem_output\");\r", "\t\t${num_wells_getem_inj_calc} = ssc_var(obj, \"num_wells_getem_inj\");\r", + "\t\t${num_wells_getem_prod_drilled_calc} = ssc_var(obj, \"num_wells_getem_prod_drilled\");\r", + "\t\t${num_wells_getem_inj_drilled_calc} = ssc_var(obj, \"num_wells_getem_inj_drilled\");\r", "\t\t\r", "\t\t${pump_only_cost_calc} = ssc_var(obj, \"pump_only_cost\");\r", "\t\t${pump_cost_install_calc} = ssc_var(obj, \"pump_cost_install\");\r", @@ -383,6 +411,8 @@ "\t\t\r", "\t\t${num_wells_calc} = fail;\r", "\t\t${num_wells_getem_inj_calc} = fail;\r", + "\t\t${num_wells_getem_prod_drilled_calc} = fail;\r", + "\t\t${num_wells_getem_inj_drilled_calc} = fail;\r", "\t\t\r", "\t\t${pump_only_cost_calc} = fail;\r", "\t\t${pump_cost_install_calc} = fail;\r", From 5ed3aba06552f1e84875d92a91f60a1a44583886 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 07:20:56 -0500 Subject: [PATCH 12/74] switch ui vars from ssc equation to auto exec --- .../ui/Geothermal Plant and Equipment.json | 34 +++-- .../runtime/ui/Geothermal System Design.json | 130 ++++++++++++++++++ 2 files changed, 153 insertions(+), 11 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index 5a315189d2..259ef9b9cf 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4125,6 +4125,18 @@ "\treturn ${num_wells_getem_inj_drilled_calc};\r", "};\r", "\r", + "equations{ 'pump_work_watthr_lb' } = define() {\r", + "\treturn ${pump_watthr_per_lb_calc};\r", + "};\r", + "\r", + "//equations{ 'pumpwork_prod' } = define() {\r", + "//\treturn ${pumpwork_prod_calc};\r", + "//};\r", + "\r", + "equations{ 'pump_size_hp' } = define() {\r", + "\treturn ${pump_size_hp_calc}; // ${pumpwork_prod} / (0.7457 * 1000) * ${well_flow_rate} * 7936.64;\r", + "};\r", + "\r", "// ----------------------------------------\r", "", "equations{ 'geotherm.net_output' } = define() {", @@ -4137,7 +4149,13 @@ "", "equations{ 'ui_calculations_only' } = define() {", "\treturn 0; // for a normal model run, this should be zero", - "};", + "};\r", + "\r", + "equations{ 'system_capacity' } = define() {\r", + "\treturn ${gross_output_calc}*1000;}; // MW to kW\r", + "//\treturn ${geotherm.net_output}*1000;}; // MW to kW > 100% with net output\r", + "\r", + "", "", "equations{ '$MIMO$ geothermal' } = define() {", " obj = ssc_create();", @@ -4155,7 +4173,7 @@ "\t\t//${geotherm.plant_efficiency_used} = err;\r", "\t\tfailed_prod = err;\r", "\t\t//${geotherm.cost.surf_num_wells} = ${num_wells_getem} + ${geotherm.cost.inj_wells_drilled} + failed_prod;\r", - "\t\t${pump_work_watthr_lb} = err;\r", + "\t\t//${pump_work_watthr_lb} = err;\r", "\t\t${pumpwork_prod} = err;\r", "\t\t${pumpwork_inj} = err;\r", "\t\t//{gross_output_calc} = err;\r", @@ -4179,8 +4197,8 @@ " //${geotherm.plant_efficiency_used} = ssc_var( obj, 'plant_brine_eff');\r", " failed_prod = ssc_var( obj, 'num_wells_getem_prod_failed');\r", " //${geotherm.cost.surf_num_wells} = ${num_wells_getem} + ${geotherm.cost.inj_wells_drilled} + failed_prod;", - " ${pump_work_watthr_lb} = ssc_var( obj, 'pump_watthr_per_lb');", - " ${pumpwork_prod} = ssc_var( obj, 'pumpwork_prod');", + " //${pump_work_watthr_lb} = ssc_var( obj, 'pump_watthr_per_lb');", + " //${pumpwork_prod} = ssc_var( obj, 'pumpwork_prod');", " ${pumpwork_inj} = ssc_var( obj, 'pumpwork_inj');", " //${gross_output} = ssc_var(obj, 'gross_output');", " ${pump_depth} = ssc_var(obj, 'pump_depth_ft');", @@ -4242,13 +4260,7 @@ "\t}\r", "};", "", - "equations{ 'system_capacity' } = define() {", - "\treturn ${gross_output_calc}*1000;}; // MW to kW", - "//\treturn ${geotherm.net_output}*1000;}; // MW to kW > 100% with net output", - "", - "equations{ 'pump_size_hp' } = define() {", - "\treturn ${pumpwork_prod} / (0.7457 * 1000) * ${well_flow_rate} * 7936.64;", - "};" + "" ], "Callbacks": [ "function update_controls()\r", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 4d8d262561..713d3ec17a 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -251,6 +251,89 @@ "Integer": -1.0 } } + }, + "Numeric": { + "Visible": 1.0, + "ObjectProperties": { + "Name": { + "Type": 5.0, + "String": "pumpwork_prod_calc" + }, + "X": { + "Type": 3.0, + "Integer": 726.0 + }, + "Y": { + "Type": 3.0, + "Integer": 105.0 + }, + "Width": { + "Type": 3.0, + "Integer": 90.0 + }, + "Height": { + "Type": 3.0, + "Integer": 24.0 + }, + "Tool Tip": { + "Type": 5.0, + "String": "" + }, + "Value": { + "Type": 1.0, + "Double": 0.0 + }, + "Mode": { + "Type": 3.0, + "Integer": 1.0 + }, + "Format": { + "Type": 3.0, + "Integer": 0.0 + }, + "Decimals": { + "Type": 3.0, + "Integer": 3.0 + }, + "Prefix": { + "Type": 5.0, + "String": "" + }, + "Suffix": { + "Type": 5.0, + "String": "" + }, + "ThousandsSep": { + "Type": 2.0, + "Boolean": 1.0 + }, + "Editable": { + "Type": 2.0, + "Boolean": 1.0 + }, + "ForeColour": { + "Type": 4.0, + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 0.0, + "Alpha": 255.0 + } + }, + "BackColour": { + "Type": 4.0, + "Color": { + "Red": 255.0, + "Green": 255.0, + "Blue": 255.0, + "Alpha": 255.0 + } + }, + "TabOrder": { + "Type": 3.0, + "Integer": -1.0 + } + } } }, "VarDatabase": { @@ -370,6 +453,45 @@ "UIObject": "Default", "sscVariableName": "", "sscVariableValue": "" + }, + "pump_size_hp_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "pump_watthr_per_lb_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "pumpwork_prod_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "pumpwork_prod_calc", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" } }, "Equations": [ @@ -394,6 +516,10 @@ "\t\t${num_wells_getem_prod_drilled_calc} = ssc_var(obj, \"num_wells_getem_prod_drilled\");\r", "\t\t${num_wells_getem_inj_drilled_calc} = ssc_var(obj, \"num_wells_getem_inj_drilled\");\r", "\t\t\r", + "\t\t${pump_watthr_per_lb_calc} = ssc_var(obj, \"pump_watthr_per_lb\");\r", + "\t\t${pumpwork_prod_calc} = ssc_var(obj, \"pumpwork_prod\");\r", + "\t\t${pump_size_hp_calc} = ssc_var(obj, \"pump_size_hp\");\r", + "\t\t\r", "\t\t${pump_only_cost_calc} = ssc_var(obj, \"pump_only_cost\");\r", "\t\t${pump_cost_install_calc} = ssc_var(obj, \"pump_cost_install\");\r", "\t\t\r", @@ -414,6 +540,10 @@ "\t\t${num_wells_getem_prod_drilled_calc} = fail;\r", "\t\t${num_wells_getem_inj_drilled_calc} = fail;\r", "\t\t\r", + "\t\t${pump_watthr_per_lb_calc} = fail;\r", + "\t\t${pumpwork_prod_calc} = fail;\r", + "\t\t${pump_size_hp_calc} = fail;\r", + "\t\t\r", "\t\t${pump_only_cost_calc} = fail;\r", "\t\t${pump_cost_install_calc} = fail;\r", "\t}\r", From 3951e3479908713cc9494717ded0b5ed67afa0b2 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 07:27:18 -0500 Subject: [PATCH 13/74] switch ui vars from ssc equation to auto exec --- deploy/runtime/ui/Geothermal Plant and Equipment.json | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index 259ef9b9cf..dbaab8af6d 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4129,13 +4129,12 @@ "\treturn ${pump_watthr_per_lb_calc};\r", "};\r", "\r", - "//equations{ 'pumpwork_prod' } = define() {\r", - "//\treturn ${pumpwork_prod_calc};\r", - "//};\r", + "equations{ 'pumpwork_prod' } = define() {\r", + "\treturn ${pumpwork_prod_calc};\r", + "};\r", "\r", "equations{ 'pump_size_hp' } = define() {\r", - "\treturn ${pump_size_hp_calc}; // ${pumpwork_prod} / (0.7457 * 1000) * ${well_flow_rate} * 7936.64;\r", - "};\r", + "\treturn ${pump_size_hp_calc}; };\r", "\r", "// ----------------------------------------\r", "", @@ -4174,7 +4173,7 @@ "\t\tfailed_prod = err;\r", "\t\t//${geotherm.cost.surf_num_wells} = ${num_wells_getem} + ${geotherm.cost.inj_wells_drilled} + failed_prod;\r", "\t\t//${pump_work_watthr_lb} = err;\r", - "\t\t${pumpwork_prod} = err;\r", + "\t\t//${pumpwork_prod} = err;\r", "\t\t${pumpwork_inj} = err;\r", "\t\t//{gross_output_calc} = err;\r", "\t\t${pump_depth} = err;\r", From db0a704f79a41f63b72712f0a7c877d9f782d6da Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 07:35:55 -0500 Subject: [PATCH 14/74] switch ui vars from ssc equation to auto exec --- .../ui/Geothermal Plant and Equipment.json | 16 +++++++--- .../runtime/ui/Geothermal System Design.json | 30 +++++++++++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index dbaab8af6d..3ac8c97cc0 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4136,6 +4136,14 @@ "equations{ 'pump_size_hp' } = define() {\r", "\treturn ${pump_size_hp_calc}; };\r", "\r", + "equations{ 'pumpwork_inj' } = define() {\r", + "\treturn ${pumpwork_inj_calc};\r", + "};\r", + "\r", + "equations{ 'pump_depth' } = define() {\r", + "\treturn ${pump_depth_ft_calc};\r", + "};\r", + "\r", "// ----------------------------------------\r", "", "equations{ 'geotherm.net_output' } = define() {", @@ -4174,9 +4182,9 @@ "\t\t//${geotherm.cost.surf_num_wells} = ${num_wells_getem} + ${geotherm.cost.inj_wells_drilled} + failed_prod;\r", "\t\t//${pump_work_watthr_lb} = err;\r", "\t\t//${pumpwork_prod} = err;\r", - "\t\t${pumpwork_inj} = err;\r", + "\t\t//${pumpwork_inj} = err;\r", "\t\t//{gross_output_calc} = err;\r", - "\t\t${pump_depth} = err;\r", + "\t\t//${pump_depth} = err;\r", "\t\t${inj_pump_hp} = err;\r", "\t\tif (${specify_pump_work} == 0)\r", "\t\t\t${pump_work} = err;\r", @@ -4198,9 +4206,9 @@ " //${geotherm.cost.surf_num_wells} = ${num_wells_getem} + ${geotherm.cost.inj_wells_drilled} + failed_prod;", " //${pump_work_watthr_lb} = ssc_var( obj, 'pump_watthr_per_lb');", " //${pumpwork_prod} = ssc_var( obj, 'pumpwork_prod');", - " ${pumpwork_inj} = ssc_var( obj, 'pumpwork_inj');", + " //${pumpwork_inj} = ssc_var( obj, 'pumpwork_inj');", " //${gross_output} = ssc_var(obj, 'gross_output');", - " ${pump_depth} = ssc_var(obj, 'pump_depth_ft');", + " //${pump_depth} = ssc_var(obj, 'pump_depth_ft');", " ${inj_pump_hp} = ssc_var(obj, 'inj_pump_hp');", " if (${specify_pump_work} == 0)", "\t\t${pump_work} = ssc_var(obj, 'pump_work');", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 713d3ec17a..ea3316162b 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -441,6 +441,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "pump_depth_ft_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "pump_only_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -480,6 +493,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "pumpwork_inj_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "pumpwork_prod_calc": { "Version": 4.0, "Type": 1.0, @@ -519,6 +545,8 @@ "\t\t${pump_watthr_per_lb_calc} = ssc_var(obj, \"pump_watthr_per_lb\");\r", "\t\t${pumpwork_prod_calc} = ssc_var(obj, \"pumpwork_prod\");\r", "\t\t${pump_size_hp_calc} = ssc_var(obj, \"pump_size_hp\");\r", + "\t\t${pumpwork_inj_calc} = ssc_var(obj, \"pumpwork_inj\");\r", + "\t\t${pump_depth_ft_calc} = ssc_var(obj, \"pump_depth_ft\");\r", "\t\t\r", "\t\t${pump_only_cost_calc} = ssc_var(obj, \"pump_only_cost\");\r", "\t\t${pump_cost_install_calc} = ssc_var(obj, \"pump_cost_install\");\r", @@ -543,6 +571,8 @@ "\t\t${pump_watthr_per_lb_calc} = fail;\r", "\t\t${pumpwork_prod_calc} = fail;\r", "\t\t${pump_size_hp_calc} = fail;\r", + "\t\t${pumpwork_inj_calc} = fail;\r", + "\t\t${pump_depth_ft_calc} = fail;\r", "\t\t\r", "\t\t${pump_only_cost_calc} = fail;\r", "\t\t${pump_cost_install_calc} = fail;\r", From b9eaf21555ef4ac4dc65ba5f6d90a136e05a8520 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 07:40:25 -0500 Subject: [PATCH 15/74] switch ui vars from ssc equation to auto exec --- .../ui/Geothermal Plant and Equipment.json | 10 ++++++---- deploy/runtime/ui/Geothermal System Design.json | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index 3ac8c97cc0..c77fa9a660 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4140,10 +4140,12 @@ "\treturn ${pumpwork_inj_calc};\r", "};\r", "\r", - "equations{ 'pump_depth' } = define() {\r", - "\treturn ${pump_depth_ft_calc};\r", + "equations{ 'inj_pump_hp' } = define() {\r", + "\treturn ${inj_pump_hp_calc};\r", "};\r", "\r", + "//equations{ '' }\r", + "\r", "// ----------------------------------------\r", "", "equations{ 'geotherm.net_output' } = define() {", @@ -4185,7 +4187,7 @@ "\t\t//${pumpwork_inj} = err;\r", "\t\t//{gross_output_calc} = err;\r", "\t\t//${pump_depth} = err;\r", - "\t\t${inj_pump_hp} = err;\r", + "\t\t//${inj_pump_hp} = err;\r", "\t\tif (${specify_pump_work} == 0)\r", "\t\t\t${pump_work} = err;\r", "\t\telse\r", @@ -4209,7 +4211,7 @@ " //${pumpwork_inj} = ssc_var( obj, 'pumpwork_inj');", " //${gross_output} = ssc_var(obj, 'gross_output');", " //${pump_depth} = ssc_var(obj, 'pump_depth_ft');", - " ${inj_pump_hp} = ssc_var(obj, 'inj_pump_hp');", + " //${inj_pump_hp} = ssc_var(obj, 'inj_pump_hp');", " if (${specify_pump_work} == 0)", "\t\t${pump_work} = ssc_var(obj, 'pump_work');", "\telse", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index ea3316162b..7b2f35d52b 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -350,6 +350,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "inj_pump_hp_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "is_success_auto_exec": { "Version": 4.0, "Type": 1.0, @@ -547,6 +560,7 @@ "\t\t${pump_size_hp_calc} = ssc_var(obj, \"pump_size_hp\");\r", "\t\t${pumpwork_inj_calc} = ssc_var(obj, \"pumpwork_inj\");\r", "\t\t${pump_depth_ft_calc} = ssc_var(obj, \"pump_depth_ft\");\r", + "\t\t${inj_pump_hp_calc} = ssc_var(obj, \"inj_pump_hp\");\r", "\t\t\r", "\t\t${pump_only_cost_calc} = ssc_var(obj, \"pump_only_cost\");\r", "\t\t${pump_cost_install_calc} = ssc_var(obj, \"pump_cost_install\");\r", @@ -573,6 +587,7 @@ "\t\t${pump_size_hp_calc} = fail;\r", "\t\t${pumpwork_inj_calc} = fail;\r", "\t\t${pump_depth_ft_calc} = fail;\r", + "\t\t${inj_pump_hp_calc} = fail;\r", "\t\t\r", "\t\t${pump_only_cost_calc} = fail;\r", "\t\t${pump_cost_install_calc} = fail;\r", From ec7d9aa2b061130c369e84a9bb4d4c2852f2f374 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 07:46:27 -0500 Subject: [PATCH 16/74] switch ui vars from ssc equation to auto exec --- .../ui/Geothermal Plant and Equipment.json | 20 ++++++++++--------- .../runtime/ui/Geothermal System Design.json | 15 ++++++++++++++ 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index c77fa9a660..fbd50e87eb 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4144,7 +4144,9 @@ "\treturn ${inj_pump_hp_calc};\r", "};\r", "\r", - "//equations{ '' }\r", + "equations{ 'pump_work' } = define() {\r", + "\treturn ${pump_work_calc};\r", + "};\r", "\r", "// ----------------------------------------\r", "", @@ -4188,10 +4190,10 @@ "\t\t//{gross_output_calc} = err;\r", "\t\t//${pump_depth} = err;\r", "\t\t//${inj_pump_hp} = err;\r", - "\t\tif (${specify_pump_work} == 0)\r", - "\t\t\t${pump_work} = err;\r", - "\t\telse\r", - "\t\t\t${pump_work} = ${specified_pump_work_amount};\r", + "\t\t//if (${specify_pump_work} == 0)\r", + "\t\t//\t${pump_work} = err;\r", + "\t\t//else\r", + "\t\t//\t${pump_work} = ${specified_pump_work_amount};\r", "\t\t//${pump_size_hp} = ssc_var(obj, 'pump_hp');\r", "\r", "\t\t${geotherm.delta_pressure_reservoir} = err;\r", @@ -4212,10 +4214,10 @@ " //${gross_output} = ssc_var(obj, 'gross_output');", " //${pump_depth} = ssc_var(obj, 'pump_depth_ft');", " //${inj_pump_hp} = ssc_var(obj, 'inj_pump_hp');", - " if (${specify_pump_work} == 0)", - "\t\t${pump_work} = ssc_var(obj, 'pump_work');", - "\telse", - "\t\t${pump_work} = ${specified_pump_work_amount};", + " //if (${specify_pump_work} == 0)", + "\t//\t${pump_work} = ssc_var(obj, 'pump_work');", + "\t//else", + "\t//\t${pump_work} = ${specified_pump_work_amount};", " //${pump_size_hp} = ssc_var(obj, 'pump_hp');", "", " ${geotherm.delta_pressure_reservoir} = ssc_var(obj, 'reservoir_pressure');", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 7b2f35d52b..983365c358 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -506,6 +506,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "pump_work_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "pumpwork_inj_calc": { "Version": 4.0, "Type": 1.0, @@ -561,6 +574,7 @@ "\t\t${pumpwork_inj_calc} = ssc_var(obj, \"pumpwork_inj\");\r", "\t\t${pump_depth_ft_calc} = ssc_var(obj, \"pump_depth_ft\");\r", "\t\t${inj_pump_hp_calc} = ssc_var(obj, \"inj_pump_hp\");\r", + "\t\t${pump_work_calc} = ssc_var(obj, \"pump_work\");\r", "\t\t\r", "\t\t${pump_only_cost_calc} = ssc_var(obj, \"pump_only_cost\");\r", "\t\t${pump_cost_install_calc} = ssc_var(obj, \"pump_cost_install\");\r", @@ -588,6 +602,7 @@ "\t\t${pumpwork_inj_calc} = fail;\r", "\t\t${pump_depth_ft_calc} = fail;\r", "\t\t${inj_pump_hp_calc} = fail;\r", + "\t\t${pump_work_calc} = fail;\r", "\t\t\r", "\t\t${pump_only_cost_calc} = fail;\r", "\t\t${pump_cost_install_calc} = fail;\r", From b2f14dcf92373f452ab5e6e69fc283f80892c21a Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 07:49:28 -0500 Subject: [PATCH 17/74] switch ui vars from ssc equation to auto exec --- .../ui/Geothermal Plant and Equipment.json | 8 ++++++-- deploy/runtime/ui/Geothermal System Design.json | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index fbd50e87eb..373bc34fd1 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4148,6 +4148,10 @@ "\treturn ${pump_work_calc};\r", "};\r", "\r", + "equations{ 'geotherm.delta_pressure_reservoir' } = define(){\r", + "\treturn ${reservoir_pressure_calc};\r", + "};\r", + "\r", "// ----------------------------------------\r", "", "equations{ 'geotherm.net_output' } = define() {", @@ -4196,7 +4200,7 @@ "\t\t//\t${pump_work} = ${specified_pump_work_amount};\r", "\t\t//${pump_size_hp} = ssc_var(obj, 'pump_hp');\r", "\r", - "\t\t${geotherm.delta_pressure_reservoir} = err;\r", + "\t\t//${geotherm.delta_pressure_reservoir} = err;\r", "\t\t${geotherm.avg_reservoir_temp} = err;\r", "\t\t${geotherm.bottom_hole_pressure} = err;\r", "\t}", @@ -4220,7 +4224,7 @@ "\t//\t${pump_work} = ${specified_pump_work_amount};", " //${pump_size_hp} = ssc_var(obj, 'pump_hp');", "", - " ${geotherm.delta_pressure_reservoir} = ssc_var(obj, 'reservoir_pressure');", + " //${geotherm.delta_pressure_reservoir} = ssc_var(obj, 'reservoir_pressure');", " ${geotherm.avg_reservoir_temp} = ssc_var(obj, 'reservoir_avg_temp');", " ${geotherm.bottom_hole_pressure} = ssc_var(obj, 'bottom_hole_pressure');", "\t}\r", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 983365c358..8ccee673f1 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -544,6 +544,19 @@ "UIObject": "Default", "sscVariableName": "", "sscVariableValue": "" + }, + "reservoir_pressure_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" } }, "Equations": [ @@ -576,6 +589,8 @@ "\t\t${inj_pump_hp_calc} = ssc_var(obj, \"inj_pump_hp\");\r", "\t\t${pump_work_calc} = ssc_var(obj, \"pump_work\");\r", "\t\t\r", + "\t\t${reservoir_pressure_calc} = ssc_var(obj, \"reservoir_pressure\");\r", + "\t\t\r", "\t\t${pump_only_cost_calc} = ssc_var(obj, \"pump_only_cost\");\r", "\t\t${pump_cost_install_calc} = ssc_var(obj, \"pump_cost_install\");\r", "\t\t\r", @@ -604,6 +619,8 @@ "\t\t${inj_pump_hp_calc} = fail;\r", "\t\t${pump_work_calc} = fail;\r", "\t\t\r", + "\t\t${reservoir_pressure_calc} = fail;\r", + "\t\t\r", "\t\t${pump_only_cost_calc} = fail;\r", "\t\t${pump_cost_install_calc} = fail;\r", "\t}\r", From b693447fa5a41e2f21a91aeb3b824aed3e5ac2cd Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 07:55:23 -0500 Subject: [PATCH 18/74] switch ui vars from ssc equation to auto exec --- .../ui/Geothermal Plant and Equipment.json | 16 +++++++--- .../runtime/ui/Geothermal System Design.json | 30 +++++++++++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index 373bc34fd1..59e0ee9965 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4152,6 +4152,14 @@ "\treturn ${reservoir_pressure_calc};\r", "};\r", "\r", + "equations{ 'geotherm.avg_reservoir_temp' } = define() {\r", + "\treturn ${reservoir_avg_temp_calc};\r", + "};\r", + "\r", + "equations{ 'geotherm.bottom_hole_pressure' } = define() {\r", + "\treturn ${bottom_hole_pressure_calc};\r", + "};\r", + "\r", "// ----------------------------------------\r", "", "equations{ 'geotherm.net_output' } = define() {", @@ -4201,8 +4209,8 @@ "\t\t//${pump_size_hp} = ssc_var(obj, 'pump_hp');\r", "\r", "\t\t//${geotherm.delta_pressure_reservoir} = err;\r", - "\t\t${geotherm.avg_reservoir_temp} = err;\r", - "\t\t${geotherm.bottom_hole_pressure} = err;\r", + "\t\t//${geotherm.avg_reservoir_temp} = err;\r", + "\t\t//${geotherm.bottom_hole_pressure} = err;\r", "\t}", " else{", " //${num_wells_getem} = ssc_var( obj, 'num_wells_getem_output');", @@ -4225,8 +4233,8 @@ " //${pump_size_hp} = ssc_var(obj, 'pump_hp');", "", " //${geotherm.delta_pressure_reservoir} = ssc_var(obj, 'reservoir_pressure');", - " ${geotherm.avg_reservoir_temp} = ssc_var(obj, 'reservoir_avg_temp');", - " ${geotherm.bottom_hole_pressure} = ssc_var(obj, 'bottom_hole_pressure');", + " //${geotherm.avg_reservoir_temp} = ssc_var(obj, 'reservoir_avg_temp');", + " //${geotherm.bottom_hole_pressure} = ssc_var(obj, 'bottom_hole_pressure');", "\t}\r", "", "\tssc_free( obj );", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 8ccee673f1..7b9142958f 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -337,6 +337,19 @@ } }, "VarDatabase": { + "bottom_hole_pressure_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "gross_output_calc": { "Version": 4.0, "Type": 1.0, @@ -545,6 +558,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "reservoir_avg_temp_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "reservoir_pressure_calc": { "Version": 4.0, "Type": 1.0, @@ -590,6 +616,8 @@ "\t\t${pump_work_calc} = ssc_var(obj, \"pump_work\");\r", "\t\t\r", "\t\t${reservoir_pressure_calc} = ssc_var(obj, \"reservoir_pressure\");\r", + "\t\t${reservoir_avg_temp_calc} = ssc_var(obj, \"reservoir_avg_temp\");\r", + "\t\t${bottom_hole_pressure_calc} = ssc_var(obj, \"bottom_hole_pressure\");\r", "\t\t\r", "\t\t${pump_only_cost_calc} = ssc_var(obj, \"pump_only_cost\");\r", "\t\t${pump_cost_install_calc} = ssc_var(obj, \"pump_cost_install\");\r", @@ -620,6 +648,8 @@ "\t\t${pump_work_calc} = fail;\r", "\t\t\r", "\t\t${reservoir_pressure_calc} = fail;\r", + "\t\t${reservoir_avg_temp_calc} = fail;\r", + "\t\t${bottom_hole_pressure_calc} = fail;\r", "\t\t\r", "\t\t${pump_only_cost_calc} = fail;\r", "\t\t${pump_cost_install_calc} = fail;\r", From 15b467cc88aadaa3c2f97f64462dd09d4dcd5642 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 13:34:39 -0500 Subject: [PATCH 19/74] get design net power from auto exec --- .../ui/Geothermal Plant and Equipment.json | 8 +++++--- deploy/runtime/ui/Geothermal System Design.json | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index 59e0ee9965..7380cbe0a4 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4160,11 +4160,13 @@ "\treturn ${bottom_hole_pressure_calc};\r", "};\r", "\r", + "equations{ 'geotherm.net_output' } = define() {\r", + "\treturn ${net_plant_output_calc}; // ${gross_output_calc} - ${pump_work};\r", + "};\r", + "\r", + "\r", "// ----------------------------------------\r", "", - "equations{ 'geotherm.net_output' } = define() {", - "\treturn ${gross_output_calc} - ${pump_work};", - "};", "", "equations{ 'design_temp' } = define() {", "\treturn ${resource_temp};", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 7b9142958f..7e04926b65 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -389,6 +389,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "net_plant_output_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "num_wells_calc": { "Version": 4.0, "Type": 1.0, @@ -619,6 +632,8 @@ "\t\t${reservoir_avg_temp_calc} = ssc_var(obj, \"reservoir_avg_temp\");\r", "\t\t${bottom_hole_pressure_calc} = ssc_var(obj, \"bottom_hole_pressure\");\r", "\t\t\r", + "\t\t${net_plant_output_calc} = ssc_var(obj, \"net_plant_output\");\r", + "\t\t\r", "\t\t${pump_only_cost_calc} = ssc_var(obj, \"pump_only_cost\");\r", "\t\t${pump_cost_install_calc} = ssc_var(obj, \"pump_cost_install\");\r", "\t\t\r", @@ -651,6 +666,8 @@ "\t\t${reservoir_avg_temp_calc} = fail;\r", "\t\t${bottom_hole_pressure_calc} = fail;\r", "\t\t\r", + "\t\t${net_plant_output_calc} = fail;\r", + "\t\t\r", "\t\t${pump_only_cost_calc} = fail;\r", "\t\t${pump_cost_install_calc} = fail;\r", "\t}\r", From 7e0de18131ae17b519b70c167c7804e2b70dfa70 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 13:37:36 -0500 Subject: [PATCH 20/74] delete commented out mimo --- .../ui/Geothermal Plant and Equipment.json | 63 ------------------- 1 file changed, 63 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index 7380cbe0a4..bb7000e784 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4181,69 +4181,6 @@ "//\treturn ${geotherm.net_output}*1000;}; // MW to kW > 100% with net output\r", "\r", "", - "", - "equations{ '$MIMO$ geothermal' } = define() {", - " obj = ssc_create();", - "\t\r", - "\tif ( true )", - "\t{", - "\t\t//msgbox('geothermal mimo error, result =' + result); \r", - "\t\t\r", - "\t\terr = -789;\r", - "\t\t\r", - "\t\t//${num_wells_getem} = err;\r", - "\t\t//${num_wells_getem_inj} = err;\r", - "\t\t//${geotherm.cost.prod_wells_drilled} = err;\r", - "\t\t//${geotherm.cost.inj_wells_drilled} = err;\r", - "\t\t//${geotherm.plant_efficiency_used} = err;\r", - "\t\tfailed_prod = err;\r", - "\t\t//${geotherm.cost.surf_num_wells} = ${num_wells_getem} + ${geotherm.cost.inj_wells_drilled} + failed_prod;\r", - "\t\t//${pump_work_watthr_lb} = err;\r", - "\t\t//${pumpwork_prod} = err;\r", - "\t\t//${pumpwork_inj} = err;\r", - "\t\t//{gross_output_calc} = err;\r", - "\t\t//${pump_depth} = err;\r", - "\t\t//${inj_pump_hp} = err;\r", - "\t\t//if (${specify_pump_work} == 0)\r", - "\t\t//\t${pump_work} = err;\r", - "\t\t//else\r", - "\t\t//\t${pump_work} = ${specified_pump_work_amount};\r", - "\t\t//${pump_size_hp} = ssc_var(obj, 'pump_hp');\r", - "\r", - "\t\t//${geotherm.delta_pressure_reservoir} = err;\r", - "\t\t//${geotherm.avg_reservoir_temp} = err;\r", - "\t\t//${geotherm.bottom_hole_pressure} = err;\r", - "\t}", - " else{", - " //${num_wells_getem} = ssc_var( obj, 'num_wells_getem_output');", - " //${num_wells_getem_inj} = ssc_var( obj, 'num_wells_getem_inj');\r", - " //${geotherm.cost.prod_wells_drilled} = ssc_var( obj, 'num_wells_getem_prod_drilled');\r", - " //${geotherm.cost.inj_wells_drilled} = ssc_var( obj, 'num_wells_getem_inj_drilled');", - " //${geotherm.plant_efficiency_used} = ssc_var( obj, 'plant_brine_eff');\r", - " failed_prod = ssc_var( obj, 'num_wells_getem_prod_failed');\r", - " //${geotherm.cost.surf_num_wells} = ${num_wells_getem} + ${geotherm.cost.inj_wells_drilled} + failed_prod;", - " //${pump_work_watthr_lb} = ssc_var( obj, 'pump_watthr_per_lb');", - " //${pumpwork_prod} = ssc_var( obj, 'pumpwork_prod');", - " //${pumpwork_inj} = ssc_var( obj, 'pumpwork_inj');", - " //${gross_output} = ssc_var(obj, 'gross_output');", - " //${pump_depth} = ssc_var(obj, 'pump_depth_ft');", - " //${inj_pump_hp} = ssc_var(obj, 'inj_pump_hp');", - " //if (${specify_pump_work} == 0)", - "\t//\t${pump_work} = ssc_var(obj, 'pump_work');", - "\t//else", - "\t//\t${pump_work} = ${specified_pump_work_amount};", - " //${pump_size_hp} = ssc_var(obj, 'pump_hp');", - "", - " //${geotherm.delta_pressure_reservoir} = ssc_var(obj, 'reservoir_pressure');", - " //${geotherm.avg_reservoir_temp} = ssc_var(obj, 'reservoir_avg_temp');", - " //${geotherm.bottom_hole_pressure} = ssc_var(obj, 'bottom_hole_pressure');", - "\t}\r", - "", - "\tssc_free( obj );", - "\t", - "\treturn 0;", - "};\r", - "\r", "equations{ 'wet_bulb_temp_wf'} = define() {\r", "\tann_twet = nan();\r", "\tif (file_exists(${solar_resource_file}))\r", From b991cc700338b89064af5a0a9fc52b4158d9e003 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 13:56:27 -0500 Subject: [PATCH 21/74] set t htf hot from calculated value --- deploy/runtime/ui/Geothermal Power Block.json | 11 ++--------- deploy/runtime/ui/Geothermal Resource.json | 6 +++++- deploy/runtime/ui/Geothermal System Design.json | 17 +++++++++++++++++ 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Power Block.json b/deploy/runtime/ui/Geothermal Power Block.json index 33bc0379f1..9898856f57 100644 --- a/deploy/runtime/ui/Geothermal Power Block.json +++ b/deploy/runtime/ui/Geothermal Power Block.json @@ -3139,7 +3139,7 @@ }, "Equations": [ "equations{ 'T_htf_hot_ref' } = define() {", - "\treturn ${design_temp};", + "\treturn ${design_temp_calc};", "};", "", "equations{ 'CT' } = define() {", @@ -3164,14 +3164,7 @@ "", "equations{ 'degradation' } = define() {", "\treturn 0; };", - "/*", - "equations{ 'system_use_lifetime_output' } = define() {", - "\t// if system_use_lifetime_output = 1, grid compute module expects analysis_period input, which is not available without a financial model", - "\tif ( financing() == 'None' || financing() == 'LCOE Calculator' )", - "\t{ return 0; } ", - "\telse", - "\t{ return 1; }", - "};*/\t" + "\t" ], "Callbacks": [ "function update_hybrid_dispatch_inputs() {", diff --git a/deploy/runtime/ui/Geothermal Resource.json b/deploy/runtime/ui/Geothermal Resource.json index bf2fc2247f..95ae2e7a3b 100644 --- a/deploy/runtime/ui/Geothermal Resource.json +++ b/deploy/runtime/ui/Geothermal Resource.json @@ -3551,6 +3551,9 @@ } }, "Equations": [ + "// ---------------------------------\r", + "// only use these variables as UI displays\r", + "// do NOT use them as cmod inputs\r", "equations{ 'geotherm.delta_pressure_reservoirBar' } = define() {", "\treturn ${geotherm.delta_pressure_reservoir}/14.50377373066; };", "", @@ -3559,7 +3562,8 @@ "", "equations{ 'geotherm.avg_reservoir_tempF' } = define() {", "\treturn (${geotherm.avg_reservoir_temp}*9/5)+32; };", - "", + "// ------------------------------------\r", + "// ------------------------------------", "" ], "Callbacks": [ diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 7e04926b65..bcbc62c982 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -350,6 +350,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "design_temp_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "gross_output_calc": { "Version": 4.0, "Type": 1.0, @@ -612,6 +625,8 @@ "\t{\r", "\t\t${is_success_auto_exec} = 1;\r", "\t\t\r", + "\t\t${design_temp_calc} = ssc_var(obj, \"design_temp\");\r", + "\t\t\r", "\t\t${plant_brine_eff_calc} = ssc_var( obj, 'plant_brine_eff');\r", "\t\t${gross_output_calc} = ssc_var(obj, \"gross_output\");\r", "\t\t\r", @@ -646,6 +661,8 @@ "\t\t\r", "\t\tfail = -6789;\r", "\t\t\r", + "\t\t${design_temp_calc} = fail;\r", + "\t\t\r", "\t\t${plant_brine_eff_calc} = fail;\r", "\t\t${gross_output_calc} = fail;\r", "\t\t\r", From 611565054a660d6c76a3ddb78c169e0d3628a6cf Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 14:02:47 -0500 Subject: [PATCH 22/74] remove htf as a cmod input --- deploy/runtime/ui/Geothermal Costs.json | 1 - deploy/runtime/ui/Geothermal OM Costs.json | 1 - deploy/runtime/ui/Geothermal Power Block.json | 17 ----------------- 3 files changed, 19 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index a5d9c7c6b8..38083c7887 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12707,7 +12707,6 @@ "\t\t//power block parameters needed but not on power block SAM input page", "\t\tssc_var( geothermal, 'T_htf_cold_ref', ${T_htf_cold_ref});", "\t\tssc_var( geothermal, 'T_htf_hot_ref', ${T_htf_hot_ref});", - "\t\tssc_var( geothermal, 'HTF', ${HTF});", "\t\t", "\t\t//power block input parameters", "\t\tssc_var( geothermal, 'P_boil', ${P_boil});", diff --git a/deploy/runtime/ui/Geothermal OM Costs.json b/deploy/runtime/ui/Geothermal OM Costs.json index 0eb0281078..62fb93958d 100644 --- a/deploy/runtime/ui/Geothermal OM Costs.json +++ b/deploy/runtime/ui/Geothermal OM Costs.json @@ -184,7 +184,6 @@ "\t//power block parameters needed but not on power block SAM input page\r", "\tssc_var( geothermal, 'T_htf_cold_ref', ${T_htf_cold_ref});\r", "\tssc_var( geothermal, 'T_htf_hot_ref', ${T_htf_hot_ref});\r", - "\tssc_var( geothermal, 'HTF', ${HTF});\r", "\t\r", "\t//power block input parameters\r", "\tssc_var( geothermal, 'P_boil', ${P_boil});\r", diff --git a/deploy/runtime/ui/Geothermal Power Block.json b/deploy/runtime/ui/Geothermal Power Block.json index 9898856f57..0c46169720 100644 --- a/deploy/runtime/ui/Geothermal Power Block.json +++ b/deploy/runtime/ui/Geothermal Power Block.json @@ -2718,19 +2718,6 @@ "sscVariableName": "", "sscVariableValue": "" }, - "HTF": { - "Version": 4.0, - "Type": 1.0, - "Label": "HTF", - "Units": " ", - "Group": "Geothermal Power Block", - "IndexLabels": "", - "Flags": 8.0, - "DefaultValue": 3.0, - "UIObject": "Default", - "sscVariableName": "", - "sscVariableValue": "" - }, "P_boil": { "Version": 4.0, "Type": 1.0, @@ -3158,10 +3145,6 @@ "\t", "};", "", - "equations{ 'HTF' } = define() {", - "\treturn 3;", - "};", - "", "equations{ 'degradation' } = define() {", "\treturn 0; };", "\t" From 2d2aa98a89cdcc314c0c8edd843524346d23a70e Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 14:20:16 -0500 Subject: [PATCH 23/74] start removing code from geo cost mimo --- deploy/runtime/ui/Geothermal Costs.json | 289 +++--------------------- 1 file changed, 34 insertions(+), 255 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 38083c7887..afccf8acb1 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12617,267 +12617,46 @@ "\t", "equations{ '$MIMO$ cmod_geothermal_costs'} = define() {", "\t\tgeothermal = ssc_create();\t", - "\t\tssc_var( geothermal, 'ui_calculations_only', 0);", - "\t\tssc_var( geothermal, 'adjust_constant', 0.0);", - "\t\tssc_var( geothermal, 'file_name', ${file_name});", - "\t\tssc_var( geothermal, 'resource_potential', ${resource_potential});", - "\t\tssc_var( geothermal, 'resource_type', ${resource_type} ); // INTEGER", - "\t\tif (${resource_temp} < 374) {\r", - "\t\t\tssc_var( geothermal, 'resource_temp', ${resource_temp} );\r", - "\t\t}\r", - "\t\telse {\r", - "\t\t\tssc_var( geothermal, 'resource_temp', ${resource_temp_old} );\r", - "\t\t}", - "\t\tssc_var( geothermal, 'resource_depth', ${resource_depth} );", - "\t\tssc_var( geothermal, 'dt_prod_well', ${dt_prod_well} );\t", - "\t\tssc_var( geothermal, 'prod_well_choice', ${prod_well_choice} );\t\t\t\t\t\t\t\t\t\t\t\t", - "\t\t// Other inputs\t\t\t\t\t\t\t ", - "\t\tssc_var( geothermal, 'geothermal_analysis_period', ${geothermal_analysis_period} ); // INTEGER", - "\t\tssc_var( geothermal, 'model_choice', ${model_choice} ); // INTEGER", - "\t\tssc_var( geothermal, 'geotherm.cost.inj_prod_well_ratio', ${geotherm.cost.inj_prod_well_ratio});", - "\t\tssc_var( geothermal, 'drilling_success_rate', ${drilling_success_rate});\r", - "\t\tssc_var( geothermal, 'stim_success_rate', ${stim_success_rate});\r", - "\t\tssc_var( geothermal, 'failed_prod_flow_ratio', ${failed_prod_flow_ratio});\r", - "\t\tssc_var( geothermal, 'stimulation_type', ${stimulation_type});\r", - "\t\t// geothermal plant and equipment\t\t ", - "\t\tssc_var( geothermal, 'nameplate', ${nameplate} );", - "\t\tssc_var( geothermal, 'analysis_type', ${analysis_type} ); //INTEGER", - "\t\tssc_var( geothermal, 'num_wells', ${num_wells} );", - "\t\tssc_var( geothermal, 'num_wells_getem', ${num_wells_getem});", - "\t\tssc_var( geothermal, 'conversion_type', ${conversion_type} ); // INTEGER", - "\t\tssc_var( geothermal, 'ppi_base_year', ${ppi_base_year} );", - "\t\tssc_var( geothermal, 'plant_efficiency_input', ${plant_efficiency_input} );", - "\t\tssc_var( geothermal, 'conversion_subtype', ${conversion_subtype} ); // INTEGER", - "\t\tif (${resource_type} == 0)", - "\t\t\tssc_var( geothermal, 'decline_type', 0 ); // INTEGER", - "\t\telse if (${conversion_type} == 0) ", - "\t\t\tssc_var( geothermal, 'decline_type', ${decline_type});", - "\t\telse ", - "\t\t\tssc_var( geothermal, 'decline_type', 0);", - "\t\tssc_var( geothermal, 'temp_decline_rate', ${temp_decline_rate} );", - "\t\tssc_var( geothermal, 'temp_decline_max', ${temp_decline_max} );", - "\t\tssc_var( geothermal, 'wet_bulb_temp', ${wet_bulb_temp} );\r", - "\t\tssc_var( geothermal, 'use_weather_file_conditions', ${use_weather_file_conditions} );", - "\t\tssc_var( geothermal, 'ambient_pressure', ${ambient_pressure} );", - "\t\tssc_var( geothermal, 'well_flow_rate', ${well_flow_rate} );", - "\t\tssc_var( geothermal, 'pump_efficiency', ${pump_efficiency} );", - "\t\tssc_var( geothermal, 'delta_pressure_equip', ${delta_pressure_equip} );", - "\t\tssc_var( geothermal, 'excess_pressure_pump', ${excess_pressure_pump} );", - "\t\tssc_var( geothermal, 'geotherm.cost.inj_cost_curve_welltype', ${geotherm.cost.inj_cost_curve_welltype} );", - "\t\tssc_var( geothermal, 'geotherm.cost.prod_cost_curve_welltype', ${geotherm.cost.prod_cost_curve_welltype} );", - "\t\tssc_var( geothermal, 'geotherm.cost.inj_cost_curve_welldiam', ${geotherm.cost.inj_cost_curve_welldiam} );\r", - "\t\tssc_var( geothermal, 'geotherm.cost.prod_cost_curve_welldiam', ${geotherm.cost.prod_cost_curve_welldiam} );\r", - "\t\tssc_var( geothermal, 'geotherm.cost.inj_cost_curve', ${geotherm.cost.inj_cost_curve});\r", - "\t\tssc_var( geothermal, 'geotherm.cost.prod_cost_curve', ${geotherm.cost.prod_cost_curve});", - "\t\tssc_var( geothermal, 'design_temp', ${design_temp} );", - "\t\tssc_var( geothermal, 'specify_pump_work', ${specify_pump_work} ); // INTEGER", - "\t\tssc_var( geothermal, 'specified_pump_work_amount', ${specified_pump_work_amount} );", - "\t\t\r", - "\t\tssc_var( geothermal, 'allow_reservoir_replacements', ${allow_reservoir_replacements});", - "\t\t// detailed geothermal inputs", - "\t\tssc_var( geothermal, 'rock_thermal_conductivity', ${rock_thermal_conductivity} );", - "\t\tssc_var( geothermal, 'rock_specific_heat', ${rock_specific_heat} );", - "\t\tssc_var( geothermal, 'rock_density', ${rock_density} );", - "\t\tif (${resource_type} != 1 && ${reservoir_pressure_change_type} == 1) {", - "\t\t\tssc_var( geothermal, 'reservoir_pressure_change_type', 0 ); // INTEGER", - "\t\t\tmsgbox('Fracture flow calculations can only be used with EGS resource. Please check the inputs on the Geothermal Resource page. The enter change in reservoir option is being used currently.');", - "\t\t}", - "\t\telse ", - "\t\t\tssc_var( geothermal, 'reservoir_pressure_change_type', ${reservoir_pressure_change_type} ); // INTEGER", "\t\t\r", - "\t\tssc_var( geothermal, 'reservoir_pressure_change', ${reservoir_pressure_change} );", - "\t\tssc_var( geothermal, 'injectivity_index', ${injectivity_index} );\r", - "\t\tssc_var( geothermal, 'exploration_wells_production', ${geotherm.cost.confirm_wells_num} );\r", - "\t\tssc_var( geothermal, 'reservoir_width', ${reservoir_width} );", - "\t\tssc_var( geothermal, 'reservoir_height', ${reservoir_height} );", - "\t\tssc_var( geothermal, 'reservoir_permeability', ${reservoir_permeability} );\t\t", - "\t\tssc_var( geothermal, 'inj_prod_well_distance', ${inj_prod_well_distance} );\t\t", - "\t\tssc_var( geothermal, 'subsurface_water_loss', ${subsurface_water_loss} ); \t\t", - "\t\tssc_var( geothermal, 'fracture_aperature', ${fracture_aperature} );", - "\t\tssc_var( geothermal, 'fracture_width', ${fracture_width} );", - "\t\tssc_var( geothermal, 'fracture_length', ${fracture_length} );", - "\t\tssc_var( geothermal, 'fracture_spacing', ${fracture_spacing} );", - "\t\tssc_var( geothermal, 'num_fractures', ${num_fractures} ); // INTEGER", - "\t\tssc_var( geothermal, 'fracture_angle', ${fracture_angle} );", - "\t\tssc_var( geothermal, 'reservoir_model_inputs', ${reservoir_model_inputs} );", - "", - "\t\t// temp input for testing", - "\t\tssc_var( geothermal, 'hr_pl_nlev', ${hr_pl_nlev} ); // INTEGER", - "\t\t", - "\t\t//power block parameters needed but not on power block SAM input page", - "\t\tssc_var( geothermal, 'T_htf_cold_ref', ${T_htf_cold_ref});", - "\t\tssc_var( geothermal, 'T_htf_hot_ref', ${T_htf_hot_ref});", - "\t\t", - "\t\t//power block input parameters", - "\t\tssc_var( geothermal, 'P_boil', ${P_boil});", - "\t\tssc_var( geothermal, 'eta_ref', ${eta_ref});", - "\t\tssc_var( geothermal, 'q_sby_frac', ${q_sby_frac});", - "\t\tssc_var( geothermal, 'startup_frac', ${startup_frac});", - "\t\tssc_var( geothermal, 'startup_time', ${startup_time});", - "\t\tssc_var( geothermal, 'pb_bd_frac', ${pb_bd_frac});", - "\t\tssc_var( geothermal, 'T_amb_des', ${T_amb_des});", - "\t\tssc_var( geothermal, 'CT', ${CT});", - "\t\tssc_var( geothermal, 'dT_cw_ref', ${dT_cw_ref});", - "\t\tssc_var( geothermal, 'T_approach', ${T_approach});", - "\t\tssc_var( geothermal, 'T_ITD_des', ${T_ITD_des});", - "\t\tssc_var( geothermal, 'P_cond_ratio', ${P_cond_ratio});", - "\t\tssc_var( geothermal, 'P_cond_min', ${P_cond_min});", - "\t\tssc_var( geothermal, 'hc_ctl1', ${hc_ctl1});", - "\t\tssc_var( geothermal, 'hc_ctl2', ${hc_ctl2});", - "\t\tssc_var( geothermal, 'hc_ctl3', ${hc_ctl3});", - "\t\tssc_var( geothermal, 'hc_ctl4', ${hc_ctl4});", - "\t\tssc_var( geothermal, 'hc_ctl5', ${hc_ctl5});", - "\t\tssc_var( geothermal, 'hc_ctl6', ${hc_ctl6});", - "\t\tssc_var( geothermal, 'hc_ctl7', ${hc_ctl7});", - "\t\tssc_var( geothermal, 'hc_ctl8', ${hc_ctl8});", - "\t\tssc_var( geothermal, 'hc_ctl9', ${hc_ctl9});", - "\t\tssc_var( geothermal, 'hybrid_dispatch_schedule', ${hybrid_dispatch_schedule});", - "\t\t//result = ssc_exec(geothermal, 'geothermal');", - "\t\tresult = 1;\r", - "\t\tif ( typeof(result) != 'number' && result != 0 )\r", - "\t\t{\r", - "\t\t\tmsgbox('geothermal mimo error, result =' + result); \r", - "\t\t}", - "\t\tif (result == 0) ", + "\t\tif (false) ", "\t\t{", - "\t\t\t//geothermal = ssc_create('geothermal_geothermals');\r", - "\t\t\t", - "\t\t\tconversion_type = ${conversion_type};", - "\t\t\tppi_base_year = ${ppi_base_year};", - "\t\t\t//gross_output = ${geotherm.cost.plant_size};", - "\t\t\tdesign_temp = ssc_var(geothermal, \"design_temp\");", - "\t\t\tsecond_law_eff = ssc_var(geothermal, \"eff_secondlaw\");\r", - "\t\t\tprod_wells_failed = ssc_var(geothermal, 'num_wells_getem_prod_failed');", - "\t\t\t//ssc_var(geothermal,'gross_output', gross_output);", - "\t\t\tssc_var(geothermal,'design_temp', design_temp);", - "\t\t\tssc_var(geothermal,'eff_secondlaw', second_law_eff);", - "\t\t\tssc_var(geothermal, \"conversion_type\", conversion_type);\r", - "\t\t\tssc_var(geothermal, 'calc_drill_costs', 1.0); //Always set to 1\r", - "\t\t\tssc_var(geothermal, 'geotherm.cost.pump_fixed', ${geotherm.cost.pump_fixed});\r", - "\t\t\tssc_var(geothermal, 'geotherm.cost.pump_per_foot', ${geotherm.cost.pump_per_foot});\r", - "\t\t\tssc_var(geothermal, 'geotherm.cost.pump_depth', ${geotherm.cost.pump_depth});\r", - "\t\t\t//ssc_var(geothermal, 'geotherm.cost.prod_req', ${geotherm.cost.prod_req});\r", - "\t\t\tssc_var(geothermal, 'pump_size_hp', ${pump_size_hp});\r", - "\t\t\tssc_var(geothermal, 'inj_pump_hp', ${inj_pump_hp});\r", + "\t\t\t${geotherm.cost.plant_per_kW} = ssc_var(geothermal, 'baseline_cost');\t", + "\t\t\t${geotherm.cost.pumps_total} = ssc_var(geothermal, \"total_pump_cost\");\r", + "\t\t\t${geotherm.cost.surf_total} = ssc_var(geothermal, \"total_gathering_cost\");\r", + "\t\t\t${geotherm.cost.pump_cost_install} = ssc_var(geothermal, \"pump_cost_install\");\r", + "\t\t\t${geotherm.cost.pump_only_cost} = ssc_var(geothermal, \"pump_only_cost\");\r", + "\t\t\t${geotherm.cost.prod_pump_cost_per_well} = ssc_var(geothermal, \"prod_pump_cost_per_well\");\r", + "\t\t\t${geotherm.cost.inj_pump_cost_per_pump} = ssc_var(geothermal, \"inj_pump_cost_per_pump\");\r", + "\t\t\t${inj_num_pumps} = ssc_var(geothermal, \"inj_num_pumps\");\r", + "\t\t\t${prod_pump_cost} = ssc_var(geothermal, \"prod_pump_cost\");\r", + "\t\t\t${inj_pump_cost} = ssc_var(geothermal, \"inj_pump_cost\");\r", + "\t\t\t${indirect_pump_cost} = ssc_var(geothermal, \"indirect_pump_gathering_cost\");\r", + "\t\t\t${geotherm.cost.total_surface_equipment_cost} = ssc_var(geothermal, \"total_surface_equipment_cost\");\r", + "\t\t\t${geotherm.cost.surf_per_well} = ssc_var(geothermal, \"piping_cost_per_well\");\r", + "\t\t\t${geotherm.cost.surf_num_wells} = ssc_var(geothermal, \"field_gathering_num_wells\");\r", "\t\t\t\r", - "\t\t\tssc_var(geothermal, 'geotherm.cost.stim_non_drill', ${geotherm.cost.stim_non_drill});\r", - "\t\t\tssc_var(geothermal, 'geotherm.cost.expl_non_drill', ${geotherm.cost.expl_non_drill});\r", - "\t\t\tssc_var(geothermal, 'geotherm.cost.conf_non_drill', ${geotherm.cost.conf_non_drill});\r", - "\t\t\tssc_var(geothermal, 'geotherm.cost.expl_multiplier', ${geotherm.cost.expl_multiplier});\r", - "\t\t\tssc_var(geothermal, 'geotherm.cost.conf_multiplier', ${geotherm.cost.conf_multiplier});\r", - "\t\t\tssc_var(geothermal, 'geotherm.cost.expl_num_wells', ${geotherm.cost.expl_num_wells});\r", - "\t\t\tssc_var(geothermal, 'geotherm.cost.conf_num_wells', ${geotherm.cost.conf_num_wells});\r", + "\t\t\t//Stimulation costs\r", + "\t\t\t${geotherm.cost.stim_per_well} = ssc_var(geothermal, \"stim_cost_per_well\");\r", + "\t\t\t${geotherm.cost.stim_total} = ssc_var(geothermal, \"stim_total_cost\");\r", "\t\t\t\r", - "\t\t\tssc_var(geothermal, 'geotherm.cost.pump_fixed', ${geotherm.cost.pump_fixed});\r", - "\t\t\tssc_var(geothermal, 'geotherm.cost.pump_per_foot', ${geotherm.cost.pump_per_foot});\r", - "\t\t\tssc_var(geothermal, 'geotherm.cost.pump_casing_cost', ${geotherm.cost.pump_casing_cost});\r", + "\t\t\t//Exploratin and Confirmation drilling \r", + "\t\t\t${geotherm.cost.expl_total} = ssc_var(geothermal, \"expl_total_cost\");\r", + "\t\t\t${geotherm.cost.expl_drill} = ssc_var(geothermal, \"expl_drilling_cost\");\r", + "\t\t\t${geotherm.cost.conf_total} = ssc_var(geothermal, \"conf_total_cost\");\r", + "\t\t\t${geotherm.cost.conf_drill} = ssc_var(geothermal, \"conf_drilling_cost\");\r", "\t\t\t\r", - "\t\t\tssc_var(geothermal, 'pump_depth_ft', ${pump_depth});\r", - "\t\t\t//ssc_var(geothermal, 'geotherm.cost.prod_wells_drilled', ${geotherm.cost.prod_wells_drilled});\r", - "\t\t\t//ssc_var(geothermal, 'geotherm.cost.inj_wells_drilled', ${geotherm.cost.inj_wells_drilled});\r", - "\t\t\t//ssc_var(geothermal, 'geotherm.cost.prod_wells_failed', prod_wells_failed);", + "\t\t\t//Drilling costs\r", + "\t\t\t${geotherm.cost.prod_per_well} = ssc_var(geothermal, \"prod_well_cost\");\r", + "\t\t\t${geotherm.cost.prod_drill} = ssc_var(geothermal, \"prod_total_cost\");\r", + "\t\t\t${geotherm.cost.inj_per_well} = ssc_var(geothermal, \"inj_well_cost\");\r", + "\t\t\t${geotherm.cost.inj_drill} = ssc_var(geothermal, \"inj_total_cost\");\r", + "\t\t\t\r", + "\t\t\t//Total Drilling cost\r", + "\t\t\t${geotherm.cost.drilling.amount_calc} = ssc_var(geothermal, \"total_drilling_cost\");\r", + "\t\t\t\r", + "\t\t\tssc_free(geothermal);\r", + "\t\t\treturn 0;", "\t\t\t", - "\t\t\t//Flash", - "\t\t\tif (${conversion_type})", - "\t\t\t{", - "\t\t\t\tqRejectTotal = ssc_var(geothermal, \"qRejectTotal\");", - "\t\t\t\tqCondenser = ssc_var(geothermal, \"qCondenser\");", - "\t\t\t\tv_stage_1 = ssc_var(geothermal, \"v_stage_1\");", - "\t\t\t\tv_stage_2 = ssc_var(geothermal, \"v_stage_2\");", - "\t\t\t\tv_stage_3 = ssc_var(geothermal, \"v_stage_3\");", - "\t\t\t\tGF_flowrate = ssc_var(geothermal, \"GF_flowrate\");", - "\t\t\t\tqRejectByStage_1 = ssc_var(geothermal, \"qRejectByStage_1\");", - "\t\t\t\tqRejectByStage_2 = ssc_var(geothermal, \"qRejectByStage_2\");", - "\t\t\t\tqRejectByStage_3 = ssc_var(geothermal, \"qRejectByStage_3\");", - "\t\t\t\tncg_condensate_pump = ssc_var(geothermal, \"ncg_condensate_pump\");", - "\t\t\t\tcw_pump_work = ssc_var(geothermal, \"cw_pump_work\");", - "\t\t\t\tpressure_ratio_1 = ssc_var(geothermal, \"pressure_ratio_1\");", - "\t\t\t\tpressure_ratio_2 = ssc_var(geothermal, \"pressure_ratio_2\");", - "\t\t\t\tpressure_ratio_3 = ssc_var(geothermal, \"pressure_ratio_3\");", - "\t\t\t\tcondensate_pump_power = ssc_var(geothermal, \"condensate_pump_power\");", - "\t\t\t\tcwflow = ssc_var(geothermal, \"cwflow\");", - "\t\t\t\tcw_pump_head = ssc_var(geothermal, \"cw_pump_head\");", - "\t\t\t\tspec_vol = ssc_var(geothermal, \"spec_vol\");", - "\t\t\t\tx_hp = ssc_var(geothermal, \"x_hp\");", - "\t\t\t\thp_flash_pressure = ssc_var(geothermal, \"hp_flash_pressure\");", - "\t\t\t\tspec_vol_lp = ssc_var(geothermal, \"spec_vol_lp\");", - "\t\t\t\tx_lp = ssc_var(geothermal, \"x_lp\");\t\t\t", - "\t\t\t\tlp_flash_pressure = ssc_var(geothermal, \"lp_flash_pressure\");", - "\t\t\t\tflash_count = ssc_var(geothermal, \"flash_count\"); ", - "\t\t\t\t/*", - "\t\t\t\tssc_var(cost,'qRejectTotal', qRejectTotal);", - "\t\t\t\tssc_var(cost,'qCondenser', qCondenser);", - "\t\t\t\tssc_var(cost,'v_stage_1', v_stage_1);", - "\t\t\t\tssc_var(cost,'v_stage_2', v_stage_2);", - "\t\t\t\tssc_var(cost,'v_stage_3', v_stage_3);", - "\t\t\t\tssc_var(cost,'GF_flowrate', GF_flowrate);", - "\t\t\t\tssc_var(cost,'qRejectByStage_1', qRejectByStage_1);", - "\t\t\t\tssc_var(cost,'qRejectByStage_2', qRejectByStage_2);", - "\t\t\t\tssc_var(cost,'qRejectByStage_3', qRejectByStage_3);", - "\t\t\t\tssc_var(cost,\"ncg_condensate_pump\", ncg_condensate_pump);", - "\t\t\t\tssc_var(cost,\"cw_pump_work\", cw_pump_work);", - "\t\t\t\tssc_var(cost,\"pressure_ratio_1\", pressure_ratio_1);", - "\t\t\t\tssc_var(cost,\"pressure_ratio_2\", pressure_ratio_2);", - "\t\t\t\tssc_var(cost,\"pressure_ratio_3\", pressure_ratio_3);", - "\t\t\t\tssc_var(cost,\"condensate_pump_power\",condensate_pump_power);", - "\t\t\t\tssc_var(cost,\"cwflow\", cwflow);", - "\t\t\t\tssc_var(cost,\"cw_pump_head\", cw_pump_head);", - "\t\t\t\tssc_var(cost,'spec_vol', spec_vol);", - "\t\t\t\tssc_var(cost,'x_hp', x_hp);", - "\t\t\t\tssc_var(cost,'hp_flash_pressure', hp_flash_pressure);", - "\t\t\t\tssc_var(cost,'spec_vol_lp', spec_vol_lp);", - "\t\t\t\tssc_var(cost,'x_lp', x_lp);", - "\t\t\t\tssc_var(cost,'lp_flash_pressure', lp_flash_pressure);", - "\t\t\t\tssc_var(cost,'flash_count', flash_count);", - "\t\t\t\t*/", - "\t\t\t}", - "\t\t\t\t\t\t", - "\t\t\t//if (ssc_exec(geothermal, 'geothermal_costs') == 0) {\t\r", - "\t\t\tif(false){", - "\t\t\t\t${geotherm.cost.plant_per_kW} = ssc_var(geothermal, 'baseline_cost');\t", - "\t\t\t\t${geotherm.cost.pumps_total} = ssc_var(geothermal, \"total_pump_cost\");\r", - "\t\t\t\t${geotherm.cost.surf_total} = ssc_var(geothermal, \"total_gathering_cost\");\r", - "\t\t\t\t${geotherm.cost.pump_cost_install} = ssc_var(geothermal, \"pump_cost_install\");\r", - "\t\t\t\t${geotherm.cost.pump_only_cost} = ssc_var(geothermal, \"pump_only_cost\");\r", - "\t\t\t\t${geotherm.cost.prod_pump_cost_per_well} = ssc_var(geothermal, \"prod_pump_cost_per_well\");\r", - "\t\t\t\t${geotherm.cost.inj_pump_cost_per_pump} = ssc_var(geothermal, \"inj_pump_cost_per_pump\");\r", - "\t\t\t\t${inj_num_pumps} = ssc_var(geothermal, \"inj_num_pumps\");\r", - "\t\t\t\t${prod_pump_cost} = ssc_var(geothermal, \"prod_pump_cost\");\r", - "\t\t\t\t${inj_pump_cost} = ssc_var(geothermal, \"inj_pump_cost\");\r", - "\t\t\t\t${indirect_pump_cost} = ssc_var(geothermal, \"indirect_pump_gathering_cost\");\r", - "\t\t\t\t${geotherm.cost.total_surface_equipment_cost} = ssc_var(geothermal, \"total_surface_equipment_cost\");\r", - "\t\t\t\t${geotherm.cost.surf_per_well} = ssc_var(geothermal, \"piping_cost_per_well\");\r", - "\t\t\t\t${geotherm.cost.surf_num_wells} = ssc_var(geothermal, \"field_gathering_num_wells\");\r", - "\t\t\t\t\r", - "\t\t\t\t//Stimulation costs\r", - "\t\t\t\t${geotherm.cost.stim_per_well} = ssc_var(geothermal, \"stim_cost_per_well\");\r", - "\t\t\t\t${geotherm.cost.stim_total} = ssc_var(geothermal, \"stim_total_cost\");\r", - "\t\t\t\t\r", - "\t\t\t\t//Exploratin and Confirmation drilling \r", - "\t\t\t\t${geotherm.cost.expl_total} = ssc_var(geothermal, \"expl_total_cost\");\r", - "\t\t\t\t${geotherm.cost.expl_drill} = ssc_var(geothermal, \"expl_drilling_cost\");\r", - "\t\t\t\t${geotherm.cost.conf_total} = ssc_var(geothermal, \"conf_total_cost\");\r", - "\t\t\t\t${geotherm.cost.conf_drill} = ssc_var(geothermal, \"conf_drilling_cost\");\r", - "\t\t\t\t\r", - "\t\t\t\t//Drilling costs\r", - "\t\t\t\t${geotherm.cost.prod_per_well} = ssc_var(geothermal, \"prod_well_cost\");\r", - "\t\t\t\t${geotherm.cost.prod_drill} = ssc_var(geothermal, \"prod_total_cost\");\r", - "\t\t\t\t${geotherm.cost.inj_per_well} = ssc_var(geothermal, \"inj_well_cost\");\r", - "\t\t\t\t${geotherm.cost.inj_drill} = ssc_var(geothermal, \"inj_total_cost\");\r", - "\t\t\t\t\r", - "\t\t\t\t//Total Drilling cost\r", - "\t\t\t\t${geotherm.cost.drilling.amount_calc} = ssc_var(geothermal, \"total_drilling_cost\");\r", - "\t\t\t\t\r", - "\t\t\t\tssc_free(geothermal);\r", - "\t\t\t\treturn 0;", - "\t\t\t\t//return plant_per_kW;", - "\t\t\t}", - "\t\t\telse {\r", - "\t\t\t\tmsgbox(\"Geothermal Costs error \" + result);", - "\t\t\t\tssc_free(geothermal);\r", - "\t\t\t\treturn 0;", - "\t\t\t\t//return 300;", - "\t\t\t}", "\t\t}", "\t\telse {", "\t\t\tssc_free(geothermal);\r", From 234490a5020cd45882feda4ebae0fc6b41e1bb96 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 16:56:11 -0500 Subject: [PATCH 24/74] use system capacity calc from ssc auto exec --- .../ui/Geothermal Plant and Equipment.json | 14 ++++++-------- deploy/runtime/ui/Geothermal System Design.json | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index bb7000e784..c7e32cb108 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4164,21 +4164,19 @@ "\treturn ${net_plant_output_calc}; // ${gross_output_calc} - ${pump_work};\r", "};\r", "\r", + "equations{ 'design_temp' } = define() {\r", + "\treturn ${design_temp_calc};\r", + "};\r", + "\r", + "equations{ 'system_capacity' } = define() {\r", + "\treturn ${system_capacity_calc}; }; //${gross_output_calc}*1000; }; // MW to kW\r", "\r", "// ----------------------------------------\r", "", - "", - "equations{ 'design_temp' } = define() {", - "\treturn ${resource_temp};", - "};", - "", "equations{ 'ui_calculations_only' } = define() {", "\treturn 0; // for a normal model run, this should be zero", "};\r", "\r", - "equations{ 'system_capacity' } = define() {\r", - "\treturn ${gross_output_calc}*1000;}; // MW to kW\r", - "//\treturn ${geotherm.net_output}*1000;}; // MW to kW > 100% with net output\r", "\r", "", "equations{ 'wet_bulb_temp_wf'} = define() {\r", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index bcbc62c982..e84f96d04f 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -609,6 +609,19 @@ "UIObject": "Default", "sscVariableName": "", "sscVariableValue": "" + }, + "system_capacity_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" } }, "Equations": [ @@ -648,6 +661,7 @@ "\t\t${bottom_hole_pressure_calc} = ssc_var(obj, \"bottom_hole_pressure\");\r", "\t\t\r", "\t\t${net_plant_output_calc} = ssc_var(obj, \"net_plant_output\");\r", + "\t\t${system_capacity_calc} = ssc_var(obj, \"system_capacity\");\r", "\t\t\r", "\t\t${pump_only_cost_calc} = ssc_var(obj, \"pump_only_cost\");\r", "\t\t${pump_cost_install_calc} = ssc_var(obj, \"pump_cost_install\");\r", @@ -684,6 +698,7 @@ "\t\t${bottom_hole_pressure_calc} = fail;\r", "\t\t\r", "\t\t${net_plant_output_calc} = fail;\r", + "\t\t${system_capacity_calc} = fail;\r", "\t\t\r", "\t\t${pump_only_cost_calc} = fail;\r", "\t\t${pump_cost_install_calc} = fail;\r", From dd277f566fe8498cafdf1b7f8ceb4d2702217d2d Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 19:15:44 -0500 Subject: [PATCH 25/74] move cost mimo vars to auto exec --- deploy/runtime/ui/Geothermal Costs.json | 4 +++- .../runtime/ui/Geothermal System Design.json | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index afccf8acb1..e7f3161d80 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12613,11 +12613,13 @@ "", "equations{ 'system_recapitalization_cost' } = define() {", "\treturn ${geotherm.cost.recap}; \r", - "};", + "};\r", "\t", "equations{ '$MIMO$ cmod_geothermal_costs'} = define() {", "\t\tgeothermal = ssc_create();\t", "\t\t\r", + "\t\t${geotherm.cost.plant_per_kW} = ${baseline_cost_calc};\r", + "\t\t\r", "\t\tif (false) ", "\t\t{", "\t\t\t${geotherm.cost.plant_per_kW} = ssc_var(geothermal, 'baseline_cost');\t", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index e84f96d04f..5b6fe35052 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -337,6 +337,19 @@ } }, "VarDatabase": { + "baseline_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "bottom_hole_pressure_calc": { "Version": 4.0, "Type": 1.0, @@ -666,6 +679,9 @@ "\t\t${pump_only_cost_calc} = ssc_var(obj, \"pump_only_cost\");\r", "\t\t${pump_cost_install_calc} = ssc_var(obj, \"pump_cost_install\");\r", "\t\t\r", + "\t\t${baseline_cost_calc} = ssc_var(obj, 'baseline_cost');\r", + "\r", + "\t\t\r", "\t\t// System Design\r", "\t\t//${csp.dtr.pwrb.nameplate} = ssc_var(obj, \"nameplate\");\r", "\t\t//${q_pb_design} = ssc_var(obj, \"q_dot_cycle_des\");\r", @@ -702,6 +718,8 @@ "\t\t\r", "\t\t${pump_only_cost_calc} = fail;\r", "\t\t${pump_cost_install_calc} = fail;\r", + "\t\t\r", + "\t\t${baseline_cost_calc} = fail;\r", "\t}\r", "\t\r", "};" From c5cd71ccd67046637ddb881341c363882e343ac9 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 25 May 2026 19:41:58 -0500 Subject: [PATCH 26/74] move more cost mimo vars to auto exec --- deploy/runtime/ui/Geothermal Costs.json | 10 +++ .../runtime/ui/Geothermal System Design.json | 87 +++++++++++++++++-- 2 files changed, 91 insertions(+), 6 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index e7f3161d80..dfa2559ba0 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12619,6 +12619,16 @@ "\t\tgeothermal = ssc_create();\t", "\t\t\r", "\t\t${geotherm.cost.plant_per_kW} = ${baseline_cost_calc};\r", + "\t\t${geotherm.cost.pumps_total} = ${total_pump_cost_calc};\r", + "\r", + "\t\t${geotherm.cost.surf_total} = ${total_gathering_cost_calc};\r", + "\t\t${geotherm.cost.pump_cost_install} = ${pump_cost_install_calc};\r", + "\t\t${geotherm.cost.pump_only_cost} = ${pump_only_cost_calc};\r", + "\t\t${geotherm.cost.prod_pump_cost_per_well} = ${prod_pump_cost_per_well_calc};\r", + "\t\t${geotherm.cost.inj_pump_cost_per_pump} = ${inj_pump_cost_per_pump_calc};\r", + "\t\t${inj_num_pumps} = ${inj_num_pumps_calc};\r", + "\r", + "\r", "\t\t\r", "\t\tif (false) ", "\t\t{", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 5b6fe35052..232c784d25 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -389,6 +389,32 @@ "sscVariableName": "", "sscVariableValue": "" }, + "inj_num_pumps_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "inj_pump_cost_per_pump_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "inj_pump_hp_calc": { "Version": 4.0, "Type": 1.0, @@ -493,6 +519,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "prod_pump_cost_per_well_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "pump_cost_install_calc": { "Version": 4.0, "Type": 1.0, @@ -635,6 +674,32 @@ "UIObject": "Default", "sscVariableName": "", "sscVariableValue": "" + }, + "total_gathering_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "total_pump_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" } }, "Equations": [ @@ -676,12 +741,16 @@ "\t\t${net_plant_output_calc} = ssc_var(obj, \"net_plant_output\");\r", "\t\t${system_capacity_calc} = ssc_var(obj, \"system_capacity\");\r", "\t\t\r", - "\t\t${pump_only_cost_calc} = ssc_var(obj, \"pump_only_cost\");\r", - "\t\t${pump_cost_install_calc} = ssc_var(obj, \"pump_cost_install\");\r", - "\t\t\r", "\t\t${baseline_cost_calc} = ssc_var(obj, 'baseline_cost');\r", + "\t\t${total_pump_cost_calc} = ssc_var(obj, 'total_pump_cost');\r", "\r", - "\t\t\r", + "\t\t${total_gathering_cost_calc} = ssc_var(obj, 'total_gathering_cost');\r", + "\t\t${pump_cost_install_calc} = ssc_var(obj, 'pump_cost_install');\r", + "\t\t${pump_only_cost_calc} = ssc_var(obj, 'pump_only_cost');\r", + "\t\t${prod_pump_cost_per_well_calc} = ssc_var(obj, 'prod_pump_cost_per_well');\r", + "\t\t${inj_pump_cost_per_pump_calc} = ssc_var(obj, 'inj_pump_cost_per_pump');\r", + "\t\t${inj_num_pumps_calc} = ssc_var(obj, 'inj_num_pumps');\r", + "\t\t\t\t\r", "\t\t// System Design\r", "\t\t//${csp.dtr.pwrb.nameplate} = ssc_var(obj, \"nameplate\");\r", "\t\t//${q_pb_design} = ssc_var(obj, \"q_dot_cycle_des\");\r", @@ -716,10 +785,16 @@ "\t\t${net_plant_output_calc} = fail;\r", "\t\t${system_capacity_calc} = fail;\r", "\t\t\r", - "\t\t${pump_only_cost_calc} = fail;\r", + "\t\t${baseline_cost_calc} = fail;\r", + "\t\t${total_pump_cost_calc} = fail;\r", + "\t\t\r", + "\t\t${total_gathering_cost_calc} = fail;\r", "\t\t${pump_cost_install_calc} = fail;\r", + "\t\t${pump_only_cost_calc} = fail;\r", + "\t\t${prod_pump_cost_per_well_calc} = fail;\r", + "\t\t${inj_pump_cost_per_pump_calc} = fail;\r", + "\t\t${inj_num_pumps_calc} = fail;\r", "\t\t\r", - "\t\t${baseline_cost_calc} = fail;\r", "\t}\r", "\t\r", "};" From 46d6cf6799ad0000e616e01de37e8f35d9a51c8a Mon Sep 17 00:00:00 2001 From: tyneises Date: Tue, 26 May 2026 08:50:41 -0500 Subject: [PATCH 27/74] move more cost mimo vars to auto exec --- deploy/runtime/ui/Geothermal Costs.json | 4 ++ .../runtime/ui/Geothermal System Design.json | 62 +++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index dfa2559ba0..792efdd38f 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12628,6 +12628,10 @@ "\t\t${geotherm.cost.inj_pump_cost_per_pump} = ${inj_pump_cost_per_pump_calc};\r", "\t\t${inj_num_pumps} = ${inj_num_pumps_calc};\r", "\r", + "\t\t${prod_pump_cost} = ${prod_pump_cost_calc};\r", + "\t\t${inj_pump_cost} = ${inj_pump_cost_calc};\r", + "\t\t${indirect_pump_cost} = ${indirect_pump_cost_calc};\r", + "\t\t${geotherm.cost.total_surface_equipment_cost} = ${total_surface_equipment_cost_calc};\r", "\r", "\t\t\r", "\t\tif (false) ", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 232c784d25..5984e3896f 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -389,6 +389,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "indirect_pump_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "inj_num_pumps_calc": { "Version": 4.0, "Type": 1.0, @@ -402,6 +415,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "inj_pump_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "inj_pump_cost_per_pump_calc": { "Version": 4.0, "Type": 1.0, @@ -519,6 +545,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "prod_pump_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "prod_pump_cost_per_well_calc": { "Version": 4.0, "Type": 1.0, @@ -700,6 +739,19 @@ "UIObject": "Default", "sscVariableName": "", "sscVariableValue": "" + }, + "total_surface_equipment_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" } }, "Equations": [ @@ -750,6 +802,12 @@ "\t\t${prod_pump_cost_per_well_calc} = ssc_var(obj, 'prod_pump_cost_per_well');\r", "\t\t${inj_pump_cost_per_pump_calc} = ssc_var(obj, 'inj_pump_cost_per_pump');\r", "\t\t${inj_num_pumps_calc} = ssc_var(obj, 'inj_num_pumps');\r", + "\t\t\t\r", + "\t\t${prod_pump_cost_calc} = ssc_var(obj, 'prod_pump_cost');\r", + "\t\t${inj_pump_cost_calc} = ssc_var(obj, 'inj_pump_cost');\r", + "\t\t${indirect_pump_cost_calc} = ssc_var(obj, 'indirect_pump_gathering_cost');\r", + "\t\t${total_surface_equipment_cost_calc} = ssc_var(obj, 'total_surface_equipment_cost');\r", + "\r", "\t\t\t\t\r", "\t\t// System Design\r", "\t\t//${csp.dtr.pwrb.nameplate} = ssc_var(obj, \"nameplate\");\r", @@ -795,6 +853,10 @@ "\t\t${inj_pump_cost_per_pump_calc} = fail;\r", "\t\t${inj_num_pumps_calc} = fail;\r", "\t\t\r", + "\t\t${prod_pump_cost_calc} = fail;\r", + "\t\t${inj_pump_cost_calc} = fail;\r", + "\t\t${indirect_pump_cost_calc} = fail;\r", + "\t\t${total_surface_equipment_cost_calc} = fail; \r", "\t}\r", "\t\r", "};" From c7b2ba2f29833947b0c4353ed8d7649a7599027c Mon Sep 17 00:00:00 2001 From: tyneises Date: Tue, 26 May 2026 09:24:36 -0500 Subject: [PATCH 28/74] move more cost mimo vars to auto exec --- deploy/runtime/ui/Geothermal Costs.json | 6 ++ .../runtime/ui/Geothermal System Design.json | 66 +++++++++++++++++-- 2 files changed, 68 insertions(+), 4 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 792efdd38f..058b1b2b6f 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12633,6 +12633,12 @@ "\t\t${indirect_pump_cost} = ${indirect_pump_cost_calc};\r", "\t\t${geotherm.cost.total_surface_equipment_cost} = ${total_surface_equipment_cost_calc};\r", "\r", + "\t\t${geotherm.cost.surf_per_well} = ${piping_cost_per_well_calc};\r", + "\t\t${geotherm.cost.surf_num_wells} = ${field_gathering_num_wells_calc};\r", + "\t\t\r", + "\t\t//${geotherm.cost.stim_per_well} = ${stim_cost_per_well_calc};\r", + "\t\t\r", + "\t\t//${geotherm.cost.stim_total} = ${stim_total_cost_calc};\r", "\t\t\r", "\t\tif (false) ", "\t\t{", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 5984e3896f..af96711c6b 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -376,6 +376,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "field_gathering_num_wells_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "gross_output_calc": { "Version": 4.0, "Type": 1.0, @@ -532,6 +545,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "piping_cost_per_well_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "plant_brine_eff_calc": { "Version": 4.0, "Type": 1.0, @@ -701,6 +727,32 @@ "sscVariableName": "", "sscVariableValue": "" }, + "stim_cost_per_well_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "stim_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "system_capacity_calc": { "Version": 4.0, "Type": 1.0, @@ -808,10 +860,11 @@ "\t\t${indirect_pump_cost_calc} = ssc_var(obj, 'indirect_pump_gathering_cost');\r", "\t\t${total_surface_equipment_cost_calc} = ssc_var(obj, 'total_surface_equipment_cost');\r", "\r", - "\t\t\t\t\r", - "\t\t// System Design\r", - "\t\t//${csp.dtr.pwrb.nameplate} = ssc_var(obj, \"nameplate\");\r", - "\t\t//${q_pb_design} = ssc_var(obj, \"q_dot_cycle_des\");\r", + "\t\t${piping_cost_per_well_calc} = ssc_var(obj, 'piping_cost_per_well');\r", + "\t\t${field_gathering_num_wells_calc} = ssc_var(obj, 'field_gathering_num_wells');\r", + "\t\t//${stim_cost_per_well_calc} = ssc_var(obj, 'stim_cost_per_well');\r", + "\t\t//${stim_total_cost_calc} = ssc_var(obj, 'stim_total_cost');\r", + "\r", "\t}\r", "\telse{\r", "\t\t${is_success_auto_exec} = -1;\r", @@ -857,6 +910,11 @@ "\t\t${inj_pump_cost_calc} = fail;\r", "\t\t${indirect_pump_cost_calc} = fail;\r", "\t\t${total_surface_equipment_cost_calc} = fail; \r", + "\t\t\r", + "\t\t${piping_cost_per_well_calc} = fail;\r", + "\t\t${field_gathering_num_wells_calc} = fail;\r", + "\t\t${stim_cost_per_well_calc} = fail;\r", + "\t\t${stim_total_cost_calc} = fail;\r", "\t}\r", "\t\r", "};" From 357a4a2d1bf0c9f392ae65774846c97d9d25e2f8 Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 27 May 2026 08:55:16 -0500 Subject: [PATCH 29/74] move more cost mimo vars to auto exec --- deploy/runtime/ui/Geothermal Costs.json | 4 ++-- deploy/runtime/ui/Geothermal System Design.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 058b1b2b6f..723f0daa68 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12636,9 +12636,9 @@ "\t\t${geotherm.cost.surf_per_well} = ${piping_cost_per_well_calc};\r", "\t\t${geotherm.cost.surf_num_wells} = ${field_gathering_num_wells_calc};\r", "\t\t\r", - "\t\t//${geotherm.cost.stim_per_well} = ${stim_cost_per_well_calc};\r", + "\t\t${geotherm.cost.stim_per_well} = ${stim_cost_per_well_calc};\r", "\t\t\r", - "\t\t//${geotherm.cost.stim_total} = ${stim_total_cost_calc};\r", + "\t\t${geotherm.cost.stim_total} = ${stim_total_cost_calc};\r", "\t\t\r", "\t\tif (false) ", "\t\t{", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index af96711c6b..4001d7e9fe 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -862,8 +862,8 @@ "\r", "\t\t${piping_cost_per_well_calc} = ssc_var(obj, 'piping_cost_per_well');\r", "\t\t${field_gathering_num_wells_calc} = ssc_var(obj, 'field_gathering_num_wells');\r", - "\t\t//${stim_cost_per_well_calc} = ssc_var(obj, 'stim_cost_per_well');\r", - "\t\t//${stim_total_cost_calc} = ssc_var(obj, 'stim_total_cost');\r", + "\t\t${stim_cost_per_well_calc} = ssc_var(obj, 'stim_cost_per_well');\r", + "\t\t${stim_total_cost_calc} = ssc_var(obj, 'stim_total_cost');\r", "\r", "\t}\r", "\telse{\r", From 8d6077fda8e7371f45e1b696547339b972e1b561 Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 27 May 2026 09:06:10 -0500 Subject: [PATCH 30/74] move more cost mimo vars to auto exec --- deploy/runtime/ui/Geothermal Costs.json | 8 ++- .../runtime/ui/Geothermal System Design.json | 63 +++++++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 723f0daa68..af6edce0e5 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12635,11 +12635,15 @@ "\r", "\t\t${geotherm.cost.surf_per_well} = ${piping_cost_per_well_calc};\r", "\t\t${geotherm.cost.surf_num_wells} = ${field_gathering_num_wells_calc};\r", - "\t\t\r", "\t\t${geotherm.cost.stim_per_well} = ${stim_cost_per_well_calc};\r", - "\t\t\r", "\t\t${geotherm.cost.stim_total} = ${stim_total_cost_calc};\r", "\t\t\r", + "\t\t${geotherm.cost.expl_total} = ${expl_total_cost_calc};\r", + "\t\t${geotherm.cost.expl_drill} = ${expl_drilling_cost_calc};\r", + "\t\t${geotherm.cost.conf_total} = ${conf_total_cost_calc};\r", + "\t\t${geotherm.cost.conf_drill} = ${conf_drilling_cost_calc};\r", + "\r", + "\t\t\r", "\t\tif (false) ", "\t\t{", "\t\t\t${geotherm.cost.plant_per_kW} = ssc_var(geothermal, 'baseline_cost');\t", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 4001d7e9fe..29cebcf366 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -363,6 +363,32 @@ "sscVariableName": "", "sscVariableValue": "" }, + "conf_drilling_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "conf_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "design_temp_calc": { "Version": 4.0, "Type": 1.0, @@ -376,6 +402,32 @@ "sscVariableName": "", "sscVariableValue": "" }, + "expl_drilling_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "expl_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "field_gathering_num_wells_calc": { "Version": 4.0, "Type": 1.0, @@ -865,6 +917,12 @@ "\t\t${stim_cost_per_well_calc} = ssc_var(obj, 'stim_cost_per_well');\r", "\t\t${stim_total_cost_calc} = ssc_var(obj, 'stim_total_cost');\r", "\r", + "\t\t${expl_total_cost_calc} = ssc_var(obj, 'expl_total_cost');\r", + "\t\t${expl_drilling_cost_calc} = ssc_var(obj, 'expl_drilling_cost');\r", + "\t\t${conf_total_cost_calc} = ssc_var(obj, 'conf_total_cost');\r", + "\t\t${conf_drilling_cost_calc} = ssc_var(obj, 'conf_drilling_cost');\r", + "\r", + "\r", "\t}\r", "\telse{\r", "\t\t${is_success_auto_exec} = -1;\r", @@ -915,6 +973,11 @@ "\t\t${field_gathering_num_wells_calc} = fail;\r", "\t\t${stim_cost_per_well_calc} = fail;\r", "\t\t${stim_total_cost_calc} = fail;\r", + "\t\t\r", + "\t\t${expl_total_cost_calc} = fail;\r", + "\t\t${expl_drilling_cost_calc} = fail;\r", + "\t\t${conf_total_cost_calc} = fail;\r", + "\t\t${conf_drilling_cost_calc} = fail;\r", "\t}\r", "\t\r", "};" From 28ecc9806b9c3a42a4a2b3a73291555ac77ef41a Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 27 May 2026 09:17:41 -0500 Subject: [PATCH 31/74] move more cost mimo vars to auto exec --- deploy/runtime/ui/Geothermal Costs.json | 6 ++ .../runtime/ui/Geothermal System Design.json | 77 +++++++++++++++++++ 2 files changed, 83 insertions(+) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index af6edce0e5..0ec18fdead 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12643,6 +12643,12 @@ "\t\t${geotherm.cost.conf_total} = ${conf_total_cost_calc};\r", "\t\t${geotherm.cost.conf_drill} = ${conf_drilling_cost_calc};\r", "\r", + "\t\t${geotherm.cost.prod_per_well} = ${prod_well_cost_calc};\r", + "\t\t${geotherm.cost.prod_drill} = ${prod_total_cost_calc};\r", + "\t\t${geotherm.cost.inj_per_well} = ${inj_well_cost_calc};\t\r", + "\t\t${geotherm.cost.inj_drill} = ${inj_total_cost_calc};\r", + "\t\t${geotherm.cost.drilling.amount_calc} = ${total_drilling_cost_calc};\r", + "\r", "\t\t\r", "\t\tif (false) ", "\t\t{", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 29cebcf366..f648524694 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -519,6 +519,32 @@ "sscVariableName": "", "sscVariableValue": "" }, + "inj_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "inj_well_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "is_success_auto_exec": { "Version": 4.0, "Type": 1.0, @@ -649,6 +675,32 @@ "sscVariableName": "", "sscVariableValue": "" }, + "prod_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "prod_well_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "pump_cost_install_calc": { "Version": 4.0, "Type": 1.0, @@ -818,6 +870,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "total_drilling_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "total_gathering_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -922,6 +987,12 @@ "\t\t${conf_total_cost_calc} = ssc_var(obj, 'conf_total_cost');\r", "\t\t${conf_drilling_cost_calc} = ssc_var(obj, 'conf_drilling_cost');\r", "\r", + "\t\t${prod_well_cost_calc} = ssc_var(obj, 'prod_well_cost');\r", + "\t\t${prod_total_cost_calc} = ssc_var(obj, 'prod_total_cost');\r", + "\t\t${inj_well_cost_calc} = ssc_var(obj, 'inj_well_cost');\r", + "\t\t${inj_total_cost_calc} = ssc_var(obj, 'inj_total_cost');\r", + "\t\t${total_drilling_cost_calc} = ssc_var(obj, 'total_drilling_cost');\r", + "\r", "\r", "\t}\r", "\telse{\r", @@ -978,6 +1049,12 @@ "\t\t${expl_drilling_cost_calc} = fail;\r", "\t\t${conf_total_cost_calc} = fail;\r", "\t\t${conf_drilling_cost_calc} = fail;\r", + "\t\t\r", + "\t\t${prod_well_cost_calc} = fail;\r", + "\t\t${prod_total_cost_calc} = fail;\r", + "\t\t${inj_well_cost_calc} = fail;\r", + "\t\t${inj_total_cost_calc} = fail;\r", + "\t\t${total_drilling_cost_calc} = fail;\r", "\t}\r", "\t\r", "};" From 0be3ebade924134a15f8a0bed58f432a875a0a80 Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 27 May 2026 10:26:42 -0500 Subject: [PATCH 32/74] clean up geo cost ui page --- deploy/runtime/ui/Geothermal Costs.json | 153 +++++++----------------- 1 file changed, 44 insertions(+), 109 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 0ec18fdead..615ef77412 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12443,14 +12443,51 @@ } }, "Equations": [ + "// -- Set display values from outputs of ssc auto exec\r", + "equations{ '$MIMO$ cmod_geothermal_costs'} = define() {\r", + "\r", + "\t${geotherm.cost.plant_per_kW} = ${baseline_cost_calc};\r", + "\t${geotherm.cost.pumps_total} = ${total_pump_cost_calc};\r", + "\r", + "\t${geotherm.cost.surf_total} = ${total_gathering_cost_calc};\r", + "\t${geotherm.cost.pump_cost_install} = ${pump_cost_install_calc};\r", + "\t${geotherm.cost.pump_only_cost} = ${pump_only_cost_calc};\r", + "\t${geotherm.cost.prod_pump_cost_per_well} = ${prod_pump_cost_per_well_calc};\r", + "\t${geotherm.cost.inj_pump_cost_per_pump} = ${inj_pump_cost_per_pump_calc};\r", + "\t${inj_num_pumps} = ${inj_num_pumps_calc};\r", + "\r", + "\t${prod_pump_cost} = ${prod_pump_cost_calc};\r", + "\t${inj_pump_cost} = ${inj_pump_cost_calc};\r", + "\t${indirect_pump_cost} = ${indirect_pump_cost_calc};\r", + "\t${geotherm.cost.total_surface_equipment_cost} = ${total_surface_equipment_cost_calc};\r", + "\r", + "\t${geotherm.cost.surf_per_well} = ${piping_cost_per_well_calc};\r", + "\t${geotherm.cost.surf_num_wells} = ${field_gathering_num_wells_calc};\r", + "\t${geotherm.cost.stim_per_well} = ${stim_cost_per_well_calc};\r", + "\t${geotherm.cost.stim_total} = ${stim_total_cost_calc};\r", + "\t\r", + "\t${geotherm.cost.expl_total} = ${expl_total_cost_calc};\r", + "\t${geotherm.cost.expl_drill} = ${expl_drilling_cost_calc};\r", + "\t${geotherm.cost.conf_total} = ${conf_total_cost_calc};\r", + "\t${geotherm.cost.conf_drill} = ${conf_drilling_cost_calc};\r", + "\r", + "\t${geotherm.cost.prod_per_well} = ${prod_well_cost_calc};\r", + "\t${geotherm.cost.prod_drill} = ${prod_total_cost_calc};\r", + "\t${geotherm.cost.inj_per_well} = ${inj_well_cost_calc};\t\r", + "\t${geotherm.cost.inj_drill} = ${inj_total_cost_calc};\r", + "\t${geotherm.cost.drilling.amount_calc} = ${total_drilling_cost_calc};\r", + "};\r", + "\r", + "equations{ 'geotherm.cost.prod_req' } = define() {\r", + "\treturn ${num_wells_calc}; \r", + "};\r", + "\r", + "// -----------------------------------------------\r", + "\r", "equations{ 'geotherm.cost.plm.total' } = define() {", "\treturn ${geotherm.cost.plm.fixed}+${geotherm.cost.plm.nonfixed}; \r", "};", "", - "equations{ 'geotherm.cost.prod_req' } = define() {", - "\treturn ${num_wells_getem}; \r", - "};", - "", "equations{ 'geotherm.cost.pumping.amount' } = define() {", "\treturn ?${geotherm.cost.pumping.calc}[", "\t\t${geotherm.cost.pumping.amount_specified},\r", @@ -12462,25 +12499,12 @@ "\treturn ${geotherm.cost.prod_drill} + ${geotherm.cost.inj_drill}; \r", "};", "", - "/*", - "equations{ 'geotherm.cost.prod_wells_drilled' } = define() {", - "\tnum_wells = ${geotherm.cost.prod_req} - ${geotherm.cost.confirm_wells_num};\r", - "\tif (num_wells < 0) num_wells = 0;\r", - "\treturn num_wells;\r", - "};", - "*/", - "", "equations{ 'total_indirect_cost' } = define() {", "\treturn ?${geotherm.cost.indirect.calc}[", "\t\t${geotherm.cost.indirect.amount_specified},\r", "\t\t${geotherm.cost.epc.total}+${geotherm.cost.plm.total}+${geotherm.cost.sales_tax.total}\r", "\t]; \r", "};", - "/*", - "equations{ 'geotherm.cost.pumps_total' } = define() {", - "\treturn ${geotherm.cost.pump_total_per_pump} * ${geotherm.cost.num_pumps} + ${geotherm.cost.pump_fixed}", - "\t\t+ ${prod_pump_cost} + ${inj_pump_cost}; };\r", - "*/\r", "", "equations{ 'total_direct_cost' } = define() {", "\treturn ${geotherm.cost.contingency}+${geotherm.cost.capital_total}; };", @@ -12529,10 +12553,7 @@ "", "equations{ 'geotherm.cost.stim_num_wells' } = define() {", "\treturn ${geotherm.cost.inj_num_wells}; };", - "/*", - "equations{ 'geotherm.cost.surf_total' } = define() {", - "\treturn ${geotherm.cost.surf_non_drill}; };", - "*/", + "", "equations{ 'geotherm.cost.installed_per_capacity' } = define() {", "\treturn ${total_installed_cost}/${geotherm.net_output}/1000; };", "", @@ -12554,12 +12575,7 @@ "", "equations{ 'geotherm.cost.inj_num_wells' } = define() {", "\treturn ${geotherm.cost.inj_wells_drilled}; \r", - "\t/*\r", - "\tif (${resource_type} == 0) ", - "\t return ${num_wells_getem_inj} / (${drilling_success_rate}/100);\r", - "\telse \r", - "\t\treturn ${num_wells_getem_inj} / (1 - (1 - ${drilling_success_rate}/100) * (1 - ${stim_success_rate}/100));", - "\t*/\r", + "\r", "};\t", "", "equations{ 'geotherm.cost.contingency' } = define() {", @@ -12615,88 +12631,7 @@ "\treturn ${geotherm.cost.recap}; \r", "};\r", "\t", - "equations{ '$MIMO$ cmod_geothermal_costs'} = define() {", - "\t\tgeothermal = ssc_create();\t", - "\t\t\r", - "\t\t${geotherm.cost.plant_per_kW} = ${baseline_cost_calc};\r", - "\t\t${geotherm.cost.pumps_total} = ${total_pump_cost_calc};\r", - "\r", - "\t\t${geotherm.cost.surf_total} = ${total_gathering_cost_calc};\r", - "\t\t${geotherm.cost.pump_cost_install} = ${pump_cost_install_calc};\r", - "\t\t${geotherm.cost.pump_only_cost} = ${pump_only_cost_calc};\r", - "\t\t${geotherm.cost.prod_pump_cost_per_well} = ${prod_pump_cost_per_well_calc};\r", - "\t\t${geotherm.cost.inj_pump_cost_per_pump} = ${inj_pump_cost_per_pump_calc};\r", - "\t\t${inj_num_pumps} = ${inj_num_pumps_calc};\r", - "\r", - "\t\t${prod_pump_cost} = ${prod_pump_cost_calc};\r", - "\t\t${inj_pump_cost} = ${inj_pump_cost_calc};\r", - "\t\t${indirect_pump_cost} = ${indirect_pump_cost_calc};\r", - "\t\t${geotherm.cost.total_surface_equipment_cost} = ${total_surface_equipment_cost_calc};\r", - "\r", - "\t\t${geotherm.cost.surf_per_well} = ${piping_cost_per_well_calc};\r", - "\t\t${geotherm.cost.surf_num_wells} = ${field_gathering_num_wells_calc};\r", - "\t\t${geotherm.cost.stim_per_well} = ${stim_cost_per_well_calc};\r", - "\t\t${geotherm.cost.stim_total} = ${stim_total_cost_calc};\r", - "\t\t\r", - "\t\t${geotherm.cost.expl_total} = ${expl_total_cost_calc};\r", - "\t\t${geotherm.cost.expl_drill} = ${expl_drilling_cost_calc};\r", - "\t\t${geotherm.cost.conf_total} = ${conf_total_cost_calc};\r", - "\t\t${geotherm.cost.conf_drill} = ${conf_drilling_cost_calc};\r", - "\r", - "\t\t${geotherm.cost.prod_per_well} = ${prod_well_cost_calc};\r", - "\t\t${geotherm.cost.prod_drill} = ${prod_total_cost_calc};\r", - "\t\t${geotherm.cost.inj_per_well} = ${inj_well_cost_calc};\t\r", - "\t\t${geotherm.cost.inj_drill} = ${inj_total_cost_calc};\r", - "\t\t${geotherm.cost.drilling.amount_calc} = ${total_drilling_cost_calc};\r", - "\r", - "\t\t\r", - "\t\tif (false) ", - "\t\t{", - "\t\t\t${geotherm.cost.plant_per_kW} = ssc_var(geothermal, 'baseline_cost');\t", - "\t\t\t${geotherm.cost.pumps_total} = ssc_var(geothermal, \"total_pump_cost\");\r", - "\t\t\t${geotherm.cost.surf_total} = ssc_var(geothermal, \"total_gathering_cost\");\r", - "\t\t\t${geotherm.cost.pump_cost_install} = ssc_var(geothermal, \"pump_cost_install\");\r", - "\t\t\t${geotherm.cost.pump_only_cost} = ssc_var(geothermal, \"pump_only_cost\");\r", - "\t\t\t${geotherm.cost.prod_pump_cost_per_well} = ssc_var(geothermal, \"prod_pump_cost_per_well\");\r", - "\t\t\t${geotherm.cost.inj_pump_cost_per_pump} = ssc_var(geothermal, \"inj_pump_cost_per_pump\");\r", - "\t\t\t${inj_num_pumps} = ssc_var(geothermal, \"inj_num_pumps\");\r", - "\t\t\t${prod_pump_cost} = ssc_var(geothermal, \"prod_pump_cost\");\r", - "\t\t\t${inj_pump_cost} = ssc_var(geothermal, \"inj_pump_cost\");\r", - "\t\t\t${indirect_pump_cost} = ssc_var(geothermal, \"indirect_pump_gathering_cost\");\r", - "\t\t\t${geotherm.cost.total_surface_equipment_cost} = ssc_var(geothermal, \"total_surface_equipment_cost\");\r", - "\t\t\t${geotherm.cost.surf_per_well} = ssc_var(geothermal, \"piping_cost_per_well\");\r", - "\t\t\t${geotherm.cost.surf_num_wells} = ssc_var(geothermal, \"field_gathering_num_wells\");\r", - "\t\t\t\r", - "\t\t\t//Stimulation costs\r", - "\t\t\t${geotherm.cost.stim_per_well} = ssc_var(geothermal, \"stim_cost_per_well\");\r", - "\t\t\t${geotherm.cost.stim_total} = ssc_var(geothermal, \"stim_total_cost\");\r", - "\t\t\t\r", - "\t\t\t//Exploratin and Confirmation drilling \r", - "\t\t\t${geotherm.cost.expl_total} = ssc_var(geothermal, \"expl_total_cost\");\r", - "\t\t\t${geotherm.cost.expl_drill} = ssc_var(geothermal, \"expl_drilling_cost\");\r", - "\t\t\t${geotherm.cost.conf_total} = ssc_var(geothermal, \"conf_total_cost\");\r", - "\t\t\t${geotherm.cost.conf_drill} = ssc_var(geothermal, \"conf_drilling_cost\");\r", - "\t\t\t\r", - "\t\t\t//Drilling costs\r", - "\t\t\t${geotherm.cost.prod_per_well} = ssc_var(geothermal, \"prod_well_cost\");\r", - "\t\t\t${geotherm.cost.prod_drill} = ssc_var(geothermal, \"prod_total_cost\");\r", - "\t\t\t${geotherm.cost.inj_per_well} = ssc_var(geothermal, \"inj_well_cost\");\r", - "\t\t\t${geotherm.cost.inj_drill} = ssc_var(geothermal, \"inj_total_cost\");\r", - "\t\t\t\r", - "\t\t\t//Total Drilling cost\r", - "\t\t\t${geotherm.cost.drilling.amount_calc} = ssc_var(geothermal, \"total_drilling_cost\");\r", - "\t\t\t\r", - "\t\t\tssc_free(geothermal);\r", - "\t\t\treturn 0;", - "\t\t\t", - "\t\t}", - "\t\telse {", - "\t\t\tssc_free(geothermal);\r", - "\t\t\treturn 0;", - "\t\t\t//return 500;", - "\t\t}", - "\t\t//ssc_free(geothermal);", - "};", + "", "", "equations{'baseline_cost'} = define() {", "\treturn ${geotherm.cost.plant_per_kW};", From 902cbb2945e0dd134092b434eddee813909dd80d Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 27 May 2026 12:42:36 -0500 Subject: [PATCH 33/74] switch geo cost equation to use auto exec output --- deploy/runtime/ui/Geothermal Costs.json | 18 ++++++++++-------- .../runtime/ui/Geothermal System Design.json | 17 +++++++++++++++++ 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 615ef77412..f434f59884 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12482,6 +12482,14 @@ "\treturn ${num_wells_calc}; \r", "};\r", "\r", + "equations{ 'geotherm.cost.prod_num_wells' } = define() {\r", + "\treturn ${num_wells_getem_prod_drilled_calc};\r", + "};\r", + "\r", + "equations{ 'geotherm.cost.prod_inj_drill' } = define() {\r", + "\treturn ${sum_prod_inj_total_cost_calc};\t// ${geotherm.cost.prod_drill} + ${geotherm.cost.inj_drill}; \r", + "};\r", + "\r", "// -----------------------------------------------\r", "\r", "equations{ 'geotherm.cost.plm.total' } = define() {", @@ -12495,9 +12503,7 @@ "\t]; \r", "};", "", - "equations{ 'geotherm.cost.prod_inj_drill' } = define() {", - "\treturn ${geotherm.cost.prod_drill} + ${geotherm.cost.inj_drill}; \r", - "};", + "", "", "equations{ 'total_indirect_cost' } = define() {", "\treturn ?${geotherm.cost.indirect.calc}[", @@ -12527,11 +12533,7 @@ "\t\t+ ${geotherm.cost.pumps_total}]; \r", "};", "", - "equations{ 'geotherm.cost.prod_num_wells' } = define() {", - "//\treturn ${geotherm.cost.confirm_wells_num} / (1 - (1 - ${stim_success_rate}/100) * (1 - ${drilling_success_rate}/100)); };\r", - "\t//return ${geotherm.cost.prod_wells_drilled} / (1 - (1 - ${stim_success_rate}/100) * (1 - ${drilling_success_rate}/100)); \r", - "\treturn ${geotherm.cost.prod_wells_drilled};\r", - "};\r", + "\r", "", "equations{ 'geotherm.cost.plm.nonfixed' } = define() {", "\treturn ${total_direct_cost}*${geotherm.cost.plm.percent}/100; };", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index f648524694..82ee373fd7 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -857,6 +857,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "sum_prod_inj_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "system_capacity_calc": { "Version": 4.0, "Type": 1.0, @@ -977,6 +990,8 @@ "\t\t${indirect_pump_cost_calc} = ssc_var(obj, 'indirect_pump_gathering_cost');\r", "\t\t${total_surface_equipment_cost_calc} = ssc_var(obj, 'total_surface_equipment_cost');\r", "\r", + "\t\t${sum_prod_inj_total_cost_calc} = ssc_var(obj, 'sum_prod_inj_total_cost');\r", + "\r", "\t\t${piping_cost_per_well_calc} = ssc_var(obj, 'piping_cost_per_well');\r", "\t\t${field_gathering_num_wells_calc} = ssc_var(obj, 'field_gathering_num_wells');\r", "\t\t${stim_cost_per_well_calc} = ssc_var(obj, 'stim_cost_per_well');\r", @@ -1040,6 +1055,8 @@ "\t\t${indirect_pump_cost_calc} = fail;\r", "\t\t${total_surface_equipment_cost_calc} = fail; \r", "\t\t\r", + "\t\t${sum_prod_inj_total_cost_calc} = fail;\r", + "\t\t\r", "\t\t${piping_cost_per_well_calc} = fail;\r", "\t\t${field_gathering_num_wells_calc} = fail;\r", "\t\t${stim_cost_per_well_calc} = fail;\r", From dc11b3cd484c1816ebcefa0b61962dbf29ab3f9c Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 27 May 2026 12:52:22 -0500 Subject: [PATCH 34/74] switch geo cost equation to use auto exec output --- deploy/runtime/ui/Geothermal Costs.json | 6 ++++-- deploy/runtime/ui/Geothermal System Design.json | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index f434f59884..38730715d5 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12490,6 +12490,10 @@ "\treturn ${sum_prod_inj_total_cost_calc};\t// ${geotherm.cost.prod_drill} + ${geotherm.cost.inj_drill}; \r", "};\r", "\r", + "equations{ 'geotherm.cost.prod_inj_total' } = define() {\r", + "\treturn ${prod_inj_total_cost_calc};\t// ${geotherm.cost.prod_inj_drill} + ${geotherm.cost.prod_inj_non_drill}; };\r", + "};\r", + "\r", "// -----------------------------------------------\r", "\r", "equations{ 'geotherm.cost.plm.total' } = define() {", @@ -12521,8 +12525,6 @@ "\t\t${geotherm.cost.drilling.amount_calc}]; \r", "};", "", - "equations{ 'geotherm.cost.prod_inj_total' } = define() {", - "\treturn ${geotherm.cost.prod_inj_drill} + ${geotherm.cost.prod_inj_non_drill}; };", "", "equations{ 'geotherm.cost.recap' } = define() {", "\treturn ?${geotherm.cost.recap_use_calc}[", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 82ee373fd7..1684863ce5 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -649,6 +649,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "prod_inj_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "prod_pump_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -991,6 +1004,7 @@ "\t\t${total_surface_equipment_cost_calc} = ssc_var(obj, 'total_surface_equipment_cost');\r", "\r", "\t\t${sum_prod_inj_total_cost_calc} = ssc_var(obj, 'sum_prod_inj_total_cost');\r", + "\t\t${prod_inj_total_cost_calc} = ssc_var(obj, 'prod_inj_total_cost');\r", "\r", "\t\t${piping_cost_per_well_calc} = ssc_var(obj, 'piping_cost_per_well');\r", "\t\t${field_gathering_num_wells_calc} = ssc_var(obj, 'field_gathering_num_wells');\r", @@ -1056,6 +1070,7 @@ "\t\t${total_surface_equipment_cost_calc} = fail; \r", "\t\t\r", "\t\t${sum_prod_inj_total_cost_calc} = fail;\r", + "\t\t${prod_inj_total_cost_calc} = fail;\r", "\t\t\r", "\t\t${piping_cost_per_well_calc} = fail;\r", "\t\t${field_gathering_num_wells_calc} = fail;\r", From c2d388e7234fe0af4bff4b503ab3d16764f5323a Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 27 May 2026 13:24:56 -0500 Subject: [PATCH 35/74] use auto exec output to set pump power --- deploy/runtime/ui/Geothermal Costs.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 38730715d5..ae944f8087 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12494,6 +12494,10 @@ "\treturn ${prod_inj_total_cost_calc};\t// ${geotherm.cost.prod_inj_drill} + ${geotherm.cost.prod_inj_non_drill}; };\r", "};\r", "\r", + "equations{ 'geotherm.cost.pump_size' } = define() {\r", + "\treturn ${pump_size_hp_calc}; };\r", + "\r", + "\r", "// -----------------------------------------------\r", "\r", "equations{ 'geotherm.cost.plm.total' } = define() {", @@ -12549,8 +12553,6 @@ "\t}\r", "};", "", - "equations{ 'geotherm.cost.pump_size' } = define() {", - "\treturn ${pump_size_hp}; };", "", "equations{ 'geotherm.cost.sales_tax.total' } = define() {", "\treturn ${geotherm.cost.sales_tax.value}/100*${total_direct_cost}*${geotherm.cost.sales_tax.percent}/100; };", From f3820980051b002a115e851b09e917222c727f0e Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 27 May 2026 13:35:35 -0500 Subject: [PATCH 36/74] move geo cost equation to use auto exec output --- deploy/runtime/ui/Geothermal Costs.json | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index ae944f8087..3dbb017ae5 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12497,6 +12497,9 @@ "equations{ 'geotherm.cost.pump_size' } = define() {\r", "\treturn ${pump_size_hp_calc}; };\r", "\r", + "equations{ 'geotherm.cost.inj_num_wells' } = define() {\r", + "\treturn ${num_wells_getem_inj_drilled_calc}; \r", + "};\t\r", "\r", "// -----------------------------------------------\r", "\r", @@ -12511,8 +12514,6 @@ "\t]; \r", "};", "", - "", - "", "equations{ 'total_indirect_cost' } = define() {", "\treturn ?${geotherm.cost.indirect.calc}[", "\t\t${geotherm.cost.indirect.amount_specified},\r", @@ -12579,10 +12580,6 @@ "equations{ 'geotherm.cost.plant_size' } = define() {", "\treturn ${gross_output_calc} * 1000; };", "", - "equations{ 'geotherm.cost.inj_num_wells' } = define() {", - "\treturn ${geotherm.cost.inj_wells_drilled}; \r", - "\r", - "};\t", "", "equations{ 'geotherm.cost.contingency' } = define() {", "\treturn ${geotherm.cost.contingency_percent}/100*(${geotherm.cost.capital_total}-", From 095caba828e4f064af273761d6dfbf0a10b64a74 Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 27 May 2026 13:42:35 -0500 Subject: [PATCH 37/74] add back calculated pump depth from auto exec output --- deploy/runtime/ui/Geothermal Plant and Equipment.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index c7e32cb108..dc676d6ac3 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4171,6 +4171,10 @@ "equations{ 'system_capacity' } = define() {\r", "\treturn ${system_capacity_calc}; }; //${gross_output_calc}*1000; }; // MW to kW\r", "\r", + "equations{ 'pump_depth' } = define() {\r", + "\treturn ${pump_depth_ft_calc};\r", + "};\r", + "\r", "// ----------------------------------------\r", "", "equations{ 'ui_calculations_only' } = define() {", From 4587133ad281d940295f0c645f39813b3a7defd1 Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 27 May 2026 13:48:04 -0500 Subject: [PATCH 38/74] set pump depth geo cost var to auto exec output --- deploy/runtime/ui/Geothermal Costs.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 3dbb017ae5..238d52ab1b 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12501,6 +12501,9 @@ "\treturn ${num_wells_getem_inj_drilled_calc}; \r", "};\t\r", "\r", + "equations{ 'geotherm.cost.pump_depth' } = define() {\r", + "\treturn ${pump_depth_ft_calc}; };\r", + "\r", "// -----------------------------------------------\r", "\r", "equations{ 'geotherm.cost.plm.total' } = define() {", @@ -12585,9 +12588,6 @@ "\treturn ${geotherm.cost.contingency_percent}/100*(${geotherm.cost.capital_total}-", "\t\t${geotherm.cost.prod_inj_drill}); };", "", - "equations{ 'geotherm.cost.pump_depth' } = define() {", - "\treturn ${pump_depth}; };", - "", "equations{ 'geotherm.cost.expl_per_well' } = define() {", "\treturn ${geotherm.cost.expl_multiplier} * ${geotherm.cost.prod_per_well}; };", "", From 00b04db09c20335091f6585a5d48ba97047d38e7 Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 27 May 2026 13:53:32 -0500 Subject: [PATCH 39/74] move geo cost var calc to use auto exec output --- deploy/runtime/ui/Geothermal Costs.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 238d52ab1b..4304cc6f3f 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12501,6 +12501,9 @@ "\treturn ${num_wells_getem_inj_drilled_calc}; \r", "};\t\r", "\r", + "equations{ 'geotherm.cost.stim_num_wells' } = define() {\r", + "\treturn ${num_wells_getem_inj_drilled_calc}; };\r", + "\r", "equations{ 'geotherm.cost.pump_depth' } = define() {\r", "\treturn ${pump_depth_ft_calc}; };\r", "\r", @@ -12561,8 +12564,7 @@ "equations{ 'geotherm.cost.sales_tax.total' } = define() {", "\treturn ${geotherm.cost.sales_tax.value}/100*${total_direct_cost}*${geotherm.cost.sales_tax.percent}/100; };", "", - "equations{ 'geotherm.cost.stim_num_wells' } = define() {", - "\treturn ${geotherm.cost.inj_num_wells}; };", + "", "", "equations{ 'geotherm.cost.installed_per_capacity' } = define() {", "\treturn ${total_installed_cost}/${geotherm.net_output}/1000; };", From 040fa173213229f53d69101d2601afb7dfae876c Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 27 May 2026 15:08:49 -0500 Subject: [PATCH 40/74] set total number of wells from auto exec output --- deploy/runtime/ui/Geothermal Costs.json | 8 +++++--- deploy/runtime/ui/Geothermal System Design.json | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 4304cc6f3f..0f67bcbe79 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12507,6 +12507,10 @@ "equations{ 'geotherm.cost.pump_depth' } = define() {\r", "\treturn ${pump_depth_ft_calc}; };\r", "\r", + "equations{ 'geotherm.cost.prod_inj_num_wells' } = define() {\r", + "\treturn ${num_wells_getem_prod_inj_sum_calc};\t\r", + "};\r", + "\r", "// -----------------------------------------------\r", "\r", "equations{ 'geotherm.cost.plm.total' } = define() {", @@ -12615,9 +12619,7 @@ "\treturn ${geotherm.cost.drilling.amount} + ${geotherm.cost.plant_total.amount} + ${geotherm.cost.pumping.amount}; \r", "};", "", - "equations{ 'geotherm.cost.prod_inj_num_wells' } = define() {", - "\treturn ${geotherm.cost.prod_num_wells} + ${geotherm.cost.inj_num_wells}; \r", - "};", + "", "", "equations{ 'geotherm.cost.sales_tax.value' } = define() {", "\tif (financing() != \"LCOE Calculator\") {\r", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 1684863ce5..e0cd114b0f 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -623,6 +623,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "num_wells_getem_prod_inj_sum_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "piping_cost_per_well_calc": { "Version": 4.0, "Type": 1.0, @@ -1011,6 +1024,8 @@ "\t\t${stim_cost_per_well_calc} = ssc_var(obj, 'stim_cost_per_well');\r", "\t\t${stim_total_cost_calc} = ssc_var(obj, 'stim_total_cost');\r", "\r", + "\t\t${num_wells_getem_prod_inj_sum_calc} = ssc_var(obj, 'num_wells_getem_prod_inj_sum');\r", + "\r", "\t\t${expl_total_cost_calc} = ssc_var(obj, 'expl_total_cost');\r", "\t\t${expl_drilling_cost_calc} = ssc_var(obj, 'expl_drilling_cost');\r", "\t\t${conf_total_cost_calc} = ssc_var(obj, 'conf_total_cost');\r", @@ -1077,6 +1092,8 @@ "\t\t${stim_cost_per_well_calc} = fail;\r", "\t\t${stim_total_cost_calc} = fail;\r", "\t\t\r", + "\t\t${num_wells_getem_prod_inj_sum_calc} = fail;\r", + "\t\t\r", "\t\t${expl_total_cost_calc} = fail;\r", "\t\t${expl_drilling_cost_calc} = fail;\r", "\t\t${conf_total_cost_calc} = fail;\r", From 0ba38867dc2175e56df9c9bb625a39ad0d82478a Mon Sep 17 00:00:00 2001 From: tyneises Date: Thu, 28 May 2026 10:00:04 -0500 Subject: [PATCH 41/74] get exploration cost per well from auto exec --- deploy/runtime/ui/Geothermal Costs.json | 6 ++++-- deploy/runtime/ui/Geothermal System Design.json | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 0f67bcbe79..d4a653352e 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12511,6 +12511,10 @@ "\treturn ${num_wells_getem_prod_inj_sum_calc};\t\r", "};\r", "\r", + "equations{ 'geotherm.cost.expl_per_well' } = define() {\r", + "\treturn ${expl_cost_per_well_calc}; \t// ${geotherm.cost.expl_multiplier} * ${geotherm.cost.prod_per_well}; };\r", + "};\r", + "\r", "// -----------------------------------------------\r", "\r", "equations{ 'geotherm.cost.plm.total' } = define() {", @@ -12594,8 +12598,6 @@ "\treturn ${geotherm.cost.contingency_percent}/100*(${geotherm.cost.capital_total}-", "\t\t${geotherm.cost.prod_inj_drill}); };", "", - "equations{ 'geotherm.cost.expl_per_well' } = define() {", - "\treturn ${geotherm.cost.expl_multiplier} * ${geotherm.cost.prod_per_well}; };", "", "equations{ 'geotherm.cost.confirm_wells_num' } = define() {", "\treturn ${geotherm.cost.conf_num_wells} * (${geotherm.cost.confirm_wells_percent}/100); };", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index e0cd114b0f..909cd36bd3 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -402,6 +402,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "expl_cost_per_well_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "expl_drilling_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -1030,6 +1043,7 @@ "\t\t${expl_drilling_cost_calc} = ssc_var(obj, 'expl_drilling_cost');\r", "\t\t${conf_total_cost_calc} = ssc_var(obj, 'conf_total_cost');\r", "\t\t${conf_drilling_cost_calc} = ssc_var(obj, 'conf_drilling_cost');\r", + "\t\t${expl_cost_per_well_calc} = ssc_var(obj, 'expl_cost_per_well');\r", "\r", "\t\t${prod_well_cost_calc} = ssc_var(obj, 'prod_well_cost');\r", "\t\t${prod_total_cost_calc} = ssc_var(obj, 'prod_total_cost');\r", @@ -1098,6 +1112,7 @@ "\t\t${expl_drilling_cost_calc} = fail;\r", "\t\t${conf_total_cost_calc} = fail;\r", "\t\t${conf_drilling_cost_calc} = fail;\r", + "\t\t${expl_cost_per_well_calc} = fail;\r", "\t\t\r", "\t\t${prod_well_cost_calc} = fail;\r", "\t\t${prod_total_cost_calc} = fail;\r", From 10c03c144708b9c6c39761319d38d06ad97fa40a Mon Sep 17 00:00:00 2001 From: tyneises Date: Thu, 28 May 2026 10:56:31 -0500 Subject: [PATCH 42/74] remove redundant geo cmod ui page var --- deploy/runtime/ui/Geothermal Costs.json | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index d4a653352e..8be3b428be 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -10816,19 +10816,6 @@ } }, "VarDatabase": { - "baseline_cost": { - "Version": 4.0, - "Type": 1.0, - "Label": "Baseline cost", - "Units": "$/kW", - "Group": "Geothermal Capital Costs", - "IndexLabels": "", - "Flags": 10.0, - "DefaultValue": 0.0, - "UIObject": "Default", - "sscVariableName": "", - "sscVariableValue": "" - }, "construction_ppi": { "Version": 4.0, "Type": 1.0, @@ -12640,12 +12627,6 @@ "\treturn ${geotherm.cost.recap}; \r", "};\r", "\t", - "", - "", - "equations{'baseline_cost'} = define() {", - "\treturn ${geotherm.cost.plant_per_kW};", - "};", - "", "equations{ 'system_use_recapitalization' } = define() {", "\treturn 1; };", "\t", From 1c2e73bdd4b34c9eaee54963c3f9a39f2ebe46f9 Mon Sep 17 00:00:00 2001 From: tyneises Date: Thu, 28 May 2026 16:48:14 -0500 Subject: [PATCH 43/74] get calculated power plant cost from auto exec outputs --- deploy/runtime/ui/Geothermal Costs.json | 14 +++++--------- deploy/runtime/ui/Geothermal System Design.json | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 8be3b428be..d36e090155 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12502,6 +12502,10 @@ "\treturn ${expl_cost_per_well_calc}; \t// ${geotherm.cost.expl_multiplier} * ${geotherm.cost.prod_per_well}; };\r", "};\r", "\r", + "equations{ 'geotherm.cost.plant_total' } = define() {\r", + "\treturn ${total_plant_cost_calc};\r", + "};\r", + "\r", "// -----------------------------------------------\r", "\r", "equations{ 'geotherm.cost.plm.total' } = define() {", @@ -12564,15 +12568,7 @@ "equations{ 'geotherm.cost.installed_per_capacity' } = define() {", "\treturn ${total_installed_cost}/${geotherm.net_output}/1000; };", "", - "equations{ 'geotherm.cost.plant_total' } = define() ", - "{", - "\tif (${geotherm.cost.plant_auto_estimate} == 0){", - "\t\treturn ${geotherm.cost.plant_per_kW_input} * ${geotherm.cost.plant_size}; ", - "\t}", - "\telse {", - "\t\treturn ${geotherm.cost.plant_per_kW} * ${geotherm.cost.plant_size}; ", - "\t}", - "};", + "", "", "equations{ 'geotherm.cost.epc.total' } = define() {", "\treturn ${geotherm.cost.epc.fixed}+${geotherm.cost.epc.nonfixed}; };", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 909cd36bd3..2dad53251f 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -948,6 +948,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "total_plant_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "total_pump_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -1051,6 +1064,7 @@ "\t\t${inj_total_cost_calc} = ssc_var(obj, 'inj_total_cost');\r", "\t\t${total_drilling_cost_calc} = ssc_var(obj, 'total_drilling_cost');\r", "\r", + "\t\t${total_plant_cost_calc} = ssc_var(obj, 'total_plant_cost');\r", "\r", "\t}\r", "\telse{\r", @@ -1119,6 +1133,8 @@ "\t\t${inj_well_cost_calc} = fail;\r", "\t\t${inj_total_cost_calc} = fail;\r", "\t\t${total_drilling_cost_calc} = fail;\r", + "\t\t\r", + "\t\t${total_plant_cost_calc} = fail;\r", "\t}\r", "\t\r", "};" From 761bcad112acfa26ead93141280f678d5ca30e35 Mon Sep 17 00:00:00 2001 From: tyneises Date: Thu, 28 May 2026 21:13:16 -0500 Subject: [PATCH 44/74] move gross power calc for geo cost page to use auto exec output --- deploy/runtime/ui/Geothermal Costs.json | 6 ++++-- deploy/runtime/ui/Geothermal System Design.json | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index d36e090155..f2f08eff01 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12506,6 +12506,10 @@ "\treturn ${total_plant_cost_calc};\r", "};\r", "\r", + "equations{ 'geotherm.cost.plant_size' } = define() {\r", + "\treturn ${gross_cost_output_calc};\r", + "};\r", + "\r", "// -----------------------------------------------\r", "\r", "equations{ 'geotherm.cost.plm.total' } = define() {", @@ -12573,8 +12577,6 @@ "equations{ 'geotherm.cost.epc.total' } = define() {", "\treturn ${geotherm.cost.epc.fixed}+${geotherm.cost.epc.nonfixed}; };", "", - "equations{ 'geotherm.cost.plant_size' } = define() {", - "\treturn ${gross_output_calc} * 1000; };", "", "", "equations{ 'geotherm.cost.contingency' } = define() {", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 2dad53251f..3b2beb9538 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -454,6 +454,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "gross_cost_output_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "gross_output_calc": { "Version": 4.0, "Type": 1.0, @@ -1006,6 +1019,7 @@ "\t\t\r", "\t\t${plant_brine_eff_calc} = ssc_var( obj, 'plant_brine_eff');\r", "\t\t${gross_output_calc} = ssc_var(obj, \"gross_output\");\r", + "\t\t${gross_cost_output_calc} = ssc_var(obj, \"gross_cost_output\");\r", "\t\t\r", "\t\t${num_wells_calc} = ssc_var(obj, \"num_wells_getem_output\");\r", "\t\t${num_wells_getem_inj_calc} = ssc_var(obj, \"num_wells_getem_inj\");\r", @@ -1076,6 +1090,7 @@ "\t\t\r", "\t\t${plant_brine_eff_calc} = fail;\r", "\t\t${gross_output_calc} = fail;\r", + "\t\t${gross_cost_output_calc} = fail;\r", "\t\t\r", "\t\t${num_wells_calc} = fail;\r", "\t\t${num_wells_getem_inj_calc} = fail;\r", From bf485ac472db5fda101775bd9558a05609d0f0cc Mon Sep 17 00:00:00 2001 From: tyneises Date: Thu, 28 May 2026 21:28:11 -0500 Subject: [PATCH 45/74] delete unused variable and calc from geo cost page --- deploy/runtime/ui/Geothermal Costs.json | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index f2f08eff01..2205290ae0 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -11388,19 +11388,6 @@ "sscVariableName": "", "sscVariableValue": "" }, - "geotherm.cost.num_pumps": { - "Version": 4.0, - "Type": 1.0, - "Label": "# of Pumps Required", - "Units": " ", - "Group": "Geothermal Capital Costs", - "IndexLabels": "", - "Flags": 8.0, - "DefaultValue": 0.0, - "UIObject": "Numeric", - "sscVariableName": "", - "sscVariableValue": "" - }, "geotherm.cost.other_per_pump": { "Version": 4.0, "Type": 1.0, @@ -12554,15 +12541,6 @@ "equations{ 'geotherm.cost.plm.nonfixed' } = define() {", "\treturn ${total_direct_cost}*${geotherm.cost.plm.percent}/100; };", "", - "equations{ 'geotherm.cost.num_pumps' } = define() {", - "\tif (${conversion_type} == 1) {\r", - "\t\treturn 0;\r", - "\t}\r", - "\telse {\r", - "\t\treturn ${geotherm.cost.prod_req}; \r", - "\t}\r", - "};", - "", "", "equations{ 'geotherm.cost.sales_tax.total' } = define() {", "\treturn ${geotherm.cost.sales_tax.value}/100*${total_direct_cost}*${geotherm.cost.sales_tax.percent}/100; };", From f00d370cbcbb41c7546d959b139b96373cfe24ea Mon Sep 17 00:00:00 2001 From: tyneises Date: Fri, 29 May 2026 16:08:54 -0500 Subject: [PATCH 46/74] calculate confirm wells to production wells via auto exec --- deploy/runtime/ui/Geothermal Costs.json | 18 ++-- .../runtime/ui/Geothermal System Design.json | 100 +++++++++++++++++- 2 files changed, 111 insertions(+), 7 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 2205290ae0..8de5585868 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12497,8 +12497,19 @@ "\treturn ${gross_cost_output_calc};\r", "};\r", "\r", + "equations{ 'geotherm.cost.confirm_wells_num' } = define() {\r", + "\treturn ${num_confirm_wells_to_production_calc}; \r", + "}; \r", + "\r", + "equations{'exploration_wells_production'} = define() {\r", + "\treturn ${num_confirm_wells_to_production_calc};\r", + "};\r", + "\r", + "\r", "// -----------------------------------------------\r", "\r", + "\r", + "\r", "equations{ 'geotherm.cost.plm.total' } = define() {", "\treturn ${geotherm.cost.plm.fixed}+${geotherm.cost.plm.nonfixed}; \r", "};", @@ -12562,8 +12573,6 @@ "\t\t${geotherm.cost.prod_inj_drill}); };", "", "", - "equations{ 'geotherm.cost.confirm_wells_num' } = define() {", - "\treturn ${geotherm.cost.conf_num_wells} * (${geotherm.cost.confirm_wells_percent}/100); };", "", "equations{ 'geotherm.cost.epc.nonfixed' } = define() {", "\treturn ${total_direct_cost}*${geotherm.cost.epc.percent}/100; };", @@ -12627,10 +12636,7 @@ "\t${drilling_ppi} = ppis[7][ppi_index];\t", "};\r", "\r", - "equations{'exploration_wells_production'} = define() \r", - "{\r", - "\treturn ${geotherm.cost.confirm_wells_num};\r", - "};", + "", "", "", "\t\t", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 3b2beb9538..318cd75cd0 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -86,6 +86,89 @@ } } }, + "Numeric": { + "Visible": 1.0, + "ObjectProperties": { + "Name": { + "Type": 5.0, + "String": "num_confirm_wells_to_production_calc" + }, + "X": { + "Type": 3.0, + "Integer": 111.0 + }, + "Y": { + "Type": 3.0, + "Integer": 57.0 + }, + "Width": { + "Type": 3.0, + "Integer": 90.0 + }, + "Height": { + "Type": 3.0, + "Integer": 24.0 + }, + "Tool Tip": { + "Type": 5.0, + "String": "" + }, + "Value": { + "Type": 1.0, + "Double": 0.0 + }, + "Mode": { + "Type": 3.0, + "Integer": 1.0 + }, + "Format": { + "Type": 3.0, + "Integer": 0.0 + }, + "Decimals": { + "Type": 3.0, + "Integer": 3.0 + }, + "Prefix": { + "Type": 5.0, + "String": "" + }, + "Suffix": { + "Type": 5.0, + "String": "" + }, + "ThousandsSep": { + "Type": 2.0, + "Boolean": 1.0 + }, + "Editable": { + "Type": 2.0, + "Boolean": 1.0 + }, + "ForeColour": { + "Type": 4.0, + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 0.0, + "Alpha": 255.0 + } + }, + "BackColour": { + "Type": 4.0, + "Color": { + "Red": 255.0, + "Green": 255.0, + "Blue": 255.0, + "Alpha": 255.0 + } + }, + "TabOrder": { + "Type": 3.0, + "Integer": -1.0 + } + } + }, "Numeric": { "Visible": 1.0, "ObjectProperties": { @@ -597,6 +680,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "num_confirm_wells_to_production_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "adfaf", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "num_wells_calc": { "Version": 4.0, "Type": 1.0, @@ -652,7 +748,7 @@ "num_wells_getem_prod_inj_sum_calc": { "Version": 4.0, "Type": 1.0, - "Label": "", + "Label": "nu", "Units": "", "Group": "", "IndexLabels": "", @@ -1071,6 +1167,7 @@ "\t\t${conf_total_cost_calc} = ssc_var(obj, 'conf_total_cost');\r", "\t\t${conf_drilling_cost_calc} = ssc_var(obj, 'conf_drilling_cost');\r", "\t\t${expl_cost_per_well_calc} = ssc_var(obj, 'expl_cost_per_well');\r", + "\t\t${num_confirm_wells_to_production_calc} = ssc_var(obj, 'num_confirm_wells_to_production');\r", "\r", "\t\t${prod_well_cost_calc} = ssc_var(obj, 'prod_well_cost');\r", "\t\t${prod_total_cost_calc} = ssc_var(obj, 'prod_total_cost');\r", @@ -1142,6 +1239,7 @@ "\t\t${conf_total_cost_calc} = fail;\r", "\t\t${conf_drilling_cost_calc} = fail;\r", "\t\t${expl_cost_per_well_calc} = fail;\r", + "\t\t${num_confirm_wells_to_production_calc} = fail;\r", "\t\t\r", "\t\t${prod_well_cost_calc} = fail;\r", "\t\t${prod_total_cost_calc} = fail;\r", From b03ebdba6fe0160e9fc049d86028a8e0b8799615 Mon Sep 17 00:00:00 2001 From: tyneises Date: Sun, 31 May 2026 21:15:39 -0500 Subject: [PATCH 47/74] get total plant cost used for total installed cost from auto exec --- deploy/runtime/ui/Geothermal Costs.json | 12 +++++++----- deploy/runtime/ui/Geothermal System Design.json | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 8de5585868..56804337b0 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12505,6 +12505,13 @@ "\treturn ${num_confirm_wells_to_production_calc};\r", "};\r", "\r", + "equations{ 'geotherm.cost.plant_total.amount' } = define() {", + "\treturn ${total_plant_cost_used_calc};\r", + "\t//return ?${geotherm.cost.plant_total.calc}[\r", + "\t//\t${geotherm.cost.plant_total.amount_specified},\r", + "\t//\t${geotherm.cost.plant_total}]; \r", + "};\r", + "\r", "\r", "// -----------------------------------------------\r", "\r", @@ -12577,11 +12584,6 @@ "equations{ 'geotherm.cost.epc.nonfixed' } = define() {", "\treturn ${total_direct_cost}*${geotherm.cost.epc.percent}/100; };", "", - "equations{ 'geotherm.cost.plant_total.amount' } = define() {", - "\treturn ?${geotherm.cost.plant_total.calc}[", - "\t\t${geotherm.cost.plant_total.amount_specified},\r", - "\t\t${geotherm.cost.plant_total}]; \r", - "};", "", "", "equations{ 'total_installed_cost' } = define() {", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 318cd75cd0..de9aec6106 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -1070,6 +1070,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "total_plant_cost_used_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "total_pump_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -1176,6 +1189,7 @@ "\t\t${total_drilling_cost_calc} = ssc_var(obj, 'total_drilling_cost');\r", "\r", "\t\t${total_plant_cost_calc} = ssc_var(obj, 'total_plant_cost');\r", + "\t\t${total_plant_cost_used_calc} = ssc_var(obj, 'total_plant_cost_used');\r", "\r", "\t}\r", "\telse{\r", @@ -1248,6 +1262,7 @@ "\t\t${total_drilling_cost_calc} = fail;\r", "\t\t\r", "\t\t${total_plant_cost_calc} = fail;\r", + "\t\t${total_plant_cost_used_calc} = fail;\r", "\t}\r", "\t\r", "};" From a6f1305bb1561fca4f6657131e2a46cb2e854062 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 1 Jun 2026 09:56:56 -0500 Subject: [PATCH 48/74] get total drilling cost used for total installed cost from auto exec --- deploy/runtime/ui/Geothermal Costs.json | 13 +++++-------- deploy/runtime/ui/Geothermal System Design.json | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 56804337b0..42b993ab5a 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12507,12 +12507,14 @@ "\r", "equations{ 'geotherm.cost.plant_total.amount' } = define() {", "\treturn ${total_plant_cost_used_calc};\r", - "\t//return ?${geotherm.cost.plant_total.calc}[\r", - "\t//\t${geotherm.cost.plant_total.amount_specified},\r", - "\t//\t${geotherm.cost.plant_total}]; \r", + "};\r", + "\r", + "equations{ 'geotherm.cost.drilling.amount' } = define() {\r", + "\treturn ${total_drilling_cost_used_calc};\r", "};\r", "\r", "\r", + "\r", "// -----------------------------------------------\r", "\r", "\r", @@ -12538,11 +12540,6 @@ "equations{ 'total_direct_cost' } = define() {", "\treturn ${geotherm.cost.contingency}+${geotherm.cost.capital_total}; };", "", - "equations{ 'geotherm.cost.drilling.amount' } = define() {", - "\treturn ?${geotherm.cost.drilling.calc}[", - "\t\t${geotherm.cost.drilling.amount_specified}, /* =0 user specified */", - "\t\t${geotherm.cost.drilling.amount_calc}]; \r", - "};", "", "", "equations{ 'geotherm.cost.recap' } = define() {", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index de9aec6106..b0175f8573 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -1044,6 +1044,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "total_drilling_cost_used_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "total_gathering_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -1187,6 +1200,7 @@ "\t\t${inj_well_cost_calc} = ssc_var(obj, 'inj_well_cost');\r", "\t\t${inj_total_cost_calc} = ssc_var(obj, 'inj_total_cost');\r", "\t\t${total_drilling_cost_calc} = ssc_var(obj, 'total_drilling_cost');\r", + "\t\t${total_drilling_cost_used_calc} = ssc_var(obj, 'total_drilling_cost_used');\r", "\r", "\t\t${total_plant_cost_calc} = ssc_var(obj, 'total_plant_cost');\r", "\t\t${total_plant_cost_used_calc} = ssc_var(obj, 'total_plant_cost_used');\r", @@ -1260,6 +1274,7 @@ "\t\t${inj_well_cost_calc} = fail;\r", "\t\t${inj_total_cost_calc} = fail;\r", "\t\t${total_drilling_cost_calc} = fail;\r", + "\t\t${total_plant_cost_used_calc} = fail;\r", "\t\t\r", "\t\t${total_plant_cost_calc} = fail;\r", "\t\t${total_plant_cost_used_calc} = fail;\r", From a75e43f3cff8baeaecf2795b33152f31e8965380 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 1 Jun 2026 11:03:40 -0500 Subject: [PATCH 49/74] get total gathering cost used for total installed cost from auto exec --- deploy/runtime/ui/Geothermal Costs.json | 14 ++++++++------ deploy/runtime/ui/Geothermal System Design.json | 17 +++++++++++++++++ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 42b993ab5a..17ad73fb45 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12513,6 +12513,14 @@ "\treturn ${total_drilling_cost_used_calc};\r", "};\r", "\r", + "equations{ 'geotherm.cost.pumping.amount' } = define() {\r", + "\treturn ${total_pump_gathering_cost_used_calc};\r", + "\t//return ?${geotherm.cost.pumping.calc}[\r", + "\t//\t${geotherm.cost.pumping.amount_specified},\r", + "\t//\t${geotherm.cost.pumps_total}+${geotherm.cost.surf_total}+${indirect_pump_cost}\r", + "\t//]; \r", + "};\r", + "\r", "\r", "\r", "// -----------------------------------------------\r", @@ -12523,12 +12531,6 @@ "\treturn ${geotherm.cost.plm.fixed}+${geotherm.cost.plm.nonfixed}; \r", "};", "", - "equations{ 'geotherm.cost.pumping.amount' } = define() {", - "\treturn ?${geotherm.cost.pumping.calc}[", - "\t\t${geotherm.cost.pumping.amount_specified},\r", - "\t\t${geotherm.cost.pumps_total}+${geotherm.cost.surf_total}+${indirect_pump_cost}\r", - "\t]; \r", - "};", "", "equations{ 'total_indirect_cost' } = define() {", "\treturn ?${geotherm.cost.indirect.calc}[", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index b0175f8573..69d6a05ca9 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -1109,6 +1109,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "total_pump_gathering_cost_used_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "total_surface_equipment_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -1176,6 +1189,8 @@ "\t\t${prod_pump_cost_calc} = ssc_var(obj, 'prod_pump_cost');\r", "\t\t${inj_pump_cost_calc} = ssc_var(obj, 'inj_pump_cost');\r", "\t\t${indirect_pump_cost_calc} = ssc_var(obj, 'indirect_pump_gathering_cost');\r", + "\t\t${total_pump_gathering_cost_used_calc} = ssc_var(obj, 'total_pump_gathering_cost_used');\r", + "\t\t\r", "\t\t${total_surface_equipment_cost_calc} = ssc_var(obj, 'total_surface_equipment_cost');\r", "\r", "\t\t${sum_prod_inj_total_cost_calc} = ssc_var(obj, 'sum_prod_inj_total_cost');\r", @@ -1250,6 +1265,8 @@ "\t\t${prod_pump_cost_calc} = fail;\r", "\t\t${inj_pump_cost_calc} = fail;\r", "\t\t${indirect_pump_cost_calc} = fail;\r", + "\t\t${total_pump_gathering_cost_used_calc} = fail;\r", + "\t\t\r", "\t\t${total_surface_equipment_cost_calc} = fail; \r", "\t\t\r", "\t\t${sum_prod_inj_total_cost_calc} = fail;\r", From 192214ef1cc54b3f73be2c4f18688e1505d4e907 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 1 Jun 2026 13:10:31 -0500 Subject: [PATCH 50/74] get recapitalization cost from auto exec --- deploy/runtime/ui/Geothermal Costs.json | 16 ++++------------ deploy/runtime/ui/Geothermal System Design.json | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 17ad73fb45..565c6aed0f 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12515,10 +12515,10 @@ "\r", "equations{ 'geotherm.cost.pumping.amount' } = define() {\r", "\treturn ${total_pump_gathering_cost_used_calc};\r", - "\t//return ?${geotherm.cost.pumping.calc}[\r", - "\t//\t${geotherm.cost.pumping.amount_specified},\r", - "\t//\t${geotherm.cost.pumps_total}+${geotherm.cost.surf_total}+${indirect_pump_cost}\r", - "\t//]; \r", + "};\r", + "\r", + "equations{ 'geotherm.cost.recap' } = define() {\r", + "\treturn ${recap_cost_used_calc};\r", "};\r", "\r", "\r", @@ -12544,14 +12544,6 @@ "", "", "", - "equations{ 'geotherm.cost.recap' } = define() {", - "\treturn ?${geotherm.cost.recap_use_calc}[", - "\t\t${geotherm.cost.recap_specified}, /* =0 user specified */", - "\t\t${geotherm.cost.conf_drill} /* =1 use calculated */", - "\t\t+ ${geotherm.cost.prod_inj_drill}", - "\t\t+ ${geotherm.cost.surf_total}", - "\t\t+ ${geotherm.cost.pumps_total}]; \r", - "};", "", "\r", "", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 69d6a05ca9..865477f3a7 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -953,6 +953,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "recap_cost_used_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "reservoir_avg_temp_calc": { "Version": 4.0, "Type": 1.0, @@ -1220,6 +1233,7 @@ "\t\t${total_plant_cost_calc} = ssc_var(obj, 'total_plant_cost');\r", "\t\t${total_plant_cost_used_calc} = ssc_var(obj, 'total_plant_cost_used');\r", "\r", + "\t\t${recap_cost_used_calc} = ssc_var(obj, 'recap_cost_used');\r", "\t}\r", "\telse{\r", "\t\t${is_success_auto_exec} = -1;\r", @@ -1295,6 +1309,8 @@ "\t\t\r", "\t\t${total_plant_cost_calc} = fail;\r", "\t\t${total_plant_cost_used_calc} = fail;\r", + "\t\t\r", + "\t\t${recap_cost_used_calc} = fail;\r", "\t}\r", "\t\r", "};" From d3e7cce135b0fa3b3f1d600e5ae567185cbd8d7b Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 1 Jun 2026 13:29:15 -0500 Subject: [PATCH 51/74] use auto exec output for total capital cost --- deploy/runtime/ui/Geothermal Costs.json | 11 ++++++----- deploy/runtime/ui/Geothermal System Design.json | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 565c6aed0f..4ae24a0d1a 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12522,6 +12522,12 @@ "};\r", "\r", "\r", + "equations{ 'geotherm.cost.capital_total' } = define() {\r", + "\treturn ${total_capital_cost_calc};\r", + "\t//return ${geotherm.cost.drilling.amount} + ${geotherm.cost.plant_total.amount} + ${geotherm.cost.pumping.amount}; \r", + "};\r", + "\r", + "\r", "\r", "// -----------------------------------------------\r", "\r", @@ -12582,11 +12588,6 @@ "};", "", "", - "equations{ 'geotherm.cost.capital_total' } = define() {", - "\treturn ${geotherm.cost.drilling.amount} + ${geotherm.cost.plant_total.amount} + ${geotherm.cost.pumping.amount}; \r", - "};", - "", - "", "", "equations{ 'geotherm.cost.sales_tax.value' } = define() {", "\tif (financing() != \"LCOE Calculator\") {\r", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 865477f3a7..f577b9bf6d 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -1044,6 +1044,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "total_capital_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "total_drilling_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -1234,6 +1247,7 @@ "\t\t${total_plant_cost_used_calc} = ssc_var(obj, 'total_plant_cost_used');\r", "\r", "\t\t${recap_cost_used_calc} = ssc_var(obj, 'recap_cost_used');\r", + "\t\t${total_capital_cost_calc} = ssc_var(obj, 'total_capital_cost');\r", "\t}\r", "\telse{\r", "\t\t${is_success_auto_exec} = -1;\r", @@ -1311,6 +1325,7 @@ "\t\t${total_plant_cost_used_calc} = fail;\r", "\t\t\r", "\t\t${recap_cost_used_calc} = fail;\r", + "\t\t${total_capital_cost_calc} = fail;\r", "\t}\r", "\t\r", "};" From d4e7611e3cc3472122a23858790ecab6579adc58 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 1 Jun 2026 15:52:12 -0500 Subject: [PATCH 52/74] add more cost output to use auto exec output --- deploy/runtime/ui/Geothermal Costs.json | 76 ++++--------------- .../runtime/ui/Geothermal System Design.json | 61 +++++++++++++++ 2 files changed, 74 insertions(+), 63 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 4ae24a0d1a..d0f4210442 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -11115,19 +11115,6 @@ "sscVariableName": "", "sscVariableValue": "" }, - "geotherm.cost.epc.nonfixed": { - "Version": 4.0, - "Type": 1.0, - "Label": " ", - "Units": " ", - "Group": "Geothermal Capital Costs", - "IndexLabels": "", - "Flags": 8.0, - "DefaultValue": 0.0, - "UIObject": "Numeric", - "sscVariableName": "", - "sscVariableValue": "" - }, "geotherm.cost.epc.percent": { "Version": 4.0, "Type": 1.0, @@ -11557,19 +11544,6 @@ "sscVariableName": "", "sscVariableValue": "" }, - "geotherm.cost.plm.nonfixed": { - "Version": 4.0, - "Type": 1.0, - "Label": " ", - "Units": " ", - "Group": "Geothermal Capital Costs", - "IndexLabels": "", - "Flags": 8.0, - "DefaultValue": 0.0, - "UIObject": "Numeric", - "sscVariableName": "", - "sscVariableValue": "" - }, "geotherm.cost.plm.percent": { "Version": 4.0, "Type": 1.0, @@ -12521,21 +12495,27 @@ "\treturn ${recap_cost_used_calc};\r", "};\r", "\r", - "\r", "equations{ 'geotherm.cost.capital_total' } = define() {\r", "\treturn ${total_capital_cost_calc};\r", - "\t//return ${geotherm.cost.drilling.amount} + ${geotherm.cost.plant_total.amount} + ${geotherm.cost.pumping.amount}; \r", "};\r", "\r", + "equations{ 'geotherm.cost.contingency' } = define() {\r", + "\treturn ${contingency_cost_calc}; \r", + "};\r", "\r", + "equations{ 'total_direct_cost' } = define() {\r", + "\treturn ${total_direct_cost_calc};\r", + "};\r", "\r", - "// -----------------------------------------------\r", - "\r", + "equations{ 'geotherm.cost.epc.total' } = define() {\r", + "\treturn ${epc_total_cost_calc};\r", + "};\r", "\r", + "equations{ 'geotherm.cost.plm.total' } = define() {\r", + "\treturn ${plm_total_cost_calc};\r", + "};\r", "\r", - "equations{ 'geotherm.cost.plm.total' } = define() {", - "\treturn ${geotherm.cost.plm.fixed}+${geotherm.cost.plm.nonfixed}; \r", - "};", + "// -----------------------------------------------\r", "", "", "equations{ 'total_indirect_cost' } = define() {", @@ -12545,44 +12525,14 @@ "\t]; \r", "};", "", - "equations{ 'total_direct_cost' } = define() {", - "\treturn ${geotherm.cost.contingency}+${geotherm.cost.capital_total}; };", - "", - "", - "", - "", - "\r", - "", - "equations{ 'geotherm.cost.plm.nonfixed' } = define() {", - "\treturn ${total_direct_cost}*${geotherm.cost.plm.percent}/100; };", - "", - "", "equations{ 'geotherm.cost.sales_tax.total' } = define() {", "\treturn ${geotherm.cost.sales_tax.value}/100*${total_direct_cost}*${geotherm.cost.sales_tax.percent}/100; };", "", "", - "", "equations{ 'geotherm.cost.installed_per_capacity' } = define() {", "\treturn ${total_installed_cost}/${geotherm.net_output}/1000; };", "", "", - "", - "equations{ 'geotherm.cost.epc.total' } = define() {", - "\treturn ${geotherm.cost.epc.fixed}+${geotherm.cost.epc.nonfixed}; };", - "", - "", - "", - "equations{ 'geotherm.cost.contingency' } = define() {", - "\treturn ${geotherm.cost.contingency_percent}/100*(${geotherm.cost.capital_total}-", - "\t\t${geotherm.cost.prod_inj_drill}); };", - "", - "", - "", - "equations{ 'geotherm.cost.epc.nonfixed' } = define() {", - "\treturn ${total_direct_cost}*${geotherm.cost.epc.percent}/100; };", - "", - "", - "", "equations{ 'total_installed_cost' } = define() {", "\treturn ${total_direct_cost}+${total_indirect_cost}; \r", "};", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index f577b9bf6d..e97ff802ef 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -472,6 +472,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "contingency_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "design_temp_calc": { "Version": 4.0, "Type": 1.0, @@ -485,6 +498,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "epc_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "expl_cost_per_well_calc": { "Version": 4.0, "Type": 1.0, @@ -784,6 +810,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "plm_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "prod_inj_total_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -1057,6 +1096,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "total_direct_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "total_drilling_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -1248,6 +1300,11 @@ "\r", "\t\t${recap_cost_used_calc} = ssc_var(obj, 'recap_cost_used');\r", "\t\t${total_capital_cost_calc} = ssc_var(obj, 'total_capital_cost');\r", + "\t\t${contingency_cost_calc} = ssc_var(obj, 'contingency_cost');\r", + "\t\t${total_direct_cost_calc} = ssc_var(obj, 'total_direct_cost');\r", + "\t\t${epc_total_cost_calc} = ssc_var(obj, 'epc_total_cost');\r", + "\t\t${plm_total_cost_calc} = ssc_var(obj, 'plm_total_cost');\r", + "\t\t\r", "\t}\r", "\telse{\r", "\t\t${is_success_auto_exec} = -1;\r", @@ -1326,6 +1383,10 @@ "\t\t\r", "\t\t${recap_cost_used_calc} = fail;\r", "\t\t${total_capital_cost_calc} = fail;\r", + "\t\t${contingency_cost_calc} = fail;\r", + "\t\t${total_direct_cost_calc} = fail;\r", + "\t\t${epc_total_cost_calc} = fail;\r", + "\t\t${plm_total_cost_calc} = fail;\r", "\t}\r", "\t\r", "};" From c2e56cec4f49eca089a94761d0d7ffd120c7343e Mon Sep 17 00:00:00 2001 From: tyneises Date: Tue, 2 Jun 2026 09:51:19 -0500 Subject: [PATCH 53/74] get more system costs from auto exec --- deploy/runtime/ui/Geothermal Costs.json | 50 +++++----- .../runtime/ui/Geothermal System Design.json | 91 ++++++++++++++++++- 2 files changed, 114 insertions(+), 27 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index d0f4210442..4bb3cbc3bf 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12515,38 +12515,36 @@ "\treturn ${plm_total_cost_calc};\r", "};\r", "\r", - "// -----------------------------------------------\r", - "", - "", - "equations{ 'total_indirect_cost' } = define() {", - "\treturn ?${geotherm.cost.indirect.calc}[", - "\t\t${geotherm.cost.indirect.amount_specified},\r", - "\t\t${geotherm.cost.epc.total}+${geotherm.cost.plm.total}+${geotherm.cost.sales_tax.total}\r", - "\t]; \r", - "};", - "", - "equations{ 'geotherm.cost.sales_tax.total' } = define() {", - "\treturn ${geotherm.cost.sales_tax.value}/100*${total_direct_cost}*${geotherm.cost.sales_tax.percent}/100; };", - "", - "", - "equations{ 'geotherm.cost.installed_per_capacity' } = define() {", - "\treturn ${total_installed_cost}/${geotherm.net_output}/1000; };", - "", - "", - "equations{ 'total_installed_cost' } = define() {", - "\treturn ${total_direct_cost}+${total_indirect_cost}; \r", - "};", - "", - "", - "", - "equations{ 'geotherm.cost.sales_tax.value' } = define() {", + "equations{ 'geotherm.cost.sales_tax.total' } = define() {\r", + "\treturn ${sales_tax_cost_calc};\r", + "};\r", + "\r", + "// sales tax value is ony a UI indicator\r", + "// the sales tax rate is calculated in the geo cost cmod\r", + "// using geo_financial_model\r", + "equations{ 'geotherm.cost.sales_tax.value' } = define() {\r", "\tif (financing() != \"LCOE Calculator\") {\r", "\t\treturn ${sales_tax_rate}; \r", "\t}\r", "\telse {\r", "\t\treturn 0;\r", "\t}\r", - "};", + "};\r", + "\r", + "equations{ 'total_indirect_cost' } = define() {\r", + "\treturn ${indirect_cost_calc}; \r", + "};\r", + "\r", + "equations{ 'total_installed_cost' } = define() {\r", + "\treturn ${total_installed_cost_calc};\r", + "};\r", + "\r", + "\r", + "// -----------------------------------------------\r", + "", + "equations{ 'geotherm.cost.installed_per_capacity' } = define() {", + "\treturn ${total_installed_cost}/${geotherm.net_output}/1000; };", + "", "", "equations{ 'geotherm.cost.total_installed_millions' } = define() {", "\treturn ${total_installed_cost}/1000000; \r", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index e97ff802ef..403549373a 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -563,6 +563,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "geo_financial_model": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "gross_cost_output_calc": { "Version": 4.0, "Type": 1.0, @@ -589,6 +602,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "indirect_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "indirect_pump_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -1031,6 +1057,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "sales_tax_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "stim_cost_per_well_calc": { "Version": 4.0, "Type": 1.0, @@ -1148,6 +1187,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "total_installed_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "total_plant_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -1215,6 +1267,36 @@ } }, "Equations": [ + "equations{ 'geo_financial_model' } = define() {\r", + "\tif (financing() == \"Single Owner\"){\r", + "\t\treturn 1;\r", + "\t}\r", + "\telse if(financing() == \"Leveraged Partnership Flip\"){\r", + "\t\treturn 2;\r", + "\t}\r", + "\telse if(financing() == \"All Equity Partnership Flip\"){\r", + "\t\treturn 3;\r", + "\t}\r", + "\telse if(financing() == \"Sale Leaseback\"){\r", + "\t\treturn 4;\r", + "\t}\r", + "\telse if(financing() == \"Commercial\"){\r", + "\t\treturn 5;\r", + "\t}\r", + "\telse if(financing() == \"Merchant Plant\"){\r", + "\t\treturn 6;\r", + "\t}\r", + "\telse if(financing() == \"LCOE Calculator\"){\r", + "\t\treturn 7;\r", + "\t}\r", + "\telse if(financing() == \"None\"){\r", + "\t\treturn 8;\r", + "\t}\r", + "\telse{\r", + "\t\treturn -1;\r", + "\t}\r", + "};\r", + "\r", "equations{ '$MIMO$ ui_mspt_system_design__mspt_cmod' } = define()\r", "{\r", "\tobj = ssc_create();\r", @@ -1304,7 +1386,10 @@ "\t\t${total_direct_cost_calc} = ssc_var(obj, 'total_direct_cost');\r", "\t\t${epc_total_cost_calc} = ssc_var(obj, 'epc_total_cost');\r", "\t\t${plm_total_cost_calc} = ssc_var(obj, 'plm_total_cost');\r", - "\t\t\r", + "\t\t${sales_tax_cost_calc} = ssc_var(obj, 'sales_tax_cost');\r", + "\t\t${indirect_cost_calc} = ssc_var(obj, 'indirect_cost');\r", + "\t\t${total_installed_cost_calc} = ssc_var(obj, 'total_installed_cost');\r", + "\r", "\t}\r", "\telse{\r", "\t\t${is_success_auto_exec} = -1;\r", @@ -1387,6 +1472,10 @@ "\t\t${total_direct_cost_calc} = fail;\r", "\t\t${epc_total_cost_calc} = fail;\r", "\t\t${plm_total_cost_calc} = fail;\r", + "\t\t${sales_tax_cost_calc} = fail;\r", + "\t\t${indirect_cost_calc} = fail;\r", + "\t\t${total_installed_cost_calc} = fail;\r", + "\t\t\r", "\t}\r", "\t\r", "};" From c386dc89d4983ffc165ee0af60c56017a45acc69 Mon Sep 17 00:00:00 2001 From: tyneises Date: Tue, 2 Jun 2026 10:16:41 -0500 Subject: [PATCH 54/74] get relative installed cost from auto exec --- deploy/runtime/ui/Geothermal Costs.json | 22 +++---------------- .../runtime/ui/Geothermal System Design.json | 15 +++++++++++++ 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 4bb3cbc3bf..d86fb7c506 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12116,19 +12116,6 @@ "sscVariableName": "", "sscVariableValue": "" }, - "geotherm.cost.total_installed_millions": { - "Version": 4.0, - "Type": 1.0, - "Label": "Total Installed Cost", - "Units": "$M", - "Group": "Geothermal Capital Costs", - "IndexLabels": "", - "Flags": 8.0, - "DefaultValue": 0.0, - "UIObject": "Default", - "sscVariableName": "", - "sscVariableValue": "" - }, "geotherm.cost.total_surface_equipment_cost": { "Version": 4.0, "Type": 1.0, @@ -12539,16 +12526,13 @@ "\treturn ${total_installed_cost_calc};\r", "};\r", "\r", + "equations{ 'geotherm.cost.installed_per_capacity' } = define() {\r", + "\treturn ${installed_cost_per_kW_calc};\r", + "};\r", "\r", "// -----------------------------------------------\r", "", - "equations{ 'geotherm.cost.installed_per_capacity' } = define() {", - "\treturn ${total_installed_cost}/${geotherm.net_output}/1000; };", - "", "", - "equations{ 'geotherm.cost.total_installed_millions' } = define() {", - "\treturn ${total_installed_cost}/1000000; \r", - "};", "", "equations{ 'system_recapitalization_cost' } = define() {", "\treturn ${geotherm.cost.recap}; \r", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 403549373a..ccd452586f 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -706,6 +706,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "installed_cost_per_kW_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "is_success_auto_exec": { "Version": 4.0, "Type": 1.0, @@ -1389,6 +1402,7 @@ "\t\t${sales_tax_cost_calc} = ssc_var(obj, 'sales_tax_cost');\r", "\t\t${indirect_cost_calc} = ssc_var(obj, 'indirect_cost');\r", "\t\t${total_installed_cost_calc} = ssc_var(obj, 'total_installed_cost');\r", + "\t\t${installed_cost_per_kW_calc} = ssc_var(obj, 'installed_cost_per_kW');\r", "\r", "\t}\r", "\telse{\r", @@ -1475,6 +1489,7 @@ "\t\t${sales_tax_cost_calc} = fail;\r", "\t\t${indirect_cost_calc} = fail;\r", "\t\t${total_installed_cost_calc} = fail;\r", + "\t\t${installed_cost_per_kW_calc} = fail;\r", "\t\t\r", "\t}\r", "\t\r", From df3684789d8d726ea760a431b7566bb7b4e30973 Mon Sep 17 00:00:00 2001 From: tyneises Date: Tue, 2 Jun 2026 10:24:28 -0500 Subject: [PATCH 55/74] set system recapitalization cost output in geo cost cmod --- deploy/runtime/ui/Geothermal Costs.json | 21 +------------------ .../runtime/ui/Geothermal System Design.json | 20 +++++++++--------- 2 files changed, 11 insertions(+), 30 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index d86fb7c506..c79478d005 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12298,19 +12298,6 @@ "sscVariableName": "", "sscVariableValue": "" }, - "system_recapitalization_cost": { - "Version": 4.0, - "Type": 1.0, - "Label": " ", - "Units": " ", - "Group": "Geothermal Capital Costs", - "IndexLabels": "", - "Flags": 8.0, - "DefaultValue": 0.0, - "UIObject": "Default", - "sscVariableName": "", - "sscVariableValue": "" - }, "system_use_recapitalization": { "Version": 4.0, "Type": 1.0, @@ -12479,7 +12466,7 @@ "};\r", "\r", "equations{ 'geotherm.cost.recap' } = define() {\r", - "\treturn ${recap_cost_used_calc};\r", + "\treturn ${system_recapitalization_cost_calc};\r", "};\r", "\r", "equations{ 'geotherm.cost.capital_total' } = define() {\r", @@ -12532,12 +12519,6 @@ "\r", "// -----------------------------------------------\r", "", - "", - "", - "equations{ 'system_recapitalization_cost' } = define() {", - "\treturn ${geotherm.cost.recap}; \r", - "};\r", - "\t", "equations{ 'system_use_recapitalization' } = define() {", "\treturn 1; };", "\t", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index ccd452586f..600b2b756d 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -1031,7 +1031,7 @@ "sscVariableName": "", "sscVariableValue": "" }, - "recap_cost_used_calc": { + "reservoir_avg_temp_calc": { "Version": 4.0, "Type": 1.0, "Label": "", @@ -1044,7 +1044,7 @@ "sscVariableName": "", "sscVariableValue": "" }, - "reservoir_avg_temp_calc": { + "reservoir_pressure_calc": { "Version": 4.0, "Type": 1.0, "Label": "", @@ -1057,7 +1057,7 @@ "sscVariableName": "", "sscVariableValue": "" }, - "reservoir_pressure_calc": { + "sales_tax_cost_calc": { "Version": 4.0, "Type": 1.0, "Label": "", @@ -1070,7 +1070,7 @@ "sscVariableName": "", "sscVariableValue": "" }, - "sales_tax_cost_calc": { + "stim_cost_per_well_calc": { "Version": 4.0, "Type": 1.0, "Label": "", @@ -1083,7 +1083,7 @@ "sscVariableName": "", "sscVariableValue": "" }, - "stim_cost_per_well_calc": { + "stim_total_cost_calc": { "Version": 4.0, "Type": 1.0, "Label": "", @@ -1096,7 +1096,7 @@ "sscVariableName": "", "sscVariableValue": "" }, - "stim_total_cost_calc": { + "sum_prod_inj_total_cost_calc": { "Version": 4.0, "Type": 1.0, "Label": "", @@ -1109,7 +1109,7 @@ "sscVariableName": "", "sscVariableValue": "" }, - "sum_prod_inj_total_cost_calc": { + "system_capacity_calc": { "Version": 4.0, "Type": 1.0, "Label": "", @@ -1122,7 +1122,7 @@ "sscVariableName": "", "sscVariableValue": "" }, - "system_capacity_calc": { + "system_recapitalization_cost_calc": { "Version": 4.0, "Type": 1.0, "Label": "", @@ -1393,7 +1393,7 @@ "\t\t${total_plant_cost_calc} = ssc_var(obj, 'total_plant_cost');\r", "\t\t${total_plant_cost_used_calc} = ssc_var(obj, 'total_plant_cost_used');\r", "\r", - "\t\t${recap_cost_used_calc} = ssc_var(obj, 'recap_cost_used');\r", + "\t\t${system_recapitalization_cost_calc} = ssc_var(obj, 'system_recapitalization_cost');\r", "\t\t${total_capital_cost_calc} = ssc_var(obj, 'total_capital_cost');\r", "\t\t${contingency_cost_calc} = ssc_var(obj, 'contingency_cost');\r", "\t\t${total_direct_cost_calc} = ssc_var(obj, 'total_direct_cost');\r", @@ -1480,7 +1480,7 @@ "\t\t${total_plant_cost_calc} = fail;\r", "\t\t${total_plant_cost_used_calc} = fail;\r", "\t\t\r", - "\t\t${recap_cost_used_calc} = fail;\r", + "\t\t${system_recapitalization_cost_calc} = fail;\r", "\t\t${total_capital_cost_calc} = fail;\r", "\t\t${contingency_cost_calc} = fail;\r", "\t\t${total_direct_cost_calc} = fail;\r", From 0948530fd018d7ce273f26ad75ea4216d2c3bb27 Mon Sep 17 00:00:00 2001 From: tyneises Date: Tue, 2 Jun 2026 10:46:40 -0500 Subject: [PATCH 56/74] set system_use_recapitalization in geo cost cmod --- deploy/runtime/ui/Geothermal Costs.json | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index c79478d005..76705cb17d 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12298,19 +12298,6 @@ "sscVariableName": "", "sscVariableValue": "" }, - "system_use_recapitalization": { - "Version": 4.0, - "Type": 1.0, - "Label": " ", - "Units": " ", - "Group": "Geothermal Capital Costs", - "IndexLabels": "", - "Flags": 8.0, - "DefaultValue": 1.0, - "UIObject": "Default", - "sscVariableName": "", - "sscVariableValue": "" - }, "total_direct_cost": { "Version": 4.0, "Type": 1.0, @@ -12519,10 +12506,6 @@ "\r", "// -----------------------------------------------\r", "", - "equations{ 'system_use_recapitalization' } = define() {", - "\treturn 1; };", - "\t", - "", "equations{ '$MIMO$ ppi' } = define() {", "\tppis = [[0.890669720,0.919862622,0.938752147,0.957069262,0.963938180,0.972524327,0.983400114,1.000000000,0.998855180,1.066399542,1.226674299,1.333142530,1.377790498,1.438465942,1.414997138,1.423583286,1.464224385,1.513451631,1.535203205,1.555237550,1.604464797,1.643961076,1.657698912, 1.743,1.797,1.832,1.998,2.273],", "\t\t[1.128834356,1.102541630,1.108676599,1.073619632,0.999123576,1.021910605,0.961437336,1.000000000,1.064855390,1.423312883,1.499561788,1.634531113,1.762489045,2.159509202,1.612620508,1.958808063,2.219106047,2.109553024,1.984224365,2.034180543,1.714285714,1.638913234,1.858019281,2.084,1.947,1.826,3.127,3.335],", From efe37a0702d822fdecb36c052932b6fc8cec395f Mon Sep 17 00:00:00 2001 From: tyneises Date: Tue, 2 Jun 2026 11:05:07 -0500 Subject: [PATCH 57/74] commment out unused ppi cost scaling --- deploy/runtime/ui/Geothermal Costs.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 76705cb17d..5eca7844a6 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12505,7 +12505,8 @@ "};\r", "\r", "// -----------------------------------------------\r", - "", + "\r", + "/*", "equations{ '$MIMO$ ppi' } = define() {", "\tppis = [[0.890669720,0.919862622,0.938752147,0.957069262,0.963938180,0.972524327,0.983400114,1.000000000,0.998855180,1.066399542,1.226674299,1.333142530,1.377790498,1.438465942,1.414997138,1.423583286,1.464224385,1.513451631,1.535203205,1.555237550,1.604464797,1.643961076,1.657698912, 1.743,1.797,1.832,1.998,2.273],", "\t\t[1.128834356,1.102541630,1.108676599,1.073619632,0.999123576,1.021910605,0.961437336,1.000000000,1.064855390,1.423312883,1.499561788,1.634531113,1.762489045,2.159509202,1.612620508,1.958808063,2.219106047,2.109553024,1.984224365,2.034180543,1.714285714,1.638913234,1.858019281,2.084,1.947,1.826,3.127,3.335],", @@ -12525,7 +12526,7 @@ "\t${construction_ppi} = ppis[6][ppi_index];\r", "\t${drilling_ppi} = ppis[7][ppi_index];\t", "};\r", - "\r", + "*/\r", "", "", "", From ab1e7ea411e1e9476ac01de72e00c82f829c02ca Mon Sep 17 00:00:00 2001 From: tyneises Date: Tue, 2 Jun 2026 11:43:50 -0500 Subject: [PATCH 58/74] get geo analysis periods from auto exec --- deploy/runtime/ui/Geothermal Power Block.json | 19 ++++--------------- .../runtime/ui/Geothermal System Design.json | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Power Block.json b/deploy/runtime/ui/Geothermal Power Block.json index 0c46169720..a8b459c7f8 100644 --- a/deploy/runtime/ui/Geothermal Power Block.json +++ b/deploy/runtime/ui/Geothermal Power Block.json @@ -2889,19 +2889,6 @@ "sscVariableName": "", "sscVariableValue": "" }, - "geothermal_analysis_period": { - "Version": 4.0, - "Type": 1.0, - "Label": " ", - "Units": " ", - "Group": "Geothermal Power Block", - "IndexLabels": "", - "Flags": 8.0, - "DefaultValue": 30.0, - "UIObject": "Default", - "sscVariableName": "", - "sscVariableValue": "" - }, "hc_ctl1": { "Version": 4.0, "Type": 1.0, @@ -3131,7 +3118,8 @@ "", "equations{ 'CT' } = define() {", "\treturn ${geopowerblock.pwrb.condenser_type}+1; };", - "", + "\r", + "/*", "equations{ 'geothermal_analysis_period' } = define() {", "\t", "\tif ((financing() == \"None\") || (financing() == \"LCOE Calculator\"))", @@ -3143,7 +3131,8 @@ "\t\treturn ${analysis_period};", "\t}", "\t", - "};", + "};\r", + "*/", "", "equations{ 'degradation' } = define() {", "\treturn 0; };", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 600b2b756d..d0886f3bac 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -576,6 +576,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "geothermal_analysis_period": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "gross_cost_output_calc": { "Version": 4.0, "Type": 1.0, @@ -1322,6 +1335,7 @@ "\tif(ret == 0)\r", "\t{\r", "\t\t${is_success_auto_exec} = 1;\r", + "\t\t${geothermal_analysis_period} = ssc_var(obj, 'geothermal_analysis_period');\r", "\t\t\r", "\t\t${design_temp_calc} = ssc_var(obj, \"design_temp\");\r", "\t\t\r", @@ -1410,6 +1424,8 @@ "\t\t\r", "\t\tfail = -6789;\r", "\t\t\r", + "\t\t${geothermal_analysis_period} = -1;\r", + "\t\t\r", "\t\t${design_temp_calc} = fail;\r", "\t\t\r", "\t\t${plant_brine_eff_calc} = fail;\r", From 959fbdb0241183ce7f0fb940f1339b854f02fb0e Mon Sep 17 00:00:00 2001 From: tyneises Date: Tue, 2 Jun 2026 11:53:08 -0500 Subject: [PATCH 59/74] move degradation hardcode from ui to geo cost cmod --- deploy/runtime/ui/Geothermal Power Block.json | 37 +------------------ 1 file changed, 2 insertions(+), 35 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Power Block.json b/deploy/runtime/ui/Geothermal Power Block.json index a8b459c7f8..15d38fea94 100644 --- a/deploy/runtime/ui/Geothermal Power Block.json +++ b/deploy/runtime/ui/Geothermal Power Block.json @@ -2835,21 +2835,6 @@ "sscVariableName": "", "sscVariableValue": "" }, - "degradation": { - "Version": 4.0, - "Type": 2.0, - "Label": " ", - "Units": " ", - "Group": "Geothermal Power Block", - "IndexLabels": "", - "Flags": 8.0, - "DefaultValue": [ - 0.0 - ], - "UIObject": "Default", - "sscVariableName": "", - "sscVariableValue": "" - }, "eta_ref": { "Version": 4.0, "Type": 1.0, @@ -3117,26 +3102,8 @@ "};", "", "equations{ 'CT' } = define() {", - "\treturn ${geopowerblock.pwrb.condenser_type}+1; };", - "\r", - "/*", - "equations{ 'geothermal_analysis_period' } = define() {", - "\t", - "\tif ((financing() == \"None\") || (financing() == \"LCOE Calculator\"))", - "\t{", - "\t\treturn 30;", - "\t}", - "\telse", - "\t{", - "\t\treturn ${analysis_period};", - "\t}", - "\t", - "};\r", - "*/", - "", - "equations{ 'degradation' } = define() {", - "\treturn 0; };", - "\t" + "\treturn ${geopowerblock.pwrb.condenser_type}+1;\r", + "};" ], "Callbacks": [ "function update_hybrid_dispatch_inputs() {", From d96ca5bbf6e33f2646a22e764d30a68e6ca2835f Mon Sep 17 00:00:00 2001 From: tyneises Date: Tue, 2 Jun 2026 11:56:23 -0500 Subject: [PATCH 60/74] remove unused ui var --- .../ui/Geothermal Plant and Equipment.json | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index dc676d6ac3..5bf83357a7 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -4007,19 +4007,6 @@ "sscVariableName": " ", "sscVariableValue": "" }, - "ui_calculations_only": { - "Version": 4.0, - "Type": 1.0, - "Label": "Use UI calculations only", - "Units": "0/1", - "Group": "Geothermal Plant and Equipment", - "IndexLabels": "0", - "Flags": 8.0, - "DefaultValue": 0.0, - "UIObject": "Default", - "sscVariableName": " ", - "sscVariableValue": "" - }, "use_weather_file_conditions": { "Version": 4.0, "Type": 1.0, @@ -4177,12 +4164,6 @@ "\r", "// ----------------------------------------\r", "", - "equations{ 'ui_calculations_only' } = define() {", - "\treturn 0; // for a normal model run, this should be zero", - "};\r", - "\r", - "\r", - "", "equations{ 'wet_bulb_temp_wf'} = define() {\r", "\tann_twet = nan();\r", "\tif (file_exists(${solar_resource_file}))\r", From 09bc1bac57681b58aa3304f46ff32de30aa2c791 Mon Sep 17 00:00:00 2001 From: tyneises Date: Tue, 2 Jun 2026 20:55:20 -0500 Subject: [PATCH 61/74] get calculated om cost from auto exec --- .../runtime/ui/Geothermal System Design.json | 271 ++---------------- 1 file changed, 19 insertions(+), 252 deletions(-) diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index d0886f3bac..7f17bef54f 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -91,264 +91,15 @@ "ObjectProperties": { "Name": { "Type": 5.0, - "String": "num_confirm_wells_to_production_calc" + "String": "total_getem_om_cost_calc" }, "X": { "Type": 3.0, - "Integer": 111.0 + "Integer": 480.0 }, "Y": { "Type": 3.0, - "Integer": 57.0 - }, - "Width": { - "Type": 3.0, - "Integer": 90.0 - }, - "Height": { - "Type": 3.0, - "Integer": 24.0 - }, - "Tool Tip": { - "Type": 5.0, - "String": "" - }, - "Value": { - "Type": 1.0, - "Double": 0.0 - }, - "Mode": { - "Type": 3.0, - "Integer": 1.0 - }, - "Format": { - "Type": 3.0, - "Integer": 0.0 - }, - "Decimals": { - "Type": 3.0, - "Integer": 3.0 - }, - "Prefix": { - "Type": 5.0, - "String": "" - }, - "Suffix": { - "Type": 5.0, - "String": "" - }, - "ThousandsSep": { - "Type": 2.0, - "Boolean": 1.0 - }, - "Editable": { - "Type": 2.0, - "Boolean": 1.0 - }, - "ForeColour": { - "Type": 4.0, - "Color": { - "Red": 0.0, - "Green": 0.0, - "Blue": 0.0, - "Alpha": 255.0 - } - }, - "BackColour": { - "Type": 4.0, - "Color": { - "Red": 255.0, - "Green": 255.0, - "Blue": 255.0, - "Alpha": 255.0 - } - }, - "TabOrder": { - "Type": 3.0, - "Integer": -1.0 - } - } - }, - "Numeric": { - "Visible": 1.0, - "ObjectProperties": { - "Name": { - "Type": 5.0, - "String": "pump_cost_install_calc" - }, - "X": { - "Type": 3.0, - "Integer": 597.0 - }, - "Y": { - "Type": 3.0, - "Integer": 141.0 - }, - "Width": { - "Type": 3.0, - "Integer": 90.0 - }, - "Height": { - "Type": 3.0, - "Integer": 24.0 - }, - "Tool Tip": { - "Type": 5.0, - "String": "" - }, - "Value": { - "Type": 1.0, - "Double": 0.0 - }, - "Mode": { - "Type": 3.0, - "Integer": 1.0 - }, - "Format": { - "Type": 3.0, - "Integer": 0.0 - }, - "Decimals": { - "Type": 3.0, - "Integer": 3.0 - }, - "Prefix": { - "Type": 5.0, - "String": "" - }, - "Suffix": { - "Type": 5.0, - "String": "" - }, - "ThousandsSep": { - "Type": 2.0, - "Boolean": 1.0 - }, - "Editable": { - "Type": 2.0, - "Boolean": 1.0 - }, - "ForeColour": { - "Type": 4.0, - "Color": { - "Red": 0.0, - "Green": 0.0, - "Blue": 0.0, - "Alpha": 255.0 - } - }, - "BackColour": { - "Type": 4.0, - "Color": { - "Red": 255.0, - "Green": 255.0, - "Blue": 255.0, - "Alpha": 255.0 - } - }, - "TabOrder": { - "Type": 3.0, - "Integer": -1.0 - } - } - }, - "Numeric": { - "Visible": 1.0, - "ObjectProperties": { - "Name": { - "Type": 5.0, - "String": "pump_only_cost_calc" - }, - "X": { - "Type": 3.0, - "Integer": 411.0 - }, - "Y": { - "Type": 3.0, - "Integer": 84.0 - }, - "Width": { - "Type": 3.0, - "Integer": 90.0 - }, - "Height": { - "Type": 3.0, - "Integer": 24.0 - }, - "Tool Tip": { - "Type": 5.0, - "String": "" - }, - "Value": { - "Type": 1.0, - "Double": 0.0 - }, - "Mode": { - "Type": 3.0, - "Integer": 1.0 - }, - "Format": { - "Type": 3.0, - "Integer": 0.0 - }, - "Decimals": { - "Type": 3.0, - "Integer": 3.0 - }, - "Prefix": { - "Type": 5.0, - "String": "" - }, - "Suffix": { - "Type": 5.0, - "String": "" - }, - "ThousandsSep": { - "Type": 2.0, - "Boolean": 1.0 - }, - "Editable": { - "Type": 2.0, - "Boolean": 1.0 - }, - "ForeColour": { - "Type": 4.0, - "Color": { - "Red": 0.0, - "Green": 0.0, - "Blue": 0.0, - "Alpha": 255.0 - } - }, - "BackColour": { - "Type": 4.0, - "Color": { - "Red": 255.0, - "Green": 255.0, - "Blue": 255.0, - "Alpha": 255.0 - } - }, - "TabOrder": { - "Type": 3.0, - "Integer": -1.0 - } - } - }, - "Numeric": { - "Visible": 1.0, - "ObjectProperties": { - "Name": { - "Type": 5.0, - "String": "pumpwork_prod_calc" - }, - "X": { - "Type": 3.0, - "Integer": 726.0 - }, - "Y": { - "Type": 3.0, - "Integer": 105.0 + "Integer": 78.0 }, "Width": { "Type": 3.0, @@ -1213,6 +964,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "total_getem_om_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "OM costs calc", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "total_installed_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -1418,6 +1182,7 @@ "\t\t${total_installed_cost_calc} = ssc_var(obj, 'total_installed_cost');\r", "\t\t${installed_cost_per_kW_calc} = ssc_var(obj, 'installed_cost_per_kW');\r", "\r", + "\t\t${total_getem_om_cost_calc} = ssc_var(obj, 'total_getem_om_cost');\r", "\t}\r", "\telse{\r", "\t\t${is_success_auto_exec} = -1;\r", @@ -1507,6 +1272,8 @@ "\t\t${total_installed_cost_calc} = fail;\r", "\t\t${installed_cost_per_kW_calc} = fail;\r", "\t\t\r", + "\t\t${total_getem_om_cost_calc} = fail;\r", + "\t\t\r", "\t}\r", "\t\r", "};" From 34e530629426201cd023a2fb81e646e3f98f3807 Mon Sep 17 00:00:00 2001 From: tyneises Date: Tue, 2 Jun 2026 21:00:30 -0500 Subject: [PATCH 62/74] use om costs from auto exec for om button --- deploy/runtime/ui/Geothermal OM Costs.json | 158 +-------------------- 1 file changed, 2 insertions(+), 156 deletions(-) diff --git a/deploy/runtime/ui/Geothermal OM Costs.json b/deploy/runtime/ui/Geothermal OM Costs.json index 62fb93958d..d865e46f43 100644 --- a/deploy/runtime/ui/Geothermal OM Costs.json +++ b/deploy/runtime/ui/Geothermal OM Costs.json @@ -93,164 +93,10 @@ "sscVariableValue": "" } }, - "Equations": [ - "equations{'total_getem_om_cost'} = define() {\r", - "\r", - "\tgeothermal = ssc_create();\t\r", - "\tssc_var( geothermal, 'ui_calculations_only', 0);\r", - "\tssc_var( geothermal, 'adjust_constant', 0.0);\r", - "\tssc_var( geothermal, 'file_name', ${file_name});\r", - "\tssc_var( geothermal, 'resource_potential', ${resource_potential});\r", - "\tssc_var( geothermal, 'resource_type', ${resource_type} ); // INTEGER\r", - "\tif (${resource_temp} < 374) {\r", - "\t\tssc_var( geothermal, 'resource_temp', ${resource_temp} );\r", - "\t}\r", - "\telse {\r", - "\t\tssc_var( geothermal, 'resource_temp', ${resource_temp_old} );\r", - "\t}\r", - "\tssc_var( geothermal, 'resource_depth', ${resource_depth} );\r", - "\tssc_var( geothermal, 'dt_prod_well', ${dt_prod_well} );\t\r", - "\tssc_var( geothermal, 'prod_well_choice', ${prod_well_choice} );\t\r", - "\tssc_var( geothermal, 'allow_reservoir_replacements', ${allow_reservoir_replacements});\t\t\t\t\t\t\t\t\t\t\t\r", - "\t// Other inputs\t\t\t\t\t\t\t \r", - "\tssc_var( geothermal, 'geothermal_analysis_period', ${geothermal_analysis_period} ); // INTEGER\r", - "\tssc_var( geothermal, 'model_choice', ${model_choice} ); // INTEGER\r", - "\tssc_var( geothermal, 'geotherm.cost.inj_prod_well_ratio', ${geotherm.cost.inj_prod_well_ratio});\r", - "\tssc_var( geothermal, 'drilling_success_rate', ${drilling_success_rate});\r", - "\tssc_var( geothermal, 'stim_success_rate', ${stim_success_rate});\r", - "\tssc_var( geothermal, 'failed_prod_flow_ratio', ${failed_prod_flow_ratio});\r", - "\t// geothermal plant and equipment\t\t \r", - "\tssc_var( geothermal, 'nameplate', ${nameplate} );\r", - "\tssc_var( geothermal, 'analysis_type', ${analysis_type} ); //INTEGER\r", - "\tssc_var( geothermal, 'num_wells', ${num_wells} );\r", - "\tssc_var( geothermal, 'num_wells_getem', ${num_wells_getem});\r", - "\tssc_var( geothermal, 'conversion_type', ${conversion_type} ); // INTEGER\r", - "\tssc_var( geothermal, 'ppi_base_year', ${ppi_base_year} );\r", - "\tssc_var( geothermal, 'plant_efficiency_input', ${plant_efficiency_input} );\r", - "\tssc_var( geothermal, 'conversion_subtype', ${conversion_subtype} ); // INTEGER\r", - "\tif (${resource_type} == 0)\r", - "\t\tssc_var( geothermal, 'decline_type', 0 ); // INTEGER\r", - "\telse if (${conversion_type} == 0) \r", - "\t\tssc_var( geothermal, 'decline_type', ${decline_type});\r", - "\telse \r", - "\t\tssc_var( geothermal, 'decline_type', 0);\r", - "\tssc_var( geothermal, 'temp_decline_rate', ${temp_decline_rate} );\r", - "\tssc_var( geothermal, 'temp_decline_max', ${temp_decline_max} );\r", - "\tssc_var( geothermal, 'wet_bulb_temp', ${wet_bulb_temp} );\r", - "\tssc_var( geothermal, 'use_weather_file_conditions', ${use_weather_file_conditions} );\r", - "\tssc_var( geothermal, 'ambient_pressure', ${ambient_pressure} );\r", - "\tssc_var( geothermal, 'well_flow_rate', ${well_flow_rate} );\r", - "\tssc_var( geothermal, 'pump_efficiency', ${pump_efficiency} );\r", - "\tssc_var( geothermal, 'delta_pressure_equip', ${delta_pressure_equip} );\r", - "\tssc_var( geothermal, 'excess_pressure_pump', ${excess_pressure_pump} );\r", - "\tssc_var( geothermal, 'geotherm.cost.inj_cost_curve_welltype', ${geotherm.cost.inj_cost_curve_welltype} );\r", - "\tssc_var( geothermal, 'geotherm.cost.prod_cost_curve_welltype', ${geotherm.cost.prod_cost_curve_welltype} );\r", - "\tssc_var( geothermal, 'geotherm.cost.inj_cost_curve_welldiam', ${geotherm.cost.inj_cost_curve_welldiam} );\r", - "\tssc_var( geothermal, 'geotherm.cost.prod_cost_curve_welldiam', ${geotherm.cost.prod_cost_curve_welldiam} );\r", - "\r", - "\tssc_var( geothermal, 'design_temp', ${design_temp} );\r", - "\tssc_var( geothermal, 'specify_pump_work', ${specify_pump_work} ); // INTEGER\r", - "\tssc_var( geothermal, 'specified_pump_work_amount', ${specified_pump_work_amount} );\r", - "\r", - "\t// detailed geothermal inputs\r", - "\tssc_var( geothermal, 'rock_thermal_conductivity', ${rock_thermal_conductivity} );\r", - "\tssc_var( geothermal, 'rock_specific_heat', ${rock_specific_heat} );\r", - "\tssc_var( geothermal, 'rock_density', ${rock_density} );\r", - "\tif (${resource_type} != 1 && ${reservoir_pressure_change_type} == 1) {\r", - "\t\tssc_var( geothermal, 'reservoir_pressure_change_type', 0 ); // INTEGER\r", - "\t\tmsgbox('Fracture flow calculations can only be used with EGS resource. Please check the inputs on the Geothermal Resource page. The enter change in reservoir option is being used currently.');\r", - "\t}\r", - "\telse \r", - "\t\tssc_var( geothermal, 'reservoir_pressure_change_type', ${reservoir_pressure_change_type} ); // INTEGER\r", - "\tssc_var( geothermal, 'reservoir_pressure_change', ${reservoir_pressure_change} );\r", - "\tssc_var( geothermal, 'injectivity_index', ${injectivity_index} );\r", - "\tssc_var( geothermal, 'exploration_wells_production', ${geotherm.cost.confirm_wells_num} );\r", - "\tssc_var( geothermal, 'reservoir_width', ${reservoir_width} );\r", - "\tssc_var( geothermal, 'reservoir_height', ${reservoir_height} );\r", - "\tssc_var( geothermal, 'reservoir_permeability', ${reservoir_permeability} );\t\t\r", - "\tssc_var( geothermal, 'inj_prod_well_distance', ${inj_prod_well_distance} );\t\t\r", - "\tssc_var( geothermal, 'subsurface_water_loss', ${subsurface_water_loss} ); \t\t\r", - "\tssc_var( geothermal, 'fracture_aperature', ${fracture_aperature} );\r", - "\tssc_var( geothermal, 'fracture_width', ${fracture_width} );\r", - "\tssc_var( geothermal, 'fracture_length', ${fracture_length} );\r", - "\tssc_var( geothermal, 'fracture_spacing', ${fracture_spacing} );\r", - "\tssc_var( geothermal, 'num_fractures', ${num_fractures} ); // INTEGER\r", - "\tssc_var( geothermal, 'fracture_angle', ${fracture_angle} );\r", - "\tssc_var( geothermal, 'reservoir_model_inputs', ${reservoir_model_inputs} );\r", - "\r", - "\t// temp input for testing\r", - "\tssc_var( geothermal, 'hr_pl_nlev', ${hr_pl_nlev} ); // INTEGER\r", - "\t\r", - "\t//power block parameters needed but not on power block SAM input page\r", - "\tssc_var( geothermal, 'T_htf_cold_ref', ${T_htf_cold_ref});\r", - "\tssc_var( geothermal, 'T_htf_hot_ref', ${T_htf_hot_ref});\r", - "\t\r", - "\t//power block input parameters\r", - "\tssc_var( geothermal, 'P_boil', ${P_boil});\r", - "\tssc_var( geothermal, 'eta_ref', ${eta_ref});\r", - "\tssc_var( geothermal, 'q_sby_frac', ${q_sby_frac});\r", - "\tssc_var( geothermal, 'startup_frac', ${startup_frac});\r", - "\tssc_var( geothermal, 'startup_time', ${startup_time});\r", - "\tssc_var( geothermal, 'pb_bd_frac', ${pb_bd_frac});\r", - "\tssc_var( geothermal, 'T_amb_des', ${T_amb_des});\r", - "\tssc_var( geothermal, 'CT', ${CT});\r", - "\tssc_var( geothermal, 'dT_cw_ref', ${dT_cw_ref});\r", - "\tssc_var( geothermal, 'T_approach', ${T_approach});\r", - "\tssc_var( geothermal, 'T_ITD_des', ${T_ITD_des});\r", - "\tssc_var( geothermal, 'P_cond_ratio', ${P_cond_ratio});\r", - "\tssc_var( geothermal, 'P_cond_min', ${P_cond_min});\r", - "\tssc_var( geothermal, 'hc_ctl1', ${hc_ctl1});\r", - "\tssc_var( geothermal, 'hc_ctl2', ${hc_ctl2});\r", - "\tssc_var( geothermal, 'hc_ctl3', ${hc_ctl3});\r", - "\tssc_var( geothermal, 'hc_ctl4', ${hc_ctl4});\r", - "\tssc_var( geothermal, 'hc_ctl5', ${hc_ctl5});\r", - "\tssc_var( geothermal, 'hc_ctl6', ${hc_ctl6});\r", - "\tssc_var( geothermal, 'hc_ctl7', ${hc_ctl7});\r", - "\tssc_var( geothermal, 'hc_ctl8', ${hc_ctl8});\r", - "\tssc_var( geothermal, 'hc_ctl9', ${hc_ctl9});\r", - "\tssc_var( geothermal, 'hybrid_dispatch_schedule', ${hybrid_dispatch_schedule});\r", - "\t//result = ssc_exec(geothermal, 'geothermal');\r", - "\tresult = 1;\r", - "\tif ( typeof(result) != 'number' && result != 0 )\r", - "\t{\r", - "\t\tmsgbox('geothermal mimo error, result =' + result); \r", - "\t}\r", - "\tif (result == 0) \r", - "\t{\r", - "\t\tdata.gross_output = ${gross_output_calc};\r", - "\t\tdata.conversion_type = ${conversion_type};\r", - "\t\tif (${geotherm.cost.plant_auto_estimate} == 1) {\r", - "\t\t\tdata.baseline_cost = ${geotherm.cost.plant_per_kW};\r", - "\t\t}\r", - "\t\telse {\r", - "\t\t\tdata.baseline_cost = ${geotherm.cost.plant_per_kW_input};\r", - "\t\t}\r", - "\t\tdata.ppi_base_year = ${ppi_base_year};\r", - "\t\tdata.cwflow = ssc_var(geothermal, \"cwflow\");\r", - "\t\tdata.drilling_cost = ${geotherm.cost.drilling.amount};\r", - "\t\tdata.field_gathering_system_cost = ${geotherm.cost.total_surface_equipment_cost};\r", - "\t\tdata.GF_flowrate = ssc_var(geothermal, \"GF_flowrate\");\r", - "\t\tdata.num_wells = ${geotherm.cost.prod_req};\r", - "\t\tdata.water_loss = ${subsurface_water_loss};\r", - "\t\tdata.total_installed_cost = ${total_installed_cost};\r", - "\t\tdata.pump_only_cost = ${geotherm.cost.pump_only_cost};\r", - "\t\tdata.pump_cost_install = ${geotherm.cost.pump_cost_install};\r", - "\t\tdata.pump_depth = ${pump_depth};\r", - "\t\tdata.pump_type = 0; //0 - Lineshaft, 1 - Submersible\r", - "\t\tsuccess = ssc_eqn('getem_om_cost_calc', data);\r", - "\t\treturn data.total_getem_om_cost;\r", - "\t}\r", - "\telse {\r", - "\t\treturn -50;\r", - "\t}\r", - "\t\r", - "};\r", - "\r", - "" - ], + "Equations": [], "Callbacks": [ "on_change{'getem_om_cost_btn'} = define() {\r", - "\tvalue('om_fixed', [value('total_getem_om_cost')]);\r", + "\tvalue('om_fixed', [value('total_getem_om_cost_calc')]);\r", "\trefresh();\r", "};" ] From d69bdb7a35598454de7dc0f9fb11c788eca72085 Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 3 Jun 2026 09:53:10 -0500 Subject: [PATCH 63/74] get construction financing cost from auto exec for comparison --- .../runtime/ui/Geothermal System Design.json | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 7f17bef54f..0a06aa07c9 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -3,6 +3,89 @@ "Width": 824.0, "Height": 184.0, "FormObjects": { + "Numeric": { + "Visible": 1.0, + "ObjectProperties": { + "Name": { + "Type": 5.0, + "String": "construction_financing_cost_calc" + }, + "X": { + "Type": 3.0, + "Integer": 186.0 + }, + "Y": { + "Type": 3.0, + "Integer": 42.0 + }, + "Width": { + "Type": 3.0, + "Integer": 90.0 + }, + "Height": { + "Type": 3.0, + "Integer": 24.0 + }, + "Tool Tip": { + "Type": 5.0, + "String": "" + }, + "Value": { + "Type": 1.0, + "Double": 0.0 + }, + "Mode": { + "Type": 3.0, + "Integer": 1.0 + }, + "Format": { + "Type": 3.0, + "Integer": 0.0 + }, + "Decimals": { + "Type": 3.0, + "Integer": 3.0 + }, + "Prefix": { + "Type": 5.0, + "String": "" + }, + "Suffix": { + "Type": 5.0, + "String": "" + }, + "ThousandsSep": { + "Type": 2.0, + "Boolean": 1.0 + }, + "Editable": { + "Type": 2.0, + "Boolean": 1.0 + }, + "ForeColour": { + "Type": 4.0, + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 0.0, + "Alpha": 255.0 + } + }, + "BackColour": { + "Type": 4.0, + "Color": { + "Red": 255.0, + "Green": 255.0, + "Blue": 255.0, + "Alpha": 255.0 + } + }, + "TabOrder": { + "Type": 3.0, + "Integer": -1.0 + } + } + }, "Numeric": { "Visible": 1.0, "ObjectProperties": { @@ -223,6 +306,19 @@ "sscVariableName": "", "sscVariableValue": "" }, + "construction_financing_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "construction financing", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "contingency_cost_calc": { "Version": 4.0, "Type": 1.0, @@ -1183,6 +1279,7 @@ "\t\t${installed_cost_per_kW_calc} = ssc_var(obj, 'installed_cost_per_kW');\r", "\r", "\t\t${total_getem_om_cost_calc} = ssc_var(obj, 'total_getem_om_cost');\r", + "\t\t${construction_financing_cost_calc} = ssc_var(obj, 'construction_financing_cost');\r", "\t}\r", "\telse{\r", "\t\t${is_success_auto_exec} = -1;\r", @@ -1274,6 +1371,7 @@ "\t\t\r", "\t\t${total_getem_om_cost_calc} = fail;\r", "\t\t\r", + "\t\t${construction_financing_cost_calc} = fail;\r", "\t}\r", "\t\r", "};" From a0e4874bfe146c5101c6894822bb6c303ce45f88 Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 3 Jun 2026 14:55:37 -0500 Subject: [PATCH 64/74] hardcode system_use_lifetime_output in ui and change var table input to default to 1 --- deploy/runtime/ui/Geothermal Power Block.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/deploy/runtime/ui/Geothermal Power Block.json b/deploy/runtime/ui/Geothermal Power Block.json index 15d38fea94..54c005a4cf 100644 --- a/deploy/runtime/ui/Geothermal Power Block.json +++ b/deploy/runtime/ui/Geothermal Power Block.json @@ -3103,6 +3103,12 @@ "", "equations{ 'CT' } = define() {", "\treturn ${geopowerblock.pwrb.condenser_type}+1;\r", + "};\r", + "\r", + "// This value should always be = 1 for SAM geothermal simulations\r", + "// However, want to keep option in the cmod\r", + "equations{ 'system_use_lifetime_output' } = define() {\r", + "\treturn 1;\r", "};" ], "Callbacks": [ From 9324325d74f6aa543b53d576e812c928d2dec5a8 Mon Sep 17 00:00:00 2001 From: tyneises Date: Wed, 3 Jun 2026 15:39:37 -0500 Subject: [PATCH 65/74] add message in ui equations --- deploy/runtime/ui/Geothermal Costs.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/runtime/ui/Geothermal Costs.json b/deploy/runtime/ui/Geothermal Costs.json index 5eca7844a6..5d03012cb2 100644 --- a/deploy/runtime/ui/Geothermal Costs.json +++ b/deploy/runtime/ui/Geothermal Costs.json @@ -12480,7 +12480,7 @@ "\treturn ${sales_tax_cost_calc};\r", "};\r", "\r", - "// sales tax value is ony a UI indicator\r", + "// sales tax value is only a UI indicator\r", "// the sales tax rate is calculated in the geo cost cmod\r", "// using geo_financial_model\r", "equations{ 'geotherm.cost.sales_tax.value' } = define() {\r", From d1944118f1640edb71eb7509bcb99f187e5353a6 Mon Sep 17 00:00:00 2001 From: tyneises Date: Sat, 6 Jun 2026 22:33:06 -0500 Subject: [PATCH 66/74] update defaults for geothermal ppa cases --- ...mal Power_All Equity Partnership Flip.json | 84 +++++++++++++++---- ...rmal Power_Leveraged Partnership Flip.json | 84 +++++++++++++++---- .../Geothermal Power_Sale Leaseback.json | 84 +++++++++++++++---- .../Geothermal Power_Single Owner.json | 84 +++++++++++++++---- 4 files changed, 276 insertions(+), 60 deletions(-) diff --git a/deploy/runtime/defaults/Geothermal Power_All Equity Partnership Flip.json b/deploy/runtime/defaults/Geothermal Power_All Equity Partnership Flip.json index 182c7aab9e..4162cb744b 100644 --- a/deploy/runtime/defaults/Geothermal Power_All Equity Partnership Flip.json +++ b/deploy/runtime/defaults/Geothermal Power_All Equity Partnership Flip.json @@ -1,6 +1,5 @@ { "CT": 3.0, - "HTF": 3.0, "P_boil": 2.0, "P_cond_min": 1.25, "P_cond_ratio": 1.0028, @@ -42,9 +41,10 @@ "annual_tdry": 24.0951, "annual_twet": NaN, "annual_wspd": 2.28094, - "baseline_cost": 0.0, + "baseline_cost_calc": -999.0, "batt_salvage_percentage": 0.0, "batt_salvage_value": 0.0, + "bottom_hole_pressure_calc": -999.0, "casing_size": 9.625, "cbi_fed_amount": 0.0, "cbi_fed_deprbas_fed": 0.0, @@ -72,6 +72,8 @@ "cbi_uti_tax_sta": 1.0, "chk_update_peaks": 0.0, "city": "-", + "conf_drilling_cost_calc": -999.0, + "conf_total_cost_calc": -999.0, "const_per_interest1": 12659644.709986857, "const_per_interest2": 8180078.120299198, "const_per_interest3": 0.0, @@ -116,7 +118,9 @@ "const_per_upfront_rate4": 0.0, "const_per_upfront_rate5": 0.0, "construction_financing_cost": 23955943.06659051, + "construction_financing_cost_calc": -999.0, "construction_ppi": 0.790555556, + "contingency_cost_calc": -999.0, "conversion_subtype": 0.0, "conversion_type": 0.0, "cost_dev_fee_percent": 3.0, @@ -127,9 +131,6 @@ "country": "-", "dT_cw_ref": 10.0, "decline_type": 0.0, - "degradation": [ - 0.0 - ], "delta_pressure_equip": 40.0, "depr_alloc_custom_percent": 0.0, "depr_alloc_macrs_15_percent": 1.5, @@ -175,6 +176,7 @@ "depr_itc_sta_sl_5": 0.0, "depr_stabas_method": 1.0, "design_temp": 200.0, + "design_temp_calc": -999.0, "developer_equity_percent": 40.0, "developer_postflip_cash_percent": 90.0, "developer_postflip_tax_percent": 90.0, @@ -9590,6 +9592,7 @@ "en_electricity_rates": 0.0, "enable_interconnection_limit": 0.0, "engineering_ppi": 0.779879622, + "epc_total_cost_calc": -999.0, "equip1_reserve_cost": 0.0, "equip1_reserve_freq": 12.0, "equip2_reserve_cost": 0.0, @@ -9600,11 +9603,15 @@ "equip_reserve_depr_sta": 0.0, "eta_ref": 0.17, "excess_pressure_pump": 50.0, + "expl_cost_per_well_calc": -999.0, + "expl_drilling_cost_calc": -999.0, + "expl_total_cost_calc": -999.0, "exploration_wells_production": 2.0, "failed_prod_flow_ratio": 0.3, "federal_tax_rate": [ 21.0 ], + "field_gathering_num_wells_calc": -999.0, "file_name": "blythe_ca_33.617773_-114.588261_psmv3_60_tmy.csv", "flip_target_percent": 15.0, "flip_target_year": 20.0, @@ -9616,6 +9623,7 @@ "gen": [ 0.0 ], + "geo_financial_model": -999.0, "geopowerblock.pwrb.condenser_type": 2.0, "geopowerblock.pwrb.model_name": "0", "geotherm.avg_reservoir_temp": 200.0, @@ -9641,7 +9649,6 @@ "geotherm.cost.drilling.amount_specified": 0.0, "geotherm.cost.drilling.calc": 1.0, "geotherm.cost.epc.fixed": 0.0, - "geotherm.cost.epc.nonfixed": 19557867.591868976, "geotherm.cost.epc.percent": 12.0, "geotherm.cost.epc.total": 19557867.591868976, "geotherm.cost.expl_drill": 2155281.0782000005, @@ -9662,7 +9669,6 @@ "geotherm.cost.inj_pump_cost_per_pump": 0.0, "geotherm.cost.inj_wells_drilled": 2.65853, "geotherm.cost.installed_per_capacity": 6492.13, - "geotherm.cost.num_pumps": 4.07451, "geotherm.cost.other_per_pump": 10000.0, "geotherm.cost.plant": 100000.0, "geotherm.cost.plant_auto_estimate": 0.0, @@ -9676,7 +9682,6 @@ "geotherm.cost.plant_total.amount_specified": 0.0, "geotherm.cost.plant_total.calc": 1.0, "geotherm.cost.plm.fixed": 0.0, - "geotherm.cost.plm.nonfixed": 5704378.04762845, "geotherm.cost.plm.percent": 3.5, "geotherm.cost.plm.total": 5704378.04762845, "geotherm.cost.prod_cost_curve": 0.0, @@ -9721,7 +9726,6 @@ "geotherm.cost.surf_num_wells": 7.572569392680749, "geotherm.cost.surf_per_well": 125000.0, "geotherm.cost.surf_total": 946571.0, - "geotherm.cost.total_installed_millions": 194.764, "geotherm.cost.total_surface_equipment_cost": 0.0, "geotherm.default_input": 0.0, "geotherm.delta_pressure_reservoir": 349.211808, @@ -9744,8 +9748,6 @@ "geotherm.resource_type": 0.0, "geotherm.resource_type_name": "0", "geotherm.temp_gradient": 0.0, - "geotherm.total_flow_gpm": 7112.863719334803, - "geotherm.total_flow_kg_per_s": 448.1955714766732, "geothermal_analysis_period": 25.0, "grid_curtailment": [ 1e38, @@ -18510,7 +18512,9 @@ 1e38 ], "grid_interconnection_limit_kwac": 100000.0, - "gross_output": 32.81360319442342, + "gross_cost_output_calc": -999.0, + "gross_output_calc": -999.0, + "gross_output_ui": 0.0, "hc_ctl1": 0.0, "hc_ctl2": 0.0, "hc_ctl3": 0.0, @@ -18572,17 +18576,27 @@ "in_location_options": 0.0, "in_nsrdb_options": 0.0, "in_time_step": 0.0, + "indirect_cost_calc": -999.0, "indirect_pump_cost": 0.0, + "indirect_pump_cost_calc": -999.0, "inflation_rate": 2.5, "inj_num_pumps": 1.0, + "inj_num_pumps_calc": -999.0, "inj_prod_well_distance": 1500.0, "inj_pump_cost": 210483.5370303323, + "inj_pump_cost_calc": -999.0, + "inj_pump_cost_per_pump_calc": -999.0, "inj_pump_hp": 681.9371124547588, + "inj_pump_hp_calc": -999.0, + "inj_total_cost_calc": -999.0, + "inj_well_cost_calc": -999.0, "inj_well_diam": 12.25, "injectivity_index": 3000.0, + "installed_cost_per_kW_calc": -999.0, "insurance_rate": 0.5, "is_advanced": 0.0, "is_btm": 0.0, + "is_success_auto_exec": -999.0, "itc_fed_amount": [ 0.0 ], @@ -19260,11 +19274,18 @@ "months_receivables_reserve": 0.0, "months_working_reserve": 6.0, "nameplate": 30000.0, + "net_plant_output_calc": -999.0, "nominal_discount_rate": 9.060000000000004, + "num_confirm_wells_to_production_calc": -999.0, "num_fractures": 6.0, "num_wells": 3.0, + "num_wells_calc": -999.0, "num_wells_getem": 4.074505195242484, "num_wells_getem_inj": 2.6585287900530818, + "num_wells_getem_inj_calc": -999.0, + "num_wells_getem_inj_drilled_calc": -999.0, + "num_wells_getem_prod_drilled_calc": -999.0, + "num_wells_getem_prod_inj_sum_calc": -999.0, "om_capacity": [ 175.0 ], @@ -19310,7 +19331,10 @@ "pbi_uti_tax_fed": 1.0, "pbi_uti_tax_sta": 1.0, "pbi_uti_term": 0.0, + "piping_cost_per_well_calc": -999.0, + "plant_brine_eff_calc": -999.0, "plant_efficiency_input": 80.0, + "plm_total_cost_calc": -999.0, "ppa_escalation": 1.0, "ppa_multiplier_model": 0.0, "ppa_price_input": [ @@ -19319,8 +19343,13 @@ "ppa_soln_mode": 1.0, "ppi_base_year": 0.0, "process_equip_ppi": 0.884044412, + "prod_inj_total_cost_calc": -999.0, "prod_pump_cost": 616741.6520735668, + "prod_pump_cost_calc": -999.0, + "prod_pump_cost_per_well_calc": -999.0, + "prod_total_cost_calc": -999.0, "prod_well_choice": 0.0, + "prod_well_cost_calc": -999.0, "prop_tax_assessed_decline": 0.0, "prop_tax_cost_assessed_percent": 100.0, "property_assessed_value": 194763764.7690285, @@ -19336,20 +19365,29 @@ "ptc_sta_escal": 0.0, "ptc_sta_term": 10.0, "pump_casing_total_cost": 37532198.23782873, + "pump_cost_install_calc": -999.0, "pump_depth": 1123.1203058328284, + "pump_depth_ft_calc": -999.0, "pump_efficiency": 67.5, + "pump_only_cost_calc": -999.0, "pump_ppi": 0.853394181, "pump_size_hp": 733.6462176201694, + "pump_size_hp_calc": -999.0, + "pump_watthr_per_lb_calc": -999.0, "pump_work": 2.813603194423368, + "pump_work_calc": -999.0, "pump_work_watthr_lb": 0.7909682365960984, "pumpwork_inj": 0.1643234090169439, + "pumpwork_inj_calc": -999.0, "pumpwork_prod": 0.6266448275791545, + "pumpwork_prod_calc": -999.0, "q_sby_frac": 0.2, "rate_escalation": [ 0.0 ], "real_discount_rate": 6.4, "reserves_interest": 1.75, + "reservoir_avg_temp_calc": -999.0, "reservoir_height": 100.0, "reservoir_model_inputs": [ [ @@ -19825,6 +19863,7 @@ ], "reservoir_model_inputs_shown": 0.0, "reservoir_permeability": 0.05, + "reservoir_pressure_calc": -999.0, "reservoir_pressure_change": 2500.0, "reservoir_pressure_change_type": 0.0, "reservoir_pressure_change_type_old_setting": 0.0, @@ -19836,6 +19875,7 @@ "rock_density": 2600.0, "rock_specific_heat": 950.0, "rock_thermal_conductivity": 3.0, + "sales_tax_cost_calc": -999.0, "sales_tax_rate": 5.0, "salvage_percentage": 0.0, "salvage_value": 0.0, @@ -19862,13 +19902,16 @@ "station_id": "258971", "steel_ppi": 1.128834356, "step": 3600.0, + "stim_cost_per_well_calc": -999.0, "stim_success_rate": 0.0, + "stim_total_cost_calc": -999.0, "stimulation_type": 0.0, "subsurface_water_loss": 2.0, + "sum_prod_inj_total_cost_calc": -999.0, "system_capacity": 32813.60319442342, - "system_recapitalization_cost": 86841478.71748792, + "system_capacity_calc": -999.0, + "system_recapitalization_cost_calc": -999.0, "system_use_lifetime_output": 1.0, - "system_use_recapitalization": 1.0, "tax_investor_equity_percent": 60.0, "tax_investor_postflip_cash_percent": 10.0, "tax_investor_postflip_tax_percent": 10.0, @@ -19877,13 +19920,24 @@ "temp_decline_max": 30.0, "temp_decline_rate": 0.5, "tod_library": "Uniform Dispatch", + "total_capital_cost_calc": -999.0, "total_direct_cost": 162982229.93224145, + "total_direct_cost_calc": -999.0, + "total_drilling_cost_calc": -999.0, + "total_drilling_cost_used_calc": -999.0, + "total_gathering_cost_calc": -999.0, "total_getem_om_cost": 42468736.891191449, + "total_getem_om_cost_calc": -999.0, "total_indirect_cost": 31781534.836787084, "total_installed_cost": 194763764.7690285, + "total_installed_cost_calc": -999.0, + "total_plant_cost_calc": -999.0, + "total_plant_cost_used_calc": -999.0, + "total_pump_cost_calc": -999.0, + "total_pump_gathering_cost_used_calc": -999.0, + "total_surface_equipment_cost_calc": -999.0, "turbine_ppi": 0.882850242, "tz": -8.0, - "ui_calculations_only": 0.0, "ui_electricity_rate_option": 0.0, "ui_step_minutes": 60.0, "ur_annual_min_charge": 0.0, diff --git a/deploy/runtime/defaults/Geothermal Power_Leveraged Partnership Flip.json b/deploy/runtime/defaults/Geothermal Power_Leveraged Partnership Flip.json index 7377dcd19a..0700e821df 100644 --- a/deploy/runtime/defaults/Geothermal Power_Leveraged Partnership Flip.json +++ b/deploy/runtime/defaults/Geothermal Power_Leveraged Partnership Flip.json @@ -1,6 +1,5 @@ { "CT": 3.0, - "HTF": 3.0, "P_boil": 2.0, "P_cond_min": 1.25, "P_cond_ratio": 1.0028, @@ -42,9 +41,10 @@ "annual_tdry": 24.0951, "annual_twet": NaN, "annual_wspd": 2.28094, - "baseline_cost": 0.0, + "baseline_cost_calc": -999.0, "batt_salvage_percentage": 0.0, "batt_salvage_value": 0.0, + "bottom_hole_pressure_calc": -999.0, "casing_size": 9.625, "cbi_fed_amount": 0.0, "cbi_fed_deprbas_fed": 0.0, @@ -72,6 +72,8 @@ "cbi_uti_tax_sta": 1.0, "chk_update_peaks": 0.0, "city": "-", + "conf_drilling_cost_calc": -999.0, + "conf_total_cost_calc": -999.0, "const_per_interest1": 12659600.0, "const_per_interest2": 8180080.0, "const_per_interest3": 0.0, @@ -116,7 +118,9 @@ "const_per_upfront_rate4": 0.0, "const_per_upfront_rate5": 0.0, "construction_financing_cost": 23955900.0, + "construction_financing_cost_calc": -999.0, "construction_ppi": 0.790556, + "contingency_cost_calc": -999.0, "conversion_subtype": 0.0, "conversion_type": 0.0, "cost_debt_closing": 0.0, @@ -132,9 +136,6 @@ "debt_option": 1.0, "debt_percent": 50.0, "decline_type": 0.0, - "degradation": [ - 0.0 - ], "delta_pressure_equip": 40.0, "depr_alloc_custom_percent": 0.0, "depr_alloc_macrs_15_percent": 1.5, @@ -180,6 +181,7 @@ "depr_itc_sta_sl_5": 0.0, "depr_stabas_method": 1.0, "design_temp": 200.0, + "design_temp_calc": -999.0, "developer_equity_percent": 2.0, "developer_postflip_cash_percent": 90.0, "developer_postflip_tax_percent": 90.0, @@ -9598,6 +9600,7 @@ "en_electricity_rates": 0.0, "enable_interconnection_limit": 0.0, "engineering_ppi": 0.77988, + "epc_total_cost_calc": -999.0, "equip1_reserve_cost": 0.0, "equip1_reserve_freq": 12.0, "equip2_reserve_cost": 0.0, @@ -9608,11 +9611,15 @@ "equip_reserve_depr_sta": 0.0, "eta_ref": 0.17, "excess_pressure_pump": 50.0, + "expl_cost_per_well_calc": -999.0, + "expl_drilling_cost_calc": -999.0, + "expl_total_cost_calc": -999.0, "exploration_wells_production": 2.0, "failed_prod_flow_ratio": 0.3, "federal_tax_rate": [ 21.0 ], + "field_gathering_num_wells_calc": -999.0, "file_name": "blythe_ca_33.617773_-114.588261_psmv3_60_tmy.csv", "flip_target_percent": 15.0, "flip_target_year": 20.0, @@ -9624,6 +9631,7 @@ "gen": [ 0.0 ], + "geo_financial_model": -999.0, "geopowerblock.pwrb.condenser_type": 2.0, "geopowerblock.pwrb.model_name": "0", "geotherm.avg_reservoir_temp": 200.0, @@ -9649,7 +9657,6 @@ "geotherm.cost.drilling.amount_specified": 0.0, "geotherm.cost.drilling.calc": 1.0, "geotherm.cost.epc.fixed": 0.0, - "geotherm.cost.epc.nonfixed": 19557900.0, "geotherm.cost.epc.percent": 12.0, "geotherm.cost.epc.total": 19557900.0, "geotherm.cost.expl_drill": 2155280.0, @@ -9670,7 +9677,6 @@ "geotherm.cost.inj_pump_cost_per_pump": 0.0, "geotherm.cost.inj_wells_drilled": 2.65853, "geotherm.cost.installed_per_capacity": 6492.13, - "geotherm.cost.num_pumps": 4.07451, "geotherm.cost.other_per_pump": 10000.0, "geotherm.cost.plant": 100000.0, "geotherm.cost.plant_auto_estimate": 0.0, @@ -9684,7 +9690,6 @@ "geotherm.cost.plant_total.amount_specified": 0.0, "geotherm.cost.plant_total.calc": 1.0, "geotherm.cost.plm.fixed": 0.0, - "geotherm.cost.plm.nonfixed": 5704380.0, "geotherm.cost.plm.percent": 3.5, "geotherm.cost.plm.total": 5704380.0, "geotherm.cost.prod_cost_curve": 0.0, @@ -9729,7 +9734,6 @@ "geotherm.cost.surf_num_wells": 7.57257, "geotherm.cost.surf_per_well": 125000.0, "geotherm.cost.surf_total": 946571.0, - "geotherm.cost.total_installed_millions": 194.764, "geotherm.cost.total_surface_equipment_cost": 0.0, "geotherm.default_input": 0.0, "geotherm.delta_pressure_reservoir": 349.212, @@ -9752,8 +9756,6 @@ "geotherm.resource_type": 0.0, "geotherm.resource_type_name": "0", "geotherm.temp_gradient": 0.0, - "geotherm.total_flow_gpm": 7112.86, - "geotherm.total_flow_kg_per_s": 448.196, "geothermal_analysis_period": 25.0, "grid_curtailment": [ 1e38, @@ -18518,7 +18520,9 @@ 1e38 ], "grid_interconnection_limit_kwac": 100000.0, - "gross_output": 32.8136, + "gross_cost_output_calc": -999.0, + "gross_output_calc": -999.0, + "gross_output_ui": 0.0, "hc_ctl1": 0.0, "hc_ctl2": 0.0, "hc_ctl3": 0.0, @@ -18580,17 +18584,27 @@ "in_location_options": 0.0, "in_nsrdb_options": 0.0, "in_time_step": 0.0, + "indirect_cost_calc": -999.0, "indirect_pump_cost": 0.0, + "indirect_pump_cost_calc": -999.0, "inflation_rate": 2.5, "inj_num_pumps": 1.0, + "inj_num_pumps_calc": -999.0, "inj_prod_well_distance": 1500.0, "inj_pump_cost": 210484.0, + "inj_pump_cost_calc": -999.0, + "inj_pump_cost_per_pump_calc": -999.0, "inj_pump_hp": 681.937, + "inj_pump_hp_calc": -999.0, + "inj_total_cost_calc": -999.0, + "inj_well_cost_calc": -999.0, "inj_well_diam": 12.25, "injectivity_index": 3000.0, + "installed_cost_per_kW_calc": -999.0, "insurance_rate": 0.5, "is_advanced": 0.0, "is_btm": 0.0, + "is_success_auto_exec": -999.0, "itc_fed_amount": [ 0.0 ], @@ -19269,11 +19283,18 @@ "months_receivables_reserve": 0.0, "months_working_reserve": 6.0, "nameplate": 30000.0, + "net_plant_output_calc": -999.0, "nominal_discount_rate": 9.06, + "num_confirm_wells_to_production_calc": -999.0, "num_fractures": 6.0, "num_wells": 3.0, + "num_wells_calc": -999.0, "num_wells_getem": 4.07451, "num_wells_getem_inj": 2.65853, + "num_wells_getem_inj_calc": -999.0, + "num_wells_getem_inj_drilled_calc": -999.0, + "num_wells_getem_prod_drilled_calc": -999.0, + "num_wells_getem_prod_inj_sum_calc": -999.0, "om_capacity": [ 175.0 ], @@ -19320,7 +19341,10 @@ "pbi_uti_tax_fed": 1.0, "pbi_uti_tax_sta": 1.0, "pbi_uti_term": 0.0, + "piping_cost_per_well_calc": -999.0, + "plant_brine_eff_calc": -999.0, "plant_efficiency_input": 80.0, + "plm_total_cost_calc": -999.0, "ppa_escalation": 1.0, "ppa_multiplier_model": 0.0, "ppa_price_input": [ @@ -19329,8 +19353,13 @@ "ppa_soln_mode": 1.0, "ppi_base_year": 0.0, "process_equip_ppi": 0.884044, + "prod_inj_total_cost_calc": -999.0, "prod_pump_cost": 616742.0, + "prod_pump_cost_calc": -999.0, + "prod_pump_cost_per_well_calc": -999.0, + "prod_total_cost_calc": -999.0, "prod_well_choice": 0.0, + "prod_well_cost_calc": -999.0, "prop_tax_assessed_decline": 0.0, "prop_tax_cost_assessed_percent": 100.0, "property_assessed_value": 194764000.0, @@ -19346,20 +19375,29 @@ "ptc_sta_escal": 0.0, "ptc_sta_term": 10.0, "pump_casing_total_cost": 37532200.0, + "pump_cost_install_calc": -999.0, "pump_depth": 1123.12, + "pump_depth_ft_calc": -999.0, "pump_efficiency": 67.5, + "pump_only_cost_calc": -999.0, "pump_ppi": 0.853394, "pump_size_hp": 733.646, + "pump_size_hp_calc": -999.0, + "pump_watthr_per_lb_calc": -999.0, "pump_work": 2.8136, + "pump_work_calc": -999.0, "pump_work_watthr_lb": 0.790968, "pumpwork_inj": 0.164323, + "pumpwork_inj_calc": -999.0, "pumpwork_prod": 0.626645, + "pumpwork_prod_calc": -999.0, "q_sby_frac": 0.2, "rate_escalation": [ 0.0 ], "real_discount_rate": 6.4, "reserves_interest": 1.75, + "reservoir_avg_temp_calc": -999.0, "reservoir_height": 100.0, "reservoir_model_inputs": [ [ @@ -19835,6 +19873,7 @@ ], "reservoir_model_inputs_shown": 0.0, "reservoir_permeability": 0.05, + "reservoir_pressure_calc": -999.0, "reservoir_pressure_change": 2500.0, "reservoir_pressure_change_type": 0.0, "reservoir_pressure_change_type_old_setting": 0.0, @@ -19846,6 +19885,7 @@ "rock_density": 2600.0, "rock_specific_heat": 950.0, "rock_thermal_conductivity": 3.0, + "sales_tax_cost_calc": -999.0, "sales_tax_rate": 5.0, "salvage_percentage": 0.0, "salvage_value": 0.0, @@ -19871,13 +19911,16 @@ "station_id": "258971", "steel_ppi": 1.12883, "step": 3600.0, + "stim_cost_per_well_calc": -999.0, "stim_success_rate": 0.0, + "stim_total_cost_calc": -999.0, "stimulation_type": 0.0, "subsurface_water_loss": 2.0, + "sum_prod_inj_total_cost_calc": -999.0, "system_capacity": 32813.6, - "system_recapitalization_cost": 86841500.0, + "system_capacity_calc": -999.0, + "system_recapitalization_cost_calc": -999.0, "system_use_lifetime_output": 1.0, - "system_use_recapitalization": 1.0, "tax_investor_equity_percent": 98.0, "tax_investor_postflip_cash_percent": 10.0, "tax_investor_postflip_tax_percent": 10.0, @@ -19888,13 +19931,24 @@ "term_int_rate": 7.0, "term_tenor": 18.0, "tod_library": "Uniform Dispatch", + "total_capital_cost_calc": -999.0, "total_direct_cost": 162982000.0, + "total_direct_cost_calc": -999.0, + "total_drilling_cost_calc": -999.0, + "total_drilling_cost_used_calc": -999.0, + "total_gathering_cost_calc": -999.0, "total_getem_om_cost": 42468700.0, + "total_getem_om_cost_calc": -999.0, "total_indirect_cost": 31781500.0, "total_installed_cost": 194764000.0, + "total_installed_cost_calc": -999.0, + "total_plant_cost_calc": -999.0, + "total_plant_cost_used_calc": -999.0, + "total_pump_cost_calc": -999.0, + "total_pump_gathering_cost_used_calc": -999.0, + "total_surface_equipment_cost_calc": -999.0, "turbine_ppi": 0.88285, "tz": -8.0, - "ui_calculations_only": 0.0, "ui_electricity_rate_option": 0.0, "ui_step_minutes": 60.0, "ui_wacc": 7.10145, diff --git a/deploy/runtime/defaults/Geothermal Power_Sale Leaseback.json b/deploy/runtime/defaults/Geothermal Power_Sale Leaseback.json index fe59752f84..a49562fd0b 100644 --- a/deploy/runtime/defaults/Geothermal Power_Sale Leaseback.json +++ b/deploy/runtime/defaults/Geothermal Power_Sale Leaseback.json @@ -1,6 +1,5 @@ { "CT": 3.0, - "HTF": 3.0, "P_boil": 2.0, "P_cond_min": 1.25, "P_cond_ratio": 1.0028, @@ -42,9 +41,10 @@ "annual_tdry": 24.0951, "annual_twet": NaN, "annual_wspd": 2.28094, - "baseline_cost": 0.0, + "baseline_cost_calc": -999.0, "batt_salvage_percentage": 0.0, "batt_salvage_value": 0.0, + "bottom_hole_pressure_calc": -999.0, "casing_size": 9.625, "cbi_fed_amount": 0.0, "cbi_fed_deprbas_fed": 0.0, @@ -72,6 +72,8 @@ "cbi_uti_tax_sta": 1.0, "chk_update_peaks": 0.0, "city": "-", + "conf_drilling_cost_calc": -999.0, + "conf_total_cost_calc": -999.0, "const_per_interest1": 12659600.0, "const_per_interest2": 8180080.0, "const_per_interest3": 0.0, @@ -116,7 +118,9 @@ "const_per_upfront_rate4": 0.0, "const_per_upfront_rate5": 0.0, "construction_financing_cost": 23955900.0, + "construction_financing_cost_calc": -999.0, "construction_ppi": 0.790556, + "contingency_cost_calc": -999.0, "conversion_subtype": 0.0, "conversion_type": 0.0, "cost_dev_fee_percent": 3.0, @@ -127,9 +131,6 @@ "country": "-", "dT_cw_ref": 10.0, "decline_type": 0.0, - "degradation": [ - 0.0 - ], "delta_pressure_equip": 40.0, "depr_alloc_custom_percent": 0.0, "depr_alloc_macrs_15_percent": 1.5, @@ -175,6 +176,7 @@ "depr_itc_sta_sl_5": 0.0, "depr_stabas_method": 1.0, "design_temp": 200.0, + "design_temp_calc": -999.0, "dispatch_data_filename": "", "dispatch_factors_ts": [ 0.7, @@ -9585,6 +9587,7 @@ "en_electricity_rates": 0.0, "enable_interconnection_limit": 0.0, "engineering_ppi": 0.77988, + "epc_total_cost_calc": -999.0, "equip1_reserve_cost": 0.0, "equip1_reserve_freq": 12.0, "equip2_reserve_cost": 0.0, @@ -9595,11 +9598,15 @@ "equip_reserve_depr_sta": 0.0, "eta_ref": 0.17, "excess_pressure_pump": 50.0, + "expl_cost_per_well_calc": -999.0, + "expl_drilling_cost_calc": -999.0, + "expl_total_cost_calc": -999.0, "exploration_wells_production": 2.0, "failed_prod_flow_ratio": 0.3, "federal_tax_rate": [ 21.0 ], + "field_gathering_num_wells_calc": -999.0, "file_name": "blythe_ca_33.617773_-114.588261_psmv3_60_tmy.csv", "flip_target_percent": 15.0, "flip_target_year": 20.0, @@ -9611,6 +9618,7 @@ "gen": [ 0.0 ], + "geo_financial_model": -999.0, "geopowerblock.pwrb.condenser_type": 2.0, "geopowerblock.pwrb.model_name": "0", "geotherm.avg_reservoir_temp": 200.0, @@ -9636,7 +9644,6 @@ "geotherm.cost.drilling.amount_specified": 0.0, "geotherm.cost.drilling.calc": 1.0, "geotherm.cost.epc.fixed": 0.0, - "geotherm.cost.epc.nonfixed": 19557900.0, "geotherm.cost.epc.percent": 12.0, "geotherm.cost.epc.total": 19557900.0, "geotherm.cost.expl_drill": 2155280.0, @@ -9657,7 +9664,6 @@ "geotherm.cost.inj_pump_cost_per_pump": 0.0, "geotherm.cost.inj_wells_drilled": 2.65853, "geotherm.cost.installed_per_capacity": 6492.13, - "geotherm.cost.num_pumps": 4.07451, "geotherm.cost.other_per_pump": 10000.0, "geotherm.cost.plant": 100000.0, "geotherm.cost.plant_auto_estimate": 0.0, @@ -9671,7 +9677,6 @@ "geotherm.cost.plant_total.amount_specified": 0.0, "geotherm.cost.plant_total.calc": 1.0, "geotherm.cost.plm.fixed": 0.0, - "geotherm.cost.plm.nonfixed": 5704380.0, "geotherm.cost.plm.percent": 3.5, "geotherm.cost.plm.total": 5704380.0, "geotherm.cost.prod_cost_curve": 0.0, @@ -9716,7 +9721,6 @@ "geotherm.cost.surf_num_wells": 7.57257, "geotherm.cost.surf_per_well": 125000.0, "geotherm.cost.surf_total": 946571.0, - "geotherm.cost.total_installed_millions": 194.764, "geotherm.cost.total_surface_equipment_cost": 0.0, "geotherm.default_input": 0.0, "geotherm.delta_pressure_reservoir": 349.212, @@ -9739,8 +9743,6 @@ "geotherm.resource_type": 0.0, "geotherm.resource_type_name": "0", "geotherm.temp_gradient": 0.0, - "geotherm.total_flow_gpm": 7112.86, - "geotherm.total_flow_kg_per_s": 448.196, "geothermal_analysis_period": 25.0, "grid_curtailment": [ 1e38, @@ -18505,7 +18507,9 @@ 1e38 ], "grid_interconnection_limit_kwac": 100000.0, - "gross_output": 32.8136, + "gross_cost_output_calc": -999.0, + "gross_output_calc": -999.0, + "gross_output_ui": 0.0, "hc_ctl1": 0.0, "hc_ctl2": 0.0, "hc_ctl3": 0.0, @@ -18567,17 +18571,27 @@ "in_location_options": 0.0, "in_nsrdb_options": 0.0, "in_time_step": 0.0, + "indirect_cost_calc": -999.0, "indirect_pump_cost": 0.0, + "indirect_pump_cost_calc": -999.0, "inflation_rate": 2.5, "inj_num_pumps": 1.0, + "inj_num_pumps_calc": -999.0, "inj_prod_well_distance": 1500.0, "inj_pump_cost": 210484.0, + "inj_pump_cost_calc": -999.0, + "inj_pump_cost_per_pump_calc": -999.0, "inj_pump_hp": 681.937, + "inj_pump_hp_calc": -999.0, + "inj_total_cost_calc": -999.0, + "inj_well_cost_calc": -999.0, "inj_well_diam": 12.25, "injectivity_index": 3000.0, + "installed_cost_per_kW_calc": -999.0, "insurance_rate": 0.5, "is_advanced": 0.0, "is_btm": 0.0, + "is_success_auto_exec": -999.0, "itc_fed_amount": [ 0.0 ], @@ -19255,11 +19269,18 @@ "months_receivables_reserve": 0.0, "months_working_reserve": 6.0, "nameplate": 30000.0, + "net_plant_output_calc": -999.0, "nominal_discount_rate": 9.06, + "num_confirm_wells_to_production_calc": -999.0, "num_fractures": 6.0, "num_wells": 3.0, + "num_wells_calc": -999.0, "num_wells_getem": 4.07451, "num_wells_getem_inj": 2.65853, + "num_wells_getem_inj_calc": -999.0, + "num_wells_getem_inj_drilled_calc": -999.0, + "num_wells_getem_prod_drilled_calc": -999.0, + "num_wells_getem_prod_inj_sum_calc": -999.0, "om_capacity": [ 175.0 ], @@ -19305,7 +19326,10 @@ "pbi_uti_tax_fed": 1.0, "pbi_uti_tax_sta": 1.0, "pbi_uti_term": 0.0, + "piping_cost_per_well_calc": -999.0, + "plant_brine_eff_calc": -999.0, "plant_efficiency_input": 80.0, + "plm_total_cost_calc": -999.0, "ppa_escalation": 1.0, "ppa_multiplier_model": 0.0, "ppa_price_input": [ @@ -19314,8 +19338,13 @@ "ppa_soln_mode": 1.0, "ppi_base_year": 0.0, "process_equip_ppi": 0.884044, + "prod_inj_total_cost_calc": -999.0, "prod_pump_cost": 616742.0, + "prod_pump_cost_calc": -999.0, + "prod_pump_cost_per_well_calc": -999.0, + "prod_total_cost_calc": -999.0, "prod_well_choice": 0.0, + "prod_well_cost_calc": -999.0, "prop_tax_assessed_decline": 0.0, "prop_tax_cost_assessed_percent": 100.0, "property_assessed_value": 194764000.0, @@ -19331,20 +19360,29 @@ "ptc_sta_escal": 0.0, "ptc_sta_term": 10.0, "pump_casing_total_cost": 37532200.0, + "pump_cost_install_calc": -999.0, "pump_depth": 1123.12, + "pump_depth_ft_calc": -999.0, "pump_efficiency": 67.5, + "pump_only_cost_calc": -999.0, "pump_ppi": 0.853394, "pump_size_hp": 733.646, + "pump_size_hp_calc": -999.0, + "pump_watthr_per_lb_calc": -999.0, "pump_work": 2.8136, + "pump_work_calc": -999.0, "pump_work_watthr_lb": 0.790968, "pumpwork_inj": 0.164323, + "pumpwork_inj_calc": -999.0, "pumpwork_prod": 0.626645, + "pumpwork_prod_calc": -999.0, "q_sby_frac": 0.2, "rate_escalation": [ 0.0 ], "real_discount_rate": 6.4, "reserves_interest": 1.75, + "reservoir_avg_temp_calc": -999.0, "reservoir_height": 100.0, "reservoir_model_inputs": [ [ @@ -19820,6 +19858,7 @@ ], "reservoir_model_inputs_shown": 0.0, "reservoir_permeability": 0.05, + "reservoir_pressure_calc": -999.0, "reservoir_pressure_change": 2500.0, "reservoir_pressure_change_type": 0.0, "reservoir_pressure_change_type_old_setting": 0.0, @@ -19832,6 +19871,7 @@ "rock_specific_heat": 950.0, "rock_thermal_conductivity": 3.0, "sale_leaseback_message": "", + "sales_tax_cost_calc": -999.0, "sales_tax_rate": 5.0, "salvage_percentage": 0.0, "salvage_value": 0.0, @@ -19859,24 +19899,38 @@ "station_id": "258971", "steel_ppi": 1.12883, "step": 3600.0, + "stim_cost_per_well_calc": -999.0, "stim_success_rate": 0.0, + "stim_total_cost_calc": -999.0, "stimulation_type": 0.0, "subsurface_water_loss": 2.0, + "sum_prod_inj_total_cost_calc": -999.0, "system_capacity": 32813.6, - "system_recapitalization_cost": 86841500.0, + "system_capacity_calc": -999.0, + "system_recapitalization_cost_calc": -999.0, "system_use_lifetime_output": 1.0, - "system_use_recapitalization": 1.0, "tax_investor_required_lease_reserve": 6.0, "temp_decline_max": 30.0, "temp_decline_rate": 0.5, "tod_library": "Uniform Dispatch", + "total_capital_cost_calc": -999.0, "total_direct_cost": 162982000.0, + "total_direct_cost_calc": -999.0, + "total_drilling_cost_calc": -999.0, + "total_drilling_cost_used_calc": -999.0, + "total_gathering_cost_calc": -999.0, "total_getem_om_cost": 42468700.0, + "total_getem_om_cost_calc": -999.0, "total_indirect_cost": 31781500.0, "total_installed_cost": 194764000.0, + "total_installed_cost_calc": -999.0, + "total_plant_cost_calc": -999.0, + "total_plant_cost_used_calc": -999.0, + "total_pump_cost_calc": -999.0, + "total_pump_gathering_cost_used_calc": -999.0, + "total_surface_equipment_cost_calc": -999.0, "turbine_ppi": 0.88285, "tz": -8.0, - "ui_calculations_only": 0.0, "ui_electricity_rate_option": 0.0, "ui_step_minutes": 60.0, "ur_annual_min_charge": 0.0, diff --git a/deploy/runtime/defaults/Geothermal Power_Single Owner.json b/deploy/runtime/defaults/Geothermal Power_Single Owner.json index c805ae0f24..f4019d37bb 100644 --- a/deploy/runtime/defaults/Geothermal Power_Single Owner.json +++ b/deploy/runtime/defaults/Geothermal Power_Single Owner.json @@ -1,6 +1,5 @@ { "CT": 3.0, - "HTF": 3.0, "P_boil": 2.0, "P_cond_min": 1.25, "P_cond_ratio": 1.0028, @@ -42,9 +41,10 @@ "annual_tdry": 5.47658, "annual_twet": 2.88032, "annual_wspd": 5.37725, - "baseline_cost": 2614.277065794077, + "baseline_cost_calc": -999.0, "batt_salvage_percentage": 0.0, "batt_salvage_value": 0.0, + "bottom_hole_pressure_calc": -999.0, "casing_size": 9.625, "cbi_fed_amount": 0.0, "cbi_fed_deprbas_fed": 0.0, @@ -72,6 +72,8 @@ "cbi_uti_tax_sta": 1.0, "chk_update_peaks": 0.0, "city": "Fargo", + "conf_drilling_cost_calc": -999.0, + "conf_total_cost_calc": -999.0, "const_per_interest1": 16198939.718852409, "const_per_interest2": 10467007.202950789, "const_per_interest3": 0.0, @@ -116,7 +118,9 @@ "const_per_upfront_rate4": 0.0, "const_per_upfront_rate5": 0.0, "construction_financing_cost": 30653378.23721302, + "construction_financing_cost_calc": -999.0, "construction_ppi": 1.858, + "contingency_cost_calc": -999.0, "conversion_subtype": 0.0, "conversion_type": 0.0, "cost_debt_closing": 0.0, @@ -138,9 +142,6 @@ "debt_option": 1.0, "debt_percent": 50.0, "decline_type": 0.0, - "degradation": [ - 0.0 - ], "delta_pressure_equip": 40.0, "depr_alloc_custom_percent": 0.0, "depr_alloc_macrs_15_percent": 1.5, @@ -186,6 +187,7 @@ "depr_itc_sta_sl_5": 0.0, "depr_stabas_method": 1.0, "design_temp": 200.0, + "design_temp_calc": -999.0, "dispatch_data_filename": "", "dispatch_factors_ts": [ 0.7, @@ -9605,6 +9607,7 @@ 100.0 ], "engineering_ppi": 1.781, + "epc_total_cost_calc": -999.0, "equip1_reserve_cost": 0.0, "equip1_reserve_freq": 12.0, "equip2_reserve_cost": 0.0, @@ -9615,11 +9618,15 @@ "equip_reserve_depr_sta": 0.0, "eta_ref": 0.17, "excess_pressure_pump": 50.0, + "expl_cost_per_well_calc": -999.0, + "expl_drilling_cost_calc": -999.0, + "expl_total_cost_calc": -999.0, "exploration_wells_production": 1.5, "failed_prod_flow_ratio": 0.3, "federal_tax_rate": [ 21.0 ], + "field_gathering_num_wells_calc": -999.0, "file_name": "fargo_nd_46.9_-96.8_mts1_60_tmy.csv", "flip_target_percent": 15.0, "flip_target_year": 20.0, @@ -9631,6 +9638,7 @@ "gen": [ 0.0 ], + "geo_financial_model": -999.0, "geopowerblock.pwrb.condenser_type": 2.0, "geopowerblock.pwrb.model_name": "0", "geotherm.avg_reservoir_temp": 200.0, @@ -9656,7 +9664,6 @@ "geotherm.cost.drilling.amount_specified": 0.0, "geotherm.cost.drilling.calc": 1.0, "geotherm.cost.epc.fixed": 0.0, - "geotherm.cost.epc.nonfixed": 25025719.55278132, "geotherm.cost.epc.percent": 12.0, "geotherm.cost.epc.total": 25025719.55278132, "geotherm.cost.expl_drill": 2155281.0782000005, @@ -9677,7 +9684,6 @@ "geotherm.cost.inj_pump_cost_per_pump": 374563.0804755154, "geotherm.cost.inj_wells_drilled": 4.304371629526051, "geotherm.cost.installed_per_capacity": 6230.361430327836, - "geotherm.cost.num_pumps": 5.559196504166177, "geotherm.cost.other_per_pump": 10000.0, "geotherm.cost.plant": 100000.0, "geotherm.cost.plant_auto_estimate": 1.0, @@ -9691,7 +9697,6 @@ "geotherm.cost.plant_total.amount_specified": 0.0, "geotherm.cost.plant_total.calc": 1.0, "geotherm.cost.plm.fixed": 0.0, - "geotherm.cost.plm.nonfixed": 7299168.202894551, "geotherm.cost.plm.percent": 3.5, "geotherm.cost.plm.total": 7299168.202894551, "geotherm.cost.prod_cost_curve": 0.0, @@ -9736,7 +9741,6 @@ "geotherm.cost.surf_num_wells": 11.145419661323653, "geotherm.cost.surf_per_well": 783470.0945377008, "geotherm.cost.surf_total": 8732102.995719592, - "geotherm.cost.total_installed_millions": 249.214457213114, "geotherm.cost.total_surface_equipment_cost": 9895495.923676545, "geotherm.default_input": 0.0, "geotherm.delta_pressure_reservoir": 349.211808, @@ -9759,8 +9763,6 @@ "geotherm.resource_type": 0.0, "geotherm.resource_type_name": "0", "geotherm.temp_gradient": 0.0, - "geotherm.total_flow_gpm": 9704.689337322896, - "geotherm.total_flow_kg_per_s": 611.5116154582795, "geothermal_analysis_period": 30.0, "grid_curtailment": [ 1e38, @@ -18529,7 +18531,9 @@ ], "grid_curtailment_price_esc": 0.0, "grid_interconnection_limit_kwac": 100000.0, - "gross_output": 45.1061880822694, + "gross_cost_output_calc": -999.0, + "gross_output_calc": -999.0, + "gross_output_ui": 0.0, "hc_ctl1": 0.0, "hc_ctl2": 0.0, "hc_ctl3": 0.0, @@ -18591,17 +18595,27 @@ "in_location_options": 0.0, "in_nsrdb_options": 0.0, "in_time_step": 0.0, + "indirect_cost_calc": -999.0, "indirect_pump_cost": 1632689.5093578906, + "indirect_pump_cost_calc": -999.0, "inflation_rate": 2.5, "inj_num_pumps": 2.0, + "inj_num_pumps_calc": -999.0, "inj_prod_well_distance": 1500.0, "inj_pump_cost": 1163392.9279569509, + "inj_pump_cost_calc": -999.0, + "inj_pump_cost_per_pump_calc": -999.0, "inj_pump_hp": 2769.0304554875876, + "inj_pump_hp_calc": -999.0, + "inj_total_cost_calc": -999.0, + "inj_well_cost_calc": -999.0, "inj_well_diam": 12.25, "injectivity_index": 3000.0, + "installed_cost_per_kW_calc": -999.0, "insurance_rate": 0.5, "is_advanced": 0.0, "is_btm": 0.0, + "is_success_auto_exec": -999.0, "itc_fed_amount": [ 0.0 ], @@ -19280,6 +19294,7 @@ "months_receivables_reserve": 0.0, "months_working_reserve": 6.0, "nameplate": 40000.0, + "net_plant_output_calc": -999.0, "nominal_discount_rate": 9.060000000000004, "non_energy_expenses": [ 0.0 @@ -19296,10 +19311,16 @@ "non_energy_revenue_ret": [ 0.0 ], + "num_confirm_wells_to_production_calc": -999.0, "num_fractures": 6.0, "num_wells": 3.0, + "num_wells_calc": -999.0, "num_wells_getem": 5.559196504166177, "num_wells_getem_inj": 3.271322438439798, + "num_wells_getem_inj_calc": -999.0, + "num_wells_getem_inj_drilled_calc": -999.0, + "num_wells_getem_prod_drilled_calc": -999.0, + "num_wells_getem_prod_inj_sum_calc": -999.0, "om_capacity": [ 0.0 ], @@ -19346,7 +19367,10 @@ "pbi_uti_tax_fed": 1.0, "pbi_uti_tax_sta": 1.0, "pbi_uti_term": 0.0, + "piping_cost_per_well_calc": -999.0, + "plant_brine_eff_calc": -999.0, "plant_efficiency_input": 80.6, + "plm_total_cost_calc": -999.0, "ppa_escalation": 1.0, "ppa_multiplier_model": 0.0, "ppa_price_input": [ @@ -19355,8 +19379,13 @@ "ppa_soln_mode": 1.0, "ppi_base_year": 27.0, "process_equip_ppi": 2.184, + "prod_inj_total_cost_calc": -999.0, "prod_pump_cost": 2077560.4782813136, + "prod_pump_cost_calc": -999.0, + "prod_pump_cost_per_well_calc": -999.0, + "prod_total_cost_calc": -999.0, "prod_well_choice": 0.0, + "prod_well_cost_calc": -999.0, "prop_tax_assessed_decline": 0.0, "prop_tax_cost_assessed_percent": 100.0, "property_assessed_value": 249214457.21311397, @@ -19372,20 +19401,29 @@ "ptc_sta_escal": 0.0, "ptc_sta_term": 10.0, "pump_casing_total_cost": 310559.0, + "pump_cost_install_calc": -999.0, "pump_depth": 1123.1203058328284, + "pump_depth_ft_calc": -999.0, "pump_efficiency": 67.5, + "pump_only_cost_calc": -999.0, "pump_ppi": 1.553, "pump_size_hp": 733.6462176201694, + "pump_size_hp_calc": -999.0, + "pump_watthr_per_lb_calc": -999.0, "pump_work": 5.1061880822693139, + "pump_work_calc": -999.0, "pump_work_watthr_lb": 1.0520971719066164, "pumpwork_inj": 0.4254523443274618, + "pumpwork_inj_calc": -999.0, "pumpwork_prod": 0.6266448275791545, + "pumpwork_prod_calc": -999.0, "q_sby_frac": 0.2, "rate_escalation": [ 0.0 ], "real_discount_rate": 6.4, "reserves_interest": 1.75, + "reservoir_avg_temp_calc": -999.0, "reservoir_height": 100.0, "reservoir_model_inputs": [ [ @@ -19861,6 +19899,7 @@ ], "reservoir_model_inputs_shown": 0.0, "reservoir_permeability": 0.05, + "reservoir_pressure_calc": -999.0, "reservoir_pressure_change": 2500.0, "reservoir_pressure_change_type": 0.0, "reservoir_pressure_change_type_old_setting": 0.0, @@ -19875,6 +19914,7 @@ "rock_density": 2600.0, "rock_specific_heat": 950.0, "rock_thermal_conductivity": 3.0, + "sales_tax_cost_calc": -999.0, "sales_tax_rate": 5.0, "salvage_percentage": 0.0, "salvage_value": 0.0, @@ -19900,25 +19940,39 @@ "station_id": "14914", "steel_ppi": 3.335, "step": 3600.0, + "stim_cost_per_well_calc": -999.0, "stim_success_rate": 0.0, + "stim_total_cost_calc": -999.0, "stimulation_type": 0.0, "subsurface_water_loss": 2.0, + "sum_prod_inj_total_cost_calc": -999.0, "system_capacity": 45106.1880822694, - "system_recapitalization_cost": 63985255.8584695, + "system_capacity_calc": -999.0, + "system_recapitalization_cost_calc": -999.0, "system_use_lifetime_output": 1.0, - "system_use_recapitalization": 1.0, "temp_decline_max": 30.0, "temp_decline_rate": 0.5, "term_int_rate": 7.0, "term_tenor": 18.0, "tod_library": "Uniform Dispatch", + "total_capital_cost_calc": -999.0, "total_direct_cost": 208547662.9398443, + "total_direct_cost_calc": -999.0, + "total_drilling_cost_calc": -999.0, + "total_drilling_cost_used_calc": -999.0, + "total_gathering_cost_calc": -999.0, "total_getem_om_cost": 8117304.259737534, + "total_getem_om_cost_calc": -999.0, "total_indirect_cost": 40666794.27326964, "total_installed_cost": 249214457.21311397, + "total_installed_cost_calc": -999.0, + "total_plant_cost_calc": -999.0, + "total_plant_cost_used_calc": -999.0, + "total_pump_cost_calc": -999.0, + "total_pump_gathering_cost_used_calc": -999.0, + "total_surface_equipment_cost_calc": -999.0, "turbine_ppi": 1.541, "tz": -6.0, - "ui_calculations_only": 0.0, "ui_electricity_rate_option": 0.0, "ui_step_minutes": 60.0, "ui_system_nameplate_standalone": 0.0, From 87f00ccf4b3c73b23b0e4b6c0958b5a586a69ac6 Mon Sep 17 00:00:00 2001 From: tyneises Date: Sat, 6 Jun 2026 22:34:53 -0500 Subject: [PATCH 67/74] update defualts for geothermal merchant plant --- .../Geothermal Power_Merchant Plant.json | 84 +++++++++++++++---- 1 file changed, 69 insertions(+), 15 deletions(-) diff --git a/deploy/runtime/defaults/Geothermal Power_Merchant Plant.json b/deploy/runtime/defaults/Geothermal Power_Merchant Plant.json index 82d3cc64c5..6df8e9aca7 100644 --- a/deploy/runtime/defaults/Geothermal Power_Merchant Plant.json +++ b/deploy/runtime/defaults/Geothermal Power_Merchant Plant.json @@ -1,6 +1,5 @@ { "CT": 3.0, - "HTF": 3.0, "P_boil": 2.0, "P_cond_min": 1.25, "P_cond_ratio": 1.0028, @@ -42,9 +41,10 @@ "annual_tdry": 16.9747, "annual_twet": NaN, "annual_wspd": 2.26213, - "baseline_cost": 0.0, + "baseline_cost_calc": -999.0, "batt_salvage_percentage": 0.0, "batt_salvage_value": 0.0, + "bottom_hole_pressure_calc": -999.0, "cambium_escalation": 0.0, "cambium_location": "CAISO", "cambium_location_type": "GEA Regions 2023", @@ -80,6 +80,8 @@ "cbi_uti_tax_sta": 1.0, "chk_update_peaks": 0.0, "city": "-", + "conf_drilling_cost_calc": -999.0, + "conf_total_cost_calc": -999.0, "const_per_interest1": 12659600.0, "const_per_interest2": 8180080.0, "const_per_interest3": 0.0, @@ -124,7 +126,9 @@ "const_per_upfront_rate4": 0.0, "const_per_upfront_rate5": 0.0, "construction_financing_cost": 23955900.0, + "construction_financing_cost_calc": -999.0, "construction_ppi": 0.790556, + "contingency_cost_calc": -999.0, "conversion_subtype": 0.0, "conversion_type": 0.0, "cost_debt_closing": 0.0, @@ -146,9 +150,6 @@ "debt_option": 1.0, "debt_percent": 50.0, "decline_type": 0.0, - "degradation": [ - 0.0 - ], "delta_pressure_equip": 40.0, "depr_alloc_custom_percent": 0.0, "depr_alloc_macrs_15_percent": 1.5, @@ -194,6 +195,7 @@ "depr_itc_sta_sl_5": 0.0, "depr_stabas_method": 1.0, "design_temp": 200.0, + "design_temp_calc": -999.0, "drilling_ppi": 0.319, "drilling_success_rate": 76.0, "dscr": 1.45, @@ -205,6 +207,7 @@ "en_electricity_rates": 0.0, "enable_interconnection_limit": 0.0, "engineering_ppi": 0.77988, + "epc_total_cost_calc": -999.0, "equip1_reserve_cost": 0.0, "equip1_reserve_freq": 12.0, "equip2_reserve_cost": 0.0, @@ -215,11 +218,15 @@ "equip_reserve_depr_sta": 0.0, "eta_ref": 0.17, "excess_pressure_pump": 50.0, + "expl_cost_per_well_calc": -999.0, + "expl_drilling_cost_calc": -999.0, + "expl_total_cost_calc": -999.0, "exploration_wells_production": 2.0, "failed_prod_flow_ratio": 0.3, "federal_tax_rate": [ 21.0 ], + "field_gathering_num_wells_calc": -999.0, "file_name": "daggett_ca_34.865371_-116.783023_psmv3_60_tmy.csv", "forecast_price_signal_model": 1.0, "fracture_angle": 15.0, @@ -230,6 +237,7 @@ "gen": [ 0.0 ], + "geo_financial_model": -999.0, "geopowerblock.pwrb.condenser_type": 2.0, "geopowerblock.pwrb.model_name": "0", "geotherm.avg_reservoir_temp": 200.0, @@ -255,7 +263,6 @@ "geotherm.cost.drilling.amount_specified": 0.0, "geotherm.cost.drilling.calc": 1.0, "geotherm.cost.epc.fixed": 0.0, - "geotherm.cost.epc.nonfixed": 19557900.0, "geotherm.cost.epc.percent": 12.0, "geotherm.cost.epc.total": 19557900.0, "geotherm.cost.expl_drill": 2155280.0, @@ -276,7 +283,6 @@ "geotherm.cost.inj_pump_cost_per_pump": 0.0, "geotherm.cost.inj_wells_drilled": 2.65853, "geotherm.cost.installed_per_capacity": 6492.13, - "geotherm.cost.num_pumps": 4.07451, "geotherm.cost.other_per_pump": 10000.0, "geotherm.cost.plant": 100000.0, "geotherm.cost.plant_auto_estimate": 0.0, @@ -290,7 +296,6 @@ "geotherm.cost.plant_total.amount_specified": 0.0, "geotherm.cost.plant_total.calc": 1.0, "geotherm.cost.plm.fixed": 0.0, - "geotherm.cost.plm.nonfixed": 5704380.0, "geotherm.cost.plm.percent": 3.5, "geotherm.cost.plm.total": 5704380.0, "geotherm.cost.prod_cost_curve": 0.0, @@ -335,7 +340,6 @@ "geotherm.cost.surf_num_wells": 7.57257, "geotherm.cost.surf_per_well": 125000.0, "geotherm.cost.surf_total": 946571.0, - "geotherm.cost.total_installed_millions": 194.764, "geotherm.cost.total_surface_equipment_cost": 0.0, "geotherm.default_input": 0.0, "geotherm.delta_pressure_reservoir": 349.212, @@ -358,8 +362,6 @@ "geotherm.resource_type": 0.0, "geotherm.resource_type_name": "0", "geotherm.temp_gradient": 0.0, - "geotherm.total_flow_gpm": 7112.86, - "geotherm.total_flow_kg_per_s": 448.196, "geothermal_analysis_period": 25.0, "grid_curtailment": [ 1e38, @@ -9124,7 +9126,9 @@ 1e38 ], "grid_interconnection_limit_kwac": 100000.0, - "gross_output": 32.8136, + "gross_cost_output_calc": -999.0, + "gross_output_calc": -999.0, + "gross_output_ui": 0.0, "hc_ctl1": 0.0, "hc_ctl2": 0.0, "hc_ctl3": 0.0, @@ -9186,17 +9190,27 @@ "in_location_options": 0.0, "in_nsrdb_options": 0.0, "in_time_step": 0.0, + "indirect_cost_calc": -999.0, "indirect_pump_cost": 0.0, + "indirect_pump_cost_calc": -999.0, "inflation_rate": 2.5, "inj_num_pumps": 1.0, + "inj_num_pumps_calc": -999.0, "inj_prod_well_distance": 1500.0, "inj_pump_cost": 210484.0, + "inj_pump_cost_calc": -999.0, + "inj_pump_cost_per_pump_calc": -999.0, "inj_pump_hp": 681.937, + "inj_pump_hp_calc": -999.0, + "inj_total_cost_calc": -999.0, + "inj_well_cost_calc": -999.0, "inj_well_diam": 12.25, "injectivity_index": 3000.0, + "installed_cost_per_kW_calc": -999.0, "insurance_rate": 0.5, "is_advanced": 0.0, "is_btm": 0.0, + "is_success_auto_exec": -999.0, "itc_fed_amount": [ 0.0 ], @@ -666361,11 +666375,18 @@ "mp_error_msg": "", "mp_market_percent_gen": 100.0, "nameplate": 30000.0, + "net_plant_output_calc": -999.0, "nominal_discount_rate": 9.06, + "num_confirm_wells_to_production_calc": -999.0, "num_fractures": 6.0, "num_wells": 3.0, + "num_wells_calc": -999.0, "num_wells_getem": 4.07451, "num_wells_getem_inj": 2.65853, + "num_wells_getem_inj_calc": -999.0, + "num_wells_getem_inj_drilled_calc": -999.0, + "num_wells_getem_prod_drilled_calc": -999.0, + "num_wells_getem_prod_inj_sum_calc": -999.0, "om_capacity": [ 175.0 ], @@ -666412,11 +666433,19 @@ "pbi_uti_tax_fed": 1.0, "pbi_uti_tax_sta": 1.0, "pbi_uti_term": 0.0, + "piping_cost_per_well_calc": -999.0, + "plant_brine_eff_calc": -999.0, "plant_efficiency_input": 80.0, + "plm_total_cost_calc": -999.0, "ppi_base_year": 0.0, "process_equip_ppi": 0.884044, + "prod_inj_total_cost_calc": -999.0, "prod_pump_cost": 616742.0, + "prod_pump_cost_calc": -999.0, + "prod_pump_cost_per_well_calc": -999.0, + "prod_total_cost_calc": -999.0, "prod_well_choice": 0.0, + "prod_well_cost_calc": -999.0, "prop_tax_assessed_decline": 0.0, "prop_tax_cost_assessed_percent": 100.0, "property_assessed_value": 194764000.0, @@ -666432,20 +666461,29 @@ "ptc_sta_escal": 0.0, "ptc_sta_term": 10.0, "pump_casing_total_cost": 37532200.0, + "pump_cost_install_calc": -999.0, "pump_depth": 1123.12, + "pump_depth_ft_calc": -999.0, "pump_efficiency": 67.5, + "pump_only_cost_calc": -999.0, "pump_ppi": 0.853394, "pump_size_hp": 733.646, + "pump_size_hp_calc": -999.0, + "pump_watthr_per_lb_calc": -999.0, "pump_work": 2.8136, + "pump_work_calc": -999.0, "pump_work_watthr_lb": 0.790968, "pumpwork_inj": 0.164323, + "pumpwork_inj_calc": -999.0, "pumpwork_prod": 0.626645, + "pumpwork_prod_calc": -999.0, "q_sby_frac": 0.2, "rate_escalation": [ 0.0 ], "real_discount_rate": 6.4, "reserves_interest": 1.75, + "reservoir_avg_temp_calc": -999.0, "reservoir_height": 100.0, "reservoir_model_inputs": [ [ @@ -666921,6 +666959,7 @@ ], "reservoir_model_inputs_shown": 0.0, "reservoir_permeability": 0.05, + "reservoir_pressure_calc": -999.0, "reservoir_pressure_change": 2500.0, "reservoir_pressure_change_type": 0.0, "reservoir_pressure_change_type_old_setting": 0.0, @@ -666933,6 +666972,7 @@ "rock_density": 2600.0, "rock_specific_heat": 950.0, "rock_thermal_conductivity": 3.0, + "sales_tax_cost_calc": -999.0, "sales_tax_rate": 5.0, "salvage_percentage": 0.0, "salvage_value": 0.0, @@ -666957,24 +666997,38 @@ "station_id": "91486", "steel_ppi": 1.12883, "step": 3600.0, + "stim_cost_per_well_calc": -999.0, "stim_success_rate": 0.0, + "stim_total_cost_calc": -999.0, "stimulation_type": 0.0, "subsurface_water_loss": 2.0, + "sum_prod_inj_total_cost_calc": -999.0, "system_capacity": 32813.6, - "system_recapitalization_cost": 86841500.0, + "system_capacity_calc": -999.0, + "system_recapitalization_cost_calc": -999.0, "system_use_lifetime_output": 1.0, - "system_use_recapitalization": 1.0, "temp_decline_max": 30.0, "temp_decline_rate": 0.5, "term_int_rate": 7.0, "term_tenor": 18.0, + "total_capital_cost_calc": -999.0, "total_direct_cost": 162982000.0, + "total_direct_cost_calc": -999.0, + "total_drilling_cost_calc": -999.0, + "total_drilling_cost_used_calc": -999.0, + "total_gathering_cost_calc": -999.0, "total_getem_om_cost": 42468700.0, + "total_getem_om_cost_calc": -999.0, "total_indirect_cost": 31781500.0, "total_installed_cost": 194764000.0, + "total_installed_cost_calc": -999.0, + "total_plant_cost_calc": -999.0, + "total_plant_cost_used_calc": -999.0, + "total_pump_cost_calc": -999.0, + "total_pump_gathering_cost_used_calc": -999.0, + "total_surface_equipment_cost_calc": -999.0, "turbine_ppi": 0.88285, "tz": -8.0, - "ui_calculations_only": 0.0, "ui_electricity_rate_option": 0.0, "ui_step_minutes": 60.0, "ui_system_nameplate_standalone": 0.0, From 04818094f8c714181379fd7fbc91e79ea668fba0 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 8 Jun 2026 10:01:03 -0500 Subject: [PATCH 68/74] update geothermal lcoe to use auto exec updates --- .../Geothermal Power_LCOE Calculator.json | 111 +++++-- deploy/runtime/startup.lk | 6 +- ...inancial Construction Financing Input.json | 306 ++++++++++++++++++ .../ui/Financial LCOE Calc with Costs.json | 9 +- .../runtime/ui/Geothermal System Design.json | 9 +- 5 files changed, 414 insertions(+), 27 deletions(-) create mode 100644 deploy/runtime/ui/Financial Construction Financing Input.json diff --git a/deploy/runtime/defaults/Geothermal Power_LCOE Calculator.json b/deploy/runtime/defaults/Geothermal Power_LCOE Calculator.json index 34506605ba..99cf7d2ef8 100644 --- a/deploy/runtime/defaults/Geothermal Power_LCOE Calculator.json +++ b/deploy/runtime/defaults/Geothermal Power_LCOE Calculator.json @@ -1,6 +1,5 @@ { "CT": 3.0, - "HTF": 3.0, "P_boil": 2.0, "P_cond_min": 1.25, "P_cond_ratio": 1.0028, @@ -31,6 +30,7 @@ ], "allow_reservoir_replacements": 0.0, "ambient_pressure": 14.7, + "analysis_period": 1.0, "analysis_type": 0.0, "annual_albedo": NaN, "annual_beam": 7.92706, @@ -40,13 +40,15 @@ "annual_tdry": 24.0951, "annual_twet": NaN, "annual_wspd": 2.28094, - "baseline_cost": 0.0, + "baseline_cost_calc": -999.0, + "bottom_hole_pressure_calc": -999.0, "c_construction_cost": [ 40.0, 30.0, 20.0, 10.0 ], + "c_construction_duration": 0.0, "c_construction_interest": 6.5, "c_debt_percent": 60.0, "c_depreciation_schedule": [ @@ -62,30 +64,56 @@ "c_lifetime": 20.0, "c_nominal_interest_rate": 7.0, "c_tax_rate": 28.0, - "capital_cost": 187886000.0, "casing_size": 9.625, "city": "-", + "conf_drilling_cost_calc": -999.0, + "conf_total_cost_calc": -999.0, + "const_per_interest_rate1": -999.0, + "const_per_interest_rate2": -999.0, + "const_per_interest_rate3": -999.0, + "const_per_interest_rate4": -999.0, + "const_per_interest_rate5": -999.0, + "const_per_months1": -999.0, + "const_per_months2": -999.0, + "const_per_months3": -999.0, + "const_per_months4": -999.0, + "const_per_months5": -999.0, + "const_per_percent1": -999.0, + "const_per_percent2": -999.0, + "const_per_percent3": -999.0, + "const_per_percent4": -999.0, + "const_per_percent5": -999.0, + "const_per_upfront_rate1": -999.0, + "const_per_upfront_rate2": -999.0, + "const_per_upfront_rate3": -999.0, + "const_per_upfront_rate4": -999.0, + "const_per_upfront_rate5": -999.0, + "construction_financing_cost_calc": -999.0, "construction_ppi": 0.790556, + "contingency_cost_calc": -999.0, "conversion_subtype": 0.0, "conversion_type": 0.0, "country": "-", "dT_cw_ref": 10.0, "decline_type": 0.0, - "degradation": [ - 0.0 - ], "delta_pressure_equip": 40.0, "design_temp": 200.0, + "design_temp_calc": -999.0, "drilling_ppi": 0.319, "drilling_success_rate": 76.0, "dt_prod_well": 0.0, "elev": 82.0, "enable_interconnection_limit": 0.0, "engineering_ppi": 0.77988, + "epc_total_cost_calc": -999.0, "eta_ref": 0.17, "excess_pressure_pump": 50.0, + "expl_cost_per_well_calc": -999.0, + "expl_drilling_cost_calc": -999.0, + "expl_total_cost_calc": -999.0, "exploration_wells_production": 0.0, "failed_prod_flow_ratio": 0.3, + "field_gathering_num_wells_calc": -999.0, "file_name": "blythe_ca_33.617773_-114.588261_psmv3_60_tmy.csv", "fixed_charge_rate": 0.094089, "fixed_operating_cost": 6087700.0, @@ -97,6 +125,7 @@ "gen": [ 0.0 ], + "geo_financial_model": -999.0, "geopowerblock.pwrb.condenser_type": 2.0, "geopowerblock.pwrb.model_name": "0", "geotherm.avg_reservoir_temp": 200.0, @@ -122,7 +151,6 @@ "geotherm.cost.drilling.amount_specified": 0.0, "geotherm.cost.drilling.calc": 1.0, "geotherm.cost.epc.fixed": 0.0, - "geotherm.cost.epc.nonfixed": 25156300.0, "geotherm.cost.epc.percent": 16.0, "geotherm.cost.epc.total": 25156300.0, "geotherm.cost.expl_drill": 2155280.0, @@ -143,7 +171,6 @@ "geotherm.cost.inj_pump_cost_per_pump": 0.0, "geotherm.cost.inj_wells_drilled": 1.60277, "geotherm.cost.installed_per_capacity": 6262.87, - "geotherm.cost.num_pumps": 4.23155, "geotherm.cost.other_per_pump": 10000.0, "geotherm.cost.plant": 100000.0, "geotherm.cost.plant_auto_estimate": 0.0, @@ -157,7 +184,6 @@ "geotherm.cost.plant_total.amount_specified": 0.0, "geotherm.cost.plant_total.calc": 1.0, "geotherm.cost.plm.fixed": 0.0, - "geotherm.cost.plm.nonfixed": 5502940.0, "geotherm.cost.plm.percent": 3.5, "geotherm.cost.plm.total": 5502940.0, "geotherm.cost.prod_cost_curve": 0.0, @@ -202,7 +228,6 @@ "geotherm.cost.surf_num_wells": 6.34046, "geotherm.cost.surf_per_well": 125000.0, "geotherm.cost.surf_total": 792558.0, - "geotherm.cost.total_installed_millions": 187.886, "geotherm.cost.total_surface_equipment_cost": 0.0, "geotherm.default_input": 0.0, "geotherm.delta_pressure_reservoir": 349.212, @@ -225,8 +250,6 @@ "geotherm.resource_type": 0.0, "geotherm.resource_type_name": "0", "geotherm.temp_gradient": 0.0, - "geotherm.total_flow_gpm": 7387.02, - "geotherm.total_flow_kg_per_s": 465.471, "geothermal_analysis_period": 30.0, "grid_curtailment": [ 1e38, @@ -8991,7 +9014,9 @@ 1e38 ], "grid_interconnection_limit_kwac": 100000.0, - "gross_output": 34.0784, + "gross_cost_output_calc": -999.0, + "gross_output_calc": -999.0, + "gross_output_ui": 0.0, "hc_ctl1": 0.0, "hc_ctl2": 0.0, "hc_ctl3": 0.0, @@ -9009,40 +9034,74 @@ "in_location_options": 0.0, "in_nsrdb_options": 0.0, "in_time_step": 0.0, + "indirect_cost_calc": -999.0, "indirect_pump_cost": 0.0, + "indirect_pump_cost_calc": -999.0, "inj_num_pumps": 1.0, + "inj_num_pumps_calc": -999.0, "inj_prod_well_distance": 1500.0, "inj_pump_cost": 372124.0, + "inj_pump_cost_calc": -999.0, + "inj_pump_cost_per_pump_calc": -999.0, "inj_pump_hp": 1791.37, + "inj_pump_hp_calc": -999.0, + "inj_total_cost_calc": -999.0, + "inj_well_cost_calc": -999.0, "inj_well_diam": 12.25, "injectivity_index": 3000.0, + "installed_cost_per_kW_calc": -999.0, "is_advanced": 0.0, + "is_success_auto_exec": -999.0, "lat": 33.61, "library_folder_list": "x", "library_paths": "\"\"", "lon": -114.58, "model_choice": 0.0, "nameplate": 30000.0, + "net_plant_output_calc": -999.0, + "num_confirm_wells_to_production_calc": -999.0, "num_fractures": 6.0, "num_wells": 3.0, + "num_wells_calc": -999.0, "num_wells_getem": 4.23155, "num_wells_getem_inj": 1.60277, + "num_wells_getem_inj_calc": -999.0, + "num_wells_getem_inj_drilled_calc": -999.0, + "num_wells_getem_prod_drilled_calc": -999.0, + "num_wells_getem_prod_inj_sum_calc": -999.0, "pb_bd_frac": 0.013, + "piping_cost_per_well_calc": -999.0, + "plant_brine_eff_calc": -999.0, "plant_efficiency_input": 80.0, + "plm_total_cost_calc": -999.0, "ppi_base_year": 0.0, "process_equip_ppi": 0.884044, + "prod_inj_total_cost_calc": -999.0, "prod_pump_cost": 640514.0, + "prod_pump_cost_calc": -999.0, + "prod_pump_cost_per_well_calc": -999.0, + "prod_total_cost_calc": -999.0, "prod_well_choice": 0.0, + "prod_well_cost_calc": -999.0, "pump_casing_total_cost": 38978900.0, + "pump_cost_install_calc": -999.0, "pump_depth": 1123.12, + "pump_depth_ft_calc": -999.0, "pump_efficiency": 67.5, + "pump_only_cost_calc": -999.0, "pump_ppi": 0.853394, "pump_size_hp": 733.646, + "pump_size_hp_calc": -999.0, + "pump_watthr_per_lb_calc": -999.0, "pump_work": 4.07838, + "pump_work_calc": -999.0, "pump_work_watthr_lb": 1.10397, "pumpwork_inj": 0.47733, + "pumpwork_inj_calc": -999.0, "pumpwork_prod": 0.626645, + "pumpwork_prod_calc": -999.0, "q_sby_frac": 0.2, + "reservoir_avg_temp_calc": -999.0, "reservoir_height": 100.0, "reservoir_model_inputs": [ [ @@ -9518,6 +9577,7 @@ ], "reservoir_model_inputs_shown": 0.0, "reservoir_permeability": 0.05, + "reservoir_pressure_calc": -999.0, "reservoir_pressure_change": 2500.0, "reservoir_pressure_change_type": 0.0, "reservoir_pressure_change_type_old_setting": 0.0, @@ -9529,6 +9589,8 @@ "rock_density": 2600.0, "rock_specific_heat": 950.0, "rock_thermal_conductivity": 3.0, + "sales_tax_cost_calc": -999.0, + "sales_tax_rate": -999.0, "solar_data_file_name": "blythe_ca_33.617773_-114.588261_psmv3_60_tmy.csv", "solar_data_source": "NSRDB", "solar_resource": "blythe_ca_33.617773_-114.588261_psmv3_60_tmy", @@ -9541,32 +9603,45 @@ "station_id": "258971", "steel_ppi": 1.12883, "step": 3600.0, + "stim_cost_per_well_calc": -999.0, "stim_success_rate": 0.0, + "stim_total_cost_calc": -999.0, "stimulation_type": 0.0, "subsurface_water_loss": 2.0, + "sum_prod_inj_total_cost_calc": -999.0, "system_capacity": 34078.4, - "system_recapitalization_cost": 23000000.0, + "system_capacity_calc": -999.0, + "system_recapitalization_cost_calc": -999.0, "system_use_lifetime_output": 0.0, - "system_use_recapitalization": 1.0, "temp_decline_max": 30.0, "temp_decline_rate": 0.5, + "total_capital_cost_calc": -999.0, "total_direct_cost": 157227000.0, + "total_direct_cost_calc": -999.0, + "total_drilling_cost_calc": -999.0, + "total_drilling_cost_used_calc": -999.0, + "total_gathering_cost_calc": -999.0, + "total_getem_om_cost_calc": -999.0, "total_indirect_cost": 30659200.0, "total_installed_cost": 187886000.0, + "total_installed_cost_calc": -999.0, + "total_plant_cost_calc": -999.0, + "total_plant_cost_used_calc": -999.0, + "total_pump_cost_calc": -999.0, + "total_pump_gathering_cost_used_calc": -999.0, + "total_surface_equipment_cost_calc": -999.0, "turbine_ppi": 0.88285, "tz": -8.0, - "ui_calculations_only": 0.0, "ui_capital_cost_reference": 187886000.0, "ui_cfin": 1.03858, "ui_crf": 0.0842662, "ui_fcr_input_option": 1.0, "ui_fixed_charge_rate": 0.098, "ui_ireal": 0.0439024, - "ui_operating_cost_fixed": 6087700.0, + "ui_lbl_cff_msg": "", "ui_pfin": 1.07509, "ui_step_minutes": 60.0, "ui_system_capacity": 34078.4, - "ui_variable_operating_cost": 0.0, "ui_wacc": 0.0558439, "use_specific_weather_file": 0.0, "use_weather_file_conditions": 0.0, diff --git a/deploy/runtime/startup.lk b/deploy/runtime/startup.lk index 3ee62a7ad0..4e718e8c8b 100644 --- a/deploy/runtime/startup.lk +++ b/deploy/runtime/startup.lk @@ -1575,10 +1575,10 @@ setup_merchant_plant_pages(); setup_electricity_purchases(); setconfig( 'Geothermal Power', 'LCOE Calculator' ); -setmodules( ['geothermal', 'grid', 'lcoefcr']); +setmodules( ['geothermal', 'grid', 'lcoefcr_electricity']); setup_geothermal_power_pages(); -addpage( [[ 'Geothermal Costs' ]], { 'sidebar'='Installation Costs', 'help'='installation-costs/cc_geothermal' } ); -addpage( [[ 'Financial LCOE Calc with Capex Page']], { 'sidebar'='Financial Parameters', 'help'='financial-parameters/fin_lcoefcr'} ); +addpage( [[ 'Geothermal Costs', 'Financial Construction Financing Input' ]], { 'sidebar'='Installation Costs', 'help'='installation-costs/cc_geothermal' } ); +addpage( [[ 'Financial LCOE Calc with Costs']], { 'sidebar'='Financial Parameters', 'help'='financial-parameters/fin_lcoefcr'} ); setconfig( 'Geothermal Power', 'None' ); setmodules( ['geothermal', 'grid',]); diff --git a/deploy/runtime/ui/Financial Construction Financing Input.json b/deploy/runtime/ui/Financial Construction Financing Input.json new file mode 100644 index 0000000000..31a59ee2e3 --- /dev/null +++ b/deploy/runtime/ui/Financial Construction Financing Input.json @@ -0,0 +1,306 @@ +{ + "Name": "Financial Construction Financing Input", + "Width": 473.0, + "Height": 8.0, + "FormObjects": {}, + "VarDatabase": { + "analysis_period": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": 1.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_interest_rate1": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_interest_rate2": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_interest_rate3": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_interest_rate4": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_interest_rate5": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_months1": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_months2": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_months3": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_months4": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_months5": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_percent1": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_percent2": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_percent3": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_percent4": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_percent5": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_upfront_rate1": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_upfront_rate2": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_upfront_rate3": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_upfront_rate4": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "const_per_upfront_rate5": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "sales_tax_rate": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 0.0, + "DefaultValue": 0.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + } + }, + "Equations": [ + "// This page provides allows the UI to use auto exec\r", + "// for geothermal with the LCOE financial model\r", + "// As of 6.8.26, the var table checks required\r", + "// these variables although they are not used\r", + "// in the LCOE model\r", + "\r", + "// 'analysis_period' requires a non-negative input\r", + "// and is reset in the geothermal cmod for\r", + "// lcoe and no financial model cases" + ], + "Callbacks": [] +} \ No newline at end of file diff --git a/deploy/runtime/ui/Financial LCOE Calc with Costs.json b/deploy/runtime/ui/Financial LCOE Calc with Costs.json index d94acefff0..2db811bad4 100644 --- a/deploy/runtime/ui/Financial LCOE Calc with Costs.json +++ b/deploy/runtime/ui/Financial LCOE Calc with Costs.json @@ -2316,8 +2316,13 @@ } }, "Equations": [ - "equations{ 'ui_system_capacity' } = define() {", - " return ${nameplate}*1.E3; ", + "equations{ 'ui_system_capacity' } = define() {\r", + "\tif(technology() == 'Geothermal Power'){\r", + "\t\treturn ${nameplate};\r", + "\t}\r", + "\telse{", + "\t\treturn ${nameplate}*1.E3; \r", + "\t}", "};", "", "equations{ 'ui_capital_cost_reference' } =define() {", diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 0a06aa07c9..e21b0c8bb1 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -1189,7 +1189,7 @@ "\r", "\t//#ssc_auto_exec(obj, 'geothermal', 2);\r", "\t\r", - "\t//\tret_d = ssc_dump(obj, 'physical_trough_v2_mimo_ssc_auto_exec.lk');\r", + "\t//ret_d = ssc_dump(obj, 'physical_trough_v2_mimo_ssc_auto_exec.lk');\r", "\tret = ssc_exec(obj, 'geothermal');\r", "\t\r", "\tif(ret == 0)\r", @@ -1278,14 +1278,15 @@ "\t\t${total_installed_cost_calc} = ssc_var(obj, 'total_installed_cost');\r", "\t\t${installed_cost_per_kW_calc} = ssc_var(obj, 'installed_cost_per_kW');\r", "\r", - "\t\t${total_getem_om_cost_calc} = ssc_var(obj, 'total_getem_om_cost');\r", - "\t\t${construction_financing_cost_calc} = ssc_var(obj, 'construction_financing_cost');\r", + "\t\t//${total_getem_om_cost_calc} = ssc_var(obj, 'total_getem_om_cost');\r", + "\t\t//${construction_financing_cost_calc} = ssc_var(obj, 'construction_financing_cost');\r", "\t}\r", "\telse{\r", - "\t\t${is_success_auto_exec} = -1;\r", "\t\t\r", "\t\tfail = -6789;\r", "\t\t\r", + "\t\t${is_success_auto_exec} = fail;\r", + "\t\t\r", "\t\t${geothermal_analysis_period} = -1;\r", "\t\t\r", "\t\t${design_temp_calc} = fail;\r", From 1ef4342cf9798bbcd4ebac81b2c2743819288bc7 Mon Sep 17 00:00:00 2001 From: tyneises Date: Mon, 8 Jun 2026 13:35:16 -0500 Subject: [PATCH 69/74] update geothermal no financial to run with auto exec and updated geo cmods --- deploy/runtime/startup.lk | 25 +- deploy/runtime/ui/Geothermal Drilling.json | 31 +- .../ui/Geothermal System Design No Fin.json | 1451 +++++++++++++++++ .../runtime/ui/Geothermal System Design.json | 111 +- 4 files changed, 1551 insertions(+), 67 deletions(-) create mode 100644 deploy/runtime/ui/Geothermal System Design No Fin.json diff --git a/deploy/runtime/startup.lk b/deploy/runtime/startup.lk index 4e718e8c8b..33696723db 100644 --- a/deploy/runtime/startup.lk +++ b/deploy/runtime/startup.lk @@ -782,13 +782,20 @@ function setup_csp_empirical_trough_pages() setup_grid_limits_page(); } -function setup_geothermal_power_pages() +function setup_geothermal_power_pages(is_fin_model) { addpage( [[ 'Solar Resource Download', 'Solar Resource Library', 'Solar Resource Information' ]], { 'sidebar'='Ambient Conditions', 'help'='geothermal/geo_ambient_conditions' } ); addpage( [[ 'Geothermal Resource', {'name'='Geothermal Reservoir Input', 'caption'='Geothermal Reservoir Model Input Table', 'collapsible'=true, 'collapsible_var'='reservoir_model_inputs_shown'} ]], { 'sidebar'='Geothermal Resource', 'help'='geothermal/geo_geothermal_resource' } ); + if(is_fin_model) + { addpage( [[ 'Geothermal System Design', 'Geothermal Plant and Equipment' ]], { 'sidebar'='Plant and Equipment', 'help'='geothermal/geo_plant_equipment' } ); + } + else + { + addpage( [[ 'Geothermal System Design No Fin', 'Geothermal Plant and Equipment' ]], { 'sidebar'='Plant and Equipment', 'help'='geothermal/geo_plant_equipment' } ); + } addpage( [[ 'Geothermal Power Block' ]], { 'sidebar'='Power Block', 'help'='geothermal/geo_power_block' } ); setup_grid_limits_page(); } @@ -1536,7 +1543,7 @@ addpage( [[ 'Thermal Rate' ]], setconfig( 'Geothermal Power', 'Leveraged Partnership Flip' ); setmodules( ['geothermal', 'grid', 'utilityrate5', 'levpartflip']); -setup_geothermal_power_pages(); +setup_geothermal_power_pages(true); addpage( [[ 'Geothermal Costs' ]], { 'sidebar'='Installation Costs', 'help'='installation-costs/cc_geothermal' } ); addpage( [[ 'Operating Costs', 'Geothermal OM Costs' ]], {'sidebar' = 'Operating Costs', 'help'='operating-costs/oc_operating'} ); setup_leveraged_partnership_flip_pages(); @@ -1544,7 +1551,7 @@ setup_electricity_purchases(); setconfig( 'Geothermal Power', 'All Equity Partnership Flip' ); setmodules( ['geothermal', 'grid', 'utilityrate5', 'equpartflip']); -setup_geothermal_power_pages(); +setup_geothermal_power_pages(true); addpage( [[ 'Geothermal Costs' ]], { 'sidebar'='Installation Costs', 'help'='installation-costs/cc_geothermal' } ); addpage( [[ 'Operating Costs', 'Geothermal OM Costs' ]], {'sidebar' = 'Operating Costs', 'help'='operating-costs/oc_operating'} ); setup_all_equity_partnership_flip_pages(); @@ -1552,7 +1559,7 @@ setup_electricity_purchases(); setconfig( 'Geothermal Power', 'Sale Leaseback' ); setmodules( ['geothermal', 'grid', 'utilityrate5', 'saleleaseback']); -setup_geothermal_power_pages(); +setup_geothermal_power_pages(true); addpage( [[ 'Geothermal Costs' ]], { 'sidebar'='Installation Costs', 'help'='installation-costs/cc_geothermal' } ); addpage( [[ 'Operating Costs', 'Geothermal OM Costs' ]], {'sidebar' = 'Operating Costs', 'help'='operating-costs/oc_operating'} ); setup_sale_leaseback_pages(); @@ -1560,7 +1567,7 @@ setup_electricity_purchases(); setconfig( 'Geothermal Power', 'Single Owner' ); setmodules( ['geothermal', 'grid', 'utilityrate5', 'singleowner']); -setup_geothermal_power_pages(); +setup_geothermal_power_pages(true); addpage( [[ 'Geothermal Costs' ]], { 'sidebar'='Installation Costs', 'help'='installation-costs/cc_geothermal' } ); addpage( [[ 'Operating Costs', 'Geothermal OM Costs' ]], {'sidebar' = 'Operating Costs', 'help'='operating-costs/oc_operating'} ); setup_single_owner_pages(); @@ -1568,7 +1575,7 @@ setup_electricity_purchases(); setconfig( 'Geothermal Power', 'Merchant Plant' ); setmodules( ['geothermal', 'grid', 'utilityrate5', 'merchantplant']); -setup_geothermal_power_pages(); +setup_geothermal_power_pages(true); addpage( [[ 'Geothermal Costs' ]], { 'sidebar'='Installation Costs', 'help'='installation-costs/cc_geothermal' } ); addpage( [[ 'Operating Costs', 'Geothermal OM Costs' ]], {'sidebar' = 'Operating Costs', 'help'='operating-costs/oc_operating'} ); setup_merchant_plant_pages(); @@ -1576,13 +1583,13 @@ setup_electricity_purchases(); setconfig( 'Geothermal Power', 'LCOE Calculator' ); setmodules( ['geothermal', 'grid', 'lcoefcr_electricity']); -setup_geothermal_power_pages(); +setup_geothermal_power_pages(true); addpage( [[ 'Geothermal Costs', 'Financial Construction Financing Input' ]], { 'sidebar'='Installation Costs', 'help'='installation-costs/cc_geothermal' } ); addpage( [[ 'Financial LCOE Calc with Costs']], { 'sidebar'='Financial Parameters', 'help'='financial-parameters/fin_lcoefcr'} ); setconfig( 'Geothermal Power', 'None' ); -setmodules( ['geothermal', 'grid',]); -setup_geothermal_power_pages(); +setmodules( ['geothermal_no_fin', 'grid',]); +setup_geothermal_power_pages(false); addpage( [['Geothermal Drilling' ]], { 'sidebar'='Well Drilling', 'help'='installation-costs/cc_geothermal' } ); // Generic System ////////////////////////////////////////////////////////////// diff --git a/deploy/runtime/ui/Geothermal Drilling.json b/deploy/runtime/ui/Geothermal Drilling.json index 94a6840b1a..05ff6b20f9 100644 --- a/deploy/runtime/ui/Geothermal Drilling.json +++ b/deploy/runtime/ui/Geothermal Drilling.json @@ -1676,6 +1676,19 @@ } }, "VarDatabase": { + "analysis_period": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": 0.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, "drilling_success_rate": { "Version": 4.0, "Type": 1.0, @@ -1913,20 +1926,22 @@ }, "Equations": [ "equations{ 'geotherm.cost.prod_req' } = define() {", - "\treturn ${num_wells_getem}; };", + "\treturn ${num_wells_calc};\r", + "};", "\t", "equations{ 'geotherm.cost.confirm_wells_num' } = define() {", - "\treturn ${geotherm.cost.conf_num_wells} * (${geotherm.cost.confirm_wells_percent}/100); };", - "\t", - "equations{ 'geotherm.cost.prod_wells_drilled' } = define() {", - "\treturn ( ${geotherm.cost.prod_req} - ${geotherm.cost.confirm_wells_num} ); };", + "\treturn ${num_confirm_wells_to_production_calc}; \r", + "};\r", + "\t\t", + "//equations{ 'geotherm.cost.prod_wells_drilled' } = define() {", + "//\treturn ( ${geotherm.cost.prod_req} - ${geotherm.cost.confirm_wells_num} ); };", "\t", - "equations{ 'geotherm.cost.inj_wells_drilled' } = define() {", - "\treturn ( ${num_wells_getem_inj} ); };\r", + "//equations{ 'geotherm.cost.inj_wells_drilled' } = define() {", + "//\treturn ( ${num_wells_getem_inj} ); };\r", "\t\r", "equations{'exploration_wells_production'} = define() \r", "{\r", - "\treturn ${geotherm.cost.confirm_wells_num};\r", + "\treturn ${num_confirm_wells_to_production_calc};\r", "};\r", "" ], diff --git a/deploy/runtime/ui/Geothermal System Design No Fin.json b/deploy/runtime/ui/Geothermal System Design No Fin.json new file mode 100644 index 0000000000..cf4ba52c50 --- /dev/null +++ b/deploy/runtime/ui/Geothermal System Design No Fin.json @@ -0,0 +1,1451 @@ +{ + "Name": "Geothermal System Design No Fin", + "Width": 824.0, + "Height": 184.0, + "FormObjects": { + "Numeric": { + "Visible": 1.0, + "ObjectProperties": { + "Name": { + "Type": 5.0, + "String": "construction_financing_cost_calc" + }, + "X": { + "Type": 3.0, + "Integer": 186.0 + }, + "Y": { + "Type": 3.0, + "Integer": 42.0 + }, + "Width": { + "Type": 3.0, + "Integer": 90.0 + }, + "Height": { + "Type": 3.0, + "Integer": 24.0 + }, + "Tool Tip": { + "Type": 5.0, + "String": "" + }, + "Value": { + "Type": 1.0, + "Double": 0.0 + }, + "Mode": { + "Type": 3.0, + "Integer": 1.0 + }, + "Format": { + "Type": 3.0, + "Integer": 0.0 + }, + "Decimals": { + "Type": 3.0, + "Integer": 3.0 + }, + "Prefix": { + "Type": 5.0, + "String": "" + }, + "Suffix": { + "Type": 5.0, + "String": "" + }, + "ThousandsSep": { + "Type": 2.0, + "Boolean": 1.0 + }, + "Editable": { + "Type": 2.0, + "Boolean": 1.0 + }, + "ForeColour": { + "Type": 4.0, + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 0.0, + "Alpha": 255.0 + } + }, + "BackColour": { + "Type": 4.0, + "Color": { + "Red": 255.0, + "Green": 255.0, + "Blue": 255.0, + "Alpha": 255.0 + } + }, + "TabOrder": { + "Type": 3.0, + "Integer": -1.0 + } + } + }, + "Numeric": { + "Visible": 1.0, + "ObjectProperties": { + "Name": { + "Type": 5.0, + "String": "is_success_auto_exec" + }, + "X": { + "Type": 3.0, + "Integer": 456.0 + }, + "Y": { + "Type": 3.0, + "Integer": 30.0 + }, + "Width": { + "Type": 3.0, + "Integer": 90.0 + }, + "Height": { + "Type": 3.0, + "Integer": 24.0 + }, + "Tool Tip": { + "Type": 5.0, + "String": "" + }, + "Value": { + "Type": 1.0, + "Double": 0.0 + }, + "Mode": { + "Type": 3.0, + "Integer": 1.0 + }, + "Format": { + "Type": 3.0, + "Integer": 0.0 + }, + "Decimals": { + "Type": 3.0, + "Integer": 3.0 + }, + "Prefix": { + "Type": 5.0, + "String": "" + }, + "Suffix": { + "Type": 5.0, + "String": "" + }, + "ThousandsSep": { + "Type": 2.0, + "Boolean": 1.0 + }, + "Editable": { + "Type": 2.0, + "Boolean": 1.0 + }, + "ForeColour": { + "Type": 4.0, + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 0.0, + "Alpha": 255.0 + } + }, + "BackColour": { + "Type": 4.0, + "Color": { + "Red": 255.0, + "Green": 255.0, + "Blue": 255.0, + "Alpha": 255.0 + } + }, + "TabOrder": { + "Type": 3.0, + "Integer": -1.0 + } + } + }, + "TextEntry": { + "Visible": 1.0, + "ObjectProperties": { + "Name": { + "Type": 5.0, + "String": "object 9" + }, + "X": { + "Type": 3.0, + "Integer": 153.0 + }, + "Y": { + "Type": 3.0, + "Integer": 84.0 + }, + "Width": { + "Type": 3.0, + "Integer": 150.0 + }, + "Height": { + "Type": 3.0, + "Integer": 24.0 + }, + "Tool Tip": { + "Type": 5.0, + "String": "" + }, + "Text": { + "Type": 5.0, + "String": "No Financial Model" + }, + "Editable": { + "Type": 2.0, + "Boolean": 1.0 + }, + "ForeColour": { + "Type": 4.0, + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 0.0, + "Alpha": 255.0 + } + }, + "BackColour": { + "Type": 4.0, + "Color": { + "Red": 255.0, + "Green": 255.0, + "Blue": 255.0, + "Alpha": 255.0 + } + }, + "TabOrder": { + "Type": 3.0, + "Integer": -1.0 + } + } + }, + "Numeric": { + "Visible": 1.0, + "ObjectProperties": { + "Name": { + "Type": 5.0, + "String": "total_getem_om_cost_calc" + }, + "X": { + "Type": 3.0, + "Integer": 480.0 + }, + "Y": { + "Type": 3.0, + "Integer": 78.0 + }, + "Width": { + "Type": 3.0, + "Integer": 90.0 + }, + "Height": { + "Type": 3.0, + "Integer": 24.0 + }, + "Tool Tip": { + "Type": 5.0, + "String": "" + }, + "Value": { + "Type": 1.0, + "Double": 0.0 + }, + "Mode": { + "Type": 3.0, + "Integer": 1.0 + }, + "Format": { + "Type": 3.0, + "Integer": 0.0 + }, + "Decimals": { + "Type": 3.0, + "Integer": 3.0 + }, + "Prefix": { + "Type": 5.0, + "String": "" + }, + "Suffix": { + "Type": 5.0, + "String": "" + }, + "ThousandsSep": { + "Type": 2.0, + "Boolean": 1.0 + }, + "Editable": { + "Type": 2.0, + "Boolean": 1.0 + }, + "ForeColour": { + "Type": 4.0, + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 0.0, + "Alpha": 255.0 + } + }, + "BackColour": { + "Type": 4.0, + "Color": { + "Red": 255.0, + "Green": 255.0, + "Blue": 255.0, + "Alpha": 255.0 + } + }, + "TabOrder": { + "Type": 3.0, + "Integer": -1.0 + } + } + } + }, + "VarDatabase": { + "baseline_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "bottom_hole_pressure_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "conf_drilling_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "conf_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "construction_financing_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "construction financing", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "contingency_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "design_temp_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "epc_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "expl_cost_per_well_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "expl_drilling_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "expl_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "field_gathering_num_wells_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "geo_financial_model": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "geothermal_analysis_period": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "gross_cost_output_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "gross_output_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "indirect_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "indirect_pump_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "inj_num_pumps_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "inj_pump_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "inj_pump_cost_per_pump_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "inj_pump_hp_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "inj_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "inj_well_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "installed_cost_per_kW_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "is_success_auto_exec": { + "Version": 4.0, + "Type": 1.0, + "Label": "Is success auto exec", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "net_plant_output_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "num_confirm_wells_to_production_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "adfaf", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "num_wells_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "num_wells_getem_inj_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "num_wells_getem_inj_drilled_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "num_wells_getem_prod_drilled_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "num_wells_getem_prod_inj_sum_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "nu", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "piping_cost_per_well_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "plant_brine_eff_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "plm_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "prod_inj_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "prod_pump_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "prod_pump_cost_per_well_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "prod_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "prod_well_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "pump_cost_install_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "pump cost install calc", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "pump_depth_ft_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "pump_only_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "pump only cost calc", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "pump_size_hp_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "pump_watthr_per_lb_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "pump_work_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "pumpwork_inj_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "pumpwork_prod_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "pumpwork_prod_calc", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "reservoir_avg_temp_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "reservoir_pressure_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "sales_tax_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "stim_cost_per_well_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "stim_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "sum_prod_inj_total_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "system_capacity_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "system_recapitalization_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "total_capital_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "total_direct_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "total_drilling_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "total_drilling_cost_used_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "total_gathering_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "total_getem_om_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "OM costs calc", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "total_installed_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "total_plant_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "total_plant_cost_used_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "total_pump_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "total_pump_gathering_cost_used_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + }, + "total_surface_equipment_cost_calc": { + "Version": 4.0, + "Type": 1.0, + "Label": "", + "Units": "", + "Group": "", + "IndexLabels": "", + "Flags": 8.0, + "DefaultValue": -999.0, + "UIObject": "Default", + "sscVariableName": "", + "sscVariableValue": "" + } + }, + "Equations": [ + "equations{ 'geo_financial_model' } = define() {\r", + "\tif (financing() == \"Single Owner\"){\r", + "\t\treturn 1;\r", + "\t}\r", + "\telse if(financing() == \"Leveraged Partnership Flip\"){\r", + "\t\treturn 2;\r", + "\t}\r", + "\telse if(financing() == \"All Equity Partnership Flip\"){\r", + "\t\treturn 3;\r", + "\t}\r", + "\telse if(financing() == \"Sale Leaseback\"){\r", + "\t\treturn 4;\r", + "\t}\r", + "\telse if(financing() == \"Commercial\"){\r", + "\t\treturn 5;\r", + "\t}\r", + "\telse if(financing() == \"Merchant Plant\"){\r", + "\t\treturn 6;\r", + "\t}\r", + "\telse if(financing() == \"LCOE Calculator\"){\r", + "\t\treturn 7;\r", + "\t}\r", + "\telse if(financing() == \"None\"){\r", + "\t\treturn 8;\r", + "\t}\r", + "\telse{\r", + "\t\treturn -1;\r", + "\t}\r", + "};\r", + "\r", + "equations{ '$MIMO$ ui_mspt_system_design__mspt_cmod' } = define()\r", + "{\r", + "\tobj = ssc_create();\r", + "\t\r", + "\tgeo_fin_model = ${geo_financial_model};\r", + "\r", + "\t//#ssc_auto_exec(obj, 'geothermal_no_fin', 2);\r", + "\r", + "\t//ret_d = ssc_dump(obj, 'geothermal_ssc_auto_exec.lk');\r", + "\t\r", + "\tif(geo_fin_model < 8){\r", + "\t\tret = ssc_exec(obj, 'geothermal');\r", + "\t}\r", + "\telse{\r", + "\t\tret = ssc_exec(obj, 'geothermal_no_fin');\r", + "\t}\r", + "\t\r", + "\tif(ret == 0)\r", + "\t{\r", + "\t\t${is_success_auto_exec} = 1;\r", + "\t\t${geothermal_analysis_period} = ssc_var(obj, 'geothermal_analysis_period');\r", + "\t\t\r", + "\t\t${design_temp_calc} = ssc_var(obj, \"design_temp\");\r", + "\t\t\r", + "\t\t${plant_brine_eff_calc} = ssc_var( obj, 'plant_brine_eff');\r", + "\t\t${gross_output_calc} = ssc_var(obj, \"gross_output\");\r", + "\t\t${gross_cost_output_calc} = ssc_var(obj, \"gross_cost_output\");\r", + "\t\t\r", + "\t\t${num_wells_calc} = ssc_var(obj, \"num_wells_getem_output\");\r", + "\t\t${num_wells_getem_inj_calc} = ssc_var(obj, \"num_wells_getem_inj\");\r", + "\t\t${num_wells_getem_prod_drilled_calc} = ssc_var(obj, \"num_wells_getem_prod_drilled\");\r", + "\t\t${num_wells_getem_inj_drilled_calc} = ssc_var(obj, \"num_wells_getem_inj_drilled\");\r", + "\t\t\r", + "\t\t${pump_watthr_per_lb_calc} = ssc_var(obj, \"pump_watthr_per_lb\");\r", + "\t\t${pumpwork_prod_calc} = ssc_var(obj, \"pumpwork_prod\");\r", + "\t\t${pump_size_hp_calc} = ssc_var(obj, \"pump_size_hp\");\r", + "\t\t${pumpwork_inj_calc} = ssc_var(obj, \"pumpwork_inj\");\r", + "\t\t${pump_depth_ft_calc} = ssc_var(obj, \"pump_depth_ft\");\r", + "\t\t${inj_pump_hp_calc} = ssc_var(obj, \"inj_pump_hp\");\r", + "\t\t${pump_work_calc} = ssc_var(obj, \"pump_work\");\r", + "\t\t\r", + "\t\t${reservoir_pressure_calc} = ssc_var(obj, \"reservoir_pressure\");\r", + "\t\t${reservoir_avg_temp_calc} = ssc_var(obj, \"reservoir_avg_temp\");\r", + "\t\t${bottom_hole_pressure_calc} = ssc_var(obj, \"bottom_hole_pressure\");\r", + "\t\t\r", + "\t\t${net_plant_output_calc} = ssc_var(obj, \"net_plant_output\");\r", + "\t\t${system_capacity_calc} = ssc_var(obj, \"system_capacity\");\r", + "\t\t\r", + "\t\t${num_confirm_wells_to_production_calc} = ssc_var(obj, 'num_confirm_wells_to_production');\r", + "\t\t\r", + "\t\tif(geo_fin_model < 8){\r", + "\t\t\t${baseline_cost_calc} = ssc_var(obj, 'baseline_cost');\r", + "\t\t\t${total_pump_cost_calc} = ssc_var(obj, 'total_pump_cost');\r", + "\r", + "\t\t\t${total_gathering_cost_calc} = ssc_var(obj, 'total_gathering_cost');\r", + "\t\t\t${pump_cost_install_calc} = ssc_var(obj, 'pump_cost_install');\r", + "\t\t\t${pump_only_cost_calc} = ssc_var(obj, 'pump_only_cost');\r", + "\t\t\t${prod_pump_cost_per_well_calc} = ssc_var(obj, 'prod_pump_cost_per_well');\r", + "\t\t\t${inj_pump_cost_per_pump_calc} = ssc_var(obj, 'inj_pump_cost_per_pump');\r", + "\t\t\t${inj_num_pumps_calc} = ssc_var(obj, 'inj_num_pumps');\r", + "\t\t\t\t\r", + "\t\t\t${prod_pump_cost_calc} = ssc_var(obj, 'prod_pump_cost');\r", + "\t\t\t${inj_pump_cost_calc} = ssc_var(obj, 'inj_pump_cost');\r", + "\t\t\t${indirect_pump_cost_calc} = ssc_var(obj, 'indirect_pump_gathering_cost');\r", + "\t\t\t${total_pump_gathering_cost_used_calc} = ssc_var(obj, 'total_pump_gathering_cost_used');\r", + "\t\t\t\r", + "\t\t\t${total_surface_equipment_cost_calc} = ssc_var(obj, 'total_surface_equipment_cost');\r", + "\r", + "\t\t\t${sum_prod_inj_total_cost_calc} = ssc_var(obj, 'sum_prod_inj_total_cost');\r", + "\t\t\t${prod_inj_total_cost_calc} = ssc_var(obj, 'prod_inj_total_cost');\r", + "\r", + "\t\t\t${piping_cost_per_well_calc} = ssc_var(obj, 'piping_cost_per_well');\r", + "\t\t\t${field_gathering_num_wells_calc} = ssc_var(obj, 'field_gathering_num_wells');\r", + "\t\t\t${stim_cost_per_well_calc} = ssc_var(obj, 'stim_cost_per_well');\r", + "\t\t\t${stim_total_cost_calc} = ssc_var(obj, 'stim_total_cost');\r", + "\r", + "\t\t\t${num_wells_getem_prod_inj_sum_calc} = ssc_var(obj, 'num_wells_getem_prod_inj_sum');\r", + "\r", + "\t\t\t${expl_total_cost_calc} = ssc_var(obj, 'expl_total_cost');\r", + "\t\t\t${expl_drilling_cost_calc} = ssc_var(obj, 'expl_drilling_cost');\r", + "\t\t\t${conf_total_cost_calc} = ssc_var(obj, 'conf_total_cost');\r", + "\t\t\t${conf_drilling_cost_calc} = ssc_var(obj, 'conf_drilling_cost');\r", + "\t\t\t${expl_cost_per_well_calc} = ssc_var(obj, 'expl_cost_per_well');\r", + "\t\t\t\r", + "\t\t\t${prod_well_cost_calc} = ssc_var(obj, 'prod_well_cost');\r", + "\t\t\t${prod_total_cost_calc} = ssc_var(obj, 'prod_total_cost');\r", + "\t\t\t${inj_well_cost_calc} = ssc_var(obj, 'inj_well_cost');\r", + "\t\t\t${inj_total_cost_calc} = ssc_var(obj, 'inj_total_cost');\r", + "\t\t\t${total_drilling_cost_calc} = ssc_var(obj, 'total_drilling_cost');\r", + "\t\t\t${total_drilling_cost_used_calc} = ssc_var(obj, 'total_drilling_cost_used');\r", + "\r", + "\t\t\t${total_plant_cost_calc} = ssc_var(obj, 'total_plant_cost');\r", + "\t\t\t${total_plant_cost_used_calc} = ssc_var(obj, 'total_plant_cost_used');\r", + "\r", + "\t\t\t${system_recapitalization_cost_calc} = ssc_var(obj, 'system_recapitalization_cost');\r", + "\t\t\t${total_capital_cost_calc} = ssc_var(obj, 'total_capital_cost');\r", + "\t\t\t${contingency_cost_calc} = ssc_var(obj, 'contingency_cost');\r", + "\t\t\t${total_direct_cost_calc} = ssc_var(obj, 'total_direct_cost');\r", + "\t\t\t${epc_total_cost_calc} = ssc_var(obj, 'epc_total_cost');\r", + "\t\t\t${plm_total_cost_calc} = ssc_var(obj, 'plm_total_cost');\r", + "\t\t\t${sales_tax_cost_calc} = ssc_var(obj, 'sales_tax_cost');\r", + "\t\t\t${indirect_cost_calc} = ssc_var(obj, 'indirect_cost');\r", + "\t\t\t${total_installed_cost_calc} = ssc_var(obj, 'total_installed_cost');\r", + "\t\t\t${installed_cost_per_kW_calc} = ssc_var(obj, 'installed_cost_per_kW');\r", + "\r", + "\t\t\t//${total_getem_om_cost_calc} = ssc_var(obj, 'total_getem_om_cost');\r", + "\t\t\t//${construction_financing_cost_calc} = ssc_var(obj, 'construction_financing_cost');\r", + "\t\t}\r", + "\t}\r", + "\telse{\r", + "\t\t\r", + "\t\tfail = -6789;\r", + "\t\t\r", + "\t\t${is_success_auto_exec} = fail;\r", + "\t\t\r", + "\t\t${geothermal_analysis_period} = -1;\r", + "\t\t\r", + "\t\t${design_temp_calc} = fail;\r", + "\t\t\r", + "\t\t${plant_brine_eff_calc} = fail;\r", + "\t\t${gross_output_calc} = fail;\r", + "\t\t${gross_cost_output_calc} = fail;\r", + "\t\t\r", + "\t\t${num_wells_calc} = fail;\r", + "\t\t${num_wells_getem_inj_calc} = fail;\r", + "\t\t${num_wells_getem_prod_drilled_calc} = fail;\r", + "\t\t${num_wells_getem_inj_drilled_calc} = fail;\r", + "\t\t\r", + "\t\t${pump_watthr_per_lb_calc} = fail;\r", + "\t\t${pumpwork_prod_calc} = fail;\r", + "\t\t${pump_size_hp_calc} = fail;\r", + "\t\t${pumpwork_inj_calc} = fail;\r", + "\t\t${pump_depth_ft_calc} = fail;\r", + "\t\t${inj_pump_hp_calc} = fail;\r", + "\t\t${pump_work_calc} = fail;\r", + "\t\t\r", + "\t\t${reservoir_pressure_calc} = fail;\r", + "\t\t${reservoir_avg_temp_calc} = fail;\r", + "\t\t${bottom_hole_pressure_calc} = fail;\r", + "\t\t\r", + "\t\t${net_plant_output_calc} = fail;\r", + "\t\t${system_capacity_calc} = fail;\r", + "\t\t\r", + "\t\t${baseline_cost_calc} = fail;\r", + "\t\t${total_pump_cost_calc} = fail;\r", + "\t\t\r", + "\t\t${total_gathering_cost_calc} = fail;\r", + "\t\t${pump_cost_install_calc} = fail;\r", + "\t\t${pump_only_cost_calc} = fail;\r", + "\t\t${prod_pump_cost_per_well_calc} = fail;\r", + "\t\t${inj_pump_cost_per_pump_calc} = fail;\r", + "\t\t${inj_num_pumps_calc} = fail;\r", + "\t\t\r", + "\t\t${prod_pump_cost_calc} = fail;\r", + "\t\t${inj_pump_cost_calc} = fail;\r", + "\t\t${indirect_pump_cost_calc} = fail;\r", + "\t\t${total_pump_gathering_cost_used_calc} = fail;\r", + "\t\t\r", + "\t\t${total_surface_equipment_cost_calc} = fail; \r", + "\t\t\r", + "\t\t${sum_prod_inj_total_cost_calc} = fail;\r", + "\t\t${prod_inj_total_cost_calc} = fail;\r", + "\t\t\r", + "\t\t${piping_cost_per_well_calc} = fail;\r", + "\t\t${field_gathering_num_wells_calc} = fail;\r", + "\t\t${stim_cost_per_well_calc} = fail;\r", + "\t\t${stim_total_cost_calc} = fail;\r", + "\t\t\r", + "\t\t${num_wells_getem_prod_inj_sum_calc} = fail;\r", + "\t\t\r", + "\t\t${expl_total_cost_calc} = fail;\r", + "\t\t${expl_drilling_cost_calc} = fail;\r", + "\t\t${conf_total_cost_calc} = fail;\r", + "\t\t${conf_drilling_cost_calc} = fail;\r", + "\t\t${expl_cost_per_well_calc} = fail;\r", + "\t\t${num_confirm_wells_to_production_calc} = fail;\r", + "\t\t\r", + "\t\t${prod_well_cost_calc} = fail;\r", + "\t\t${prod_total_cost_calc} = fail;\r", + "\t\t${inj_well_cost_calc} = fail;\r", + "\t\t${inj_total_cost_calc} = fail;\r", + "\t\t${total_drilling_cost_calc} = fail;\r", + "\t\t${total_plant_cost_used_calc} = fail;\r", + "\t\t\r", + "\t\t${total_plant_cost_calc} = fail;\r", + "\t\t${total_plant_cost_used_calc} = fail;\r", + "\t\t\r", + "\t\t${system_recapitalization_cost_calc} = fail;\r", + "\t\t${total_capital_cost_calc} = fail;\r", + "\t\t${contingency_cost_calc} = fail;\r", + "\t\t${total_direct_cost_calc} = fail;\r", + "\t\t${epc_total_cost_calc} = fail;\r", + "\t\t${plm_total_cost_calc} = fail;\r", + "\t\t${sales_tax_cost_calc} = fail;\r", + "\t\t${indirect_cost_calc} = fail;\r", + "\t\t${total_installed_cost_calc} = fail;\r", + "\t\t${installed_cost_per_kW_calc} = fail;\r", + "\t\t\r", + "\t\t${total_getem_om_cost_calc} = fail;\r", + "\t\t\r", + "\t\t${construction_financing_cost_calc} = fail;\r", + "\t}\r", + "\t\r", + "};" + ], + "Callbacks": [] +} \ No newline at end of file diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index e21b0c8bb1..09e98ba4c0 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -1186,11 +1186,19 @@ "equations{ '$MIMO$ ui_mspt_system_design__mspt_cmod' } = define()\r", "{\r", "\tobj = ssc_create();\r", + "\t\r", + "\tgeo_fin_model = ${geo_financial_model};\r", "\r", "\t//#ssc_auto_exec(obj, 'geothermal', 2);\r", "\t\r", - "\t//ret_d = ssc_dump(obj, 'physical_trough_v2_mimo_ssc_auto_exec.lk');\r", - "\tret = ssc_exec(obj, 'geothermal');\r", + "\t//ret_d = ssc_dump(obj, 'geothermal_ssc_auto_exec.lk');\r", + "\t\r", + "\tif(geo_fin_model < 8){\r", + "\t\tret = ssc_exec(obj, 'geothermal');\r", + "\t}\r", + "\telse{\r", + "\t\tret = ssc_exec(obj, 'geothermal_no_fin');\r", + "\t}\r", "\t\r", "\tif(ret == 0)\r", "\t{\r", @@ -1223,63 +1231,66 @@ "\t\t${net_plant_output_calc} = ssc_var(obj, \"net_plant_output\");\r", "\t\t${system_capacity_calc} = ssc_var(obj, \"system_capacity\");\r", "\t\t\r", - "\t\t${baseline_cost_calc} = ssc_var(obj, 'baseline_cost');\r", - "\t\t${total_pump_cost_calc} = ssc_var(obj, 'total_pump_cost');\r", - "\r", - "\t\t${total_gathering_cost_calc} = ssc_var(obj, 'total_gathering_cost');\r", - "\t\t${pump_cost_install_calc} = ssc_var(obj, 'pump_cost_install');\r", - "\t\t${pump_only_cost_calc} = ssc_var(obj, 'pump_only_cost');\r", - "\t\t${prod_pump_cost_per_well_calc} = ssc_var(obj, 'prod_pump_cost_per_well');\r", - "\t\t${inj_pump_cost_per_pump_calc} = ssc_var(obj, 'inj_pump_cost_per_pump');\r", - "\t\t${inj_num_pumps_calc} = ssc_var(obj, 'inj_num_pumps');\r", - "\t\t\t\r", - "\t\t${prod_pump_cost_calc} = ssc_var(obj, 'prod_pump_cost');\r", - "\t\t${inj_pump_cost_calc} = ssc_var(obj, 'inj_pump_cost');\r", - "\t\t${indirect_pump_cost_calc} = ssc_var(obj, 'indirect_pump_gathering_cost');\r", - "\t\t${total_pump_gathering_cost_used_calc} = ssc_var(obj, 'total_pump_gathering_cost_used');\r", + "\t\t${num_confirm_wells_to_production_calc} = ssc_var(obj, 'num_confirm_wells_to_production');\r", "\t\t\r", - "\t\t${total_surface_equipment_cost_calc} = ssc_var(obj, 'total_surface_equipment_cost');\r", + "\t\tif(geo_fin_model < 8){\r", + "\t\t\t${baseline_cost_calc} = ssc_var(obj, 'baseline_cost');\r", + "\t\t\t${total_pump_cost_calc} = ssc_var(obj, 'total_pump_cost');\r", "\r", - "\t\t${sum_prod_inj_total_cost_calc} = ssc_var(obj, 'sum_prod_inj_total_cost');\r", - "\t\t${prod_inj_total_cost_calc} = ssc_var(obj, 'prod_inj_total_cost');\r", + "\t\t\t${total_gathering_cost_calc} = ssc_var(obj, 'total_gathering_cost');\r", + "\t\t\t${pump_cost_install_calc} = ssc_var(obj, 'pump_cost_install');\r", + "\t\t\t${pump_only_cost_calc} = ssc_var(obj, 'pump_only_cost');\r", + "\t\t\t${prod_pump_cost_per_well_calc} = ssc_var(obj, 'prod_pump_cost_per_well');\r", + "\t\t\t${inj_pump_cost_per_pump_calc} = ssc_var(obj, 'inj_pump_cost_per_pump');\r", + "\t\t\t${inj_num_pumps_calc} = ssc_var(obj, 'inj_num_pumps');\r", + "\t\t\t\t\r", + "\t\t\t${prod_pump_cost_calc} = ssc_var(obj, 'prod_pump_cost');\r", + "\t\t\t${inj_pump_cost_calc} = ssc_var(obj, 'inj_pump_cost');\r", + "\t\t\t${indirect_pump_cost_calc} = ssc_var(obj, 'indirect_pump_gathering_cost');\r", + "\t\t\t${total_pump_gathering_cost_used_calc} = ssc_var(obj, 'total_pump_gathering_cost_used');\r", + "\t\t\t\r", + "\t\t\t${total_surface_equipment_cost_calc} = ssc_var(obj, 'total_surface_equipment_cost');\r", "\r", - "\t\t${piping_cost_per_well_calc} = ssc_var(obj, 'piping_cost_per_well');\r", - "\t\t${field_gathering_num_wells_calc} = ssc_var(obj, 'field_gathering_num_wells');\r", - "\t\t${stim_cost_per_well_calc} = ssc_var(obj, 'stim_cost_per_well');\r", - "\t\t${stim_total_cost_calc} = ssc_var(obj, 'stim_total_cost');\r", + "\t\t\t${sum_prod_inj_total_cost_calc} = ssc_var(obj, 'sum_prod_inj_total_cost');\r", + "\t\t\t${prod_inj_total_cost_calc} = ssc_var(obj, 'prod_inj_total_cost');\r", "\r", - "\t\t${num_wells_getem_prod_inj_sum_calc} = ssc_var(obj, 'num_wells_getem_prod_inj_sum');\r", + "\t\t\t${piping_cost_per_well_calc} = ssc_var(obj, 'piping_cost_per_well');\r", + "\t\t\t${field_gathering_num_wells_calc} = ssc_var(obj, 'field_gathering_num_wells');\r", + "\t\t\t${stim_cost_per_well_calc} = ssc_var(obj, 'stim_cost_per_well');\r", + "\t\t\t${stim_total_cost_calc} = ssc_var(obj, 'stim_total_cost');\r", "\r", - "\t\t${expl_total_cost_calc} = ssc_var(obj, 'expl_total_cost');\r", - "\t\t${expl_drilling_cost_calc} = ssc_var(obj, 'expl_drilling_cost');\r", - "\t\t${conf_total_cost_calc} = ssc_var(obj, 'conf_total_cost');\r", - "\t\t${conf_drilling_cost_calc} = ssc_var(obj, 'conf_drilling_cost');\r", - "\t\t${expl_cost_per_well_calc} = ssc_var(obj, 'expl_cost_per_well');\r", - "\t\t${num_confirm_wells_to_production_calc} = ssc_var(obj, 'num_confirm_wells_to_production');\r", + "\t\t\t${num_wells_getem_prod_inj_sum_calc} = ssc_var(obj, 'num_wells_getem_prod_inj_sum');\r", "\r", - "\t\t${prod_well_cost_calc} = ssc_var(obj, 'prod_well_cost');\r", - "\t\t${prod_total_cost_calc} = ssc_var(obj, 'prod_total_cost');\r", - "\t\t${inj_well_cost_calc} = ssc_var(obj, 'inj_well_cost');\r", - "\t\t${inj_total_cost_calc} = ssc_var(obj, 'inj_total_cost');\r", - "\t\t${total_drilling_cost_calc} = ssc_var(obj, 'total_drilling_cost');\r", - "\t\t${total_drilling_cost_used_calc} = ssc_var(obj, 'total_drilling_cost_used');\r", + "\t\t\t${expl_total_cost_calc} = ssc_var(obj, 'expl_total_cost');\r", + "\t\t\t${expl_drilling_cost_calc} = ssc_var(obj, 'expl_drilling_cost');\r", + "\t\t\t${conf_total_cost_calc} = ssc_var(obj, 'conf_total_cost');\r", + "\t\t\t${conf_drilling_cost_calc} = ssc_var(obj, 'conf_drilling_cost');\r", + "\t\t\t${expl_cost_per_well_calc} = ssc_var(obj, 'expl_cost_per_well');\r", + "\t\t\t\r", + "\t\t\t${prod_well_cost_calc} = ssc_var(obj, 'prod_well_cost');\r", + "\t\t\t${prod_total_cost_calc} = ssc_var(obj, 'prod_total_cost');\r", + "\t\t\t${inj_well_cost_calc} = ssc_var(obj, 'inj_well_cost');\r", + "\t\t\t${inj_total_cost_calc} = ssc_var(obj, 'inj_total_cost');\r", + "\t\t\t${total_drilling_cost_calc} = ssc_var(obj, 'total_drilling_cost');\r", + "\t\t\t${total_drilling_cost_used_calc} = ssc_var(obj, 'total_drilling_cost_used');\r", "\r", - "\t\t${total_plant_cost_calc} = ssc_var(obj, 'total_plant_cost');\r", - "\t\t${total_plant_cost_used_calc} = ssc_var(obj, 'total_plant_cost_used');\r", + "\t\t\t${total_plant_cost_calc} = ssc_var(obj, 'total_plant_cost');\r", + "\t\t\t${total_plant_cost_used_calc} = ssc_var(obj, 'total_plant_cost_used');\r", "\r", - "\t\t${system_recapitalization_cost_calc} = ssc_var(obj, 'system_recapitalization_cost');\r", - "\t\t${total_capital_cost_calc} = ssc_var(obj, 'total_capital_cost');\r", - "\t\t${contingency_cost_calc} = ssc_var(obj, 'contingency_cost');\r", - "\t\t${total_direct_cost_calc} = ssc_var(obj, 'total_direct_cost');\r", - "\t\t${epc_total_cost_calc} = ssc_var(obj, 'epc_total_cost');\r", - "\t\t${plm_total_cost_calc} = ssc_var(obj, 'plm_total_cost');\r", - "\t\t${sales_tax_cost_calc} = ssc_var(obj, 'sales_tax_cost');\r", - "\t\t${indirect_cost_calc} = ssc_var(obj, 'indirect_cost');\r", - "\t\t${total_installed_cost_calc} = ssc_var(obj, 'total_installed_cost');\r", - "\t\t${installed_cost_per_kW_calc} = ssc_var(obj, 'installed_cost_per_kW');\r", + "\t\t\t${system_recapitalization_cost_calc} = ssc_var(obj, 'system_recapitalization_cost');\r", + "\t\t\t${total_capital_cost_calc} = ssc_var(obj, 'total_capital_cost');\r", + "\t\t\t${contingency_cost_calc} = ssc_var(obj, 'contingency_cost');\r", + "\t\t\t${total_direct_cost_calc} = ssc_var(obj, 'total_direct_cost');\r", + "\t\t\t${epc_total_cost_calc} = ssc_var(obj, 'epc_total_cost');\r", + "\t\t\t${plm_total_cost_calc} = ssc_var(obj, 'plm_total_cost');\r", + "\t\t\t${sales_tax_cost_calc} = ssc_var(obj, 'sales_tax_cost');\r", + "\t\t\t${indirect_cost_calc} = ssc_var(obj, 'indirect_cost');\r", + "\t\t\t${total_installed_cost_calc} = ssc_var(obj, 'total_installed_cost');\r", + "\t\t\t${installed_cost_per_kW_calc} = ssc_var(obj, 'installed_cost_per_kW');\r", "\r", - "\t\t//${total_getem_om_cost_calc} = ssc_var(obj, 'total_getem_om_cost');\r", - "\t\t//${construction_financing_cost_calc} = ssc_var(obj, 'construction_financing_cost');\r", + "\t\t\t//${total_getem_om_cost_calc} = ssc_var(obj, 'total_getem_om_cost');\r", + "\t\t\t//${construction_financing_cost_calc} = ssc_var(obj, 'construction_financing_cost');\r", + "\t\t}\r", "\t}\r", "\telse{\r", "\t\t\r", From 64c31c1b2bc788005567dc991be3eea80d683385 Mon Sep 17 00:00:00 2001 From: tyneises Date: Thu, 18 Jun 2026 10:20:07 -0500 Subject: [PATCH 70/74] make ssc auto exec construction financing and o and m cost conditional on financing model --- deploy/runtime/ui/Geothermal System Design.json | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 09e98ba4c0..96e6d32a2a 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -1288,8 +1288,15 @@ "\t\t\t${total_installed_cost_calc} = ssc_var(obj, 'total_installed_cost');\r", "\t\t\t${installed_cost_per_kW_calc} = ssc_var(obj, 'installed_cost_per_kW');\r", "\r", - "\t\t\t//${total_getem_om_cost_calc} = ssc_var(obj, 'total_getem_om_cost');\r", - "\t\t\t//${construction_financing_cost_calc} = ssc_var(obj, 'construction_financing_cost');\r", + "\t\t\tif(geo_fin_model < 7){\r", + "\t\t\t\t${total_getem_om_cost_calc} = ssc_var(obj, 'total_getem_om_cost');\r", + "\t\t\t\t${construction_financing_cost_calc} = ssc_var(obj, 'construction_financing_cost');\r", + "\t\t\t}\r", + "\t\t\telse{\r", + "\t\t\t\tskip = -567;\r", + "\t\t\t\t${total_getem_om_cost_calc} = skip;\r", + "\t\t\t\t${construction_financing_cost_calc} = skip;\r", + "\t\t\t}\r", "\t\t}\r", "\t}\r", "\telse{\r", From 6a3e396b4b63373e89d0de6c3094ed93d2d37b67 Mon Sep 17 00:00:00 2001 From: tyneises Date: Thu, 18 Jun 2026 12:45:21 -0500 Subject: [PATCH 71/74] update geo no fin defaults --- .../defaults/Geothermal Power_None.json | 78 +++++++++++++++++-- 1 file changed, 70 insertions(+), 8 deletions(-) diff --git a/deploy/runtime/defaults/Geothermal Power_None.json b/deploy/runtime/defaults/Geothermal Power_None.json index ddfd767ab7..bb126ed293 100644 --- a/deploy/runtime/defaults/Geothermal Power_None.json +++ b/deploy/runtime/defaults/Geothermal Power_None.json @@ -1,6 +1,5 @@ { "CT": 3.0, - "HTF": 3.0, "P_boil": 2.0, "P_cond_min": 1.25, "P_cond_ratio": 1.0028, @@ -31,6 +30,7 @@ ], "allow_reservoir_replacements": 0.0, "ambient_pressure": 14.7, + "analysis_period": 0.0, "analysis_type": 0.0, "annual_albedo": NaN, "annual_beam": 7.92706, @@ -40,26 +40,35 @@ "annual_tdry": 24.0951, "annual_twet": NaN, "annual_wspd": 2.28094, + "baseline_cost_calc": -999.0, + "bottom_hole_pressure_calc": -999.0, "casing_size": 9.625, "city": "-", + "conf_drilling_cost_calc": -999.0, + "conf_total_cost_calc": -999.0, + "construction_financing_cost_calc": -999.0, + "contingency_cost_calc": -999.0, "conversion_subtype": 0.0, "conversion_type": 0.0, "country": "-", "dT_cw_ref": 10.0, "decline_type": 0.0, - "degradation": [ - 0.0 - ], "delta_pressure_equip": 40.0, "design_temp": 200.0, + "design_temp_calc": -999.0, "drilling_success_rate": 76.0, "dt_prod_well": 0.0, "elev": 82.0, "enable_interconnection_limit": 0.0, + "epc_total_cost_calc": -999.0, "eta_ref": 0.17, "excess_pressure_pump": 50.0, + "expl_cost_per_well_calc": -999.0, + "expl_drilling_cost_calc": -999.0, + "expl_total_cost_calc": -999.0, "exploration_wells_production": 0.0, "failed_prod_flow_ratio": 0.3, + "field_gathering_num_wells_calc": -999.0, "file_name": "blythe_ca_33.617773_-114.588261_psmv3_60_tmy.csv", "fracture_angle": 15.0, "fracture_aperature": 0.0004, @@ -69,6 +78,7 @@ "gen": [ 0.0 ], + "geo_financial_model": -999.0, "geopowerblock.pwrb.condenser_type": 2.0, "geopowerblock.pwrb.model_name": "0", "geotherm.avg_reservoir_temp": 200.0, @@ -111,8 +121,6 @@ "geotherm.resource_type": 0.0, "geotherm.resource_type_name": "0", "geotherm.temp_gradient": 0.0, - "geotherm.total_flow_gpm": 7387.02471367589, - "geotherm.total_flow_kg_per_s": 465.47099645090676, "geothermal_analysis_period": 30.0, "grid_curtailment": [ 1e38, @@ -8877,7 +8885,9 @@ 1e38 ], "grid_interconnection_limit_kwac": 100000.0, - "gross_output": 34.07838351844997, + "gross_cost_output_calc": -999.0, + "gross_output_calc": -999.0, + "gross_output_ui": 0.0, "hc_ctl1": 0.0, "hc_ctl2": 0.0, "hc_ctl3": 0.0, @@ -8894,32 +8904,66 @@ "in_location_options": 0.0, "in_nsrdb_options": 0.0, "in_time_step": 0.0, + "indirect_cost_calc": -999.0, + "indirect_pump_cost_calc": -999.0, + "inj_num_pumps_calc": -999.0, "inj_prod_well_distance": 1500.0, + "inj_pump_cost_calc": -999.0, + "inj_pump_cost_per_pump_calc": -999.0, "inj_pump_hp": 1791.3697659493394, + "inj_pump_hp_calc": -999.0, + "inj_total_cost_calc": -999.0, + "inj_well_cost_calc": -999.0, "inj_well_diam": 12.25, "injectivity_index": 3000.0, + "installed_cost_per_kW_calc": -999.0, "is_advanced": 0.0, + "is_success_auto_exec": -999.0, "lat": 33.61, "library_folder_list": "x", "library_paths": "\"\"", "lon": -114.58, "model_choice": 0.0, "nameplate": 30000.0, + "net_plant_output_calc": -999.0, + "num_confirm_wells_to_production_calc": -999.0, "num_fractures": 6.0, "num_wells": 3.0, + "num_wells_calc": -999.0, "num_wells_getem": 4.231554513190061, "num_wells_getem_inj": 1.602771732919209, + "num_wells_getem_inj_calc": -999.0, + "num_wells_getem_inj_drilled_calc": -999.0, + "num_wells_getem_prod_drilled_calc": -999.0, + "num_wells_getem_prod_inj_sum_calc": -999.0, "pb_bd_frac": 0.013, + "piping_cost_per_well_calc": -999.0, + "plant_brine_eff_calc": -999.0, "plant_efficiency_input": 80.0, + "plm_total_cost_calc": -999.0, + "prod_inj_total_cost_calc": -999.0, + "prod_pump_cost_calc": -999.0, + "prod_pump_cost_per_well_calc": -999.0, + "prod_total_cost_calc": -999.0, "prod_well_choice": 0.0, + "prod_well_cost_calc": -999.0, + "pump_cost_install_calc": -999.0, "pump_depth": 1123.1203058328284, + "pump_depth_ft_calc": -999.0, "pump_efficiency": 67.5, + "pump_only_cost_calc": -999.0, "pump_size_hp": 733.6462176201694, + "pump_size_hp_calc": -999.0, + "pump_watthr_per_lb_calc": -999.0, "pump_work": 4.078383518449912, + "pump_work_calc": -999.0, "pump_work_watthr_lb": 1.1039748866281274, "pumpwork_inj": 0.47733005904897299, + "pumpwork_inj_calc": -999.0, "pumpwork_prod": 0.6266448275791545, + "pumpwork_prod_calc": -999.0, "q_sby_frac": 0.2, + "reservoir_avg_temp_calc": -999.0, "reservoir_height": 100.0, "reservoir_model_inputs": [ [ @@ -9395,6 +9439,7 @@ ], "reservoir_model_inputs_shown": 0.0, "reservoir_permeability": 0.05, + "reservoir_pressure_calc": -999.0, "reservoir_pressure_change": 2500.0, "reservoir_pressure_change_type": 0.0, "reservoir_pressure_change_type_old_setting": 0.0, @@ -9406,6 +9451,7 @@ "rock_density": 2600.0, "rock_specific_heat": 950.0, "rock_thermal_conductivity": 3.0, + "sales_tax_cost_calc": -999.0, "solar_data_file_name": "blythe_ca_33.617773_-114.588261_psmv3_60_tmy.csv", "solar_data_source": "NSRDB", "solar_resource": "blythe_ca_33.617773_-114.588261_psmv3_60_tmy", @@ -9417,14 +9463,30 @@ "state": "-", "station_id": "258971", "step": 3600.0, + "stim_cost_per_well_calc": -999.0, "stim_success_rate": 0.0, + "stim_total_cost_calc": -999.0, "subsurface_water_loss": 2.0, + "sum_prod_inj_total_cost_calc": -999.0, "system_capacity": 34078.38351844997, + "system_capacity_calc": -999.0, + "system_recapitalization_cost_calc": -999.0, "system_use_lifetime_output": 0.0, "temp_decline_max": 30.0, "temp_decline_rate": 0.5, + "total_capital_cost_calc": -999.0, + "total_direct_cost_calc": -999.0, + "total_drilling_cost_calc": -999.0, + "total_drilling_cost_used_calc": -999.0, + "total_gathering_cost_calc": -999.0, + "total_getem_om_cost_calc": -999.0, + "total_installed_cost_calc": -999.0, + "total_plant_cost_calc": -999.0, + "total_plant_cost_used_calc": -999.0, + "total_pump_cost_calc": -999.0, + "total_pump_gathering_cost_used_calc": -999.0, + "total_surface_equipment_cost_calc": -999.0, "tz": -8.0, - "ui_calculations_only": 0.0, "ui_step_minutes": 60.0, "use_specific_weather_file": 0.0, "use_weather_file_conditions": 0.0, From db521aab2e6e1d802b1bff77692717a99e1b0a8c Mon Sep 17 00:00:00 2001 From: tyneises Date: Thu, 18 Jun 2026 16:03:20 -0500 Subject: [PATCH 72/74] add temporary system capacity display --- .../ui/Geothermal Plant and Equipment.json | 89 ++++++++++++++++++- 1 file changed, 86 insertions(+), 3 deletions(-) diff --git a/deploy/runtime/ui/Geothermal Plant and Equipment.json b/deploy/runtime/ui/Geothermal Plant and Equipment.json index 5bf83357a7..26ab932fd4 100644 --- a/deploy/runtime/ui/Geothermal Plant and Equipment.json +++ b/deploy/runtime/ui/Geothermal Plant and Equipment.json @@ -382,7 +382,7 @@ }, "Caption": { "Type": 5.0, - "String": "kW" + "String": "kWe" }, "TextColour": { "Type": 4.0, @@ -2995,6 +2995,89 @@ } } }, + "Numeric": { + "Visible": 1.0, + "ObjectProperties": { + "Name": { + "Type": 5.0, + "String": "system_capacity" + }, + "X": { + "Type": 3.0, + "Integer": 651.0 + }, + "Y": { + "Type": 3.0, + "Integer": 129.0 + }, + "Width": { + "Type": 3.0, + "Integer": 99.0 + }, + "Height": { + "Type": 3.0, + "Integer": 21.0 + }, + "Tool Tip": { + "Type": 5.0, + "String": "" + }, + "Value": { + "Type": 1.0, + "Double": 0.0 + }, + "Mode": { + "Type": 3.0, + "Integer": 1.0 + }, + "Format": { + "Type": 3.0, + "Integer": 0.0 + }, + "Decimals": { + "Type": 3.0, + "Integer": 3.0 + }, + "Prefix": { + "Type": 5.0, + "String": "" + }, + "Suffix": { + "Type": 5.0, + "String": "" + }, + "ThousandsSep": { + "Type": 2.0, + "Boolean": 1.0 + }, + "Editable": { + "Type": 2.0, + "Boolean": 1.0 + }, + "ForeColour": { + "Type": 4.0, + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 0.0, + "Alpha": 255.0 + } + }, + "BackColour": { + "Type": 4.0, + "Color": { + "Red": 255.0, + "Green": 255.0, + "Blue": 255.0, + "Alpha": 255.0 + } + }, + "TabOrder": { + "Type": 3.0, + "Integer": -1.0 + } + } + }, "Numeric": { "Visible": 1.0, "ObjectProperties": { @@ -3725,7 +3808,7 @@ "Version": 4.0, "Type": 1.0, "Label": "Net Plant Output", - "Units": "MW", + "Units": "MWe", "Group": "Geothermal Plant and Equipment", "IndexLabels": "", "Flags": 8.0, @@ -3972,7 +4055,7 @@ "Version": 4.0, "Type": 1.0, "Label": "Nameplate", - "Units": "kW", + "Units": "kWe", "Group": "Geothermal Plant and Equipment", "IndexLabels": "", "Flags": 8.0, From 76e8851b5456a6cc5ada81db2d120b171d01c2b3 Mon Sep 17 00:00:00 2001 From: Matt Prilliman <54449384+mjprilliman@users.noreply.github.com> Date: Tue, 29 Sep 2026 10:17:02 -0500 Subject: [PATCH 73/74] API updates --- ...othermalPowerAllEquityPartnershipFlip.json | 4 +- ... GeothermalNoFin_GeothermalPowerNone.json} | 15 +- ...othermalPowerAllEquityPartnershipFlip.json | 75 +- ...thermal_GeothermalPowerLCOECalculator.json | 75 +- ...othermalPowerLeveragedPartnershipFlip.json | 75 +- ...othermal_GeothermalPowerMerchantPlant.json | 75 +- ...othermal_GeothermalPowerSaleLeaseback.json | 75 +- ...Geothermal_GeothermalPowerSingleOwner.json | 75 +- .../Grid_GeothermalPowerLCOECalculator.json | 1 + .../defaults/Grid_GeothermalPowerNone.json | 1 + ...tricity_GeothermalPowerLCOECalculator.json | 24 + ...Lcoefcr_GeothermalPowerLCOECalculator.json | 11 - ...othermalPowerLeveragedPartnershipFlip.json | 4 +- ...antplant_GeothermalPowerMerchantPlant.json | 4 +- ...easeback_GeothermalPowerSaleLeaseback.json | 4 +- ...ingleowner_GeothermalPowerSingleOwner.json | 3 - api/include/SAM_CbConstructionFinancing.h | 72 +- api/include/SAM_Geothermal.h | 936 ++++++- api/include/SAM_GeothermalCosts.h | 300 ++- api/include/SAM_GeothermalNoFin.h | 1118 ++++++++ api/include/SAM_LcoefcrElectricity.h | 240 ++ api/modules/SAM_CbConstructionFinancing.cpp | 22 +- api/modules/SAM_Geothermal.cpp | 2312 ++++++++++++++--- api/modules/SAM_GeothermalCosts.cpp | 495 +++- api/modules/SAM_GeothermalNoFin.cpp | 2044 +++++++++++++++ api/modules/SAM_LcoefcrElectricity.cpp | 312 +++ 26 files changed, 7721 insertions(+), 651 deletions(-) rename api/api_autogen/library/defaults/{Geothermal_GeothermalPowerNone.json => GeothermalNoFin_GeothermalPowerNone.json} (96%) create mode 100644 api/api_autogen/library/defaults/LcoefcrElectricity_GeothermalPowerLCOECalculator.json delete mode 100644 api/api_autogen/library/defaults/Lcoefcr_GeothermalPowerLCOECalculator.json create mode 100644 api/include/SAM_GeothermalNoFin.h create mode 100644 api/include/SAM_LcoefcrElectricity.h create mode 100644 api/modules/SAM_GeothermalNoFin.cpp create mode 100644 api/modules/SAM_LcoefcrElectricity.cpp diff --git a/api/api_autogen/library/defaults/Equpartflip_GeothermalPowerAllEquityPartnershipFlip.json b/api/api_autogen/library/defaults/Equpartflip_GeothermalPowerAllEquityPartnershipFlip.json index 75cd32b086..991fd635fc 100644 --- a/api/api_autogen/library/defaults/Equpartflip_GeothermalPowerAllEquityPartnershipFlip.json +++ b/api/api_autogen/library/defaults/Equpartflip_GeothermalPowerAllEquityPartnershipFlip.json @@ -231,15 +231,13 @@ "pbi_uti_term": 0 }, "SystemOutput": { - "degradation": [0.000000], + "degradation": [0], "gen": [0.000000], "system_capacity": 32813.6 }, "ElectricityRates": { }, "Recapitalization": { - "system_recapitalization_cost": 4.15803e+07, - "system_use_recapitalization": 1 }, "TimeOfDelivery": { "system_use_lifetime_output": 1 diff --git a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerNone.json b/api/api_autogen/library/defaults/GeothermalNoFin_GeothermalPowerNone.json similarity index 96% rename from api/api_autogen/library/defaults/Geothermal_GeothermalPowerNone.json rename to api/api_autogen/library/defaults/GeothermalNoFin_GeothermalPowerNone.json index f185aade20..02fdbbfb5b 100644 --- a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerNone.json +++ b/api/api_autogen/library/defaults/GeothermalNoFin_GeothermalPowerNone.json @@ -1,8 +1,12 @@ { "defaults": { + "SystemControl": { + }, + "FinancialModel": { + "geo_financial_model": -999 + }, "GeoHourly": { "CT": 3, - "HTF": 3, "P_boil": 2, "P_cond_min": 1.25, "P_cond_ratio": 1.0028, @@ -10,7 +14,6 @@ "T_amb_des": 15, "T_approach": 5, "T_htf_cold_ref": 90, - "T_htf_hot_ref": 200, "allow_reservoir_replacements": 0, "ambient_pressure": 14.7, "analysis_type": 0, @@ -19,24 +22,23 @@ "dT_cw_ref": 10, "decline_type": 0, "delta_pressure_equip": 40, - "design_temp": 200, "drilling_success_rate": 76, "dt_prod_well": 0, "eta_ref": 0.17, "excess_pressure_pump": 50, - "exploration_wells_production": 0, "failed_prod_flow_ratio": 0.3, "fracture_angle": 15, "fracture_aperature": 0.0004, "fracture_length": 1000, "fracture_spacing": 50, "fracture_width": 175, + "geotherm_cost_conf_num_wells": 0, + "geotherm_cost_confirm_wells_percent": 50, "geotherm_cost_inj_cost_curve_welldiam": 0, "geotherm_cost_inj_cost_curve_welltype": 0, "geotherm_cost_inj_prod_well_ratio": 0.5, "geotherm_cost_prod_cost_curve_welldiam": 0, "geotherm_cost_prod_cost_curve_welltype": 0, - "geothermal_analysis_period": 30, "hc_ctl1": 0, "hc_ctl2": 0, "hc_ctl3": 0, @@ -54,7 +56,6 @@ "nameplate": 30000, "num_fractures": 6, "num_wells": 3, - "num_wells_getem": 4.23155, "pb_bd_frac": 0.013, "plant_efficiency_input": 80, "prod_well_choice": 0, @@ -174,10 +175,8 @@ "startup_time": 1, "stim_success_rate": 0, "subsurface_water_loss": 2, - "system_use_lifetime_output": 0, "temp_decline_max": 30, "temp_decline_rate": 0.5, - "ui_calculations_only": 0, "well_flow_rate": 110, "wet_bulb_temp": 10 }, diff --git a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerAllEquityPartnershipFlip.json b/api/api_autogen/library/defaults/Geothermal_GeothermalPowerAllEquityPartnershipFlip.json index e06f3bb4bd..9476a2472a 100644 --- a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerAllEquityPartnershipFlip.json +++ b/api/api_autogen/library/defaults/Geothermal_GeothermalPowerAllEquityPartnershipFlip.json @@ -1,8 +1,12 @@ { "defaults": { + "SystemControl": { + }, + "FinancialModel": { + "geo_financial_model": 3 + }, "GeoHourly": { "CT": 3, - "HTF": 3, "P_boil": 2, "P_cond_min": 1.25, "P_cond_ratio": 1.0028, @@ -10,7 +14,6 @@ "T_amb_des": 15, "T_approach": 5, "T_htf_cold_ref": 90, - "T_htf_hot_ref": 200, "allow_reservoir_replacements": 0, "ambient_pressure": 14.7, "analysis_type": 0, @@ -19,24 +22,53 @@ "dT_cw_ref": 10, "decline_type": 0, "delta_pressure_equip": 40, - "design_temp": 200, "drilling_success_rate": 76, "dt_prod_well": 0, "eta_ref": 0.17, "excess_pressure_pump": 50, - "exploration_wells_production": 2, "failed_prod_flow_ratio": 0.3, "fracture_angle": 15, "fracture_aperature": 0.0004, "fracture_length": 1000, "fracture_spacing": 50, "fracture_width": 175, + "geotherm_cost_conf_multiplier": 1.2, + "geotherm_cost_conf_non_drill": 250000, + "geotherm_cost_conf_num_wells": 4, + "geotherm_cost_confirm_wells_percent": 50, + "geotherm_cost_contingency_percent": 10, + "geotherm_cost_drilling_amount_specified": 0, + "geotherm_cost_drilling_calc": 1, + "geotherm_cost_epc_fixed": 0, + "geotherm_cost_epc_percent": 12, + "geotherm_cost_expl_lump_sum": 0, + "geotherm_cost_expl_multiplier": 0.5, + "geotherm_cost_expl_non_drill": 750000, + "geotherm_cost_expl_num_wells": 1, + "geotherm_cost_indirect_amount_specified": 0, + "geotherm_cost_indirect_calc": 1, + "geotherm_cost_inj_cost_curve": 0, "geotherm_cost_inj_cost_curve_welldiam": 0, "geotherm_cost_inj_cost_curve_welltype": 0, "geotherm_cost_inj_prod_well_ratio": 0.75, + "geotherm_cost_plant_auto_estimate": 0, + "geotherm_cost_plant_per_kW_input": 1800, + "geotherm_cost_plant_total_calc": 1, + "geotherm_cost_plm_fixed": 0, + "geotherm_cost_plm_percent": 3.5, + "geotherm_cost_prod_cost_curve": 0, "geotherm_cost_prod_cost_curve_welldiam": 0, "geotherm_cost_prod_cost_curve_welltype": 0, - "geothermal_analysis_period": 25, + "geotherm_cost_prod_inj_non_drill": 150000, + "geotherm_cost_pump_casing_cost": 0, + "geotherm_cost_pump_fixed": 0, + "geotherm_cost_pump_per_foot": 50, + "geotherm_cost_pumping_amount_specified": 0, + "geotherm_cost_pumping_calc": 1, + "geotherm_cost_recap_specified": 2.3e+07, + "geotherm_cost_recap_use_calc": 1, + "geotherm_cost_sales_tax_percent": 80, + "geotherm_cost_stim_non_drill": 0, "hc_ctl1": 0, "hc_ctl2": 0, "hc_ctl3": 0, @@ -54,9 +86,9 @@ "nameplate": 30000, "num_fractures": 6, "num_wells": 3, - "num_wells_getem": 4.07451, "pb_bd_frac": 0.013, "plant_efficiency_input": 80, + "ppi_base_year": 0, "prod_well_choice": 0, "pump_efficiency": 67.5, "q_sby_frac": 0.2, @@ -168,6 +200,7 @@ "rock_density": 2600, "rock_specific_heat": 950, "rock_thermal_conductivity": 3, + "sales_tax_rate": 5, "specified_pump_work_amount": 0, "specify_pump_work": 0, "start_day_of_year": 0, @@ -176,10 +209,8 @@ "stim_success_rate": 0, "stimulation_type": 0, "subsurface_water_loss": 2, - "system_use_lifetime_output": 1, "temp_decline_max": 30, "temp_decline_rate": 0.5, - "ui_calculations_only": 0, "well_flow_rate": 110, "wet_bulb_temp": 10 }, @@ -191,6 +222,34 @@ [0.000000, 0.000000, 0.000000] ], "adjust_timeindex": [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000] + }, + "FinancialParameters": { + "analysis_period": 25 + }, + "Costs": { + "geotherm_cost_plant_total_amount_specified": 0 + }, + "FinancialParameters": { + "const_per_interest_rate1": 6.5, + "const_per_interest_rate2": 7, + "const_per_interest_rate3": 0, + "const_per_interest_rate4": 0, + "const_per_interest_rate5": 0, + "const_per_months1": 60, + "const_per_months2": 24, + "const_per_months3": 0, + "const_per_months4": 0, + "const_per_months5": 0, + "const_per_percent1": 40, + "const_per_percent2": 60, + "const_per_percent3": 0, + "const_per_percent4": 0, + "const_per_percent5": 0, + "const_per_upfront_rate1": 1, + "const_per_upfront_rate2": 2, + "const_per_upfront_rate3": 0, + "const_per_upfront_rate4": 0, + "const_per_upfront_rate5": 0 } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerLCOECalculator.json b/api/api_autogen/library/defaults/Geothermal_GeothermalPowerLCOECalculator.json index a921863914..e0d80e5b9c 100644 --- a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerLCOECalculator.json +++ b/api/api_autogen/library/defaults/Geothermal_GeothermalPowerLCOECalculator.json @@ -1,8 +1,12 @@ { "defaults": { + "SystemControl": { + }, + "FinancialModel": { + "geo_financial_model": -999 + }, "GeoHourly": { "CT": 3, - "HTF": 3, "P_boil": 2, "P_cond_min": 1.25, "P_cond_ratio": 1.0028, @@ -10,7 +14,6 @@ "T_amb_des": 15, "T_approach": 5, "T_htf_cold_ref": 90, - "T_htf_hot_ref": 200, "allow_reservoir_replacements": 0, "ambient_pressure": 14.7, "analysis_type": 0, @@ -19,24 +22,53 @@ "dT_cw_ref": 10, "decline_type": 0, "delta_pressure_equip": 40, - "design_temp": 200, "drilling_success_rate": 76, "dt_prod_well": 0, "eta_ref": 0.17, "excess_pressure_pump": 50, - "exploration_wells_production": 0, "failed_prod_flow_ratio": 0.3, "fracture_angle": 15, "fracture_aperature": 0.0004, "fracture_length": 1000, "fracture_spacing": 50, "fracture_width": 175, + "geotherm_cost_conf_multiplier": 1.2, + "geotherm_cost_conf_non_drill": 250000, + "geotherm_cost_conf_num_wells": 0, + "geotherm_cost_confirm_wells_percent": 50, + "geotherm_cost_contingency_percent": 10, + "geotherm_cost_drilling_amount_specified": 0, + "geotherm_cost_drilling_calc": 1, + "geotherm_cost_epc_fixed": 0, + "geotherm_cost_epc_percent": 16, + "geotherm_cost_expl_lump_sum": 0, + "geotherm_cost_expl_multiplier": 0.5, + "geotherm_cost_expl_non_drill": 750000, + "geotherm_cost_expl_num_wells": 1, + "geotherm_cost_indirect_amount_specified": 0, + "geotherm_cost_indirect_calc": 1, + "geotherm_cost_inj_cost_curve": 0, "geotherm_cost_inj_cost_curve_welldiam": 0, "geotherm_cost_inj_cost_curve_welltype": 0, "geotherm_cost_inj_prod_well_ratio": 0.5, + "geotherm_cost_plant_auto_estimate": 0, + "geotherm_cost_plant_per_kW_input": 1800, + "geotherm_cost_plant_total_calc": 1, + "geotherm_cost_plm_fixed": 0, + "geotherm_cost_plm_percent": 3.5, + "geotherm_cost_prod_cost_curve": 0, "geotherm_cost_prod_cost_curve_welldiam": 0, "geotherm_cost_prod_cost_curve_welltype": 0, - "geothermal_analysis_period": 30, + "geotherm_cost_prod_inj_non_drill": 250000, + "geotherm_cost_pump_casing_cost": 0, + "geotherm_cost_pump_fixed": 0, + "geotherm_cost_pump_per_foot": 50, + "geotherm_cost_pumping_amount_specified": 0, + "geotherm_cost_pumping_calc": 1, + "geotherm_cost_recap_specified": 2.3e+07, + "geotherm_cost_recap_use_calc": 0, + "geotherm_cost_sales_tax_percent": 80, + "geotherm_cost_stim_non_drill": 6.47928e+06, "hc_ctl1": 0, "hc_ctl2": 0, "hc_ctl3": 0, @@ -54,9 +86,9 @@ "nameplate": 30000, "num_fractures": 6, "num_wells": 3, - "num_wells_getem": 4.23155, "pb_bd_frac": 0.013, "plant_efficiency_input": 80, + "ppi_base_year": 0, "prod_well_choice": 0, "pump_efficiency": 67.5, "q_sby_frac": 0.2, @@ -168,6 +200,7 @@ "rock_density": 2600, "rock_specific_heat": 950, "rock_thermal_conductivity": 3, + "sales_tax_rate": -999, "specified_pump_work_amount": 0, "specify_pump_work": 0, "startup_frac": 0.2, @@ -175,10 +208,8 @@ "stim_success_rate": 0, "stimulation_type": 0, "subsurface_water_loss": 2, - "system_use_lifetime_output": 0, "temp_decline_max": 30, "temp_decline_rate": 0.5, - "ui_calculations_only": 0, "well_flow_rate": 110, "wet_bulb_temp": 10 }, @@ -190,6 +221,34 @@ [0.000000, 0.000000, 0.000000] ], "adjust_timeindex": [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000] + }, + "FinancialParameters": { + "analysis_period": 1 + }, + "Costs": { + "geotherm_cost_plant_total_amount_specified": 0 + }, + "FinancialParameters": { + "const_per_interest_rate1": -999, + "const_per_interest_rate2": -999, + "const_per_interest_rate3": -999, + "const_per_interest_rate4": -999, + "const_per_interest_rate5": -999, + "const_per_months1": -999, + "const_per_months2": -999, + "const_per_months3": -999, + "const_per_months4": -999, + "const_per_months5": -999, + "const_per_percent1": -999, + "const_per_percent2": -999, + "const_per_percent3": -999, + "const_per_percent4": -999, + "const_per_percent5": -999, + "const_per_upfront_rate1": -999, + "const_per_upfront_rate2": -999, + "const_per_upfront_rate3": -999, + "const_per_upfront_rate4": -999, + "const_per_upfront_rate5": -999 } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerLeveragedPartnershipFlip.json b/api/api_autogen/library/defaults/Geothermal_GeothermalPowerLeveragedPartnershipFlip.json index e06f3bb4bd..1d01a1961e 100644 --- a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerLeveragedPartnershipFlip.json +++ b/api/api_autogen/library/defaults/Geothermal_GeothermalPowerLeveragedPartnershipFlip.json @@ -1,8 +1,12 @@ { "defaults": { + "SystemControl": { + }, + "FinancialModel": { + "geo_financial_model": 2 + }, "GeoHourly": { "CT": 3, - "HTF": 3, "P_boil": 2, "P_cond_min": 1.25, "P_cond_ratio": 1.0028, @@ -10,7 +14,6 @@ "T_amb_des": 15, "T_approach": 5, "T_htf_cold_ref": 90, - "T_htf_hot_ref": 200, "allow_reservoir_replacements": 0, "ambient_pressure": 14.7, "analysis_type": 0, @@ -19,24 +22,53 @@ "dT_cw_ref": 10, "decline_type": 0, "delta_pressure_equip": 40, - "design_temp": 200, "drilling_success_rate": 76, "dt_prod_well": 0, "eta_ref": 0.17, "excess_pressure_pump": 50, - "exploration_wells_production": 2, "failed_prod_flow_ratio": 0.3, "fracture_angle": 15, "fracture_aperature": 0.0004, "fracture_length": 1000, "fracture_spacing": 50, "fracture_width": 175, + "geotherm_cost_conf_multiplier": 1.2, + "geotherm_cost_conf_non_drill": 250000, + "geotherm_cost_conf_num_wells": 4, + "geotherm_cost_confirm_wells_percent": 50, + "geotherm_cost_contingency_percent": 10, + "geotherm_cost_drilling_amount_specified": 0, + "geotherm_cost_drilling_calc": 1, + "geotherm_cost_epc_fixed": 0, + "geotherm_cost_epc_percent": 12, + "geotherm_cost_expl_lump_sum": 0, + "geotherm_cost_expl_multiplier": 0.5, + "geotherm_cost_expl_non_drill": 750000, + "geotherm_cost_expl_num_wells": 1, + "geotherm_cost_indirect_amount_specified": 0, + "geotherm_cost_indirect_calc": 1, + "geotherm_cost_inj_cost_curve": 0, "geotherm_cost_inj_cost_curve_welldiam": 0, "geotherm_cost_inj_cost_curve_welltype": 0, "geotherm_cost_inj_prod_well_ratio": 0.75, + "geotherm_cost_plant_auto_estimate": 0, + "geotherm_cost_plant_per_kW_input": 1800, + "geotherm_cost_plant_total_calc": 1, + "geotherm_cost_plm_fixed": 0, + "geotherm_cost_plm_percent": 3.5, + "geotherm_cost_prod_cost_curve": 0, "geotherm_cost_prod_cost_curve_welldiam": 0, "geotherm_cost_prod_cost_curve_welltype": 0, - "geothermal_analysis_period": 25, + "geotherm_cost_prod_inj_non_drill": 150000, + "geotherm_cost_pump_casing_cost": 0, + "geotherm_cost_pump_fixed": 0, + "geotherm_cost_pump_per_foot": 50, + "geotherm_cost_pumping_amount_specified": 0, + "geotherm_cost_pumping_calc": 1, + "geotherm_cost_recap_specified": 2.3e+07, + "geotherm_cost_recap_use_calc": 1, + "geotherm_cost_sales_tax_percent": 80, + "geotherm_cost_stim_non_drill": 0, "hc_ctl1": 0, "hc_ctl2": 0, "hc_ctl3": 0, @@ -54,9 +86,9 @@ "nameplate": 30000, "num_fractures": 6, "num_wells": 3, - "num_wells_getem": 4.07451, "pb_bd_frac": 0.013, "plant_efficiency_input": 80, + "ppi_base_year": 0, "prod_well_choice": 0, "pump_efficiency": 67.5, "q_sby_frac": 0.2, @@ -168,6 +200,7 @@ "rock_density": 2600, "rock_specific_heat": 950, "rock_thermal_conductivity": 3, + "sales_tax_rate": 5, "specified_pump_work_amount": 0, "specify_pump_work": 0, "start_day_of_year": 0, @@ -176,10 +209,8 @@ "stim_success_rate": 0, "stimulation_type": 0, "subsurface_water_loss": 2, - "system_use_lifetime_output": 1, "temp_decline_max": 30, "temp_decline_rate": 0.5, - "ui_calculations_only": 0, "well_flow_rate": 110, "wet_bulb_temp": 10 }, @@ -191,6 +222,34 @@ [0.000000, 0.000000, 0.000000] ], "adjust_timeindex": [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000] + }, + "FinancialParameters": { + "analysis_period": 25 + }, + "Costs": { + "geotherm_cost_plant_total_amount_specified": 0 + }, + "FinancialParameters": { + "const_per_interest_rate1": 6.5, + "const_per_interest_rate2": 7, + "const_per_interest_rate3": 0, + "const_per_interest_rate4": 0, + "const_per_interest_rate5": 0, + "const_per_months1": 60, + "const_per_months2": 24, + "const_per_months3": 0, + "const_per_months4": 0, + "const_per_months5": 0, + "const_per_percent1": 40, + "const_per_percent2": 60, + "const_per_percent3": 0, + "const_per_percent4": 0, + "const_per_percent5": 0, + "const_per_upfront_rate1": 1, + "const_per_upfront_rate2": 2, + "const_per_upfront_rate3": 0, + "const_per_upfront_rate4": 0, + "const_per_upfront_rate5": 0 } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerMerchantPlant.json b/api/api_autogen/library/defaults/Geothermal_GeothermalPowerMerchantPlant.json index e06f3bb4bd..0222769cd6 100644 --- a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerMerchantPlant.json +++ b/api/api_autogen/library/defaults/Geothermal_GeothermalPowerMerchantPlant.json @@ -1,8 +1,12 @@ { "defaults": { + "SystemControl": { + }, + "FinancialModel": { + "geo_financial_model": 6 + }, "GeoHourly": { "CT": 3, - "HTF": 3, "P_boil": 2, "P_cond_min": 1.25, "P_cond_ratio": 1.0028, @@ -10,7 +14,6 @@ "T_amb_des": 15, "T_approach": 5, "T_htf_cold_ref": 90, - "T_htf_hot_ref": 200, "allow_reservoir_replacements": 0, "ambient_pressure": 14.7, "analysis_type": 0, @@ -19,24 +22,53 @@ "dT_cw_ref": 10, "decline_type": 0, "delta_pressure_equip": 40, - "design_temp": 200, "drilling_success_rate": 76, "dt_prod_well": 0, "eta_ref": 0.17, "excess_pressure_pump": 50, - "exploration_wells_production": 2, "failed_prod_flow_ratio": 0.3, "fracture_angle": 15, "fracture_aperature": 0.0004, "fracture_length": 1000, "fracture_spacing": 50, "fracture_width": 175, + "geotherm_cost_conf_multiplier": 1.2, + "geotherm_cost_conf_non_drill": 250000, + "geotherm_cost_conf_num_wells": 4, + "geotherm_cost_confirm_wells_percent": 50, + "geotherm_cost_contingency_percent": 10, + "geotherm_cost_drilling_amount_specified": 0, + "geotherm_cost_drilling_calc": 1, + "geotherm_cost_epc_fixed": 0, + "geotherm_cost_epc_percent": 12, + "geotherm_cost_expl_lump_sum": 0, + "geotherm_cost_expl_multiplier": 0.5, + "geotherm_cost_expl_non_drill": 750000, + "geotherm_cost_expl_num_wells": 1, + "geotherm_cost_indirect_amount_specified": 0, + "geotherm_cost_indirect_calc": 1, + "geotherm_cost_inj_cost_curve": 0, "geotherm_cost_inj_cost_curve_welldiam": 0, "geotherm_cost_inj_cost_curve_welltype": 0, "geotherm_cost_inj_prod_well_ratio": 0.75, + "geotherm_cost_plant_auto_estimate": 0, + "geotherm_cost_plant_per_kW_input": 1800, + "geotherm_cost_plant_total_calc": 1, + "geotherm_cost_plm_fixed": 0, + "geotherm_cost_plm_percent": 3.5, + "geotherm_cost_prod_cost_curve": 0, "geotherm_cost_prod_cost_curve_welldiam": 0, "geotherm_cost_prod_cost_curve_welltype": 0, - "geothermal_analysis_period": 25, + "geotherm_cost_prod_inj_non_drill": 150000, + "geotherm_cost_pump_casing_cost": 0, + "geotherm_cost_pump_fixed": 0, + "geotherm_cost_pump_per_foot": 50, + "geotherm_cost_pumping_amount_specified": 0, + "geotherm_cost_pumping_calc": 1, + "geotherm_cost_recap_specified": 2.3e+07, + "geotherm_cost_recap_use_calc": 1, + "geotherm_cost_sales_tax_percent": 80, + "geotherm_cost_stim_non_drill": 0, "hc_ctl1": 0, "hc_ctl2": 0, "hc_ctl3": 0, @@ -54,9 +86,9 @@ "nameplate": 30000, "num_fractures": 6, "num_wells": 3, - "num_wells_getem": 4.07451, "pb_bd_frac": 0.013, "plant_efficiency_input": 80, + "ppi_base_year": 0, "prod_well_choice": 0, "pump_efficiency": 67.5, "q_sby_frac": 0.2, @@ -168,6 +200,7 @@ "rock_density": 2600, "rock_specific_heat": 950, "rock_thermal_conductivity": 3, + "sales_tax_rate": 5, "specified_pump_work_amount": 0, "specify_pump_work": 0, "start_day_of_year": 0, @@ -176,10 +209,8 @@ "stim_success_rate": 0, "stimulation_type": 0, "subsurface_water_loss": 2, - "system_use_lifetime_output": 1, "temp_decline_max": 30, "temp_decline_rate": 0.5, - "ui_calculations_only": 0, "well_flow_rate": 110, "wet_bulb_temp": 10 }, @@ -191,6 +222,34 @@ [0.000000, 0.000000, 0.000000] ], "adjust_timeindex": [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000] + }, + "FinancialParameters": { + "analysis_period": 25 + }, + "Costs": { + "geotherm_cost_plant_total_amount_specified": 0 + }, + "FinancialParameters": { + "const_per_interest_rate1": 6.5, + "const_per_interest_rate2": 7, + "const_per_interest_rate3": 0, + "const_per_interest_rate4": 0, + "const_per_interest_rate5": 0, + "const_per_months1": 60, + "const_per_months2": 24, + "const_per_months3": 0, + "const_per_months4": 0, + "const_per_months5": 0, + "const_per_percent1": 40, + "const_per_percent2": 60, + "const_per_percent3": 0, + "const_per_percent4": 0, + "const_per_percent5": 0, + "const_per_upfront_rate1": 1, + "const_per_upfront_rate2": 2, + "const_per_upfront_rate3": 0, + "const_per_upfront_rate4": 0, + "const_per_upfront_rate5": 0 } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerSaleLeaseback.json b/api/api_autogen/library/defaults/Geothermal_GeothermalPowerSaleLeaseback.json index e06f3bb4bd..907cb408ec 100644 --- a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerSaleLeaseback.json +++ b/api/api_autogen/library/defaults/Geothermal_GeothermalPowerSaleLeaseback.json @@ -1,8 +1,12 @@ { "defaults": { + "SystemControl": { + }, + "FinancialModel": { + "geo_financial_model": 4 + }, "GeoHourly": { "CT": 3, - "HTF": 3, "P_boil": 2, "P_cond_min": 1.25, "P_cond_ratio": 1.0028, @@ -10,7 +14,6 @@ "T_amb_des": 15, "T_approach": 5, "T_htf_cold_ref": 90, - "T_htf_hot_ref": 200, "allow_reservoir_replacements": 0, "ambient_pressure": 14.7, "analysis_type": 0, @@ -19,24 +22,53 @@ "dT_cw_ref": 10, "decline_type": 0, "delta_pressure_equip": 40, - "design_temp": 200, "drilling_success_rate": 76, "dt_prod_well": 0, "eta_ref": 0.17, "excess_pressure_pump": 50, - "exploration_wells_production": 2, "failed_prod_flow_ratio": 0.3, "fracture_angle": 15, "fracture_aperature": 0.0004, "fracture_length": 1000, "fracture_spacing": 50, "fracture_width": 175, + "geotherm_cost_conf_multiplier": 1.2, + "geotherm_cost_conf_non_drill": 250000, + "geotherm_cost_conf_num_wells": 4, + "geotherm_cost_confirm_wells_percent": 50, + "geotherm_cost_contingency_percent": 10, + "geotherm_cost_drilling_amount_specified": 0, + "geotherm_cost_drilling_calc": 1, + "geotherm_cost_epc_fixed": 0, + "geotherm_cost_epc_percent": 12, + "geotherm_cost_expl_lump_sum": 0, + "geotherm_cost_expl_multiplier": 0.5, + "geotherm_cost_expl_non_drill": 750000, + "geotherm_cost_expl_num_wells": 1, + "geotherm_cost_indirect_amount_specified": 0, + "geotherm_cost_indirect_calc": 1, + "geotherm_cost_inj_cost_curve": 0, "geotherm_cost_inj_cost_curve_welldiam": 0, "geotherm_cost_inj_cost_curve_welltype": 0, "geotherm_cost_inj_prod_well_ratio": 0.75, + "geotherm_cost_plant_auto_estimate": 0, + "geotherm_cost_plant_per_kW_input": 1800, + "geotherm_cost_plant_total_calc": 1, + "geotherm_cost_plm_fixed": 0, + "geotherm_cost_plm_percent": 3.5, + "geotherm_cost_prod_cost_curve": 0, "geotherm_cost_prod_cost_curve_welldiam": 0, "geotherm_cost_prod_cost_curve_welltype": 0, - "geothermal_analysis_period": 25, + "geotherm_cost_prod_inj_non_drill": 150000, + "geotherm_cost_pump_casing_cost": 0, + "geotherm_cost_pump_fixed": 0, + "geotherm_cost_pump_per_foot": 50, + "geotherm_cost_pumping_amount_specified": 0, + "geotherm_cost_pumping_calc": 1, + "geotherm_cost_recap_specified": 2.3e+07, + "geotherm_cost_recap_use_calc": 1, + "geotherm_cost_sales_tax_percent": 80, + "geotherm_cost_stim_non_drill": 0, "hc_ctl1": 0, "hc_ctl2": 0, "hc_ctl3": 0, @@ -54,9 +86,9 @@ "nameplate": 30000, "num_fractures": 6, "num_wells": 3, - "num_wells_getem": 4.07451, "pb_bd_frac": 0.013, "plant_efficiency_input": 80, + "ppi_base_year": 0, "prod_well_choice": 0, "pump_efficiency": 67.5, "q_sby_frac": 0.2, @@ -168,6 +200,7 @@ "rock_density": 2600, "rock_specific_heat": 950, "rock_thermal_conductivity": 3, + "sales_tax_rate": 5, "specified_pump_work_amount": 0, "specify_pump_work": 0, "start_day_of_year": 0, @@ -176,10 +209,8 @@ "stim_success_rate": 0, "stimulation_type": 0, "subsurface_water_loss": 2, - "system_use_lifetime_output": 1, "temp_decline_max": 30, "temp_decline_rate": 0.5, - "ui_calculations_only": 0, "well_flow_rate": 110, "wet_bulb_temp": 10 }, @@ -191,6 +222,34 @@ [0.000000, 0.000000, 0.000000] ], "adjust_timeindex": [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000] + }, + "FinancialParameters": { + "analysis_period": 25 + }, + "Costs": { + "geotherm_cost_plant_total_amount_specified": 0 + }, + "FinancialParameters": { + "const_per_interest_rate1": 6.5, + "const_per_interest_rate2": 7, + "const_per_interest_rate3": 0, + "const_per_interest_rate4": 0, + "const_per_interest_rate5": 0, + "const_per_months1": 60, + "const_per_months2": 24, + "const_per_months3": 0, + "const_per_months4": 0, + "const_per_months5": 0, + "const_per_percent1": 40, + "const_per_percent2": 60, + "const_per_percent3": 0, + "const_per_percent4": 0, + "const_per_percent5": 0, + "const_per_upfront_rate1": 1, + "const_per_upfront_rate2": 2, + "const_per_upfront_rate3": 0, + "const_per_upfront_rate4": 0, + "const_per_upfront_rate5": 0 } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerSingleOwner.json b/api/api_autogen/library/defaults/Geothermal_GeothermalPowerSingleOwner.json index 07ed6206ad..a568807842 100644 --- a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerSingleOwner.json +++ b/api/api_autogen/library/defaults/Geothermal_GeothermalPowerSingleOwner.json @@ -1,8 +1,12 @@ { "defaults": { + "SystemControl": { + }, + "FinancialModel": { + "geo_financial_model": 1 + }, "GeoHourly": { "CT": 3, - "HTF": 3, "P_boil": 2, "P_cond_min": 1.25, "P_cond_ratio": 1.0028, @@ -10,7 +14,6 @@ "T_amb_des": 15, "T_approach": 5, "T_htf_cold_ref": 90, - "T_htf_hot_ref": 200, "allow_reservoir_replacements": 0, "ambient_pressure": 14.7, "analysis_type": 0, @@ -19,24 +22,53 @@ "dT_cw_ref": 10, "decline_type": 0, "delta_pressure_equip": 40, - "design_temp": 200, "drilling_success_rate": 76, "dt_prod_well": 0, "eta_ref": 0.17, "excess_pressure_pump": 50, - "exploration_wells_production": 1.5, "failed_prod_flow_ratio": 0.3, "fracture_angle": 15, "fracture_aperature": 0.0004, "fracture_length": 1000, "fracture_spacing": 50, "fracture_width": 175, + "geotherm_cost_conf_multiplier": 1.2, + "geotherm_cost_conf_non_drill": 250000, + "geotherm_cost_conf_num_wells": 3, + "geotherm_cost_confirm_wells_percent": 50, + "geotherm_cost_contingency_percent": 10, + "geotherm_cost_drilling_amount_specified": 0, + "geotherm_cost_drilling_calc": 1, + "geotherm_cost_epc_fixed": 0, + "geotherm_cost_epc_percent": 12, + "geotherm_cost_expl_lump_sum": 0, + "geotherm_cost_expl_multiplier": 0.5, + "geotherm_cost_expl_non_drill": 750000, + "geotherm_cost_expl_num_wells": 1, + "geotherm_cost_indirect_amount_specified": 0, + "geotherm_cost_indirect_calc": 1, + "geotherm_cost_inj_cost_curve": 0, "geotherm_cost_inj_cost_curve_welldiam": 1, "geotherm_cost_inj_cost_curve_welltype": 0, "geotherm_cost_inj_prod_well_ratio": 0.75, + "geotherm_cost_plant_auto_estimate": 1, + "geotherm_cost_plant_per_kW_input": 1800, + "geotherm_cost_plant_total_calc": 1, + "geotherm_cost_plm_fixed": 0, + "geotherm_cost_plm_percent": 3.5, + "geotherm_cost_prod_cost_curve": 0, "geotherm_cost_prod_cost_curve_welldiam": 0, "geotherm_cost_prod_cost_curve_welltype": 0, - "geothermal_analysis_period": 30, + "geotherm_cost_prod_inj_non_drill": 150000, + "geotherm_cost_pump_casing_cost": 0, + "geotherm_cost_pump_fixed": 0, + "geotherm_cost_pump_per_foot": 50, + "geotherm_cost_pumping_amount_specified": 0, + "geotherm_cost_pumping_calc": 1, + "geotherm_cost_recap_specified": 2.3e+07, + "geotherm_cost_recap_use_calc": 1, + "geotherm_cost_sales_tax_percent": 80, + "geotherm_cost_stim_non_drill": 0, "hc_ctl1": 0, "hc_ctl2": 0, "hc_ctl3": 0, @@ -54,9 +86,9 @@ "nameplate": 40000, "num_fractures": 6, "num_wells": 3, - "num_wells_getem": 5.5592, "pb_bd_frac": 0.013, "plant_efficiency_input": 80.6, + "ppi_base_year": 27, "prod_well_choice": 0, "pump_efficiency": 67.5, "q_sby_frac": 0.2, @@ -168,6 +200,7 @@ "rock_density": 2600, "rock_specific_heat": 950, "rock_thermal_conductivity": 3, + "sales_tax_rate": 5, "specified_pump_work_amount": 0, "specify_pump_work": 0, "start_day_of_year": 0, @@ -176,10 +209,8 @@ "stim_success_rate": 0, "stimulation_type": 0, "subsurface_water_loss": 2, - "system_use_lifetime_output": 1, "temp_decline_max": 30, "temp_decline_rate": 0.5, - "ui_calculations_only": 0, "well_flow_rate": 110, "wet_bulb_temp": 10 }, @@ -191,6 +222,34 @@ [0.000000, 0.000000, 0.000000] ], "adjust_timeindex": [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000] + }, + "FinancialParameters": { + "analysis_period": 30 + }, + "Costs": { + "geotherm_cost_plant_total_amount_specified": 0 + }, + "FinancialParameters": { + "const_per_interest_rate1": 6.5, + "const_per_interest_rate2": 7, + "const_per_interest_rate3": 0, + "const_per_interest_rate4": 0, + "const_per_interest_rate5": 0, + "const_per_months1": 60, + "const_per_months2": 24, + "const_per_months3": 0, + "const_per_months4": 0, + "const_per_months5": 0, + "const_per_percent1": 40, + "const_per_percent2": 60, + "const_per_percent3": 0, + "const_per_percent4": 0, + "const_per_percent5": 0, + "const_per_upfront_rate1": 1, + "const_per_upfront_rate2": 2, + "const_per_upfront_rate3": 0, + "const_per_upfront_rate4": 0, + "const_per_upfront_rate5": 0 } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Grid_GeothermalPowerLCOECalculator.json b/api/api_autogen/library/defaults/Grid_GeothermalPowerLCOECalculator.json index d826072755..31b0c12d3e 100644 --- a/api/api_autogen/library/defaults/Grid_GeothermalPowerLCOECalculator.json +++ b/api/api_autogen/library/defaults/Grid_GeothermalPowerLCOECalculator.json @@ -1,6 +1,7 @@ { "defaults": { "Lifetime": { + "analysis_period": 1, "system_use_lifetime_output": 0 }, "SystemOutput": { diff --git a/api/api_autogen/library/defaults/Grid_GeothermalPowerNone.json b/api/api_autogen/library/defaults/Grid_GeothermalPowerNone.json index d826072755..8bf3f9de35 100644 --- a/api/api_autogen/library/defaults/Grid_GeothermalPowerNone.json +++ b/api/api_autogen/library/defaults/Grid_GeothermalPowerNone.json @@ -1,6 +1,7 @@ { "defaults": { "Lifetime": { + "analysis_period": 0, "system_use_lifetime_output": 0 }, "SystemOutput": { diff --git a/api/api_autogen/library/defaults/LcoefcrElectricity_GeothermalPowerLCOECalculator.json b/api/api_autogen/library/defaults/LcoefcrElectricity_GeothermalPowerLCOECalculator.json new file mode 100644 index 0000000000..130b452454 --- /dev/null +++ b/api/api_autogen/library/defaults/LcoefcrElectricity_GeothermalPowerLCOECalculator.json @@ -0,0 +1,24 @@ +{ + "defaults": { + "SystemControl": { + }, + "SimpleLCOE": { + "c_construction_cost": [40.000000, 30.000000, 20.000000, 10.000000], + "c_construction_interest": 6.5, + "c_debt_percent": 60, + "c_depreciation_schedule": [20.000000, 32.000000, 19.200000, 11.520000, 11.520000, 5.760000], + "c_equity_return": 13, + "c_inflation": 2.5, + "c_lifetime": 20, + "c_nominal_interest_rate": 7, + "c_tax_rate": 28, + "fixed_operating_cost": 6.0877e+06, + "ui_fcr_input_option": 1, + "ui_fixed_charge_rate": 0.098, + "variable_operating_cost": 0 + }, + "SystemCosts": { + "total_installed_cost": 1.87886e+08 + } + } +} \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Lcoefcr_GeothermalPowerLCOECalculator.json b/api/api_autogen/library/defaults/Lcoefcr_GeothermalPowerLCOECalculator.json deleted file mode 100644 index a512f93c6b..0000000000 --- a/api/api_autogen/library/defaults/Lcoefcr_GeothermalPowerLCOECalculator.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "defaults": { - "SimpleLCOE": { - "annual_energy": 0, - "capital_cost": 1.27243e+08, - "fixed_charge_rate": 0.0971998, - "fixed_operating_cost": 6.0877e+06, - "variable_operating_cost": 0 - } - } -} \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Levpartflip_GeothermalPowerLeveragedPartnershipFlip.json b/api/api_autogen/library/defaults/Levpartflip_GeothermalPowerLeveragedPartnershipFlip.json index b8c2fcfbb3..45ebfb182f 100644 --- a/api/api_autogen/library/defaults/Levpartflip_GeothermalPowerLeveragedPartnershipFlip.json +++ b/api/api_autogen/library/defaults/Levpartflip_GeothermalPowerLeveragedPartnershipFlip.json @@ -251,7 +251,7 @@ "pbi_uti_term": 0 }, "SystemOutput": { - "degradation": [0.000000], + "degradation": [0], "gen": [0.000000], "system_capacity": 32813.6 }, @@ -261,8 +261,6 @@ "loan_moratorium": 0 }, "Recapitalization": { - "system_recapitalization_cost": 4.15803e+07, - "system_use_recapitalization": 1 }, "TimeOfDelivery": { "system_use_lifetime_output": 1 diff --git a/api/api_autogen/library/defaults/Merchantplant_GeothermalPowerMerchantPlant.json b/api/api_autogen/library/defaults/Merchantplant_GeothermalPowerMerchantPlant.json index fd024a9634..27ef95b924 100644 --- a/api/api_autogen/library/defaults/Merchantplant_GeothermalPowerMerchantPlant.json +++ b/api/api_autogen/library/defaults/Merchantplant_GeothermalPowerMerchantPlant.json @@ -46,8 +46,6 @@ "om_fixed_escal": 0, "om_production": [0.000000], "om_production_escal": 0, - "system_recapitalization_cost": 4.15803e+07, - "system_use_recapitalization": 1, "total_installed_cost": 1.32084e+08 }, "LandLease": { @@ -219266,7 +219264,7 @@ "ElectricityRates": { }, "SystemOutput": { - "degradation": [0.000000], + "degradation": [0], "gen": [0.000000], "system_capacity": 32813.6 }, diff --git a/api/api_autogen/library/defaults/Saleleaseback_GeothermalPowerSaleLeaseback.json b/api/api_autogen/library/defaults/Saleleaseback_GeothermalPowerSaleLeaseback.json index a80fa7aad8..541edd3c0e 100644 --- a/api/api_autogen/library/defaults/Saleleaseback_GeothermalPowerSaleLeaseback.json +++ b/api/api_autogen/library/defaults/Saleleaseback_GeothermalPowerSaleLeaseback.json @@ -226,7 +226,7 @@ "pbi_uti_term": 0 }, "SystemOutput": { - "degradation": [0.000000], + "degradation": [0], "gen": [0.000000], "system_capacity": 32813.6 }, @@ -244,9 +244,7 @@ "salvage_percentage": 0, "sponsor_operating_margin": 20, "sponsor_operating_margin_escalation": 2, - "system_recapitalization_cost": 4.15803e+07, "system_use_lifetime_output": 1, - "system_use_recapitalization": 1, "tax_investor_required_lease_reserve": 6, "total_installed_cost": 1.32084e+08 }, diff --git a/api/api_autogen/library/defaults/Singleowner_GeothermalPowerSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_GeothermalPowerSingleOwner.json index 870a4c5e15..6838b26ae3 100644 --- a/api/api_autogen/library/defaults/Singleowner_GeothermalPowerSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_GeothermalPowerSingleOwner.json @@ -84,8 +84,6 @@ "om_fixed_escal": 0, "om_production": [0.000000], "om_production_escal": 0, - "system_recapitalization_cost": 5.96904e+07, - "system_use_recapitalization": 1, "total_installed_cost": 2.39499e+08 }, "LandLease": { @@ -259,7 +257,6 @@ "start_day_of_year": 0 }, "SystemOutput": { - "degradation": [0.000000], "gen": [0.000000], "system_capacity": 45106.2 }, diff --git a/api/include/SAM_CbConstructionFinancing.h b/api/include/SAM_CbConstructionFinancing.h index 8d5514b56b..b18d24fab3 100644 --- a/api/include/SAM_CbConstructionFinancing.h +++ b/api/include/SAM_CbConstructionFinancing.h @@ -27,19 +27,6 @@ extern "C" SAM_EXPORT int SAM_CbConstructionFinancing_execute(SAM_table data, int verbosity, SAM_error* err); - // - // SystemCosts parameters - // - - /** - * Set total_installed_cost: Total installed cost [$] - * options: None - * constraints: None - * required if: * - */ - SAM_EXPORT void SAM_CbConstructionFinancing_SystemCosts_total_installed_cost_nset(SAM_table ptr, double number, SAM_error *err); - - // // FinancialParameters parameters // @@ -48,7 +35,7 @@ extern "C" * Set const_per_interest_rate1: Interest rate, loan 1 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_interest_rate1_nset(SAM_table ptr, double number, SAM_error *err); @@ -56,7 +43,7 @@ extern "C" * Set const_per_interest_rate2: Interest rate, loan 2 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_interest_rate2_nset(SAM_table ptr, double number, SAM_error *err); @@ -64,7 +51,7 @@ extern "C" * Set const_per_interest_rate3: Interest rate, loan 3 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_interest_rate3_nset(SAM_table ptr, double number, SAM_error *err); @@ -72,7 +59,7 @@ extern "C" * Set const_per_interest_rate4: Interest rate, loan 4 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_interest_rate4_nset(SAM_table ptr, double number, SAM_error *err); @@ -80,7 +67,7 @@ extern "C" * Set const_per_interest_rate5: Interest rate, loan 5 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_interest_rate5_nset(SAM_table ptr, double number, SAM_error *err); @@ -88,7 +75,7 @@ extern "C" * Set const_per_months1: Months prior to operation, loan 1 * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_months1_nset(SAM_table ptr, double number, SAM_error *err); @@ -96,7 +83,7 @@ extern "C" * Set const_per_months2: Months prior to operation, loan 2 * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_months2_nset(SAM_table ptr, double number, SAM_error *err); @@ -104,7 +91,7 @@ extern "C" * Set const_per_months3: Months prior to operation, loan 3 * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_months3_nset(SAM_table ptr, double number, SAM_error *err); @@ -112,7 +99,7 @@ extern "C" * Set const_per_months4: Months prior to operation, loan 4 * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_months4_nset(SAM_table ptr, double number, SAM_error *err); @@ -120,7 +107,7 @@ extern "C" * Set const_per_months5: Months prior to operation, loan 5 * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_months5_nset(SAM_table ptr, double number, SAM_error *err); @@ -128,7 +115,7 @@ extern "C" * Set const_per_percent1: Percent of tot. installed cost, loan 1 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_percent1_nset(SAM_table ptr, double number, SAM_error *err); @@ -136,7 +123,7 @@ extern "C" * Set const_per_percent2: Percent of tot. installed cost, loan 2 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_percent2_nset(SAM_table ptr, double number, SAM_error *err); @@ -144,7 +131,7 @@ extern "C" * Set const_per_percent3: Percent of tot. installed cost, loan 3 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_percent3_nset(SAM_table ptr, double number, SAM_error *err); @@ -152,7 +139,7 @@ extern "C" * Set const_per_percent4: Percent of tot. installed cost, loan 4 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_percent4_nset(SAM_table ptr, double number, SAM_error *err); @@ -160,7 +147,7 @@ extern "C" * Set const_per_percent5: Percent of tot. installed cost, loan 5 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_percent5_nset(SAM_table ptr, double number, SAM_error *err); @@ -168,7 +155,7 @@ extern "C" * Set const_per_upfront_rate1: Upfront fee on principal, loan 1 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_upfront_rate1_nset(SAM_table ptr, double number, SAM_error *err); @@ -176,7 +163,7 @@ extern "C" * Set const_per_upfront_rate2: Upfront fee on principal, loan 2 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_upfront_rate2_nset(SAM_table ptr, double number, SAM_error *err); @@ -184,7 +171,7 @@ extern "C" * Set const_per_upfront_rate3: Upfront fee on principal, loan 3 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_upfront_rate3_nset(SAM_table ptr, double number, SAM_error *err); @@ -192,7 +179,7 @@ extern "C" * Set const_per_upfront_rate4: Upfront fee on principal, loan 4 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_upfront_rate4_nset(SAM_table ptr, double number, SAM_error *err); @@ -200,16 +187,22 @@ extern "C" * Set const_per_upfront_rate5: Upfront fee on principal, loan 5 [%] * options: None * constraints: None - * required if: * + * required if: None */ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_upfront_rate5_nset(SAM_table ptr, double number, SAM_error *err); + // + // SystemCosts parameters + // + /** - * SystemCosts Getters + * Set total_installed_cost: Total installed cost [$] + * options: None + * constraints: None + * required if: None */ - - SAM_EXPORT double SAM_CbConstructionFinancing_SystemCosts_total_installed_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT void SAM_CbConstructionFinancing_SystemCosts_total_installed_cost_nset(SAM_table ptr, double number, SAM_error *err); /** @@ -257,6 +250,13 @@ extern "C" SAM_EXPORT double SAM_CbConstructionFinancing_FinancialParameters_const_per_upfront_rate5_nget(SAM_table ptr, SAM_error *err); + /** + * SystemCosts Getters + */ + + SAM_EXPORT double SAM_CbConstructionFinancing_SystemCosts_total_installed_cost_nget(SAM_table ptr, SAM_error *err); + + /** * Outputs Getters */ diff --git a/api/include/SAM_Geothermal.h b/api/include/SAM_Geothermal.h index 1cb0147672..06da9270c5 100644 --- a/api/include/SAM_Geothermal.h +++ b/api/include/SAM_Geothermal.h @@ -28,30 +28,48 @@ extern "C" // - // GeoHourly parameters + // SystemControl parameters // /** - * Set CT: Condenser type (Wet, Dry,Hybrid) [(1-3)] + * Set sim_type: 1 (default): timeseries, 2: design only * options: None - * constraints: INTEGER - * required if: ui_calculations_only=0 + * constraints: None + * required if: ?=1 */ - SAM_EXPORT void SAM_Geothermal_GeoHourly_CT_nset(SAM_table ptr, double number, SAM_error *err); + SAM_EXPORT void SAM_Geothermal_SystemControl_sim_type_nset(SAM_table ptr, double number, SAM_error *err); + + + // + // FinancialModel parameters + // + + /** + * Set geo_financial_model: [1-8] + * options: None + * constraints: INTEGER,MIN=0 + * required if: ?=1 + */ + SAM_EXPORT void SAM_Geothermal_FinancialModel_geo_financial_model_nset(SAM_table ptr, double number, SAM_error *err); + + + // + // GeoHourly parameters + // /** - * Set HTF: Heat trans fluid type ID [(1-27)] + * Set CT: Condenser type (Wet, Dry,Hybrid) [(1-3)] * options: None * constraints: INTEGER - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ - SAM_EXPORT void SAM_Geothermal_GeoHourly_HTF_nset(SAM_table ptr, double number, SAM_error *err); + SAM_EXPORT void SAM_Geothermal_GeoHourly_CT_nset(SAM_table ptr, double number, SAM_error *err); /** * Set P_boil: Design Boiler Pressure [bar] * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_P_boil_nset(SAM_table ptr, double number, SAM_error *err); @@ -59,7 +77,7 @@ extern "C" * Set P_cond_min: Minimum condenser pressure [in Hg] * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_P_cond_min_nset(SAM_table ptr, double number, SAM_error *err); @@ -67,7 +85,7 @@ extern "C" * Set P_cond_ratio: Condenser pressure ratio * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_P_cond_ratio_nset(SAM_table ptr, double number, SAM_error *err); @@ -75,7 +93,7 @@ extern "C" * Set T_ITD_des: Design ITD for dry system [C] * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_T_ITD_des_nset(SAM_table ptr, double number, SAM_error *err); @@ -83,7 +101,7 @@ extern "C" * Set T_amb_des: Design ambient temperature [C] * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_T_amb_des_nset(SAM_table ptr, double number, SAM_error *err); @@ -91,7 +109,7 @@ extern "C" * Set T_approach: Approach Temperature [C] * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_T_approach_nset(SAM_table ptr, double number, SAM_error *err); @@ -99,18 +117,10 @@ extern "C" * Set T_htf_cold_ref: Outlet design temp [C] * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_T_htf_cold_ref_nset(SAM_table ptr, double number, SAM_error *err); - /** - * Set T_htf_hot_ref: Inlet design temp [C] - * options: None - * constraints: None - * required if: ui_calculations_only=0 - */ - SAM_EXPORT void SAM_Geothermal_GeoHourly_T_htf_hot_ref_nset(SAM_table ptr, double number, SAM_error *err); - /** * Set allow_reservoir_replacements: Allow reservoir replacements * options: None @@ -135,6 +145,14 @@ extern "C" */ SAM_EXPORT void SAM_Geothermal_GeoHourly_analysis_type_nset(SAM_table ptr, double number, SAM_error *err); + /** + * Set calc_drill_costs: Calculate drill costs [0/1] + * options: 0=LargerDiameter,1=SmallerDiameter + * constraints: None + * required if: ?=1 + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_calc_drill_costs_nset(SAM_table ptr, double number, SAM_error *err); + /** * Set conversion_subtype: Conversion Subtype * options: None @@ -144,7 +162,7 @@ extern "C" SAM_EXPORT void SAM_Geothermal_GeoHourly_conversion_subtype_nset(SAM_table ptr, double number, SAM_error *err); /** - * Set conversion_type: Conversion Type + * Set conversion_type: Conversion Type (0: binary; 1: flash) * options: None * constraints: INTEGER * required if: * @@ -155,12 +173,12 @@ extern "C" * Set dT_cw_ref: Design condenser cooling water inlet/outlet T diff [C] * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_dT_cw_ref_nset(SAM_table ptr, double number, SAM_error *err); /** - * Set decline_type: Temp decline Type + * Set decline_type: Temp decline Type (0: enter rate; 1 calc rate) * options: None * constraints: INTEGER * required if: * @@ -175,14 +193,6 @@ extern "C" */ SAM_EXPORT void SAM_Geothermal_GeoHourly_delta_pressure_equip_nset(SAM_table ptr, double number, SAM_error *err); - /** - * Set design_temp: Power block design temperature [C] - * options: None - * constraints: None - * required if: * - */ - SAM_EXPORT void SAM_Geothermal_GeoHourly_design_temp_nset(SAM_table ptr, double number, SAM_error *err); - /** * Set drilling_success_rate: Drilling success rate [%] * options: None @@ -203,7 +213,7 @@ extern "C" * Set eta_ref: Desgin conversion efficiency [%] * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_eta_ref_nset(SAM_table ptr, double number, SAM_error *err); @@ -215,14 +225,6 @@ extern "C" */ SAM_EXPORT void SAM_Geothermal_GeoHourly_excess_pressure_pump_nset(SAM_table ptr, double number, SAM_error *err); - /** - * Set exploration_wells_production: Exploration wells used for production - * options: None - * constraints: None - * required if: * - */ - SAM_EXPORT void SAM_Geothermal_GeoHourly_exploration_wells_production_nset(SAM_table ptr, double number, SAM_error *err); - /** * Set failed_prod_flow_ratio: Failed production well flow ratio * options: None @@ -235,7 +237,7 @@ extern "C" * Set file_name: local weather file path * options: None * constraints: LOCAL_FILE - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_file_name_sset(SAM_table ptr, const char* str, SAM_error *err); @@ -279,6 +281,134 @@ extern "C" */ SAM_EXPORT void SAM_Geothermal_GeoHourly_fracture_width_nset(SAM_table ptr, double number, SAM_error *err); + /** + * Set geotherm.cost.conf_multiplier: Confirmation cost multiplier + * options: None + * constraints: None + * required if: calc_drill_costs=1 + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_conf_multiplier_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.conf_non_drill: Confirmation non drilling costs [$] + * options: None + * constraints: None + * required if: calc_drill_costs=1 + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_conf_non_drill_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.conf_num_wells: Number of confirmation wells + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_conf_num_wells_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.confirm_wells_percent: % of Confirmation Wells Used for Production + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_confirm_wells_percent_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.contingency_percent: Contingency percent [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_contingency_percent_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.drilling.amount_specified: Absolute drilling cost input [$] + * options: None + * constraints: None + * required if: calc_drill_costs=1 + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_drilling_amount_specified_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.drilling.calc: 0: user specified absolute drilling cost, 1: calculated [$] + * options: None + * constraints: None + * required if: calc_drill_costs=1 + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_drilling_calc_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.epc.fixed: EPC fixed cost [$] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_epc_fixed_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.epc.percent: EPC percent [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_epc_percent_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.expl_lump_sum: Exploration cost lump sum + * options: None + * constraints: None + * required if: calc_drill_costs=1 + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_expl_lump_sum_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.expl_multiplier: Exploration cost multiplier + * options: None + * constraints: None + * required if: calc_drill_costs=1 + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_expl_multiplier_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.expl_non_drill: Exploration non drilling costs [$] + * options: None + * constraints: None + * required if: calc_drill_costs=1 + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_expl_non_drill_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.expl_num_wells: Number of exploration wells + * options: None + * constraints: None + * required if: calc_drill_costs=1 + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_expl_num_wells_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.indirect.amount_specified: Absolute indirect cost input [$] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_indirect_amount_specified_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.indirect.calc: 0: user specified absolute indirect cost, 1: calculated + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_indirect_calc_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.inj_cost_curve: Injection well diameter type [0/1] + * options: 0=LargerDiameter,1=SmallerDiameter + * constraints: None + * required if: calc_drill_costs=1 + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_inj_cost_curve_nset(SAM_table ptr, double number, SAM_error *err); + /** * Set geotherm.cost.inj_cost_curve_welldiam: Injection well diameter type [0/1] * options: 0=LargerDiameter,1=SmallerDiameter @@ -303,6 +433,54 @@ extern "C" */ SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_inj_prod_well_ratio_nset(SAM_table ptr, double number, SAM_error *err); + /** + * Set geotherm.cost.plant_auto_estimate: 0: use user input cost; 1: use getem calcs [0/1] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_plant_auto_estimate_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.plant_per_kW_input: user input for relative plant cost [$/kWe] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_plant_per_kW_input_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.plant_total.calc: 0: user specificed absolute plant cost, 1: calculated + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_plant_total_calc_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.plm.fixed: Project-land-misc fixed cost [$] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_plm_fixed_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.plm.percent: Project-land-misc percent [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_plm_percent_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.prod_cost_curve: Production well diameter type [0/1] + * options: 0=LargerDiameter,1=SmallerDiameter + * constraints: None + * required if: calc_drill_costs=1 + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_prod_cost_curve_nset(SAM_table ptr, double number, SAM_error *err); + /** * Set geotherm.cost.prod_cost_curve_welldiam: Production well diameter type [0/1] * options: 0=LargerDiameter,1=SmallerDiameter @@ -320,18 +498,90 @@ extern "C" SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_prod_cost_curve_welltype_nset(SAM_table ptr, double number, SAM_error *err); /** - * Set geothermal_analysis_period: Analysis Lifetime [years] + * Set geotherm.cost.prod_inj_non_drill: Non drilling cost for prod and inj well [$] + * options: 0=LargerDiameter,1=SmallerDiameter + * constraints: None + * required if: calc_drill_costs=1 + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_prod_inj_non_drill_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.pump_casing_cost: Pump casing cost per foot [$/ft] * options: None - * constraints: INTEGER - * required if: * + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_pump_casing_cost_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.pump_fixed: Fixed pump workover and casing cost [$] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_pump_fixed_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.pump_per_foot: Pump cost per foot [$/ft] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_pump_per_foot_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.pumping.amount_specified: Absolute pump cost input [$] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_pumping_amount_specified_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.pumping.calc: 0: user specified absolute pump cost, 1: calculated + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_pumping_calc_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.recap_specified: Absolute recap cost input [$] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_recap_specified_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.recap_use_calc: 0: user specified absolute recap cost, 1: calculated + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_recap_use_calc_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.sales_tax.percent: Percent of direct cost to which sales tax is applied [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_sales_tax_percent_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.stim_non_drill: Stimulation non drilling costs [$] + * options: None + * constraints: None + * required if: calc_drill_costs=1 */ - SAM_EXPORT void SAM_Geothermal_GeoHourly_geothermal_analysis_period_nset(SAM_table ptr, double number, SAM_error *err); + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_stim_non_drill_nset(SAM_table ptr, double number, SAM_error *err); /** * Set hc_ctl1: HC Control 1 * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_hc_ctl1_nset(SAM_table ptr, double number, SAM_error *err); @@ -339,7 +589,7 @@ extern "C" * Set hc_ctl2: HC Control 2 * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_hc_ctl2_nset(SAM_table ptr, double number, SAM_error *err); @@ -347,7 +597,7 @@ extern "C" * Set hc_ctl3: HC Control 3 * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_hc_ctl3_nset(SAM_table ptr, double number, SAM_error *err); @@ -355,7 +605,7 @@ extern "C" * Set hc_ctl4: HC Control 4 * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_hc_ctl4_nset(SAM_table ptr, double number, SAM_error *err); @@ -363,7 +613,7 @@ extern "C" * Set hc_ctl5: HC Control 5 * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_hc_ctl5_nset(SAM_table ptr, double number, SAM_error *err); @@ -371,7 +621,7 @@ extern "C" * Set hc_ctl6: HC Control 6 * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_hc_ctl6_nset(SAM_table ptr, double number, SAM_error *err); @@ -379,7 +629,7 @@ extern "C" * Set hc_ctl7: HC Control 7 * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_hc_ctl7_nset(SAM_table ptr, double number, SAM_error *err); @@ -387,7 +637,7 @@ extern "C" * Set hc_ctl8: HC Control 8 * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_hc_ctl8_nset(SAM_table ptr, double number, SAM_error *err); @@ -395,7 +645,7 @@ extern "C" * Set hc_ctl9: HC Control 9 * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_hc_ctl9_nset(SAM_table ptr, double number, SAM_error *err); @@ -403,7 +653,7 @@ extern "C" * Set hr_pl_nlev: # part-load increments [(0-9)] * options: None * constraints: INTEGER - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_hr_pl_nlev_nset(SAM_table ptr, double number, SAM_error *err); @@ -411,7 +661,7 @@ extern "C" * Set hybrid_dispatch_schedule: Daily dispatch schedule * options: None * constraints: TOUSCHED - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_hybrid_dispatch_schedule_sset(SAM_table ptr, const char* str, SAM_error *err); @@ -463,19 +713,11 @@ extern "C" */ SAM_EXPORT void SAM_Geothermal_GeoHourly_num_wells_nset(SAM_table ptr, double number, SAM_error *err); - /** - * Set num_wells_getem: Number of Wells GETEM calc'd - * options: None - * constraints: None - * required if: ui_calculations_only=0 - */ - SAM_EXPORT void SAM_Geothermal_GeoHourly_num_wells_getem_nset(SAM_table ptr, double number, SAM_error *err); - /** * Set pb_bd_frac: Blowdown steam fraction [%] * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_pb_bd_frac_nset(SAM_table ptr, double number, SAM_error *err); @@ -487,6 +729,14 @@ extern "C" */ SAM_EXPORT void SAM_Geothermal_GeoHourly_plant_efficiency_input_nset(SAM_table ptr, double number, SAM_error *err); + /** + * Set ppi_base_year: PPI Base Year + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_ppi_base_year_nset(SAM_table ptr, double number, SAM_error *err); + /** * Set prod_well_choice: Temperature loss in production well choice [0/1] * options: None @@ -507,7 +757,7 @@ extern "C" * Set q_sby_frac: % thermal power for standby mode [%] * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_q_sby_frac_nset(SAM_table ptr, double number, SAM_error *err); @@ -571,7 +821,7 @@ extern "C" * Set resource_potential: Resource Potential [MW] * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_resource_potential_nset(SAM_table ptr, double number, SAM_error *err); @@ -584,7 +834,7 @@ extern "C" SAM_EXPORT void SAM_Geothermal_GeoHourly_resource_temp_nset(SAM_table ptr, double number, SAM_error *err); /** - * Set resource_type: Type of Resource + * Set resource_type: Type of Resource (O = hydrothermal; 1 = EGS) * options: None * constraints: INTEGER * required if: * @@ -615,6 +865,14 @@ extern "C" */ SAM_EXPORT void SAM_Geothermal_GeoHourly_rock_thermal_conductivity_nset(SAM_table ptr, double number, SAM_error *err); + /** + * Set sales_tax_rate: Sales tax rate [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_GeoHourly_sales_tax_rate_nset(SAM_table ptr, double number, SAM_error *err); + /** * Set specified_pump_work_amount: Pump work specified by user [MW] * options: None @@ -643,7 +901,7 @@ extern "C" * Set startup_frac: % thermal power for startup [%] * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_startup_frac_nset(SAM_table ptr, double number, SAM_error *err); @@ -651,7 +909,7 @@ extern "C" * Set startup_time: Hours to start power block [hours] * options: None * constraints: None - * required if: ui_calculations_only=0 + * required if: sim_type=1 */ SAM_EXPORT void SAM_Geothermal_GeoHourly_startup_time_nset(SAM_table ptr, double number, SAM_error *err); @@ -679,14 +937,6 @@ extern "C" */ SAM_EXPORT void SAM_Geothermal_GeoHourly_subsurface_water_loss_nset(SAM_table ptr, double number, SAM_error *err); - /** - * Set system_use_lifetime_output: Geothermal lifetime simulation [0/1] - * options: 0=SingleYearRepeated,1=RunEveryYear - * constraints: BOOLEAN - * required if: ?=0 - */ - SAM_EXPORT void SAM_Geothermal_GeoHourly_system_use_lifetime_output_nset(SAM_table ptr, double number, SAM_error *err); - /** * Set temp_decline_max: Maximum temperature decline [C] * options: None @@ -703,14 +953,6 @@ extern "C" */ SAM_EXPORT void SAM_Geothermal_GeoHourly_temp_decline_rate_nset(SAM_table ptr, double number, SAM_error *err); - /** - * Set ui_calculations_only: If = 1, only run UI calculations - * options: None - * constraints: None - * required if: * - */ - SAM_EXPORT void SAM_Geothermal_GeoHourly_ui_calculations_only_nset(SAM_table ptr, double number, SAM_error *err); - /** * Set use_weather_file_conditions: Use weather file ambient temperature [0/1] * options: None @@ -781,13 +1023,216 @@ extern "C" SAM_EXPORT void SAM_Geothermal_AdjustmentFactors_adjust_timeindex_aset(SAM_table ptr, double* arr, int length, SAM_error *err); + // + // FinancialParameters parameters + // + /** - * GeoHourly Getters + * Set analysis_period: Analyis period [years] + * options: None + * constraints: INTEGER,MIN=0,MAX=100 + * required if: None */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_analysis_period_nset(SAM_table ptr, double number, SAM_error *err); - SAM_EXPORT double SAM_Geothermal_GeoHourly_CT_nget(SAM_table ptr, SAM_error *err); - - SAM_EXPORT double SAM_Geothermal_GeoHourly_HTF_nget(SAM_table ptr, SAM_error *err); + + // + // Costs parameters + // + + /** + * Set geotherm.cost.plant_total.amount_specified: Absolute plant cost input [$] + * options: GeoHourly + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_Costs_geotherm_cost_plant_total_amount_specified_nset(SAM_table ptr, double number, SAM_error *err); + + + // + // FinancialParameters parameters + // + + /** + * Set const_per_interest_rate1: Interest rate, loan 1 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_interest_rate1_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_interest_rate2: Interest rate, loan 2 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_interest_rate2_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_interest_rate3: Interest rate, loan 3 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_interest_rate3_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_interest_rate4: Interest rate, loan 4 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_interest_rate4_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_interest_rate5: Interest rate, loan 5 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_interest_rate5_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_months1: Months prior to operation, loan 1 + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_months1_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_months2: Months prior to operation, loan 2 + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_months2_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_months3: Months prior to operation, loan 3 + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_months3_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_months4: Months prior to operation, loan 4 + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_months4_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_months5: Months prior to operation, loan 5 + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_months5_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_percent1: Percent of tot. installed cost, loan 1 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_percent1_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_percent2: Percent of tot. installed cost, loan 2 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_percent2_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_percent3: Percent of tot. installed cost, loan 3 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_percent3_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_percent4: Percent of tot. installed cost, loan 4 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_percent4_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_percent5: Percent of tot. installed cost, loan 5 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_percent5_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_upfront_rate1: Upfront fee on principal, loan 1 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_upfront_rate1_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_upfront_rate2: Upfront fee on principal, loan 2 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_upfront_rate2_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_upfront_rate3: Upfront fee on principal, loan 3 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_upfront_rate3_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_upfront_rate4: Upfront fee on principal, loan 4 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_upfront_rate4_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set const_per_upfront_rate5: Upfront fee on principal, loan 5 [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_upfront_rate5_nset(SAM_table ptr, double number, SAM_error *err); + + + /** + * SystemControl Getters + */ + + SAM_EXPORT double SAM_Geothermal_SystemControl_sim_type_nget(SAM_table ptr, SAM_error *err); + + + /** + * FinancialModel Getters + */ + + SAM_EXPORT double SAM_Geothermal_FinancialModel_geo_financial_model_nget(SAM_table ptr, SAM_error *err); + + + /** + * GeoHourly Getters + */ + + SAM_EXPORT double SAM_Geothermal_GeoHourly_CT_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_GeoHourly_P_boil_nget(SAM_table ptr, SAM_error *err); @@ -803,14 +1248,14 @@ extern "C" SAM_EXPORT double SAM_Geothermal_GeoHourly_T_htf_cold_ref_nget(SAM_table ptr, SAM_error *err); - SAM_EXPORT double SAM_Geothermal_GeoHourly_T_htf_hot_ref_nget(SAM_table ptr, SAM_error *err); - SAM_EXPORT double SAM_Geothermal_GeoHourly_allow_reservoir_replacements_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_GeoHourly_ambient_pressure_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_GeoHourly_analysis_type_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_GeoHourly_calc_drill_costs_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_GeoHourly_conversion_subtype_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_GeoHourly_conversion_type_nget(SAM_table ptr, SAM_error *err); @@ -821,8 +1266,6 @@ extern "C" SAM_EXPORT double SAM_Geothermal_GeoHourly_delta_pressure_equip_nget(SAM_table ptr, SAM_error *err); - SAM_EXPORT double SAM_Geothermal_GeoHourly_design_temp_nget(SAM_table ptr, SAM_error *err); - SAM_EXPORT double SAM_Geothermal_GeoHourly_drilling_success_rate_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_GeoHourly_dt_prod_well_nget(SAM_table ptr, SAM_error *err); @@ -831,8 +1274,6 @@ extern "C" SAM_EXPORT double SAM_Geothermal_GeoHourly_excess_pressure_pump_nget(SAM_table ptr, SAM_error *err); - SAM_EXPORT double SAM_Geothermal_GeoHourly_exploration_wells_production_nget(SAM_table ptr, SAM_error *err); - SAM_EXPORT double SAM_Geothermal_GeoHourly_failed_prod_flow_ratio_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT const char* SAM_Geothermal_GeoHourly_file_name_sget(SAM_table ptr, SAM_error *err); @@ -847,17 +1288,79 @@ extern "C" SAM_EXPORT double SAM_Geothermal_GeoHourly_fracture_width_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_conf_multiplier_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_conf_non_drill_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_conf_num_wells_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_confirm_wells_percent_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_contingency_percent_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_drilling_amount_specified_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_drilling_calc_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_epc_fixed_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_epc_percent_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_expl_lump_sum_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_expl_multiplier_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_expl_non_drill_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_expl_num_wells_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_indirect_amount_specified_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_indirect_calc_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_inj_cost_curve_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_inj_cost_curve_welldiam_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_inj_cost_curve_welltype_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_inj_prod_well_ratio_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_plant_auto_estimate_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_plant_per_kW_input_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_plant_total_calc_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_plm_fixed_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_plm_percent_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_prod_cost_curve_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_prod_cost_curve_welldiam_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_prod_cost_curve_welltype_nget(SAM_table ptr, SAM_error *err); - SAM_EXPORT double SAM_Geothermal_GeoHourly_geothermal_analysis_period_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_prod_inj_non_drill_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_pump_casing_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_pump_fixed_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_pump_per_foot_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_pumping_amount_specified_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_pumping_calc_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_recap_specified_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_recap_use_calc_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_sales_tax_percent_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_stim_non_drill_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl1_nget(SAM_table ptr, SAM_error *err); @@ -893,12 +1396,12 @@ extern "C" SAM_EXPORT double SAM_Geothermal_GeoHourly_num_wells_nget(SAM_table ptr, SAM_error *err); - SAM_EXPORT double SAM_Geothermal_GeoHourly_num_wells_getem_nget(SAM_table ptr, SAM_error *err); - SAM_EXPORT double SAM_Geothermal_GeoHourly_pb_bd_frac_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_GeoHourly_plant_efficiency_input_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_GeoHourly_ppi_base_year_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_GeoHourly_prod_well_choice_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_GeoHourly_pump_efficiency_nget(SAM_table ptr, SAM_error *err); @@ -931,6 +1434,8 @@ extern "C" SAM_EXPORT double SAM_Geothermal_GeoHourly_rock_thermal_conductivity_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_GeoHourly_sales_tax_rate_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_GeoHourly_specified_pump_work_amount_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_GeoHourly_specify_pump_work_nget(SAM_table ptr, SAM_error *err); @@ -947,14 +1452,10 @@ extern "C" SAM_EXPORT double SAM_Geothermal_GeoHourly_subsurface_water_loss_nget(SAM_table ptr, SAM_error *err); - SAM_EXPORT double SAM_Geothermal_GeoHourly_system_use_lifetime_output_nget(SAM_table ptr, SAM_error *err); - SAM_EXPORT double SAM_Geothermal_GeoHourly_temp_decline_max_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_GeoHourly_temp_decline_rate_nget(SAM_table ptr, SAM_error *err); - SAM_EXPORT double SAM_Geothermal_GeoHourly_ui_calculations_only_nget(SAM_table ptr, SAM_error *err); - SAM_EXPORT double SAM_Geothermal_GeoHourly_use_weather_file_conditions_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_GeoHourly_well_flow_rate_nget(SAM_table ptr, SAM_error *err); @@ -977,6 +1478,65 @@ extern "C" SAM_EXPORT double* SAM_Geothermal_AdjustmentFactors_adjust_timeindex_aget(SAM_table ptr, int* length, SAM_error *err); + /** + * FinancialParameters Getters + */ + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_analysis_period_nget(SAM_table ptr, SAM_error *err); + + + /** + * Costs Getters + */ + + SAM_EXPORT double SAM_Geothermal_Costs_geotherm_cost_plant_total_amount_specified_nget(SAM_table ptr, SAM_error *err); + + + /** + * FinancialParameters Getters + */ + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_interest_rate1_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_interest_rate2_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_interest_rate3_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_interest_rate4_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_interest_rate5_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_months1_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_months2_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_months3_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_months4_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_months5_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_percent1_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_percent2_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_percent3_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_percent4_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_percent5_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_upfront_rate1_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_upfront_rate2_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_upfront_rate3_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_upfront_rate4_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_upfront_rate5_nget(SAM_table ptr, SAM_error *err); + + /** * Outputs Getters */ @@ -987,6 +1547,14 @@ extern "C" SAM_EXPORT double* SAM_Geothermal_Outputs_annual_energy_distribution_time_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_atb_drilling_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_atb_exploration_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_atb_plant_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_baseline_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_bottom_hole_pressure_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_brine_effectiveness_nget(SAM_table ptr, SAM_error *err); @@ -995,30 +1563,112 @@ extern "C" SAM_EXPORT double SAM_Geothermal_Outputs_condensate_pump_power_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_conf_drilling_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_conf_total_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_interest1_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_interest2_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_interest3_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_interest4_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_interest5_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_interest_total_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_percent_total_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_principal1_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_principal2_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_principal3_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_principal4_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_principal5_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_principal_total_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_total1_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_total2_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_total3_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_total4_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_const_per_total5_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_construction_financing_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_contingency_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_cp_battery_nameplate_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_cp_system_nameplate_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_cw_pump_head_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_cw_pump_work_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_cwflow_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double* SAM_Geothermal_Outputs_degradation_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_design_temp_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_dt_rock_well_head_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_eff_secondlaw_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_engineering_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_epc_total_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_expl_drilling_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_expl_per_well_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_expl_total_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_field_gathering_num_wells_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_first_year_output_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_flash_count_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double* SAM_Geothermal_Outputs_gen_aget(SAM_table ptr, int* length, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_geothermal_analysis_period_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_gross_cost_output_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_gross_output_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_hp_flash_pressure_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_indirect_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_indirect_pump_gathering_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_inj_num_pumps_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_inj_pump_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_inj_pump_cost_per_pump_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_inj_pump_hp_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_inj_total_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_inj_well_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_installed_cost_per_kW_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_kwh_per_kw_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_lifetime_output_nget(SAM_table ptr, SAM_error *err); @@ -1037,6 +1687,12 @@ extern "C" SAM_EXPORT double SAM_Geothermal_Outputs_ncg_condensate_pump_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_net_plant_output_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_num_confirm_wells_to_production_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_num_wells_getem_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_num_wells_getem_inj_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_num_wells_getem_inj_drilled_nget(SAM_table ptr, SAM_error *err); @@ -1047,18 +1703,38 @@ extern "C" SAM_EXPORT double SAM_Geothermal_Outputs_num_wells_getem_prod_failed_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_piping_cost_per_well_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_plant_brine_eff_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_plm_total_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_pressure_ratio_1_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_pressure_ratio_2_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_pressure_ratio_3_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_prod_inj_total_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_prod_pump_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_prod_pump_cost_per_well_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_prod_total_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_prod_well_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_pump_cost_install_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_pump_depth_ft_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_pump_hp_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_pump_only_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_pump_size_hp_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_pump_watthr_per_lb_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_pump_work_nget(SAM_table ptr, SAM_error *err); @@ -1081,12 +1757,30 @@ extern "C" SAM_EXPORT double SAM_Geothermal_Outputs_reservoir_pressure_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_sales_tax_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_spec_vol_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_spec_vol_lp_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_stim_cost_non_drill_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_stim_cost_per_well_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_stim_total_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_sum_prod_inj_total_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_system_capacity_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double* SAM_Geothermal_Outputs_system_lifetime_recapitalize_aget(SAM_table ptr, int* length, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_system_recapitalization_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_system_use_lifetime_output_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_system_use_recapitalization_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double* SAM_Geothermal_Outputs_timestep_dry_bulb_aget(SAM_table ptr, int* length, SAM_error *err); SAM_EXPORT double* SAM_Geothermal_Outputs_timestep_pressure_aget(SAM_table ptr, int* length, SAM_error *err); @@ -1097,6 +1791,36 @@ extern "C" SAM_EXPORT double* SAM_Geothermal_Outputs_timestep_wet_bulb_aget(SAM_table ptr, int* length, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_total_capital_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_total_direct_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_total_drilling_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_total_drilling_cost_used_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_total_drilling_permitting_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_total_expl_permitting_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_total_gathering_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_total_getem_om_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_total_installed_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_total_plant_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_total_plant_cost_used_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_total_pump_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_total_pump_gathering_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_total_pump_gathering_cost_used_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Geothermal_Outputs_total_surface_equipment_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Geothermal_Outputs_v_stage_1_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Geothermal_Outputs_v_stage_2_nget(SAM_table ptr, SAM_error *err); diff --git a/api/include/SAM_GeothermalCosts.h b/api/include/SAM_GeothermalCosts.h index 49f4a8e21c..87c71a3615 100644 --- a/api/include/SAM_GeothermalCosts.h +++ b/api/include/SAM_GeothermalCosts.h @@ -43,7 +43,7 @@ extern "C" * Set calc_drill_costs: Calculate drill costs [0/1] * options: 0=LargerDiameter,1=SmallerDiameter * constraints: None - * required if: ?=0 + * required if: ?=1 */ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_calc_drill_costs_nset(SAM_table ptr, double number, SAM_error *err); @@ -143,6 +143,46 @@ extern "C" */ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_conf_num_wells_nset(SAM_table ptr, double number, SAM_error *err); + /** + * Set geotherm.cost.contingency_percent: Contingency percent [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_contingency_percent_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.drilling.amount_specified: Absolute drilling cost input [$] + * options: None + * constraints: None + * required if: calc_drill_costs=1 + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_drilling_amount_specified_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.drilling.calc: 0: user specified absolute drilling cost, 1: calculated [$] + * options: None + * constraints: None + * required if: calc_drill_costs=1 + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_drilling_calc_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.epc.fixed: EPC fixed cost [$] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_epc_fixed_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.epc.percent: EPC percent [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_epc_percent_nset(SAM_table ptr, double number, SAM_error *err); + /** * Set geotherm.cost.expl_lump_sum: Exploration cost lump sum * options: None @@ -175,6 +215,22 @@ extern "C" */ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_expl_num_wells_nset(SAM_table ptr, double number, SAM_error *err); + /** + * Set geotherm.cost.indirect.amount_specified: Absolute indirect cost input [$] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_indirect_amount_specified_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.indirect.calc: 0: user specified absolute indirect cost, 1: calculated + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_indirect_calc_nset(SAM_table ptr, double number, SAM_error *err); + /** * Set geotherm.cost.inj_cost_curve: Injection well diameter type [0/1] * options: 0=LargerDiameter,1=SmallerDiameter @@ -199,6 +255,46 @@ extern "C" */ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_inj_cost_curve_welltype_nset(SAM_table ptr, double number, SAM_error *err); + /** + * Set geotherm.cost.plant_auto_estimate: 0: use user input cost; 1: use getem calcs [0/1] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_plant_auto_estimate_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.plant_per_kW_input: user input for relative plant cost [$/kWe] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_plant_per_kW_input_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.plant_total.calc: 0: user specificed absolute plant cost, 1: calculated + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_plant_total_calc_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.plm.fixed: Project-land-misc fixed cost [$] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_plm_fixed_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.plm.percent: Project-land-misc percent [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_plm_percent_nset(SAM_table ptr, double number, SAM_error *err); + /** * Set geotherm.cost.prod_cost_curve: Production well diameter type [0/1] * options: 0=LargerDiameter,1=SmallerDiameter @@ -223,6 +319,14 @@ extern "C" */ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_prod_cost_curve_welltype_nset(SAM_table ptr, double number, SAM_error *err); + /** + * Set geotherm.cost.prod_inj_non_drill: Non drilling cost for prod and inj well [$] + * options: 0=LargerDiameter,1=SmallerDiameter + * constraints: None + * required if: calc_drill_costs=1 + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_prod_inj_non_drill_nset(SAM_table ptr, double number, SAM_error *err); + /** * Set geotherm.cost.pump_casing_cost: Pump casing cost per foot [$/ft] * options: None @@ -247,6 +351,46 @@ extern "C" */ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_pump_per_foot_nset(SAM_table ptr, double number, SAM_error *err); + /** + * Set geotherm.cost.pumping.amount_specified: Absolute pump cost input [$] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_pumping_amount_specified_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.pumping.calc: 0: user specified absolute pump cost, 1: calculated + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_pumping_calc_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.recap_specified: Absolute recap cost input [$] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_recap_specified_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.recap_use_calc: 0: user specified absolute recap cost, 1: calculated + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_recap_use_calc_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.sales_tax.percent: Percent of direct cost to which sales tax is applied [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_sales_tax_percent_nset(SAM_table ptr, double number, SAM_error *err); + /** * Set geotherm.cost.stim_non_drill: Stimulation non drilling costs [$] * options: None @@ -256,7 +400,7 @@ extern "C" SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_stim_non_drill_nset(SAM_table ptr, double number, SAM_error *err); /** - * Set gross_cost_output: Gross output from GETEM for cost calculations [kW] + * Set gross_cost_output: Gross output from GETEM for cost calculations [kWe] * options: None * constraints: None * required if: * @@ -264,7 +408,7 @@ extern "C" SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_gross_cost_output_nset(SAM_table ptr, double number, SAM_error *err); /** - * Set gross_output: Gross output from GETEM [MW] + * Set gross_output: Gross output from GETEM [MWe] * options: None * constraints: None * required if: * @@ -303,6 +447,14 @@ extern "C" */ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_ncg_condensate_pump_nset(SAM_table ptr, double number, SAM_error *err); + /** + * Set net_plant_output: Net plant power to grid; net sales in GETEM [MWe] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_net_plant_output_nset(SAM_table ptr, double number, SAM_error *err); + /** * Set num_wells_getem: Number of production wells required * options: None @@ -320,26 +472,34 @@ extern "C" SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_num_wells_getem_inj_drilled_nset(SAM_table ptr, double number, SAM_error *err); /** - * Set num_wells_getem_prod_drilled: Number of drilled production wells [0/1] - * options: 0=LargerDiameter,1=SmallerDiameter + * Set num_wells_getem_prod_drilled: Number of drilled production wells + * options: None * constraints: None * required if: None */ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_num_wells_getem_prod_drilled_nset(SAM_table ptr, double number, SAM_error *err); /** - * Set num_wells_getem_prod_failed: Number of failed production wells [0/1] - * options: 0=LargerDiameter,1=SmallerDiameter + * Set num_wells_getem_prod_failed: Number of failed production wells + * options: None * constraints: None * required if: None */ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_num_wells_getem_prod_failed_nset(SAM_table ptr, double number, SAM_error *err); + /** + * Set num_wells_getem_prod_inj_sum: Sum of production and injection drilled wells + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_num_wells_getem_prod_inj_sum_nset(SAM_table ptr, double number, SAM_error *err); + /** * Set ppi_base_year: PPI Base Year * options: None * constraints: None - * required if: ?=19 + * required if: None */ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_ppi_base_year_nset(SAM_table ptr, double number, SAM_error *err); @@ -431,6 +591,14 @@ extern "C" */ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_resource_depth_nset(SAM_table ptr, double number, SAM_error *err); + /** + * Set sales_tax_rate: Sales tax rate [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_sales_tax_rate_nset(SAM_table ptr, double number, SAM_error *err); + /** * Set spec_vol: Specific Volume [cft/lb] * options: None @@ -496,6 +664,32 @@ extern "C" SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_x_lp_nset(SAM_table ptr, double number, SAM_error *err); + // + // FinancialModel parameters + // + + /** + * Set geo_financial_model: [1-8] + * options: None + * constraints: INTEGER,MIN=0 + * required if: ?=1 + */ + SAM_EXPORT void SAM_GeothermalCosts_FinancialModel_geo_financial_model_nset(SAM_table ptr, double number, SAM_error *err); + + + // + // Common parameters + // + + /** + * Set geotherm.cost.plant_total.amount_specified: Absolute plant cost input [$] + * options: GeoHourly + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalCosts_Common_geotherm_cost_plant_total_amount_specified_nset(SAM_table ptr, double number, SAM_error *err); + + /** * GeoHourly Getters */ @@ -528,6 +722,16 @@ extern "C" SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_conf_num_wells_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_contingency_percent_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_drilling_amount_specified_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_drilling_calc_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_epc_fixed_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_epc_percent_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_expl_lump_sum_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_expl_multiplier_nget(SAM_table ptr, SAM_error *err); @@ -536,24 +740,50 @@ extern "C" SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_expl_num_wells_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_indirect_amount_specified_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_indirect_calc_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_inj_cost_curve_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_inj_cost_curve_welldiam_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_inj_cost_curve_welltype_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_plant_auto_estimate_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_plant_per_kW_input_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_plant_total_calc_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_plm_fixed_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_plm_percent_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_prod_cost_curve_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_prod_cost_curve_welldiam_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_prod_cost_curve_welltype_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_prod_inj_non_drill_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_pump_casing_cost_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_pump_fixed_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_pump_per_foot_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_pumping_amount_specified_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_pumping_calc_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_recap_specified_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_recap_use_calc_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_sales_tax_percent_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_stim_non_drill_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_gross_cost_output_nget(SAM_table ptr, SAM_error *err); @@ -568,6 +798,8 @@ extern "C" SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_ncg_condensate_pump_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_net_plant_output_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_num_wells_getem_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_num_wells_getem_inj_drilled_nget(SAM_table ptr, SAM_error *err); @@ -576,6 +808,8 @@ extern "C" SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_num_wells_getem_prod_failed_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_num_wells_getem_prod_inj_sum_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_ppi_base_year_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_pressure_ratio_1_nget(SAM_table ptr, SAM_error *err); @@ -600,6 +834,8 @@ extern "C" SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_resource_depth_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_sales_tax_rate_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_spec_vol_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_spec_vol_lp_nget(SAM_table ptr, SAM_error *err); @@ -617,6 +853,20 @@ extern "C" SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_x_lp_nget(SAM_table ptr, SAM_error *err); + /** + * FinancialModel Getters + */ + + SAM_EXPORT double SAM_GeothermalCosts_FinancialModel_geo_financial_model_nget(SAM_table ptr, SAM_error *err); + + + /** + * Common Getters + */ + + SAM_EXPORT double SAM_GeothermalCosts_Common_geotherm_cost_plant_total_amount_specified_nget(SAM_table ptr, SAM_error *err); + + /** * Outputs Getters */ @@ -633,15 +883,21 @@ extern "C" SAM_EXPORT double SAM_GeothermalCosts_Outputs_conf_total_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_contingency_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_engineering_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_epc_total_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_expl_drilling_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_expl_per_well_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_expl_total_cost_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_Outputs_field_gathering_num_wells_nget(SAM_table ptr, SAM_error *err); - SAM_EXPORT double SAM_GeothermalCosts_Outputs_indirect_pump_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_indirect_cost_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_Outputs_indirect_pump_gathering_cost_nget(SAM_table ptr, SAM_error *err); @@ -655,8 +911,14 @@ extern "C" SAM_EXPORT double SAM_GeothermalCosts_Outputs_inj_well_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_installed_cost_per_kW_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_piping_cost_per_well_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_plm_total_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_Outputs_prod_inj_total_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_prod_pump_cost_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_Outputs_prod_pump_cost_per_well_nget(SAM_table ptr, SAM_error *err); @@ -669,24 +931,44 @@ extern "C" SAM_EXPORT double SAM_GeothermalCosts_Outputs_pump_only_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_sales_tax_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_stim_cost_non_drill_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_Outputs_stim_cost_per_well_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_Outputs_stim_total_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_sum_prod_inj_total_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_Outputs_system_recapitalization_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_capital_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_direct_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_drilling_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_drilling_cost_used_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_drilling_permitting_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_expl_permitting_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_gathering_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_installed_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_plant_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_plant_cost_used_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_pump_cost_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_pump_gathering_cost_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_pump_gathering_cost_used_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_surface_equipment_cost_nget(SAM_table ptr, SAM_error *err); #ifdef __cplusplus diff --git a/api/include/SAM_GeothermalNoFin.h b/api/include/SAM_GeothermalNoFin.h new file mode 100644 index 0000000000..2041360aea --- /dev/null +++ b/api/include/SAM_GeothermalNoFin.h @@ -0,0 +1,1118 @@ +#ifndef SAM_GEOTHERMALNOFIN_H_ +#define SAM_GEOTHERMALNOFIN_H_ + +#include "visibility.h" +#include "SAM_api.h" + + +#include +#ifdef __cplusplus +extern "C" +{ +#endif + + // + // GeothermalNoFin Technology Model + // + + /** + * Create a GeothermalNoFin variable table. + * @param def: the set of financial model-dependent defaults to use (None, Residential, ...) + * @param[in,out] err: a pointer to an error object + */ + + SAM_EXPORT typedef void * SAM_GeothermalNoFin; + + /// verbosity level 0 or 1. Returns 1 on success + SAM_EXPORT int SAM_GeothermalNoFin_execute(SAM_table data, int verbosity, SAM_error* err); + + + // + // SystemControl parameters + // + + /** + * Set sim_type: 1 (default): timeseries, 2: design only + * options: None + * constraints: None + * required if: ?=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_SystemControl_sim_type_nset(SAM_table ptr, double number, SAM_error *err); + + + // + // FinancialModel parameters + // + + /** + * Set geo_financial_model: [1-8] + * options: None + * constraints: INTEGER,MIN=0 + * required if: ?=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_FinancialModel_geo_financial_model_nset(SAM_table ptr, double number, SAM_error *err); + + + // + // GeoHourly parameters + // + + /** + * Set CT: Condenser type (Wet, Dry,Hybrid) [(1-3)] + * options: None + * constraints: INTEGER + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_CT_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set P_boil: Design Boiler Pressure [bar] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_P_boil_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set P_cond_min: Minimum condenser pressure [in Hg] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_P_cond_min_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set P_cond_ratio: Condenser pressure ratio + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_P_cond_ratio_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set T_ITD_des: Design ITD for dry system [C] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_T_ITD_des_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set T_amb_des: Design ambient temperature [C] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_T_amb_des_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set T_approach: Approach Temperature [C] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_T_approach_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set T_htf_cold_ref: Outlet design temp [C] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_T_htf_cold_ref_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set allow_reservoir_replacements: Allow reservoir replacements + * options: None + * constraints: None + * required if: ?=0 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_allow_reservoir_replacements_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set ambient_pressure: Ambient pressure [psi] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_ambient_pressure_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set analysis_type: Analysis Type + * options: None + * constraints: INTEGER + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_analysis_type_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set conversion_subtype: Conversion Subtype + * options: None + * constraints: INTEGER + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_conversion_subtype_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set conversion_type: Conversion Type (0: binary; 1: flash) + * options: None + * constraints: INTEGER + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_conversion_type_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set dT_cw_ref: Design condenser cooling water inlet/outlet T diff [C] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_dT_cw_ref_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set decline_type: Temp decline Type (0: enter rate; 1 calc rate) + * options: None + * constraints: INTEGER + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_decline_type_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set delta_pressure_equip: Delta pressure across surface equipment [psi] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_delta_pressure_equip_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set drilling_success_rate: Drilling success rate [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_drilling_success_rate_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set dt_prod_well: Temperature loss in production well [C] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_dt_prod_well_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set eta_ref: Desgin conversion efficiency [%] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_eta_ref_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set excess_pressure_pump: Excess pressure @ pump suction [psi] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_excess_pressure_pump_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set failed_prod_flow_ratio: Failed production well flow ratio + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_failed_prod_flow_ratio_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set file_name: local weather file path + * options: None + * constraints: LOCAL_FILE + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_file_name_sset(SAM_table ptr, const char* str, SAM_error *err); + + /** + * Set fracture_angle: Fracture angle [deg] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_fracture_angle_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set fracture_aperature: Fracture aperature [m] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_fracture_aperature_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set fracture_length: Fracture length [m] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_fracture_length_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set fracture_spacing: Fracture spacing [m] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_fracture_spacing_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set fracture_width: Fracture width [m] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_fracture_width_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.conf_num_wells: Number of confirmation wells + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_geotherm_cost_conf_num_wells_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.confirm_wells_percent: % of Confirmation Wells Used for Production + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_geotherm_cost_confirm_wells_percent_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.inj_cost_curve_welldiam: Injection well diameter type [0/1] + * options: 0=LargerDiameter,1=SmallerDiameter + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_geotherm_cost_inj_cost_curve_welldiam_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.inj_cost_curve_welltype: Injection well type [0/1] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_geotherm_cost_inj_cost_curve_welltype_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.inj_prod_well_ratio: Ratio of injection wells to production wells + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_geotherm_cost_inj_prod_well_ratio_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.prod_cost_curve_welldiam: Production well diameter type [0/1] + * options: 0=LargerDiameter,1=SmallerDiameter + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_geotherm_cost_prod_cost_curve_welldiam_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set geotherm.cost.prod_cost_curve_welltype: Production well type [0/1] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_geotherm_cost_prod_cost_curve_welltype_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set hc_ctl1: HC Control 1 + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl1_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set hc_ctl2: HC Control 2 + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl2_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set hc_ctl3: HC Control 3 + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl3_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set hc_ctl4: HC Control 4 + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl4_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set hc_ctl5: HC Control 5 + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl5_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set hc_ctl6: HC Control 6 + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl6_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set hc_ctl7: HC Control 7 + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl7_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set hc_ctl8: HC Control 8 + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl8_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set hc_ctl9: HC Control 9 + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl9_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set hr_pl_nlev: # part-load increments [(0-9)] + * options: None + * constraints: INTEGER + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hr_pl_nlev_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set hybrid_dispatch_schedule: Daily dispatch schedule + * options: None + * constraints: TOUSCHED + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hybrid_dispatch_schedule_sset(SAM_table ptr, const char* str, SAM_error *err); + + /** + * Set inj_prod_well_distance: Distance from injection to production wells [m] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_inj_prod_well_distance_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set injectivity_index: Injectivity index [lb/hr-psi] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_injectivity_index_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set model_choice: Which model to run (0,1,2) + * options: None + * constraints: INTEGER + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_model_choice_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set nameplate: Desired plant output [kW] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_nameplate_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set num_fractures: Number of fractures + * options: None + * constraints: INTEGER + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_num_fractures_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set num_wells: Number of Wells + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_num_wells_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set pb_bd_frac: Blowdown steam fraction [%] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_pb_bd_frac_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set plant_efficiency_input: Plant efficiency + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_plant_efficiency_input_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set prod_well_choice: Temperature loss in production well choice [0/1] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_prod_well_choice_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set pump_efficiency: Pump efficiency [%] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_pump_efficiency_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set q_sby_frac: % thermal power for standby mode [%] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_q_sby_frac_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set reservoir_height: Reservoir height [m] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_reservoir_height_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set reservoir_model_inputs: Reservoir temperatures over time + * options: None + * constraints: None + * required if: reservoir_pressure_change_type=3 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_reservoir_model_inputs_mset(SAM_table ptr, double* mat, int nrows, int ncols, SAM_error *err); + + /** + * Set reservoir_permeability: Reservoir Permeability [darcys] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_reservoir_permeability_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set reservoir_pressure_change: Pressure change [psi-h/1000lb] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_reservoir_pressure_change_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set reservoir_pressure_change_type: Reservoir pressure change type + * options: None + * constraints: INTEGER + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_reservoir_pressure_change_type_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set reservoir_width: Reservoir width [m] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_reservoir_width_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set resource_depth: Resource Depth [m] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_resource_depth_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set resource_potential: Resource Potential [MW] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_resource_potential_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set resource_temp: Resource Temperature [C] + * options: None + * constraints: MAX=373 + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_resource_temp_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set resource_type: Type of Resource (O = hydrothermal; 1 = EGS) + * options: None + * constraints: INTEGER + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_resource_type_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set rock_density: Rock density [kg/m^3] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_rock_density_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set rock_specific_heat: Rock specific heat [J/kg-C] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_rock_specific_heat_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set rock_thermal_conductivity: Rock thermal conductivity [J/m-day-C] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_rock_thermal_conductivity_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set specified_pump_work_amount: Pump work specified by user [MW] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_specified_pump_work_amount_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set specify_pump_work: Did user specify pump work? [0 or 1] + * options: None + * constraints: INTEGER + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_specify_pump_work_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set start_day_of_year: Start day of year for TOD periods [0..6] + * options: 0=Monday, 6=Sunday + * constraints: None + * required if: ?=0 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_start_day_of_year_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set startup_frac: % thermal power for startup [%] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_startup_frac_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set startup_time: Hours to start power block [hours] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_startup_time_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set stim_success_rate: Stimulation success rate [%] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_stim_success_rate_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set stimulation_type: Which wells are stimulated [0/1/2/3] + * options: 0=Injection,1=Production,2=Both,3=Neither + * constraints: None + * required if: ?=3 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_stimulation_type_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set subsurface_water_loss: Subsurface water loss [%] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_subsurface_water_loss_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set temp_decline_max: Maximum temperature decline [C] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_temp_decline_max_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set temp_decline_rate: Temperature decline rate [%/yr] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_temp_decline_rate_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set use_weather_file_conditions: Use weather file ambient temperature [0/1] + * options: None + * constraints: None + * required if: ?=0 + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_use_weather_file_conditions_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set well_flow_rate: Production flow rate per well [kg/s] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_well_flow_rate_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set wet_bulb_temp: Wet Bulb Temperature [C] + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_wet_bulb_temp_nset(SAM_table ptr, double number, SAM_error *err); + + + // + // AdjustmentFactors parameters + // + + /** + * Set adjust_constant: Constant loss adjustment [%] + * options: 'adjust' and 'constant' separated by _ instead of : after SAM 2022.12.21 + * constraints: MAX=100 + * required if: ?=0 + */ + SAM_EXPORT void SAM_GeothermalNoFin_AdjustmentFactors_adjust_constant_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set adjust_en_periods: Enable period-based adjustment factors [0/1] + * options: 'adjust' and 'en_periods' separated by _ instead of : after SAM 2022.12.21 + * constraints: BOOLEAN + * required if: ?=0 + */ + SAM_EXPORT void SAM_GeothermalNoFin_AdjustmentFactors_adjust_en_periods_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set adjust_en_timeindex: Enable lifetime adjustment factors [0/1] + * options: 'adjust' and 'en_timeindex' separated by _ instead of : after SAM 2022.12.21 + * constraints: BOOLEAN + * required if: ?=0 + */ + SAM_EXPORT void SAM_GeothermalNoFin_AdjustmentFactors_adjust_en_timeindex_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set adjust_periods: Period-based adjustment factors [%] + * options: Syntax: n x 3 matrix [ start, end, loss ]; Version upgrade: 'adjust' and 'periods' separated by _ instead of : after SAM 2022.12.21 + * constraints: COLS=3 + * required if: adjust_en_periods=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_AdjustmentFactors_adjust_periods_mset(SAM_table ptr, double* mat, int nrows, int ncols, SAM_error *err); + + /** + * Set adjust_timeindex: Lifetime adjustment factors [%] + * options: 'adjust' and 'timeindex' separated by _ instead of : after SAM 2022.12.21 + * constraints: None + * required if: adjust_en_timeindex=1 + */ + SAM_EXPORT void SAM_GeothermalNoFin_AdjustmentFactors_adjust_timeindex_aset(SAM_table ptr, double* arr, int length, SAM_error *err); + + + /** + * SystemControl Getters + */ + + SAM_EXPORT double SAM_GeothermalNoFin_SystemControl_sim_type_nget(SAM_table ptr, SAM_error *err); + + + /** + * FinancialModel Getters + */ + + SAM_EXPORT double SAM_GeothermalNoFin_FinancialModel_geo_financial_model_nget(SAM_table ptr, SAM_error *err); + + + /** + * GeoHourly Getters + */ + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_CT_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_P_boil_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_P_cond_min_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_P_cond_ratio_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_T_ITD_des_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_T_amb_des_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_T_approach_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_T_htf_cold_ref_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_allow_reservoir_replacements_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_ambient_pressure_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_analysis_type_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_conversion_subtype_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_conversion_type_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_dT_cw_ref_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_decline_type_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_delta_pressure_equip_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_drilling_success_rate_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_dt_prod_well_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_eta_ref_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_excess_pressure_pump_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_failed_prod_flow_ratio_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT const char* SAM_GeothermalNoFin_GeoHourly_file_name_sget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_fracture_angle_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_fracture_aperature_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_fracture_length_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_fracture_spacing_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_fracture_width_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_geotherm_cost_conf_num_wells_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_geotherm_cost_confirm_wells_percent_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_geotherm_cost_inj_cost_curve_welldiam_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_geotherm_cost_inj_cost_curve_welltype_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_geotherm_cost_inj_prod_well_ratio_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_geotherm_cost_prod_cost_curve_welldiam_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_geotherm_cost_prod_cost_curve_welltype_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl1_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl2_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl3_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl4_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl5_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl6_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl7_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl8_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl9_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hr_pl_nlev_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT const char* SAM_GeothermalNoFin_GeoHourly_hybrid_dispatch_schedule_sget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_inj_prod_well_distance_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_injectivity_index_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_model_choice_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_nameplate_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_num_fractures_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_num_wells_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_pb_bd_frac_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_plant_efficiency_input_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_prod_well_choice_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_pump_efficiency_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_q_sby_frac_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_reservoir_height_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_GeoHourly_reservoir_model_inputs_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_reservoir_permeability_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_reservoir_pressure_change_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_reservoir_pressure_change_type_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_reservoir_width_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_resource_depth_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_resource_potential_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_resource_temp_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_resource_type_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_rock_density_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_rock_specific_heat_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_rock_thermal_conductivity_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_specified_pump_work_amount_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_specify_pump_work_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_start_day_of_year_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_startup_frac_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_startup_time_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_stim_success_rate_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_stimulation_type_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_subsurface_water_loss_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_temp_decline_max_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_temp_decline_rate_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_use_weather_file_conditions_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_well_flow_rate_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_wet_bulb_temp_nget(SAM_table ptr, SAM_error *err); + + + /** + * AdjustmentFactors Getters + */ + + SAM_EXPORT double SAM_GeothermalNoFin_AdjustmentFactors_adjust_constant_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_AdjustmentFactors_adjust_en_periods_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_AdjustmentFactors_adjust_en_timeindex_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_AdjustmentFactors_adjust_periods_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_AdjustmentFactors_adjust_timeindex_aget(SAM_table ptr, int* length, SAM_error *err); + + + /** + * Outputs Getters + */ + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_GF_flowrate_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_annual_energy_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_annual_energy_distribution_time_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_bottom_hole_pressure_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_brine_effectiveness_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_capacity_factor_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_condensate_pump_power_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_cp_battery_nameplate_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_cp_system_nameplate_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_cw_pump_head_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_cw_pump_work_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_cwflow_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_degradation_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_design_temp_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_dt_rock_well_head_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_eff_secondlaw_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_first_year_output_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_flash_count_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_gen_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_geothermal_analysis_period_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_gross_cost_output_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_gross_output_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_hp_flash_pressure_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_inj_pump_hp_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_kwh_per_kw_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_lifetime_output_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_lp_flash_pressure_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_max_brine_effectiveness_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_monthly_energy_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_monthly_energy_lifetime_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_monthly_power_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_monthly_resource_temperature_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_ncg_condensate_pump_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_net_plant_output_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_num_confirm_wells_to_production_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_num_wells_getem_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_num_wells_getem_inj_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_num_wells_getem_inj_drilled_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_num_wells_getem_output_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_num_wells_getem_prod_drilled_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_num_wells_getem_prod_failed_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_plant_brine_eff_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pressure_ratio_1_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pressure_ratio_2_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pressure_ratio_3_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pump_depth_ft_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pump_hp_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pump_size_hp_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pump_watthr_per_lb_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pump_work_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pumpwork_inj_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pumpwork_prod_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_qCondenser_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_qRejectByStage_1_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_qRejectByStage_2_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_qRejectByStage_3_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_qRejectTotal_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_reservoir_avg_temp_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_reservoir_pressure_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_spec_vol_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_spec_vol_lp_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_system_capacity_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_system_lifetime_recapitalize_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_system_use_lifetime_output_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_system_use_recapitalization_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_timestep_dry_bulb_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_timestep_pressure_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_timestep_resource_temperature_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_timestep_test_values_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_timestep_wet_bulb_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_v_stage_1_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_v_stage_2_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_v_stage_3_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_x_hp_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_GeothermalNoFin_Outputs_x_lp_nget(SAM_table ptr, SAM_error *err); + +#ifdef __cplusplus +} /* end of extern "C" { */ +#endif + +#endif \ No newline at end of file diff --git a/api/include/SAM_LcoefcrElectricity.h b/api/include/SAM_LcoefcrElectricity.h new file mode 100644 index 0000000000..16ea636880 --- /dev/null +++ b/api/include/SAM_LcoefcrElectricity.h @@ -0,0 +1,240 @@ +#ifndef SAM_LCOEFCRELECTRICITY_H_ +#define SAM_LCOEFCRELECTRICITY_H_ + +#include "visibility.h" +#include "SAM_api.h" + + +#include +#ifdef __cplusplus +extern "C" +{ +#endif + + // + // LcoefcrElectricity Technology Model + // + + /** + * Create a LcoefcrElectricity variable table. + * @param def: the set of financial model-dependent defaults to use (None, Residential, ...) + * @param[in,out] err: a pointer to an error object + */ + + SAM_EXPORT typedef void * SAM_LcoefcrElectricity; + + /// verbosity level 0 or 1. Returns 1 on success + SAM_EXPORT int SAM_LcoefcrElectricity_execute(SAM_table data, int verbosity, SAM_error* err); + + + // + // SystemControl parameters + // + + /** + * Set sim_type: 1 (default): timeseries, 2: design only + * options: None + * constraints: None + * required if: ?=1 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SystemControl_sim_type_nset(SAM_table ptr, double number, SAM_error *err); + + + // + // SimpleLCOE parameters + // + + /** + * Set annual_energy: Annual energy production [kWh] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_annual_energy_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set c_construction_cost: Construction cost schedule [%] + * options: None + * constraints: None + * required if: ui_fcr_input_option=1 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_construction_cost_aset(SAM_table ptr, double* arr, int length, SAM_error *err); + + /** + * Set c_construction_interest: Nominal construction interest rate [%] + * options: None + * constraints: None + * required if: ui_fcr_input_option=1 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_construction_interest_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set c_debt_percent: Project term debt (% of capital) [%] + * options: None + * constraints: None + * required if: ui_fcr_input_option=1 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_debt_percent_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set c_depreciation_schedule: Depreciation schedule [%] + * options: None + * constraints: None + * required if: ui_fcr_input_option=1 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_depreciation_schedule_aset(SAM_table ptr, double* arr, int length, SAM_error *err); + + /** + * Set c_equity_return: IRR (nominal) [%] + * options: None + * constraints: None + * required if: ui_fcr_input_option=1 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_equity_return_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set c_inflation: Input fixed charge rate [%] + * options: None + * constraints: None + * required if: ui_fcr_input_option=1 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_inflation_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set c_lifetime: Analysis period [years] + * options: None + * constraints: None + * required if: ui_fcr_input_option=1 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_lifetime_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set c_nominal_interest_rate: Nominal debt interest rate [%] + * options: None + * constraints: None + * required if: ui_fcr_input_option=1 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_nominal_interest_rate_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set c_tax_rate: Effective tax rate [%] + * options: None + * constraints: None + * required if: ui_fcr_input_option=1 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_tax_rate_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set fixed_operating_cost: Annual fixed operating cost [$] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_fixed_operating_cost_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set ui_fcr_input_option: 0: fixed charge rate; 1: calculate + * options: None + * constraints: None + * required if: * + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_ui_fcr_input_option_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set ui_fixed_charge_rate: Input fixed charge rate + * options: None + * constraints: None + * required if: ui_fcr_input_option=0 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_ui_fixed_charge_rate_nset(SAM_table ptr, double number, SAM_error *err); + + /** + * Set variable_operating_cost: Annual variable operating cost [$/kWh] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_variable_operating_cost_nset(SAM_table ptr, double number, SAM_error *err); + + + // + // SystemCosts parameters + // + + /** + * Set total_installed_cost: Total installed cost [$] + * options: None + * constraints: None + * required if: sim_type=1 + */ + SAM_EXPORT void SAM_LcoefcrElectricity_SystemCosts_total_installed_cost_nset(SAM_table ptr, double number, SAM_error *err); + + + /** + * SystemControl Getters + */ + + SAM_EXPORT double SAM_LcoefcrElectricity_SystemControl_sim_type_nget(SAM_table ptr, SAM_error *err); + + + /** + * SimpleLCOE Getters + */ + + SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_annual_energy_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double* SAM_LcoefcrElectricity_SimpleLCOE_c_construction_cost_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_c_construction_interest_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_c_debt_percent_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double* SAM_LcoefcrElectricity_SimpleLCOE_c_depreciation_schedule_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_c_equity_return_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_c_inflation_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_c_lifetime_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_c_nominal_interest_rate_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_c_tax_rate_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_fixed_operating_cost_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_ui_fcr_input_option_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_ui_fixed_charge_rate_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_variable_operating_cost_nget(SAM_table ptr, SAM_error *err); + + + /** + * SystemCosts Getters + */ + + SAM_EXPORT double SAM_LcoefcrElectricity_SystemCosts_total_installed_cost_nget(SAM_table ptr, SAM_error *err); + + + /** + * Outputs Getters + */ + + SAM_EXPORT double SAM_LcoefcrElectricity_Outputs_cfin_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_Outputs_crf_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_Outputs_fixed_charge_rate_calc_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_Outputs_lcoe_fcr_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_Outputs_pfin_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_LcoefcrElectricity_Outputs_wacc_nget(SAM_table ptr, SAM_error *err); + +#ifdef __cplusplus +} /* end of extern "C" { */ +#endif + +#endif \ No newline at end of file diff --git a/api/modules/SAM_CbConstructionFinancing.cpp b/api/modules/SAM_CbConstructionFinancing.cpp index 9b66bbda9b..dcb9ffe71b 100644 --- a/api/modules/SAM_CbConstructionFinancing.cpp +++ b/api/modules/SAM_CbConstructionFinancing.cpp @@ -14,12 +14,6 @@ SAM_EXPORT int SAM_CbConstructionFinancing_execute(SAM_table data, int verbosity return SAM_module_exec("cb_construction_financing", data, verbosity, err); } -SAM_EXPORT void SAM_CbConstructionFinancing_SystemCosts_total_installed_cost_nset(SAM_table ptr, double number, SAM_error *err){ - translateExceptions(err, [&]{ - ssc_data_set_number(ptr, "total_installed_cost", number); - }); -} - SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_interest_rate1_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "const_per_interest_rate1", number); @@ -140,13 +134,10 @@ SAM_EXPORT void SAM_CbConstructionFinancing_FinancialParameters_const_per_upfron }); } -SAM_EXPORT double SAM_CbConstructionFinancing_SystemCosts_total_installed_cost_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_CbConstructionFinancing_SystemCosts_total_installed_cost_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "total_installed_cost", &result)) - make_access_error("SAM_CbConstructionFinancing", "total_installed_cost"); + ssc_data_set_number(ptr, "total_installed_cost", number); }); - return result; } SAM_EXPORT double SAM_CbConstructionFinancing_FinancialParameters_const_per_interest_rate1_nget(SAM_table ptr, SAM_error *err){ @@ -329,6 +320,15 @@ SAM_EXPORT double SAM_CbConstructionFinancing_FinancialParameters_const_per_upfr return result; } +SAM_EXPORT double SAM_CbConstructionFinancing_SystemCosts_total_installed_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_installed_cost", &result)) + make_access_error("SAM_CbConstructionFinancing", "total_installed_cost"); + }); + return result; +} + SAM_EXPORT double SAM_CbConstructionFinancing_Outputs_const_per_interest1_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ diff --git a/api/modules/SAM_Geothermal.cpp b/api/modules/SAM_Geothermal.cpp index becbc9c223..95103e0408 100644 --- a/api/modules/SAM_Geothermal.cpp +++ b/api/modules/SAM_Geothermal.cpp @@ -14,15 +14,21 @@ SAM_EXPORT int SAM_Geothermal_execute(SAM_table data, int verbosity, SAM_error* return SAM_module_exec("geothermal", data, verbosity, err); } -SAM_EXPORT void SAM_Geothermal_GeoHourly_CT_nset(SAM_table ptr, double number, SAM_error *err){ +SAM_EXPORT void SAM_Geothermal_SystemControl_sim_type_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - ssc_data_set_number(ptr, "CT", number); + ssc_data_set_number(ptr, "sim_type", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_FinancialModel_geo_financial_model_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geo_financial_model", number); }); } -SAM_EXPORT void SAM_Geothermal_GeoHourly_HTF_nset(SAM_table ptr, double number, SAM_error *err){ +SAM_EXPORT void SAM_Geothermal_GeoHourly_CT_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - ssc_data_set_number(ptr, "HTF", number); + ssc_data_set_number(ptr, "CT", number); }); } @@ -68,12 +74,6 @@ SAM_EXPORT void SAM_Geothermal_GeoHourly_T_htf_cold_ref_nset(SAM_table ptr, doub }); } -SAM_EXPORT void SAM_Geothermal_GeoHourly_T_htf_hot_ref_nset(SAM_table ptr, double number, SAM_error *err){ - translateExceptions(err, [&]{ - ssc_data_set_number(ptr, "T_htf_hot_ref", number); - }); -} - SAM_EXPORT void SAM_Geothermal_GeoHourly_allow_reservoir_replacements_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "allow_reservoir_replacements", number); @@ -92,6 +92,12 @@ SAM_EXPORT void SAM_Geothermal_GeoHourly_analysis_type_nset(SAM_table ptr, doubl }); } +SAM_EXPORT void SAM_Geothermal_GeoHourly_calc_drill_costs_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "calc_drill_costs", number); + }); +} + SAM_EXPORT void SAM_Geothermal_GeoHourly_conversion_subtype_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "conversion_subtype", number); @@ -122,12 +128,6 @@ SAM_EXPORT void SAM_Geothermal_GeoHourly_delta_pressure_equip_nset(SAM_table ptr }); } -SAM_EXPORT void SAM_Geothermal_GeoHourly_design_temp_nset(SAM_table ptr, double number, SAM_error *err){ - translateExceptions(err, [&]{ - ssc_data_set_number(ptr, "design_temp", number); - }); -} - SAM_EXPORT void SAM_Geothermal_GeoHourly_drilling_success_rate_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "drilling_success_rate", number); @@ -152,12 +152,6 @@ SAM_EXPORT void SAM_Geothermal_GeoHourly_excess_pressure_pump_nset(SAM_table ptr }); } -SAM_EXPORT void SAM_Geothermal_GeoHourly_exploration_wells_production_nset(SAM_table ptr, double number, SAM_error *err){ - translateExceptions(err, [&]{ - ssc_data_set_number(ptr, "exploration_wells_production", number); - }); -} - SAM_EXPORT void SAM_Geothermal_GeoHourly_failed_prod_flow_ratio_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "failed_prod_flow_ratio", number); @@ -200,6 +194,102 @@ SAM_EXPORT void SAM_Geothermal_GeoHourly_fracture_width_nset(SAM_table ptr, doub }); } +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_conf_multiplier_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.conf_multiplier", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_conf_non_drill_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.conf_non_drill", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_conf_num_wells_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.conf_num_wells", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_confirm_wells_percent_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.confirm_wells_percent", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_contingency_percent_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.contingency_percent", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_drilling_amount_specified_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.drilling.amount_specified", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_drilling_calc_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.drilling.calc", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_epc_fixed_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.epc.fixed", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_epc_percent_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.epc.percent", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_expl_lump_sum_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.expl_lump_sum", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_expl_multiplier_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.expl_multiplier", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_expl_non_drill_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.expl_non_drill", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_expl_num_wells_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.expl_num_wells", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_indirect_amount_specified_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.indirect.amount_specified", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_indirect_calc_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.indirect.calc", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_inj_cost_curve_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.inj_cost_curve", number); + }); +} + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_inj_cost_curve_welldiam_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "geotherm.cost.inj_cost_curve_welldiam", number); @@ -218,6 +308,42 @@ SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_inj_prod_well_ratio_nset( }); } +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_plant_auto_estimate_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.plant_auto_estimate", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_plant_per_kW_input_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.plant_per_kW_input", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_plant_total_calc_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.plant_total.calc", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_plm_fixed_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.plm.fixed", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_plm_percent_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.plm.percent", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_prod_cost_curve_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.prod_cost_curve", number); + }); +} + SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_prod_cost_curve_welldiam_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "geotherm.cost.prod_cost_curve_welldiam", number); @@ -230,9 +356,63 @@ SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_prod_cost_curve_welltype_ }); } -SAM_EXPORT void SAM_Geothermal_GeoHourly_geothermal_analysis_period_nset(SAM_table ptr, double number, SAM_error *err){ +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_prod_inj_non_drill_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.prod_inj_non_drill", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_pump_casing_cost_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.pump_casing_cost", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_pump_fixed_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.pump_fixed", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_pump_per_foot_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.pump_per_foot", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_pumping_amount_specified_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - ssc_data_set_number(ptr, "geothermal_analysis_period", number); + ssc_data_set_number(ptr, "geotherm.cost.pumping.amount_specified", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_pumping_calc_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.pumping.calc", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_recap_specified_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.recap_specified", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_recap_use_calc_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.recap_use_calc", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_sales_tax_percent_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.sales_tax.percent", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_GeoHourly_geotherm_cost_stim_non_drill_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.stim_non_drill", number); }); } @@ -338,12 +518,6 @@ SAM_EXPORT void SAM_Geothermal_GeoHourly_num_wells_nset(SAM_table ptr, double nu }); } -SAM_EXPORT void SAM_Geothermal_GeoHourly_num_wells_getem_nset(SAM_table ptr, double number, SAM_error *err){ - translateExceptions(err, [&]{ - ssc_data_set_number(ptr, "num_wells_getem", number); - }); -} - SAM_EXPORT void SAM_Geothermal_GeoHourly_pb_bd_frac_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "pb_bd_frac", number); @@ -356,6 +530,12 @@ SAM_EXPORT void SAM_Geothermal_GeoHourly_plant_efficiency_input_nset(SAM_table p }); } +SAM_EXPORT void SAM_Geothermal_GeoHourly_ppi_base_year_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "ppi_base_year", number); + }); +} + SAM_EXPORT void SAM_Geothermal_GeoHourly_prod_well_choice_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "prod_well_choice", number); @@ -452,6 +632,12 @@ SAM_EXPORT void SAM_Geothermal_GeoHourly_rock_thermal_conductivity_nset(SAM_tabl }); } +SAM_EXPORT void SAM_Geothermal_GeoHourly_sales_tax_rate_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "sales_tax_rate", number); + }); +} + SAM_EXPORT void SAM_Geothermal_GeoHourly_specified_pump_work_amount_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "specified_pump_work_amount", number); @@ -500,12 +686,6 @@ SAM_EXPORT void SAM_Geothermal_GeoHourly_subsurface_water_loss_nset(SAM_table pt }); } -SAM_EXPORT void SAM_Geothermal_GeoHourly_system_use_lifetime_output_nset(SAM_table ptr, double number, SAM_error *err){ - translateExceptions(err, [&]{ - ssc_data_set_number(ptr, "system_use_lifetime_output", number); - }); -} - SAM_EXPORT void SAM_Geothermal_GeoHourly_temp_decline_max_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "temp_decline_max", number); @@ -518,12 +698,6 @@ SAM_EXPORT void SAM_Geothermal_GeoHourly_temp_decline_rate_nset(SAM_table ptr, d }); } -SAM_EXPORT void SAM_Geothermal_GeoHourly_ui_calculations_only_nset(SAM_table ptr, double number, SAM_error *err){ - translateExceptions(err, [&]{ - ssc_data_set_number(ptr, "ui_calculations_only", number); - }); -} - SAM_EXPORT void SAM_Geothermal_GeoHourly_use_weather_file_conditions_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "use_weather_file_conditions", number); @@ -572,175 +746,307 @@ SAM_EXPORT void SAM_Geothermal_AdjustmentFactors_adjust_timeindex_aset(SAM_table }); } -SAM_EXPORT double SAM_Geothermal_GeoHourly_CT_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_analysis_period_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "CT", &result)) - make_access_error("SAM_Geothermal", "CT"); + ssc_data_set_number(ptr, "analysis_period", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_HTF_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_Costs_geotherm_cost_plant_total_amount_specified_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "HTF", &result)) - make_access_error("SAM_Geothermal", "HTF"); + ssc_data_set_number(ptr, "geotherm.cost.plant_total.amount_specified", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_P_boil_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_interest_rate1_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "P_boil", &result)) - make_access_error("SAM_Geothermal", "P_boil"); + ssc_data_set_number(ptr, "const_per_interest_rate1", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_P_cond_min_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_interest_rate2_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "P_cond_min", &result)) - make_access_error("SAM_Geothermal", "P_cond_min"); + ssc_data_set_number(ptr, "const_per_interest_rate2", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_P_cond_ratio_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_interest_rate3_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "P_cond_ratio", &result)) - make_access_error("SAM_Geothermal", "P_cond_ratio"); + ssc_data_set_number(ptr, "const_per_interest_rate3", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_T_ITD_des_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_interest_rate4_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "T_ITD_des", &result)) - make_access_error("SAM_Geothermal", "T_ITD_des"); + ssc_data_set_number(ptr, "const_per_interest_rate4", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_T_amb_des_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_interest_rate5_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "T_amb_des", &result)) - make_access_error("SAM_Geothermal", "T_amb_des"); + ssc_data_set_number(ptr, "const_per_interest_rate5", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_T_approach_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_months1_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "T_approach", &result)) - make_access_error("SAM_Geothermal", "T_approach"); + ssc_data_set_number(ptr, "const_per_months1", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_T_htf_cold_ref_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_months2_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "T_htf_cold_ref", &result)) - make_access_error("SAM_Geothermal", "T_htf_cold_ref"); + ssc_data_set_number(ptr, "const_per_months2", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_T_htf_hot_ref_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_months3_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "T_htf_hot_ref", &result)) - make_access_error("SAM_Geothermal", "T_htf_hot_ref"); + ssc_data_set_number(ptr, "const_per_months3", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_allow_reservoir_replacements_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_months4_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "allow_reservoir_replacements", &result)) - make_access_error("SAM_Geothermal", "allow_reservoir_replacements"); + ssc_data_set_number(ptr, "const_per_months4", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_ambient_pressure_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_months5_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "ambient_pressure", &result)) - make_access_error("SAM_Geothermal", "ambient_pressure"); + ssc_data_set_number(ptr, "const_per_months5", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_analysis_type_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_percent1_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "analysis_type", &result)) - make_access_error("SAM_Geothermal", "analysis_type"); + ssc_data_set_number(ptr, "const_per_percent1", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_conversion_subtype_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_percent2_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "conversion_subtype", &result)) - make_access_error("SAM_Geothermal", "conversion_subtype"); + ssc_data_set_number(ptr, "const_per_percent2", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_conversion_type_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_percent3_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "conversion_type", &result)) - make_access_error("SAM_Geothermal", "conversion_type"); + ssc_data_set_number(ptr, "const_per_percent3", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_dT_cw_ref_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_percent4_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "dT_cw_ref", &result)) - make_access_error("SAM_Geothermal", "dT_cw_ref"); + ssc_data_set_number(ptr, "const_per_percent4", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_decline_type_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_percent5_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "decline_type", &result)) - make_access_error("SAM_Geothermal", "decline_type"); + ssc_data_set_number(ptr, "const_per_percent5", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_delta_pressure_equip_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_upfront_rate1_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "delta_pressure_equip", &result)) - make_access_error("SAM_Geothermal", "delta_pressure_equip"); + ssc_data_set_number(ptr, "const_per_upfront_rate1", number); }); - return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_design_temp_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_upfront_rate2_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "design_temp", &result)) - make_access_error("SAM_Geothermal", "design_temp"); + ssc_data_set_number(ptr, "const_per_upfront_rate2", number); }); - return result; +} + +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_upfront_rate3_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "const_per_upfront_rate3", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_upfront_rate4_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "const_per_upfront_rate4", number); + }); +} + +SAM_EXPORT void SAM_Geothermal_FinancialParameters_const_per_upfront_rate5_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "const_per_upfront_rate5", number); + }); +} + +SAM_EXPORT double SAM_Geothermal_SystemControl_sim_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "sim_type", &result)) + make_access_error("SAM_Geothermal", "sim_type"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialModel_geo_financial_model_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geo_financial_model", &result)) + make_access_error("SAM_Geothermal", "geo_financial_model"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_CT_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "CT", &result)) + make_access_error("SAM_Geothermal", "CT"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_P_boil_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "P_boil", &result)) + make_access_error("SAM_Geothermal", "P_boil"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_P_cond_min_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "P_cond_min", &result)) + make_access_error("SAM_Geothermal", "P_cond_min"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_P_cond_ratio_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "P_cond_ratio", &result)) + make_access_error("SAM_Geothermal", "P_cond_ratio"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_T_ITD_des_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "T_ITD_des", &result)) + make_access_error("SAM_Geothermal", "T_ITD_des"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_T_amb_des_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "T_amb_des", &result)) + make_access_error("SAM_Geothermal", "T_amb_des"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_T_approach_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "T_approach", &result)) + make_access_error("SAM_Geothermal", "T_approach"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_T_htf_cold_ref_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "T_htf_cold_ref", &result)) + make_access_error("SAM_Geothermal", "T_htf_cold_ref"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_allow_reservoir_replacements_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "allow_reservoir_replacements", &result)) + make_access_error("SAM_Geothermal", "allow_reservoir_replacements"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_ambient_pressure_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "ambient_pressure", &result)) + make_access_error("SAM_Geothermal", "ambient_pressure"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_analysis_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "analysis_type", &result)) + make_access_error("SAM_Geothermal", "analysis_type"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_calc_drill_costs_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "calc_drill_costs", &result)) + make_access_error("SAM_Geothermal", "calc_drill_costs"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_conversion_subtype_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "conversion_subtype", &result)) + make_access_error("SAM_Geothermal", "conversion_subtype"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_conversion_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "conversion_type", &result)) + make_access_error("SAM_Geothermal", "conversion_type"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_dT_cw_ref_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "dT_cw_ref", &result)) + make_access_error("SAM_Geothermal", "dT_cw_ref"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_decline_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "decline_type", &result)) + make_access_error("SAM_Geothermal", "decline_type"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_delta_pressure_equip_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "delta_pressure_equip", &result)) + make_access_error("SAM_Geothermal", "delta_pressure_equip"); + }); + return result; } SAM_EXPORT double SAM_Geothermal_GeoHourly_drilling_success_rate_nget(SAM_table ptr, SAM_error *err){ @@ -779,15 +1085,6 @@ SAM_EXPORT double SAM_Geothermal_GeoHourly_excess_pressure_pump_nget(SAM_table p return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_exploration_wells_production_nget(SAM_table ptr, SAM_error *err){ - double result; - translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "exploration_wells_production", &result)) - make_access_error("SAM_Geothermal", "exploration_wells_production"); - }); - return result; -} - SAM_EXPORT double SAM_Geothermal_GeoHourly_failed_prod_flow_ratio_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -852,737 +1149,1611 @@ SAM_EXPORT double SAM_Geothermal_GeoHourly_fracture_width_nget(SAM_table ptr, SA return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_inj_cost_curve_welldiam_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_conf_multiplier_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "geotherm.cost.inj_cost_curve_welldiam", &result)) - make_access_error("SAM_Geothermal", "geotherm.cost.inj_cost_curve_welldiam"); + if (!ssc_data_get_number(ptr, "geotherm.cost.conf_multiplier", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.conf_multiplier"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_inj_cost_curve_welltype_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_conf_non_drill_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "geotherm.cost.inj_cost_curve_welltype", &result)) - make_access_error("SAM_Geothermal", "geotherm.cost.inj_cost_curve_welltype"); + if (!ssc_data_get_number(ptr, "geotherm.cost.conf_non_drill", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.conf_non_drill"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_inj_prod_well_ratio_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_conf_num_wells_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "geotherm.cost.inj_prod_well_ratio", &result)) - make_access_error("SAM_Geothermal", "geotherm.cost.inj_prod_well_ratio"); + if (!ssc_data_get_number(ptr, "geotherm.cost.conf_num_wells", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.conf_num_wells"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_prod_cost_curve_welldiam_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_confirm_wells_percent_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "geotherm.cost.prod_cost_curve_welldiam", &result)) - make_access_error("SAM_Geothermal", "geotherm.cost.prod_cost_curve_welldiam"); + if (!ssc_data_get_number(ptr, "geotherm.cost.confirm_wells_percent", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.confirm_wells_percent"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_prod_cost_curve_welltype_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_contingency_percent_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "geotherm.cost.prod_cost_curve_welltype", &result)) - make_access_error("SAM_Geothermal", "geotherm.cost.prod_cost_curve_welltype"); + if (!ssc_data_get_number(ptr, "geotherm.cost.contingency_percent", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.contingency_percent"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_geothermal_analysis_period_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_drilling_amount_specified_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "geothermal_analysis_period", &result)) - make_access_error("SAM_Geothermal", "geothermal_analysis_period"); + if (!ssc_data_get_number(ptr, "geotherm.cost.drilling.amount_specified", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.drilling.amount_specified"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl1_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_drilling_calc_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "hc_ctl1", &result)) - make_access_error("SAM_Geothermal", "hc_ctl1"); + if (!ssc_data_get_number(ptr, "geotherm.cost.drilling.calc", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.drilling.calc"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl2_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_epc_fixed_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "hc_ctl2", &result)) - make_access_error("SAM_Geothermal", "hc_ctl2"); + if (!ssc_data_get_number(ptr, "geotherm.cost.epc.fixed", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.epc.fixed"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl3_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_epc_percent_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "hc_ctl3", &result)) - make_access_error("SAM_Geothermal", "hc_ctl3"); + if (!ssc_data_get_number(ptr, "geotherm.cost.epc.percent", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.epc.percent"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl4_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_expl_lump_sum_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "hc_ctl4", &result)) - make_access_error("SAM_Geothermal", "hc_ctl4"); + if (!ssc_data_get_number(ptr, "geotherm.cost.expl_lump_sum", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.expl_lump_sum"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl5_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_expl_multiplier_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "hc_ctl5", &result)) - make_access_error("SAM_Geothermal", "hc_ctl5"); + if (!ssc_data_get_number(ptr, "geotherm.cost.expl_multiplier", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.expl_multiplier"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl6_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_expl_non_drill_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "hc_ctl6", &result)) - make_access_error("SAM_Geothermal", "hc_ctl6"); + if (!ssc_data_get_number(ptr, "geotherm.cost.expl_non_drill", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.expl_non_drill"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl7_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_expl_num_wells_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "hc_ctl7", &result)) - make_access_error("SAM_Geothermal", "hc_ctl7"); + if (!ssc_data_get_number(ptr, "geotherm.cost.expl_num_wells", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.expl_num_wells"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl8_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_indirect_amount_specified_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.indirect.amount_specified", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.indirect.amount_specified"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_indirect_calc_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.indirect.calc", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.indirect.calc"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_inj_cost_curve_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.inj_cost_curve", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.inj_cost_curve"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_inj_cost_curve_welldiam_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.inj_cost_curve_welldiam", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.inj_cost_curve_welldiam"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_inj_cost_curve_welltype_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.inj_cost_curve_welltype", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.inj_cost_curve_welltype"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_inj_prod_well_ratio_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.inj_prod_well_ratio", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.inj_prod_well_ratio"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_plant_auto_estimate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.plant_auto_estimate", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.plant_auto_estimate"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_plant_per_kW_input_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.plant_per_kW_input", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.plant_per_kW_input"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_plant_total_calc_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.plant_total.calc", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.plant_total.calc"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_plm_fixed_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.plm.fixed", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.plm.fixed"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_plm_percent_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.plm.percent", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.plm.percent"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_prod_cost_curve_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.prod_cost_curve", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.prod_cost_curve"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_prod_cost_curve_welldiam_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.prod_cost_curve_welldiam", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.prod_cost_curve_welldiam"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_prod_cost_curve_welltype_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.prod_cost_curve_welltype", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.prod_cost_curve_welltype"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_prod_inj_non_drill_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.prod_inj_non_drill", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.prod_inj_non_drill"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_pump_casing_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.pump_casing_cost", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.pump_casing_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_pump_fixed_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.pump_fixed", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.pump_fixed"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_pump_per_foot_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.pump_per_foot", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.pump_per_foot"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_pumping_amount_specified_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.pumping.amount_specified", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.pumping.amount_specified"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_pumping_calc_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.pumping.calc", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.pumping.calc"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_recap_specified_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.recap_specified", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.recap_specified"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_recap_use_calc_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.recap_use_calc", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.recap_use_calc"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_sales_tax_percent_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.sales_tax.percent", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.sales_tax.percent"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_geotherm_cost_stim_non_drill_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.stim_non_drill", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.stim_non_drill"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl1_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl1", &result)) + make_access_error("SAM_Geothermal", "hc_ctl1"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl2_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl2", &result)) + make_access_error("SAM_Geothermal", "hc_ctl2"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl3_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl3", &result)) + make_access_error("SAM_Geothermal", "hc_ctl3"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl4_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl4", &result)) + make_access_error("SAM_Geothermal", "hc_ctl4"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl5_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl5", &result)) + make_access_error("SAM_Geothermal", "hc_ctl5"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl6_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl6", &result)) + make_access_error("SAM_Geothermal", "hc_ctl6"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl7_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl7", &result)) + make_access_error("SAM_Geothermal", "hc_ctl7"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl8_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl8", &result)) + make_access_error("SAM_Geothermal", "hc_ctl8"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl9_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl9", &result)) + make_access_error("SAM_Geothermal", "hc_ctl9"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_hr_pl_nlev_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hr_pl_nlev", &result)) + make_access_error("SAM_Geothermal", "hr_pl_nlev"); + }); + return result; +} + +SAM_EXPORT const char* SAM_Geothermal_GeoHourly_hybrid_dispatch_schedule_sget(SAM_table ptr, SAM_error *err){ + const char* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_string(ptr, "hybrid_dispatch_schedule"); + if (!result) + make_access_error("SAM_Geothermal", "hybrid_dispatch_schedule"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_inj_prod_well_distance_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "inj_prod_well_distance", &result)) + make_access_error("SAM_Geothermal", "inj_prod_well_distance"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_injectivity_index_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "injectivity_index", &result)) + make_access_error("SAM_Geothermal", "injectivity_index"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_model_choice_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "model_choice", &result)) + make_access_error("SAM_Geothermal", "model_choice"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_nameplate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "nameplate", &result)) + make_access_error("SAM_Geothermal", "nameplate"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_num_fractures_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "num_fractures", &result)) + make_access_error("SAM_Geothermal", "num_fractures"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_num_wells_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "num_wells", &result)) + make_access_error("SAM_Geothermal", "num_wells"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_pb_bd_frac_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pb_bd_frac", &result)) + make_access_error("SAM_Geothermal", "pb_bd_frac"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_plant_efficiency_input_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "plant_efficiency_input", &result)) + make_access_error("SAM_Geothermal", "plant_efficiency_input"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_ppi_base_year_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "ppi_base_year", &result)) + make_access_error("SAM_Geothermal", "ppi_base_year"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_prod_well_choice_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "prod_well_choice", &result)) + make_access_error("SAM_Geothermal", "prod_well_choice"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_pump_efficiency_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pump_efficiency", &result)) + make_access_error("SAM_Geothermal", "pump_efficiency"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_q_sby_frac_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "q_sby_frac", &result)) + make_access_error("SAM_Geothermal", "q_sby_frac"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_reservoir_height_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "reservoir_height", &result)) + make_access_error("SAM_Geothermal", "reservoir_height"); + }); + return result; +} + +SAM_EXPORT double* SAM_Geothermal_GeoHourly_reservoir_model_inputs_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_matrix(ptr, "reservoir_model_inputs", nrows, ncols); + if (!result) + make_access_error("SAM_Geothermal", "reservoir_model_inputs"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_reservoir_permeability_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "reservoir_permeability", &result)) + make_access_error("SAM_Geothermal", "reservoir_permeability"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_reservoir_pressure_change_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "reservoir_pressure_change", &result)) + make_access_error("SAM_Geothermal", "reservoir_pressure_change"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_reservoir_pressure_change_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "reservoir_pressure_change_type", &result)) + make_access_error("SAM_Geothermal", "reservoir_pressure_change_type"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_reservoir_width_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "reservoir_width", &result)) + make_access_error("SAM_Geothermal", "reservoir_width"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_resource_depth_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "resource_depth", &result)) + make_access_error("SAM_Geothermal", "resource_depth"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_resource_potential_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "resource_potential", &result)) + make_access_error("SAM_Geothermal", "resource_potential"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_resource_temp_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "resource_temp", &result)) + make_access_error("SAM_Geothermal", "resource_temp"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_resource_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "resource_type", &result)) + make_access_error("SAM_Geothermal", "resource_type"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_rock_density_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "rock_density", &result)) + make_access_error("SAM_Geothermal", "rock_density"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_rock_specific_heat_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "rock_specific_heat", &result)) + make_access_error("SAM_Geothermal", "rock_specific_heat"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_rock_thermal_conductivity_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "rock_thermal_conductivity", &result)) + make_access_error("SAM_Geothermal", "rock_thermal_conductivity"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_sales_tax_rate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "sales_tax_rate", &result)) + make_access_error("SAM_Geothermal", "sales_tax_rate"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_specified_pump_work_amount_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "specified_pump_work_amount", &result)) + make_access_error("SAM_Geothermal", "specified_pump_work_amount"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_specify_pump_work_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "specify_pump_work", &result)) + make_access_error("SAM_Geothermal", "specify_pump_work"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_start_day_of_year_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "start_day_of_year", &result)) + make_access_error("SAM_Geothermal", "start_day_of_year"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_startup_frac_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "startup_frac", &result)) + make_access_error("SAM_Geothermal", "startup_frac"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_startup_time_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "startup_time", &result)) + make_access_error("SAM_Geothermal", "startup_time"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_stim_success_rate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "stim_success_rate", &result)) + make_access_error("SAM_Geothermal", "stim_success_rate"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_stimulation_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "stimulation_type", &result)) + make_access_error("SAM_Geothermal", "stimulation_type"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_subsurface_water_loss_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "subsurface_water_loss", &result)) + make_access_error("SAM_Geothermal", "subsurface_water_loss"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_temp_decline_max_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "temp_decline_max", &result)) + make_access_error("SAM_Geothermal", "temp_decline_max"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_temp_decline_rate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "temp_decline_rate", &result)) + make_access_error("SAM_Geothermal", "temp_decline_rate"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_use_weather_file_conditions_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "use_weather_file_conditions", &result)) + make_access_error("SAM_Geothermal", "use_weather_file_conditions"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_well_flow_rate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "well_flow_rate", &result)) + make_access_error("SAM_Geothermal", "well_flow_rate"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_GeoHourly_wet_bulb_temp_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "wet_bulb_temp", &result)) + make_access_error("SAM_Geothermal", "wet_bulb_temp"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_AdjustmentFactors_adjust_constant_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "adjust_constant", &result)) + make_access_error("SAM_Geothermal", "adjust_constant"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_AdjustmentFactors_adjust_en_periods_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "adjust_en_periods", &result)) + make_access_error("SAM_Geothermal", "adjust_en_periods"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_AdjustmentFactors_adjust_en_timeindex_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "adjust_en_timeindex", &result)) + make_access_error("SAM_Geothermal", "adjust_en_timeindex"); + }); + return result; +} + +SAM_EXPORT double* SAM_Geothermal_AdjustmentFactors_adjust_periods_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_matrix(ptr, "adjust_periods", nrows, ncols); + if (!result) + make_access_error("SAM_Geothermal", "adjust_periods"); + }); + return result; +} + +SAM_EXPORT double* SAM_Geothermal_AdjustmentFactors_adjust_timeindex_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "adjust_timeindex", length); + if (!result) + make_access_error("SAM_Geothermal", "adjust_timeindex"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_analysis_period_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "analysis_period", &result)) + make_access_error("SAM_Geothermal", "analysis_period"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Costs_geotherm_cost_plant_total_amount_specified_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.plant_total.amount_specified", &result)) + make_access_error("SAM_Geothermal", "geotherm.cost.plant_total.amount_specified"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_interest_rate1_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_interest_rate1", &result)) + make_access_error("SAM_Geothermal", "const_per_interest_rate1"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_interest_rate2_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_interest_rate2", &result)) + make_access_error("SAM_Geothermal", "const_per_interest_rate2"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_interest_rate3_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_interest_rate3", &result)) + make_access_error("SAM_Geothermal", "const_per_interest_rate3"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_interest_rate4_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_interest_rate4", &result)) + make_access_error("SAM_Geothermal", "const_per_interest_rate4"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_interest_rate5_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_interest_rate5", &result)) + make_access_error("SAM_Geothermal", "const_per_interest_rate5"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_months1_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_months1", &result)) + make_access_error("SAM_Geothermal", "const_per_months1"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_months2_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_months2", &result)) + make_access_error("SAM_Geothermal", "const_per_months2"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_months3_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_months3", &result)) + make_access_error("SAM_Geothermal", "const_per_months3"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_months4_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_months4", &result)) + make_access_error("SAM_Geothermal", "const_per_months4"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_months5_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_months5", &result)) + make_access_error("SAM_Geothermal", "const_per_months5"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_percent1_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_percent1", &result)) + make_access_error("SAM_Geothermal", "const_per_percent1"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_percent2_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_percent2", &result)) + make_access_error("SAM_Geothermal", "const_per_percent2"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_percent3_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_percent3", &result)) + make_access_error("SAM_Geothermal", "const_per_percent3"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_percent4_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_percent4", &result)) + make_access_error("SAM_Geothermal", "const_per_percent4"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_percent5_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_percent5", &result)) + make_access_error("SAM_Geothermal", "const_per_percent5"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_upfront_rate1_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "const_per_upfront_rate1", &result)) + make_access_error("SAM_Geothermal", "const_per_upfront_rate1"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_upfront_rate2_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "hc_ctl8", &result)) - make_access_error("SAM_Geothermal", "hc_ctl8"); + if (!ssc_data_get_number(ptr, "const_per_upfront_rate2", &result)) + make_access_error("SAM_Geothermal", "const_per_upfront_rate2"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_hc_ctl9_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_upfront_rate3_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "hc_ctl9", &result)) - make_access_error("SAM_Geothermal", "hc_ctl9"); + if (!ssc_data_get_number(ptr, "const_per_upfront_rate3", &result)) + make_access_error("SAM_Geothermal", "const_per_upfront_rate3"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_hr_pl_nlev_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_upfront_rate4_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "hr_pl_nlev", &result)) - make_access_error("SAM_Geothermal", "hr_pl_nlev"); + if (!ssc_data_get_number(ptr, "const_per_upfront_rate4", &result)) + make_access_error("SAM_Geothermal", "const_per_upfront_rate4"); }); return result; } -SAM_EXPORT const char* SAM_Geothermal_GeoHourly_hybrid_dispatch_schedule_sget(SAM_table ptr, SAM_error *err){ - const char* result = nullptr; +SAM_EXPORT double SAM_Geothermal_FinancialParameters_const_per_upfront_rate5_nget(SAM_table ptr, SAM_error *err){ + double result; translateExceptions(err, [&]{ - result = ssc_data_get_string(ptr, "hybrid_dispatch_schedule"); - if (!result) - make_access_error("SAM_Geothermal", "hybrid_dispatch_schedule"); + if (!ssc_data_get_number(ptr, "const_per_upfront_rate5", &result)) + make_access_error("SAM_Geothermal", "const_per_upfront_rate5"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_inj_prod_well_distance_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_GF_flowrate_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "inj_prod_well_distance", &result)) - make_access_error("SAM_Geothermal", "inj_prod_well_distance"); + if (!ssc_data_get_number(ptr, "GF_flowrate", &result)) + make_access_error("SAM_Geothermal", "GF_flowrate"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_injectivity_index_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_annual_energy_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "injectivity_index", &result)) - make_access_error("SAM_Geothermal", "injectivity_index"); + if (!ssc_data_get_number(ptr, "annual_energy", &result)) + make_access_error("SAM_Geothermal", "annual_energy"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_model_choice_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT double* SAM_Geothermal_Outputs_annual_energy_distribution_time_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err){ + double* result = nullptr; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "model_choice", &result)) - make_access_error("SAM_Geothermal", "model_choice"); + result = ssc_data_get_matrix(ptr, "annual_energy_distribution_time", nrows, ncols); + if (!result) + make_access_error("SAM_Geothermal", "annual_energy_distribution_time"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_nameplate_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_atb_drilling_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "nameplate", &result)) - make_access_error("SAM_Geothermal", "nameplate"); + if (!ssc_data_get_number(ptr, "atb_drilling_cost", &result)) + make_access_error("SAM_Geothermal", "atb_drilling_cost"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_num_fractures_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_atb_exploration_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "num_fractures", &result)) - make_access_error("SAM_Geothermal", "num_fractures"); + if (!ssc_data_get_number(ptr, "atb_exploration_cost", &result)) + make_access_error("SAM_Geothermal", "atb_exploration_cost"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_num_wells_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_atb_plant_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "num_wells", &result)) - make_access_error("SAM_Geothermal", "num_wells"); + if (!ssc_data_get_number(ptr, "atb_plant_cost", &result)) + make_access_error("SAM_Geothermal", "atb_plant_cost"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_num_wells_getem_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_baseline_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "num_wells_getem", &result)) - make_access_error("SAM_Geothermal", "num_wells_getem"); + if (!ssc_data_get_number(ptr, "baseline_cost", &result)) + make_access_error("SAM_Geothermal", "baseline_cost"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_pb_bd_frac_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_bottom_hole_pressure_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "pb_bd_frac", &result)) - make_access_error("SAM_Geothermal", "pb_bd_frac"); + if (!ssc_data_get_number(ptr, "bottom_hole_pressure", &result)) + make_access_error("SAM_Geothermal", "bottom_hole_pressure"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_plant_efficiency_input_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_brine_effectiveness_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "plant_efficiency_input", &result)) - make_access_error("SAM_Geothermal", "plant_efficiency_input"); + if (!ssc_data_get_number(ptr, "brine_effectiveness", &result)) + make_access_error("SAM_Geothermal", "brine_effectiveness"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_prod_well_choice_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_capacity_factor_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "prod_well_choice", &result)) - make_access_error("SAM_Geothermal", "prod_well_choice"); + if (!ssc_data_get_number(ptr, "capacity_factor", &result)) + make_access_error("SAM_Geothermal", "capacity_factor"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_pump_efficiency_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_condensate_pump_power_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "pump_efficiency", &result)) - make_access_error("SAM_Geothermal", "pump_efficiency"); + if (!ssc_data_get_number(ptr, "condensate_pump_power", &result)) + make_access_error("SAM_Geothermal", "condensate_pump_power"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_q_sby_frac_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_conf_drilling_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "q_sby_frac", &result)) - make_access_error("SAM_Geothermal", "q_sby_frac"); + if (!ssc_data_get_number(ptr, "conf_drilling_cost", &result)) + make_access_error("SAM_Geothermal", "conf_drilling_cost"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_reservoir_height_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_conf_total_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "reservoir_height", &result)) - make_access_error("SAM_Geothermal", "reservoir_height"); + if (!ssc_data_get_number(ptr, "conf_total_cost", &result)) + make_access_error("SAM_Geothermal", "conf_total_cost"); }); return result; } -SAM_EXPORT double* SAM_Geothermal_GeoHourly_reservoir_model_inputs_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err){ - double* result = nullptr; +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_interest1_nget(SAM_table ptr, SAM_error *err){ + double result; translateExceptions(err, [&]{ - result = ssc_data_get_matrix(ptr, "reservoir_model_inputs", nrows, ncols); - if (!result) - make_access_error("SAM_Geothermal", "reservoir_model_inputs"); + if (!ssc_data_get_number(ptr, "const_per_interest1", &result)) + make_access_error("SAM_Geothermal", "const_per_interest1"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_reservoir_permeability_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_interest2_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "reservoir_permeability", &result)) - make_access_error("SAM_Geothermal", "reservoir_permeability"); + if (!ssc_data_get_number(ptr, "const_per_interest2", &result)) + make_access_error("SAM_Geothermal", "const_per_interest2"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_reservoir_pressure_change_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_interest3_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "reservoir_pressure_change", &result)) - make_access_error("SAM_Geothermal", "reservoir_pressure_change"); + if (!ssc_data_get_number(ptr, "const_per_interest3", &result)) + make_access_error("SAM_Geothermal", "const_per_interest3"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_reservoir_pressure_change_type_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_interest4_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "reservoir_pressure_change_type", &result)) - make_access_error("SAM_Geothermal", "reservoir_pressure_change_type"); + if (!ssc_data_get_number(ptr, "const_per_interest4", &result)) + make_access_error("SAM_Geothermal", "const_per_interest4"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_reservoir_width_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_interest5_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "reservoir_width", &result)) - make_access_error("SAM_Geothermal", "reservoir_width"); + if (!ssc_data_get_number(ptr, "const_per_interest5", &result)) + make_access_error("SAM_Geothermal", "const_per_interest5"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_resource_depth_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_interest_total_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "resource_depth", &result)) - make_access_error("SAM_Geothermal", "resource_depth"); + if (!ssc_data_get_number(ptr, "const_per_interest_total", &result)) + make_access_error("SAM_Geothermal", "const_per_interest_total"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_resource_potential_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_percent_total_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "resource_potential", &result)) - make_access_error("SAM_Geothermal", "resource_potential"); + if (!ssc_data_get_number(ptr, "const_per_percent_total", &result)) + make_access_error("SAM_Geothermal", "const_per_percent_total"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_resource_temp_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_principal1_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "resource_temp", &result)) - make_access_error("SAM_Geothermal", "resource_temp"); + if (!ssc_data_get_number(ptr, "const_per_principal1", &result)) + make_access_error("SAM_Geothermal", "const_per_principal1"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_resource_type_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_principal2_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "resource_type", &result)) - make_access_error("SAM_Geothermal", "resource_type"); + if (!ssc_data_get_number(ptr, "const_per_principal2", &result)) + make_access_error("SAM_Geothermal", "const_per_principal2"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_rock_density_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_principal3_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "rock_density", &result)) - make_access_error("SAM_Geothermal", "rock_density"); + if (!ssc_data_get_number(ptr, "const_per_principal3", &result)) + make_access_error("SAM_Geothermal", "const_per_principal3"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_rock_specific_heat_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_principal4_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "rock_specific_heat", &result)) - make_access_error("SAM_Geothermal", "rock_specific_heat"); + if (!ssc_data_get_number(ptr, "const_per_principal4", &result)) + make_access_error("SAM_Geothermal", "const_per_principal4"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_rock_thermal_conductivity_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_principal5_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "rock_thermal_conductivity", &result)) - make_access_error("SAM_Geothermal", "rock_thermal_conductivity"); + if (!ssc_data_get_number(ptr, "const_per_principal5", &result)) + make_access_error("SAM_Geothermal", "const_per_principal5"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_specified_pump_work_amount_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_principal_total_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "specified_pump_work_amount", &result)) - make_access_error("SAM_Geothermal", "specified_pump_work_amount"); + if (!ssc_data_get_number(ptr, "const_per_principal_total", &result)) + make_access_error("SAM_Geothermal", "const_per_principal_total"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_specify_pump_work_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_total1_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "specify_pump_work", &result)) - make_access_error("SAM_Geothermal", "specify_pump_work"); + if (!ssc_data_get_number(ptr, "const_per_total1", &result)) + make_access_error("SAM_Geothermal", "const_per_total1"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_start_day_of_year_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_total2_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "start_day_of_year", &result)) - make_access_error("SAM_Geothermal", "start_day_of_year"); + if (!ssc_data_get_number(ptr, "const_per_total2", &result)) + make_access_error("SAM_Geothermal", "const_per_total2"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_startup_frac_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_total3_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "startup_frac", &result)) - make_access_error("SAM_Geothermal", "startup_frac"); + if (!ssc_data_get_number(ptr, "const_per_total3", &result)) + make_access_error("SAM_Geothermal", "const_per_total3"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_startup_time_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_total4_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "startup_time", &result)) - make_access_error("SAM_Geothermal", "startup_time"); + if (!ssc_data_get_number(ptr, "const_per_total4", &result)) + make_access_error("SAM_Geothermal", "const_per_total4"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_stim_success_rate_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_const_per_total5_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "stim_success_rate", &result)) - make_access_error("SAM_Geothermal", "stim_success_rate"); + if (!ssc_data_get_number(ptr, "const_per_total5", &result)) + make_access_error("SAM_Geothermal", "const_per_total5"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_stimulation_type_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_construction_financing_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "stimulation_type", &result)) - make_access_error("SAM_Geothermal", "stimulation_type"); + if (!ssc_data_get_number(ptr, "construction_financing_cost", &result)) + make_access_error("SAM_Geothermal", "construction_financing_cost"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_subsurface_water_loss_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_contingency_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "subsurface_water_loss", &result)) - make_access_error("SAM_Geothermal", "subsurface_water_loss"); + if (!ssc_data_get_number(ptr, "contingency_cost", &result)) + make_access_error("SAM_Geothermal", "contingency_cost"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_system_use_lifetime_output_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_cp_battery_nameplate_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "system_use_lifetime_output", &result)) - make_access_error("SAM_Geothermal", "system_use_lifetime_output"); + if (!ssc_data_get_number(ptr, "cp_battery_nameplate", &result)) + make_access_error("SAM_Geothermal", "cp_battery_nameplate"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_temp_decline_max_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_cp_system_nameplate_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "temp_decline_max", &result)) - make_access_error("SAM_Geothermal", "temp_decline_max"); + if (!ssc_data_get_number(ptr, "cp_system_nameplate", &result)) + make_access_error("SAM_Geothermal", "cp_system_nameplate"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_temp_decline_rate_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_cw_pump_head_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "temp_decline_rate", &result)) - make_access_error("SAM_Geothermal", "temp_decline_rate"); + if (!ssc_data_get_number(ptr, "cw_pump_head", &result)) + make_access_error("SAM_Geothermal", "cw_pump_head"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_ui_calculations_only_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_cw_pump_work_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "ui_calculations_only", &result)) - make_access_error("SAM_Geothermal", "ui_calculations_only"); + if (!ssc_data_get_number(ptr, "cw_pump_work", &result)) + make_access_error("SAM_Geothermal", "cw_pump_work"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_use_weather_file_conditions_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_cwflow_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "use_weather_file_conditions", &result)) - make_access_error("SAM_Geothermal", "use_weather_file_conditions"); + if (!ssc_data_get_number(ptr, "cwflow", &result)) + make_access_error("SAM_Geothermal", "cwflow"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_well_flow_rate_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT double* SAM_Geothermal_Outputs_degradation_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "well_flow_rate", &result)) - make_access_error("SAM_Geothermal", "well_flow_rate"); + result = ssc_data_get_array(ptr, "degradation", length); + if (!result) + make_access_error("SAM_Geothermal", "degradation"); }); return result; } -SAM_EXPORT double SAM_Geothermal_GeoHourly_wet_bulb_temp_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_design_temp_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "wet_bulb_temp", &result)) - make_access_error("SAM_Geothermal", "wet_bulb_temp"); + if (!ssc_data_get_number(ptr, "design_temp", &result)) + make_access_error("SAM_Geothermal", "design_temp"); }); return result; } -SAM_EXPORT double SAM_Geothermal_AdjustmentFactors_adjust_constant_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_dt_rock_well_head_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "adjust_constant", &result)) - make_access_error("SAM_Geothermal", "adjust_constant"); + if (!ssc_data_get_number(ptr, "dt_rock_well_head", &result)) + make_access_error("SAM_Geothermal", "dt_rock_well_head"); }); return result; } -SAM_EXPORT double SAM_Geothermal_AdjustmentFactors_adjust_en_periods_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_eff_secondlaw_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "adjust_en_periods", &result)) - make_access_error("SAM_Geothermal", "adjust_en_periods"); + if (!ssc_data_get_number(ptr, "eff_secondlaw", &result)) + make_access_error("SAM_Geothermal", "eff_secondlaw"); }); return result; } -SAM_EXPORT double SAM_Geothermal_AdjustmentFactors_adjust_en_timeindex_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_engineering_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "adjust_en_timeindex", &result)) - make_access_error("SAM_Geothermal", "adjust_en_timeindex"); + if (!ssc_data_get_number(ptr, "engineering_cost", &result)) + make_access_error("SAM_Geothermal", "engineering_cost"); }); return result; } -SAM_EXPORT double* SAM_Geothermal_AdjustmentFactors_adjust_periods_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err){ - double* result = nullptr; +SAM_EXPORT double SAM_Geothermal_Outputs_epc_total_cost_nget(SAM_table ptr, SAM_error *err){ + double result; translateExceptions(err, [&]{ - result = ssc_data_get_matrix(ptr, "adjust_periods", nrows, ncols); - if (!result) - make_access_error("SAM_Geothermal", "adjust_periods"); + if (!ssc_data_get_number(ptr, "epc_total_cost", &result)) + make_access_error("SAM_Geothermal", "epc_total_cost"); }); return result; } -SAM_EXPORT double* SAM_Geothermal_AdjustmentFactors_adjust_timeindex_aget(SAM_table ptr, int* length, SAM_error *err){ - double* result = nullptr; +SAM_EXPORT double SAM_Geothermal_Outputs_expl_drilling_cost_nget(SAM_table ptr, SAM_error *err){ + double result; translateExceptions(err, [&]{ - result = ssc_data_get_array(ptr, "adjust_timeindex", length); - if (!result) - make_access_error("SAM_Geothermal", "adjust_timeindex"); + if (!ssc_data_get_number(ptr, "expl_drilling_cost", &result)) + make_access_error("SAM_Geothermal", "expl_drilling_cost"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_GF_flowrate_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_expl_per_well_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "GF_flowrate", &result)) - make_access_error("SAM_Geothermal", "GF_flowrate"); + if (!ssc_data_get_number(ptr, "expl_per_well_cost", &result)) + make_access_error("SAM_Geothermal", "expl_per_well_cost"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_annual_energy_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_expl_total_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "annual_energy", &result)) - make_access_error("SAM_Geothermal", "annual_energy"); + if (!ssc_data_get_number(ptr, "expl_total_cost", &result)) + make_access_error("SAM_Geothermal", "expl_total_cost"); }); return result; } -SAM_EXPORT double* SAM_Geothermal_Outputs_annual_energy_distribution_time_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err){ - double* result = nullptr; +SAM_EXPORT double SAM_Geothermal_Outputs_field_gathering_num_wells_nget(SAM_table ptr, SAM_error *err){ + double result; translateExceptions(err, [&]{ - result = ssc_data_get_matrix(ptr, "annual_energy_distribution_time", nrows, ncols); - if (!result) - make_access_error("SAM_Geothermal", "annual_energy_distribution_time"); + if (!ssc_data_get_number(ptr, "field_gathering_num_wells", &result)) + make_access_error("SAM_Geothermal", "field_gathering_num_wells"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_bottom_hole_pressure_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_first_year_output_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "bottom_hole_pressure", &result)) - make_access_error("SAM_Geothermal", "bottom_hole_pressure"); + if (!ssc_data_get_number(ptr, "first_year_output", &result)) + make_access_error("SAM_Geothermal", "first_year_output"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_brine_effectiveness_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_flash_count_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "brine_effectiveness", &result)) - make_access_error("SAM_Geothermal", "brine_effectiveness"); + if (!ssc_data_get_number(ptr, "flash_count", &result)) + make_access_error("SAM_Geothermal", "flash_count"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_capacity_factor_nget(SAM_table ptr, SAM_error *err){ - double result; +SAM_EXPORT double* SAM_Geothermal_Outputs_gen_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "capacity_factor", &result)) - make_access_error("SAM_Geothermal", "capacity_factor"); + result = ssc_data_get_array(ptr, "gen", length); + if (!result) + make_access_error("SAM_Geothermal", "gen"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_condensate_pump_power_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_geothermal_analysis_period_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "condensate_pump_power", &result)) - make_access_error("SAM_Geothermal", "condensate_pump_power"); + if (!ssc_data_get_number(ptr, "geothermal_analysis_period", &result)) + make_access_error("SAM_Geothermal", "geothermal_analysis_period"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_cw_pump_head_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_gross_cost_output_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "cw_pump_head", &result)) - make_access_error("SAM_Geothermal", "cw_pump_head"); + if (!ssc_data_get_number(ptr, "gross_cost_output", &result)) + make_access_error("SAM_Geothermal", "gross_cost_output"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_cw_pump_work_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_gross_output_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "cw_pump_work", &result)) - make_access_error("SAM_Geothermal", "cw_pump_work"); + if (!ssc_data_get_number(ptr, "gross_output", &result)) + make_access_error("SAM_Geothermal", "gross_output"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_cwflow_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_hp_flash_pressure_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "cwflow", &result)) - make_access_error("SAM_Geothermal", "cwflow"); + if (!ssc_data_get_number(ptr, "hp_flash_pressure", &result)) + make_access_error("SAM_Geothermal", "hp_flash_pressure"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_dt_rock_well_head_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_indirect_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "dt_rock_well_head", &result)) - make_access_error("SAM_Geothermal", "dt_rock_well_head"); + if (!ssc_data_get_number(ptr, "indirect_cost", &result)) + make_access_error("SAM_Geothermal", "indirect_cost"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_eff_secondlaw_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_indirect_pump_gathering_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "eff_secondlaw", &result)) - make_access_error("SAM_Geothermal", "eff_secondlaw"); + if (!ssc_data_get_number(ptr, "indirect_pump_gathering_cost", &result)) + make_access_error("SAM_Geothermal", "indirect_pump_gathering_cost"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_first_year_output_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_inj_num_pumps_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "first_year_output", &result)) - make_access_error("SAM_Geothermal", "first_year_output"); + if (!ssc_data_get_number(ptr, "inj_num_pumps", &result)) + make_access_error("SAM_Geothermal", "inj_num_pumps"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_flash_count_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_inj_pump_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "flash_count", &result)) - make_access_error("SAM_Geothermal", "flash_count"); + if (!ssc_data_get_number(ptr, "inj_pump_cost", &result)) + make_access_error("SAM_Geothermal", "inj_pump_cost"); }); return result; } -SAM_EXPORT double* SAM_Geothermal_Outputs_gen_aget(SAM_table ptr, int* length, SAM_error *err){ - double* result = nullptr; +SAM_EXPORT double SAM_Geothermal_Outputs_inj_pump_cost_per_pump_nget(SAM_table ptr, SAM_error *err){ + double result; translateExceptions(err, [&]{ - result = ssc_data_get_array(ptr, "gen", length); - if (!result) - make_access_error("SAM_Geothermal", "gen"); + if (!ssc_data_get_number(ptr, "inj_pump_cost_per_pump", &result)) + make_access_error("SAM_Geothermal", "inj_pump_cost_per_pump"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_gross_cost_output_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_inj_pump_hp_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "gross_cost_output", &result)) - make_access_error("SAM_Geothermal", "gross_cost_output"); + if (!ssc_data_get_number(ptr, "inj_pump_hp", &result)) + make_access_error("SAM_Geothermal", "inj_pump_hp"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_gross_output_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_inj_total_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "gross_output", &result)) - make_access_error("SAM_Geothermal", "gross_output"); + if (!ssc_data_get_number(ptr, "inj_total_cost", &result)) + make_access_error("SAM_Geothermal", "inj_total_cost"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_hp_flash_pressure_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_inj_well_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "hp_flash_pressure", &result)) - make_access_error("SAM_Geothermal", "hp_flash_pressure"); + if (!ssc_data_get_number(ptr, "inj_well_cost", &result)) + make_access_error("SAM_Geothermal", "inj_well_cost"); }); return result; } -SAM_EXPORT double SAM_Geothermal_Outputs_inj_pump_hp_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_Geothermal_Outputs_installed_cost_per_kW_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "inj_pump_hp", &result)) - make_access_error("SAM_Geothermal", "inj_pump_hp"); + if (!ssc_data_get_number(ptr, "installed_cost_per_kW", &result)) + make_access_error("SAM_Geothermal", "installed_cost_per_kW"); }); return result; } @@ -1672,6 +2843,33 @@ SAM_EXPORT double SAM_Geothermal_Outputs_ncg_condensate_pump_nget(SAM_table ptr, return result; } +SAM_EXPORT double SAM_Geothermal_Outputs_net_plant_output_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "net_plant_output", &result)) + make_access_error("SAM_Geothermal", "net_plant_output"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_num_confirm_wells_to_production_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "num_confirm_wells_to_production", &result)) + make_access_error("SAM_Geothermal", "num_confirm_wells_to_production"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_num_wells_getem_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "num_wells_getem", &result)) + make_access_error("SAM_Geothermal", "num_wells_getem"); + }); + return result; +} + SAM_EXPORT double SAM_Geothermal_Outputs_num_wells_getem_inj_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -1717,6 +2915,15 @@ SAM_EXPORT double SAM_Geothermal_Outputs_num_wells_getem_prod_failed_nget(SAM_ta return result; } +SAM_EXPORT double SAM_Geothermal_Outputs_piping_cost_per_well_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "piping_cost_per_well", &result)) + make_access_error("SAM_Geothermal", "piping_cost_per_well"); + }); + return result; +} + SAM_EXPORT double SAM_Geothermal_Outputs_plant_brine_eff_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -1726,6 +2933,15 @@ SAM_EXPORT double SAM_Geothermal_Outputs_plant_brine_eff_nget(SAM_table ptr, SAM return result; } +SAM_EXPORT double SAM_Geothermal_Outputs_plm_total_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "plm_total_cost", &result)) + make_access_error("SAM_Geothermal", "plm_total_cost"); + }); + return result; +} + SAM_EXPORT double SAM_Geothermal_Outputs_pressure_ratio_1_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -1753,6 +2969,60 @@ SAM_EXPORT double SAM_Geothermal_Outputs_pressure_ratio_3_nget(SAM_table ptr, SA return result; } +SAM_EXPORT double SAM_Geothermal_Outputs_prod_inj_total_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "prod_inj_total_cost", &result)) + make_access_error("SAM_Geothermal", "prod_inj_total_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_prod_pump_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "prod_pump_cost", &result)) + make_access_error("SAM_Geothermal", "prod_pump_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_prod_pump_cost_per_well_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "prod_pump_cost_per_well", &result)) + make_access_error("SAM_Geothermal", "prod_pump_cost_per_well"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_prod_total_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "prod_total_cost", &result)) + make_access_error("SAM_Geothermal", "prod_total_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_prod_well_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "prod_well_cost", &result)) + make_access_error("SAM_Geothermal", "prod_well_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_pump_cost_install_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pump_cost_install", &result)) + make_access_error("SAM_Geothermal", "pump_cost_install"); + }); + return result; +} + SAM_EXPORT double SAM_Geothermal_Outputs_pump_depth_ft_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -1771,6 +3041,24 @@ SAM_EXPORT double SAM_Geothermal_Outputs_pump_hp_nget(SAM_table ptr, SAM_error * return result; } +SAM_EXPORT double SAM_Geothermal_Outputs_pump_only_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pump_only_cost", &result)) + make_access_error("SAM_Geothermal", "pump_only_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_pump_size_hp_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pump_size_hp", &result)) + make_access_error("SAM_Geothermal", "pump_size_hp"); + }); + return result; +} + SAM_EXPORT double SAM_Geothermal_Outputs_pump_watthr_per_lb_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -1870,6 +3158,15 @@ SAM_EXPORT double SAM_Geothermal_Outputs_reservoir_pressure_nget(SAM_table ptr, return result; } +SAM_EXPORT double SAM_Geothermal_Outputs_sales_tax_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "sales_tax_cost", &result)) + make_access_error("SAM_Geothermal", "sales_tax_cost"); + }); + return result; +} + SAM_EXPORT double SAM_Geothermal_Outputs_spec_vol_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -1888,6 +3185,51 @@ SAM_EXPORT double SAM_Geothermal_Outputs_spec_vol_lp_nget(SAM_table ptr, SAM_err return result; } +SAM_EXPORT double SAM_Geothermal_Outputs_stim_cost_non_drill_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "stim_cost_non_drill", &result)) + make_access_error("SAM_Geothermal", "stim_cost_non_drill"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_stim_cost_per_well_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "stim_cost_per_well", &result)) + make_access_error("SAM_Geothermal", "stim_cost_per_well"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_stim_total_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "stim_total_cost", &result)) + make_access_error("SAM_Geothermal", "stim_total_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_sum_prod_inj_total_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "sum_prod_inj_total_cost", &result)) + make_access_error("SAM_Geothermal", "sum_prod_inj_total_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_system_capacity_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "system_capacity", &result)) + make_access_error("SAM_Geothermal", "system_capacity"); + }); + return result; +} + SAM_EXPORT double* SAM_Geothermal_Outputs_system_lifetime_recapitalize_aget(SAM_table ptr, int* length, SAM_error *err){ double* result = nullptr; translateExceptions(err, [&]{ @@ -1898,6 +3240,33 @@ SAM_EXPORT double* SAM_Geothermal_Outputs_system_lifetime_recapitalize_aget(SAM_ return result; } +SAM_EXPORT double SAM_Geothermal_Outputs_system_recapitalization_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "system_recapitalization_cost", &result)) + make_access_error("SAM_Geothermal", "system_recapitalization_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_system_use_lifetime_output_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "system_use_lifetime_output", &result)) + make_access_error("SAM_Geothermal", "system_use_lifetime_output"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_system_use_recapitalization_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "system_use_recapitalization", &result)) + make_access_error("SAM_Geothermal", "system_use_recapitalization"); + }); + return result; +} + SAM_EXPORT double* SAM_Geothermal_Outputs_timestep_dry_bulb_aget(SAM_table ptr, int* length, SAM_error *err){ double* result = nullptr; translateExceptions(err, [&]{ @@ -1948,6 +3317,141 @@ SAM_EXPORT double* SAM_Geothermal_Outputs_timestep_wet_bulb_aget(SAM_table ptr, return result; } +SAM_EXPORT double SAM_Geothermal_Outputs_total_capital_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_capital_cost", &result)) + make_access_error("SAM_Geothermal", "total_capital_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_total_direct_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_direct_cost", &result)) + make_access_error("SAM_Geothermal", "total_direct_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_total_drilling_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_drilling_cost", &result)) + make_access_error("SAM_Geothermal", "total_drilling_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_total_drilling_cost_used_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_drilling_cost_used", &result)) + make_access_error("SAM_Geothermal", "total_drilling_cost_used"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_total_drilling_permitting_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_drilling_permitting", &result)) + make_access_error("SAM_Geothermal", "total_drilling_permitting"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_total_expl_permitting_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_expl_permitting", &result)) + make_access_error("SAM_Geothermal", "total_expl_permitting"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_total_gathering_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_gathering_cost", &result)) + make_access_error("SAM_Geothermal", "total_gathering_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_total_getem_om_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_getem_om_cost", &result)) + make_access_error("SAM_Geothermal", "total_getem_om_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_total_installed_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_installed_cost", &result)) + make_access_error("SAM_Geothermal", "total_installed_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_total_plant_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_plant_cost", &result)) + make_access_error("SAM_Geothermal", "total_plant_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_total_plant_cost_used_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_plant_cost_used", &result)) + make_access_error("SAM_Geothermal", "total_plant_cost_used"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_total_pump_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_pump_cost", &result)) + make_access_error("SAM_Geothermal", "total_pump_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_total_pump_gathering_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_pump_gathering_cost", &result)) + make_access_error("SAM_Geothermal", "total_pump_gathering_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_total_pump_gathering_cost_used_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_pump_gathering_cost_used", &result)) + make_access_error("SAM_Geothermal", "total_pump_gathering_cost_used"); + }); + return result; +} + +SAM_EXPORT double SAM_Geothermal_Outputs_total_surface_equipment_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_surface_equipment_cost", &result)) + make_access_error("SAM_Geothermal", "total_surface_equipment_cost"); + }); + return result; +} + SAM_EXPORT double SAM_Geothermal_Outputs_v_stage_1_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ diff --git a/api/modules/SAM_GeothermalCosts.cpp b/api/modules/SAM_GeothermalCosts.cpp index fa45e42e1f..d53cb91099 100644 --- a/api/modules/SAM_GeothermalCosts.cpp +++ b/api/modules/SAM_GeothermalCosts.cpp @@ -98,6 +98,36 @@ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_conf_num_wells_nset( }); } +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_contingency_percent_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.contingency_percent", number); + }); +} + +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_drilling_amount_specified_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.drilling.amount_specified", number); + }); +} + +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_drilling_calc_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.drilling.calc", number); + }); +} + +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_epc_fixed_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.epc.fixed", number); + }); +} + +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_epc_percent_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.epc.percent", number); + }); +} + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_expl_lump_sum_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "geotherm.cost.expl_lump_sum", number); @@ -122,6 +152,18 @@ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_expl_num_wells_nset( }); } +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_indirect_amount_specified_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.indirect.amount_specified", number); + }); +} + +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_indirect_calc_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.indirect.calc", number); + }); +} + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_inj_cost_curve_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "geotherm.cost.inj_cost_curve", number); @@ -140,6 +182,36 @@ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_inj_cost_curve_wellt }); } +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_plant_auto_estimate_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.plant_auto_estimate", number); + }); +} + +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_plant_per_kW_input_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.plant_per_kW_input", number); + }); +} + +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_plant_total_calc_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.plant_total.calc", number); + }); +} + +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_plm_fixed_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.plm.fixed", number); + }); +} + +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_plm_percent_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.plm.percent", number); + }); +} + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_prod_cost_curve_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "geotherm.cost.prod_cost_curve", number); @@ -158,6 +230,12 @@ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_prod_cost_curve_well }); } +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_prod_inj_non_drill_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.prod_inj_non_drill", number); + }); +} + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_pump_casing_cost_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "geotherm.cost.pump_casing_cost", number); @@ -176,6 +254,36 @@ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_pump_per_foot_nset(S }); } +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_pumping_amount_specified_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.pumping.amount_specified", number); + }); +} + +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_pumping_calc_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.pumping.calc", number); + }); +} + +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_recap_specified_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.recap_specified", number); + }); +} + +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_recap_use_calc_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.recap_use_calc", number); + }); +} + +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_sales_tax_percent_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.sales_tax.percent", number); + }); +} + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_geotherm_cost_stim_non_drill_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "geotherm.cost.stim_non_drill", number); @@ -218,6 +326,12 @@ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_ncg_condensate_pump_nset(SAM_table }); } +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_net_plant_output_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "net_plant_output", number); + }); +} + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_num_wells_getem_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "num_wells_getem", number); @@ -242,6 +356,12 @@ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_num_wells_getem_prod_failed_nset(S }); } +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_num_wells_getem_prod_inj_sum_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "num_wells_getem_prod_inj_sum", number); + }); +} + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_ppi_base_year_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "ppi_base_year", number); @@ -314,6 +434,12 @@ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_resource_depth_nset(SAM_table ptr, }); } +SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_sales_tax_rate_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "sales_tax_rate", number); + }); +} + SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_spec_vol_nset(SAM_table ptr, double number, SAM_error *err){ translateExceptions(err, [&]{ ssc_data_set_number(ptr, "spec_vol", number); @@ -362,6 +488,18 @@ SAM_EXPORT void SAM_GeothermalCosts_GeoHourly_x_lp_nset(SAM_table ptr, double nu }); } +SAM_EXPORT void SAM_GeothermalCosts_FinancialModel_geo_financial_model_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geo_financial_model", number); + }); +} + +SAM_EXPORT void SAM_GeothermalCosts_Common_geotherm_cost_plant_total_amount_specified_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.plant_total.amount_specified", number); + }); +} + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_GF_flowrate_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -488,6 +626,51 @@ SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_conf_num_wells_nge return result; } +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_contingency_percent_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.contingency_percent", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.contingency_percent"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_drilling_amount_specified_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.drilling.amount_specified", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.drilling.amount_specified"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_drilling_calc_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.drilling.calc", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.drilling.calc"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_epc_fixed_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.epc.fixed", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.epc.fixed"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_epc_percent_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.epc.percent", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.epc.percent"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_expl_lump_sum_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -524,6 +707,24 @@ SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_expl_num_wells_nge return result; } +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_indirect_amount_specified_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.indirect.amount_specified", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.indirect.amount_specified"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_indirect_calc_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.indirect.calc", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.indirect.calc"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_inj_cost_curve_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -551,6 +752,51 @@ SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_inj_cost_curve_wel return result; } +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_plant_auto_estimate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.plant_auto_estimate", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.plant_auto_estimate"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_plant_per_kW_input_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.plant_per_kW_input", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.plant_per_kW_input"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_plant_total_calc_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.plant_total.calc", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.plant_total.calc"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_plm_fixed_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.plm.fixed", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.plm.fixed"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_plm_percent_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.plm.percent", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.plm.percent"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_prod_cost_curve_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -578,6 +824,15 @@ SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_prod_cost_curve_we return result; } +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_prod_inj_non_drill_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.prod_inj_non_drill", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.prod_inj_non_drill"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_pump_casing_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -605,6 +860,51 @@ SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_pump_per_foot_nget return result; } +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_pumping_amount_specified_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.pumping.amount_specified", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.pumping.amount_specified"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_pumping_calc_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.pumping.calc", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.pumping.calc"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_recap_specified_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.recap_specified", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.recap_specified"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_recap_use_calc_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.recap_use_calc", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.recap_use_calc"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_sales_tax_percent_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.sales_tax.percent", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.sales_tax.percent"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_geotherm_cost_stim_non_drill_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -668,6 +968,15 @@ SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_ncg_condensate_pump_nget(SAM_tab return result; } +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_net_plant_output_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "net_plant_output", &result)) + make_access_error("SAM_GeothermalCosts", "net_plant_output"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_num_wells_getem_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -704,6 +1013,15 @@ SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_num_wells_getem_prod_failed_nget return result; } +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_num_wells_getem_prod_inj_sum_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "num_wells_getem_prod_inj_sum", &result)) + make_access_error("SAM_GeothermalCosts", "num_wells_getem_prod_inj_sum"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_ppi_base_year_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -812,6 +1130,15 @@ SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_resource_depth_nget(SAM_table pt return result; } +SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_sales_tax_rate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "sales_tax_rate", &result)) + make_access_error("SAM_GeothermalCosts", "sales_tax_rate"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_spec_vol_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -884,6 +1211,24 @@ SAM_EXPORT double SAM_GeothermalCosts_GeoHourly_x_lp_nget(SAM_table ptr, SAM_err return result; } +SAM_EXPORT double SAM_GeothermalCosts_FinancialModel_geo_financial_model_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geo_financial_model", &result)) + make_access_error("SAM_GeothermalCosts", "geo_financial_model"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_Common_geotherm_cost_plant_total_amount_specified_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.plant_total.amount_specified", &result)) + make_access_error("SAM_GeothermalCosts", "geotherm.cost.plant_total.amount_specified"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_Outputs_atb_drilling_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -938,6 +1283,15 @@ SAM_EXPORT double SAM_GeothermalCosts_Outputs_conf_total_cost_nget(SAM_table ptr return result; } +SAM_EXPORT double SAM_GeothermalCosts_Outputs_contingency_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "contingency_cost", &result)) + make_access_error("SAM_GeothermalCosts", "contingency_cost"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_Outputs_engineering_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -947,6 +1301,15 @@ SAM_EXPORT double SAM_GeothermalCosts_Outputs_engineering_cost_nget(SAM_table pt return result; } +SAM_EXPORT double SAM_GeothermalCosts_Outputs_epc_total_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "epc_total_cost", &result)) + make_access_error("SAM_GeothermalCosts", "epc_total_cost"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_Outputs_expl_drilling_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -956,6 +1319,15 @@ SAM_EXPORT double SAM_GeothermalCosts_Outputs_expl_drilling_cost_nget(SAM_table return result; } +SAM_EXPORT double SAM_GeothermalCosts_Outputs_expl_per_well_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "expl_per_well_cost", &result)) + make_access_error("SAM_GeothermalCosts", "expl_per_well_cost"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_Outputs_expl_total_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -974,11 +1346,11 @@ SAM_EXPORT double SAM_GeothermalCosts_Outputs_field_gathering_num_wells_nget(SAM return result; } -SAM_EXPORT double SAM_GeothermalCosts_Outputs_indirect_pump_cost_nget(SAM_table ptr, SAM_error *err){ +SAM_EXPORT double SAM_GeothermalCosts_Outputs_indirect_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ - if (!ssc_data_get_number(ptr, "indirect_pump_cost", &result)) - make_access_error("SAM_GeothermalCosts", "indirect_pump_cost"); + if (!ssc_data_get_number(ptr, "indirect_cost", &result)) + make_access_error("SAM_GeothermalCosts", "indirect_cost"); }); return result; } @@ -1037,6 +1409,15 @@ SAM_EXPORT double SAM_GeothermalCosts_Outputs_inj_well_cost_nget(SAM_table ptr, return result; } +SAM_EXPORT double SAM_GeothermalCosts_Outputs_installed_cost_per_kW_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "installed_cost_per_kW", &result)) + make_access_error("SAM_GeothermalCosts", "installed_cost_per_kW"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_Outputs_piping_cost_per_well_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -1046,6 +1427,24 @@ SAM_EXPORT double SAM_GeothermalCosts_Outputs_piping_cost_per_well_nget(SAM_tabl return result; } +SAM_EXPORT double SAM_GeothermalCosts_Outputs_plm_total_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "plm_total_cost", &result)) + make_access_error("SAM_GeothermalCosts", "plm_total_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_Outputs_prod_inj_total_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "prod_inj_total_cost", &result)) + make_access_error("SAM_GeothermalCosts", "prod_inj_total_cost"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_Outputs_prod_pump_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -1100,6 +1499,15 @@ SAM_EXPORT double SAM_GeothermalCosts_Outputs_pump_only_cost_nget(SAM_table ptr, return result; } +SAM_EXPORT double SAM_GeothermalCosts_Outputs_sales_tax_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "sales_tax_cost", &result)) + make_access_error("SAM_GeothermalCosts", "sales_tax_cost"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_Outputs_stim_cost_non_drill_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -1127,6 +1535,42 @@ SAM_EXPORT double SAM_GeothermalCosts_Outputs_stim_total_cost_nget(SAM_table ptr return result; } +SAM_EXPORT double SAM_GeothermalCosts_Outputs_sum_prod_inj_total_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "sum_prod_inj_total_cost", &result)) + make_access_error("SAM_GeothermalCosts", "sum_prod_inj_total_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_Outputs_system_recapitalization_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "system_recapitalization_cost", &result)) + make_access_error("SAM_GeothermalCosts", "system_recapitalization_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_capital_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_capital_cost", &result)) + make_access_error("SAM_GeothermalCosts", "total_capital_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_direct_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_direct_cost", &result)) + make_access_error("SAM_GeothermalCosts", "total_direct_cost"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_drilling_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -1136,6 +1580,15 @@ SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_drilling_cost_nget(SAM_table return result; } +SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_drilling_cost_used_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_drilling_cost_used", &result)) + make_access_error("SAM_GeothermalCosts", "total_drilling_cost_used"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_drilling_permitting_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -1163,6 +1616,33 @@ SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_gathering_cost_nget(SAM_tabl return result; } +SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_installed_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_installed_cost", &result)) + make_access_error("SAM_GeothermalCosts", "total_installed_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_plant_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_plant_cost", &result)) + make_access_error("SAM_GeothermalCosts", "total_plant_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_plant_cost_used_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_plant_cost_used", &result)) + make_access_error("SAM_GeothermalCosts", "total_plant_cost_used"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_pump_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ @@ -1181,6 +1661,15 @@ SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_pump_gathering_cost_nget(SAM return result; } +SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_pump_gathering_cost_used_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_pump_gathering_cost_used", &result)) + make_access_error("SAM_GeothermalCosts", "total_pump_gathering_cost_used"); + }); + return result; +} + SAM_EXPORT double SAM_GeothermalCosts_Outputs_total_surface_equipment_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ diff --git a/api/modules/SAM_GeothermalNoFin.cpp b/api/modules/SAM_GeothermalNoFin.cpp new file mode 100644 index 0000000000..80efbb062c --- /dev/null +++ b/api/modules/SAM_GeothermalNoFin.cpp @@ -0,0 +1,2044 @@ +#include +#include +#include +#include +#include + +#include + +#include "SAM_api.h" +#include "ErrorHandler.h" +#include "SAM_GeothermalNoFin.h" + +SAM_EXPORT int SAM_GeothermalNoFin_execute(SAM_table data, int verbosity, SAM_error* err){ + return SAM_module_exec("geothermal_no_fin", data, verbosity, err); +} + +SAM_EXPORT void SAM_GeothermalNoFin_SystemControl_sim_type_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "sim_type", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_FinancialModel_geo_financial_model_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geo_financial_model", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_CT_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "CT", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_P_boil_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "P_boil", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_P_cond_min_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "P_cond_min", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_P_cond_ratio_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "P_cond_ratio", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_T_ITD_des_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "T_ITD_des", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_T_amb_des_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "T_amb_des", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_T_approach_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "T_approach", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_T_htf_cold_ref_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "T_htf_cold_ref", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_allow_reservoir_replacements_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "allow_reservoir_replacements", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_ambient_pressure_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "ambient_pressure", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_analysis_type_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "analysis_type", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_conversion_subtype_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "conversion_subtype", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_conversion_type_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "conversion_type", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_dT_cw_ref_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "dT_cw_ref", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_decline_type_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "decline_type", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_delta_pressure_equip_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "delta_pressure_equip", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_drilling_success_rate_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "drilling_success_rate", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_dt_prod_well_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "dt_prod_well", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_eta_ref_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "eta_ref", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_excess_pressure_pump_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "excess_pressure_pump", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_failed_prod_flow_ratio_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "failed_prod_flow_ratio", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_file_name_sset(SAM_table ptr, const char* str, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_string(ptr, "file_name", str); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_fracture_angle_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "fracture_angle", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_fracture_aperature_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "fracture_aperature", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_fracture_length_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "fracture_length", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_fracture_spacing_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "fracture_spacing", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_fracture_width_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "fracture_width", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_geotherm_cost_conf_num_wells_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.conf_num_wells", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_geotherm_cost_confirm_wells_percent_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.confirm_wells_percent", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_geotherm_cost_inj_cost_curve_welldiam_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.inj_cost_curve_welldiam", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_geotherm_cost_inj_cost_curve_welltype_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.inj_cost_curve_welltype", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_geotherm_cost_inj_prod_well_ratio_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.inj_prod_well_ratio", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_geotherm_cost_prod_cost_curve_welldiam_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.prod_cost_curve_welldiam", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_geotherm_cost_prod_cost_curve_welltype_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "geotherm.cost.prod_cost_curve_welltype", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl1_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "hc_ctl1", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl2_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "hc_ctl2", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl3_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "hc_ctl3", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl4_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "hc_ctl4", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl5_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "hc_ctl5", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl6_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "hc_ctl6", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl7_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "hc_ctl7", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl8_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "hc_ctl8", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hc_ctl9_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "hc_ctl9", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hr_pl_nlev_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "hr_pl_nlev", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_hybrid_dispatch_schedule_sset(SAM_table ptr, const char* str, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_string(ptr, "hybrid_dispatch_schedule", str); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_inj_prod_well_distance_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "inj_prod_well_distance", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_injectivity_index_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "injectivity_index", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_model_choice_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "model_choice", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_nameplate_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "nameplate", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_num_fractures_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "num_fractures", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_num_wells_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "num_wells", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_pb_bd_frac_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "pb_bd_frac", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_plant_efficiency_input_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "plant_efficiency_input", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_prod_well_choice_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "prod_well_choice", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_pump_efficiency_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "pump_efficiency", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_q_sby_frac_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "q_sby_frac", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_reservoir_height_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "reservoir_height", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_reservoir_model_inputs_mset(SAM_table ptr, double* mat, int nrows, int ncols, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_matrix(ptr, "reservoir_model_inputs", mat, nrows, ncols); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_reservoir_permeability_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "reservoir_permeability", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_reservoir_pressure_change_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "reservoir_pressure_change", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_reservoir_pressure_change_type_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "reservoir_pressure_change_type", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_reservoir_width_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "reservoir_width", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_resource_depth_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "resource_depth", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_resource_potential_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "resource_potential", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_resource_temp_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "resource_temp", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_resource_type_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "resource_type", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_rock_density_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "rock_density", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_rock_specific_heat_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "rock_specific_heat", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_rock_thermal_conductivity_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "rock_thermal_conductivity", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_specified_pump_work_amount_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "specified_pump_work_amount", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_specify_pump_work_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "specify_pump_work", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_start_day_of_year_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "start_day_of_year", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_startup_frac_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "startup_frac", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_startup_time_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "startup_time", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_stim_success_rate_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "stim_success_rate", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_stimulation_type_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "stimulation_type", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_subsurface_water_loss_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "subsurface_water_loss", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_temp_decline_max_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "temp_decline_max", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_temp_decline_rate_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "temp_decline_rate", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_use_weather_file_conditions_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "use_weather_file_conditions", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_well_flow_rate_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "well_flow_rate", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_GeoHourly_wet_bulb_temp_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "wet_bulb_temp", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_AdjustmentFactors_adjust_constant_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "adjust_constant", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_AdjustmentFactors_adjust_en_periods_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "adjust_en_periods", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_AdjustmentFactors_adjust_en_timeindex_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "adjust_en_timeindex", number); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_AdjustmentFactors_adjust_periods_mset(SAM_table ptr, double* mat, int nrows, int ncols, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_matrix(ptr, "adjust_periods", mat, nrows, ncols); + }); +} + +SAM_EXPORT void SAM_GeothermalNoFin_AdjustmentFactors_adjust_timeindex_aset(SAM_table ptr, double* arr, int length, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_array(ptr, "adjust_timeindex", arr, length); + }); +} + +SAM_EXPORT double SAM_GeothermalNoFin_SystemControl_sim_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "sim_type", &result)) + make_access_error("SAM_GeothermalNoFin", "sim_type"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_FinancialModel_geo_financial_model_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geo_financial_model", &result)) + make_access_error("SAM_GeothermalNoFin", "geo_financial_model"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_CT_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "CT", &result)) + make_access_error("SAM_GeothermalNoFin", "CT"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_P_boil_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "P_boil", &result)) + make_access_error("SAM_GeothermalNoFin", "P_boil"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_P_cond_min_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "P_cond_min", &result)) + make_access_error("SAM_GeothermalNoFin", "P_cond_min"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_P_cond_ratio_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "P_cond_ratio", &result)) + make_access_error("SAM_GeothermalNoFin", "P_cond_ratio"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_T_ITD_des_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "T_ITD_des", &result)) + make_access_error("SAM_GeothermalNoFin", "T_ITD_des"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_T_amb_des_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "T_amb_des", &result)) + make_access_error("SAM_GeothermalNoFin", "T_amb_des"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_T_approach_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "T_approach", &result)) + make_access_error("SAM_GeothermalNoFin", "T_approach"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_T_htf_cold_ref_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "T_htf_cold_ref", &result)) + make_access_error("SAM_GeothermalNoFin", "T_htf_cold_ref"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_allow_reservoir_replacements_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "allow_reservoir_replacements", &result)) + make_access_error("SAM_GeothermalNoFin", "allow_reservoir_replacements"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_ambient_pressure_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "ambient_pressure", &result)) + make_access_error("SAM_GeothermalNoFin", "ambient_pressure"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_analysis_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "analysis_type", &result)) + make_access_error("SAM_GeothermalNoFin", "analysis_type"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_conversion_subtype_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "conversion_subtype", &result)) + make_access_error("SAM_GeothermalNoFin", "conversion_subtype"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_conversion_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "conversion_type", &result)) + make_access_error("SAM_GeothermalNoFin", "conversion_type"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_dT_cw_ref_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "dT_cw_ref", &result)) + make_access_error("SAM_GeothermalNoFin", "dT_cw_ref"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_decline_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "decline_type", &result)) + make_access_error("SAM_GeothermalNoFin", "decline_type"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_delta_pressure_equip_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "delta_pressure_equip", &result)) + make_access_error("SAM_GeothermalNoFin", "delta_pressure_equip"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_drilling_success_rate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "drilling_success_rate", &result)) + make_access_error("SAM_GeothermalNoFin", "drilling_success_rate"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_dt_prod_well_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "dt_prod_well", &result)) + make_access_error("SAM_GeothermalNoFin", "dt_prod_well"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_eta_ref_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "eta_ref", &result)) + make_access_error("SAM_GeothermalNoFin", "eta_ref"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_excess_pressure_pump_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "excess_pressure_pump", &result)) + make_access_error("SAM_GeothermalNoFin", "excess_pressure_pump"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_failed_prod_flow_ratio_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "failed_prod_flow_ratio", &result)) + make_access_error("SAM_GeothermalNoFin", "failed_prod_flow_ratio"); + }); + return result; +} + +SAM_EXPORT const char* SAM_GeothermalNoFin_GeoHourly_file_name_sget(SAM_table ptr, SAM_error *err){ + const char* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_string(ptr, "file_name"); + if (!result) + make_access_error("SAM_GeothermalNoFin", "file_name"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_fracture_angle_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "fracture_angle", &result)) + make_access_error("SAM_GeothermalNoFin", "fracture_angle"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_fracture_aperature_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "fracture_aperature", &result)) + make_access_error("SAM_GeothermalNoFin", "fracture_aperature"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_fracture_length_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "fracture_length", &result)) + make_access_error("SAM_GeothermalNoFin", "fracture_length"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_fracture_spacing_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "fracture_spacing", &result)) + make_access_error("SAM_GeothermalNoFin", "fracture_spacing"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_fracture_width_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "fracture_width", &result)) + make_access_error("SAM_GeothermalNoFin", "fracture_width"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_geotherm_cost_conf_num_wells_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.conf_num_wells", &result)) + make_access_error("SAM_GeothermalNoFin", "geotherm.cost.conf_num_wells"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_geotherm_cost_confirm_wells_percent_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.confirm_wells_percent", &result)) + make_access_error("SAM_GeothermalNoFin", "geotherm.cost.confirm_wells_percent"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_geotherm_cost_inj_cost_curve_welldiam_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.inj_cost_curve_welldiam", &result)) + make_access_error("SAM_GeothermalNoFin", "geotherm.cost.inj_cost_curve_welldiam"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_geotherm_cost_inj_cost_curve_welltype_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.inj_cost_curve_welltype", &result)) + make_access_error("SAM_GeothermalNoFin", "geotherm.cost.inj_cost_curve_welltype"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_geotherm_cost_inj_prod_well_ratio_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.inj_prod_well_ratio", &result)) + make_access_error("SAM_GeothermalNoFin", "geotherm.cost.inj_prod_well_ratio"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_geotherm_cost_prod_cost_curve_welldiam_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.prod_cost_curve_welldiam", &result)) + make_access_error("SAM_GeothermalNoFin", "geotherm.cost.prod_cost_curve_welldiam"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_geotherm_cost_prod_cost_curve_welltype_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geotherm.cost.prod_cost_curve_welltype", &result)) + make_access_error("SAM_GeothermalNoFin", "geotherm.cost.prod_cost_curve_welltype"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl1_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl1", &result)) + make_access_error("SAM_GeothermalNoFin", "hc_ctl1"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl2_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl2", &result)) + make_access_error("SAM_GeothermalNoFin", "hc_ctl2"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl3_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl3", &result)) + make_access_error("SAM_GeothermalNoFin", "hc_ctl3"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl4_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl4", &result)) + make_access_error("SAM_GeothermalNoFin", "hc_ctl4"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl5_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl5", &result)) + make_access_error("SAM_GeothermalNoFin", "hc_ctl5"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl6_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl6", &result)) + make_access_error("SAM_GeothermalNoFin", "hc_ctl6"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl7_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl7", &result)) + make_access_error("SAM_GeothermalNoFin", "hc_ctl7"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl8_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl8", &result)) + make_access_error("SAM_GeothermalNoFin", "hc_ctl8"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hc_ctl9_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hc_ctl9", &result)) + make_access_error("SAM_GeothermalNoFin", "hc_ctl9"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_hr_pl_nlev_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hr_pl_nlev", &result)) + make_access_error("SAM_GeothermalNoFin", "hr_pl_nlev"); + }); + return result; +} + +SAM_EXPORT const char* SAM_GeothermalNoFin_GeoHourly_hybrid_dispatch_schedule_sget(SAM_table ptr, SAM_error *err){ + const char* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_string(ptr, "hybrid_dispatch_schedule"); + if (!result) + make_access_error("SAM_GeothermalNoFin", "hybrid_dispatch_schedule"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_inj_prod_well_distance_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "inj_prod_well_distance", &result)) + make_access_error("SAM_GeothermalNoFin", "inj_prod_well_distance"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_injectivity_index_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "injectivity_index", &result)) + make_access_error("SAM_GeothermalNoFin", "injectivity_index"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_model_choice_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "model_choice", &result)) + make_access_error("SAM_GeothermalNoFin", "model_choice"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_nameplate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "nameplate", &result)) + make_access_error("SAM_GeothermalNoFin", "nameplate"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_num_fractures_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "num_fractures", &result)) + make_access_error("SAM_GeothermalNoFin", "num_fractures"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_num_wells_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "num_wells", &result)) + make_access_error("SAM_GeothermalNoFin", "num_wells"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_pb_bd_frac_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pb_bd_frac", &result)) + make_access_error("SAM_GeothermalNoFin", "pb_bd_frac"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_plant_efficiency_input_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "plant_efficiency_input", &result)) + make_access_error("SAM_GeothermalNoFin", "plant_efficiency_input"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_prod_well_choice_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "prod_well_choice", &result)) + make_access_error("SAM_GeothermalNoFin", "prod_well_choice"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_pump_efficiency_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pump_efficiency", &result)) + make_access_error("SAM_GeothermalNoFin", "pump_efficiency"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_q_sby_frac_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "q_sby_frac", &result)) + make_access_error("SAM_GeothermalNoFin", "q_sby_frac"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_reservoir_height_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "reservoir_height", &result)) + make_access_error("SAM_GeothermalNoFin", "reservoir_height"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_GeoHourly_reservoir_model_inputs_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_matrix(ptr, "reservoir_model_inputs", nrows, ncols); + if (!result) + make_access_error("SAM_GeothermalNoFin", "reservoir_model_inputs"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_reservoir_permeability_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "reservoir_permeability", &result)) + make_access_error("SAM_GeothermalNoFin", "reservoir_permeability"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_reservoir_pressure_change_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "reservoir_pressure_change", &result)) + make_access_error("SAM_GeothermalNoFin", "reservoir_pressure_change"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_reservoir_pressure_change_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "reservoir_pressure_change_type", &result)) + make_access_error("SAM_GeothermalNoFin", "reservoir_pressure_change_type"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_reservoir_width_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "reservoir_width", &result)) + make_access_error("SAM_GeothermalNoFin", "reservoir_width"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_resource_depth_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "resource_depth", &result)) + make_access_error("SAM_GeothermalNoFin", "resource_depth"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_resource_potential_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "resource_potential", &result)) + make_access_error("SAM_GeothermalNoFin", "resource_potential"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_resource_temp_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "resource_temp", &result)) + make_access_error("SAM_GeothermalNoFin", "resource_temp"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_resource_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "resource_type", &result)) + make_access_error("SAM_GeothermalNoFin", "resource_type"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_rock_density_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "rock_density", &result)) + make_access_error("SAM_GeothermalNoFin", "rock_density"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_rock_specific_heat_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "rock_specific_heat", &result)) + make_access_error("SAM_GeothermalNoFin", "rock_specific_heat"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_rock_thermal_conductivity_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "rock_thermal_conductivity", &result)) + make_access_error("SAM_GeothermalNoFin", "rock_thermal_conductivity"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_specified_pump_work_amount_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "specified_pump_work_amount", &result)) + make_access_error("SAM_GeothermalNoFin", "specified_pump_work_amount"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_specify_pump_work_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "specify_pump_work", &result)) + make_access_error("SAM_GeothermalNoFin", "specify_pump_work"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_start_day_of_year_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "start_day_of_year", &result)) + make_access_error("SAM_GeothermalNoFin", "start_day_of_year"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_startup_frac_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "startup_frac", &result)) + make_access_error("SAM_GeothermalNoFin", "startup_frac"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_startup_time_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "startup_time", &result)) + make_access_error("SAM_GeothermalNoFin", "startup_time"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_stim_success_rate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "stim_success_rate", &result)) + make_access_error("SAM_GeothermalNoFin", "stim_success_rate"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_stimulation_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "stimulation_type", &result)) + make_access_error("SAM_GeothermalNoFin", "stimulation_type"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_subsurface_water_loss_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "subsurface_water_loss", &result)) + make_access_error("SAM_GeothermalNoFin", "subsurface_water_loss"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_temp_decline_max_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "temp_decline_max", &result)) + make_access_error("SAM_GeothermalNoFin", "temp_decline_max"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_temp_decline_rate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "temp_decline_rate", &result)) + make_access_error("SAM_GeothermalNoFin", "temp_decline_rate"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_use_weather_file_conditions_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "use_weather_file_conditions", &result)) + make_access_error("SAM_GeothermalNoFin", "use_weather_file_conditions"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_well_flow_rate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "well_flow_rate", &result)) + make_access_error("SAM_GeothermalNoFin", "well_flow_rate"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_GeoHourly_wet_bulb_temp_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "wet_bulb_temp", &result)) + make_access_error("SAM_GeothermalNoFin", "wet_bulb_temp"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_AdjustmentFactors_adjust_constant_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "adjust_constant", &result)) + make_access_error("SAM_GeothermalNoFin", "adjust_constant"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_AdjustmentFactors_adjust_en_periods_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "adjust_en_periods", &result)) + make_access_error("SAM_GeothermalNoFin", "adjust_en_periods"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_AdjustmentFactors_adjust_en_timeindex_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "adjust_en_timeindex", &result)) + make_access_error("SAM_GeothermalNoFin", "adjust_en_timeindex"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_AdjustmentFactors_adjust_periods_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_matrix(ptr, "adjust_periods", nrows, ncols); + if (!result) + make_access_error("SAM_GeothermalNoFin", "adjust_periods"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_AdjustmentFactors_adjust_timeindex_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "adjust_timeindex", length); + if (!result) + make_access_error("SAM_GeothermalNoFin", "adjust_timeindex"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_GF_flowrate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "GF_flowrate", &result)) + make_access_error("SAM_GeothermalNoFin", "GF_flowrate"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_annual_energy_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "annual_energy", &result)) + make_access_error("SAM_GeothermalNoFin", "annual_energy"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_annual_energy_distribution_time_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_matrix(ptr, "annual_energy_distribution_time", nrows, ncols); + if (!result) + make_access_error("SAM_GeothermalNoFin", "annual_energy_distribution_time"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_bottom_hole_pressure_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "bottom_hole_pressure", &result)) + make_access_error("SAM_GeothermalNoFin", "bottom_hole_pressure"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_brine_effectiveness_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "brine_effectiveness", &result)) + make_access_error("SAM_GeothermalNoFin", "brine_effectiveness"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_capacity_factor_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "capacity_factor", &result)) + make_access_error("SAM_GeothermalNoFin", "capacity_factor"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_condensate_pump_power_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "condensate_pump_power", &result)) + make_access_error("SAM_GeothermalNoFin", "condensate_pump_power"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_cp_battery_nameplate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "cp_battery_nameplate", &result)) + make_access_error("SAM_GeothermalNoFin", "cp_battery_nameplate"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_cp_system_nameplate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "cp_system_nameplate", &result)) + make_access_error("SAM_GeothermalNoFin", "cp_system_nameplate"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_cw_pump_head_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "cw_pump_head", &result)) + make_access_error("SAM_GeothermalNoFin", "cw_pump_head"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_cw_pump_work_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "cw_pump_work", &result)) + make_access_error("SAM_GeothermalNoFin", "cw_pump_work"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_cwflow_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "cwflow", &result)) + make_access_error("SAM_GeothermalNoFin", "cwflow"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_degradation_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "degradation", length); + if (!result) + make_access_error("SAM_GeothermalNoFin", "degradation"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_design_temp_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "design_temp", &result)) + make_access_error("SAM_GeothermalNoFin", "design_temp"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_dt_rock_well_head_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "dt_rock_well_head", &result)) + make_access_error("SAM_GeothermalNoFin", "dt_rock_well_head"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_eff_secondlaw_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "eff_secondlaw", &result)) + make_access_error("SAM_GeothermalNoFin", "eff_secondlaw"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_first_year_output_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "first_year_output", &result)) + make_access_error("SAM_GeothermalNoFin", "first_year_output"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_flash_count_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "flash_count", &result)) + make_access_error("SAM_GeothermalNoFin", "flash_count"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_gen_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "gen", length); + if (!result) + make_access_error("SAM_GeothermalNoFin", "gen"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_geothermal_analysis_period_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "geothermal_analysis_period", &result)) + make_access_error("SAM_GeothermalNoFin", "geothermal_analysis_period"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_gross_cost_output_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "gross_cost_output", &result)) + make_access_error("SAM_GeothermalNoFin", "gross_cost_output"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_gross_output_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "gross_output", &result)) + make_access_error("SAM_GeothermalNoFin", "gross_output"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_hp_flash_pressure_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "hp_flash_pressure", &result)) + make_access_error("SAM_GeothermalNoFin", "hp_flash_pressure"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_inj_pump_hp_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "inj_pump_hp", &result)) + make_access_error("SAM_GeothermalNoFin", "inj_pump_hp"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_kwh_per_kw_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "kwh_per_kw", &result)) + make_access_error("SAM_GeothermalNoFin", "kwh_per_kw"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_lifetime_output_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "lifetime_output", &result)) + make_access_error("SAM_GeothermalNoFin", "lifetime_output"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_lp_flash_pressure_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "lp_flash_pressure", &result)) + make_access_error("SAM_GeothermalNoFin", "lp_flash_pressure"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_max_brine_effectiveness_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "max_brine_effectiveness", &result)) + make_access_error("SAM_GeothermalNoFin", "max_brine_effectiveness"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_monthly_energy_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "monthly_energy", length); + if (!result) + make_access_error("SAM_GeothermalNoFin", "monthly_energy"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_monthly_energy_lifetime_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "monthly_energy_lifetime", length); + if (!result) + make_access_error("SAM_GeothermalNoFin", "monthly_energy_lifetime"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_monthly_power_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "monthly_power", length); + if (!result) + make_access_error("SAM_GeothermalNoFin", "monthly_power"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_monthly_resource_temperature_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "monthly_resource_temperature", length); + if (!result) + make_access_error("SAM_GeothermalNoFin", "monthly_resource_temperature"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_ncg_condensate_pump_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "ncg_condensate_pump", &result)) + make_access_error("SAM_GeothermalNoFin", "ncg_condensate_pump"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_net_plant_output_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "net_plant_output", &result)) + make_access_error("SAM_GeothermalNoFin", "net_plant_output"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_num_confirm_wells_to_production_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "num_confirm_wells_to_production", &result)) + make_access_error("SAM_GeothermalNoFin", "num_confirm_wells_to_production"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_num_wells_getem_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "num_wells_getem", &result)) + make_access_error("SAM_GeothermalNoFin", "num_wells_getem"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_num_wells_getem_inj_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "num_wells_getem_inj", &result)) + make_access_error("SAM_GeothermalNoFin", "num_wells_getem_inj"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_num_wells_getem_inj_drilled_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "num_wells_getem_inj_drilled", &result)) + make_access_error("SAM_GeothermalNoFin", "num_wells_getem_inj_drilled"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_num_wells_getem_output_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "num_wells_getem_output", &result)) + make_access_error("SAM_GeothermalNoFin", "num_wells_getem_output"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_num_wells_getem_prod_drilled_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "num_wells_getem_prod_drilled", &result)) + make_access_error("SAM_GeothermalNoFin", "num_wells_getem_prod_drilled"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_num_wells_getem_prod_failed_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "num_wells_getem_prod_failed", &result)) + make_access_error("SAM_GeothermalNoFin", "num_wells_getem_prod_failed"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_plant_brine_eff_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "plant_brine_eff", &result)) + make_access_error("SAM_GeothermalNoFin", "plant_brine_eff"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pressure_ratio_1_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pressure_ratio_1", &result)) + make_access_error("SAM_GeothermalNoFin", "pressure_ratio_1"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pressure_ratio_2_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pressure_ratio_2", &result)) + make_access_error("SAM_GeothermalNoFin", "pressure_ratio_2"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pressure_ratio_3_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pressure_ratio_3", &result)) + make_access_error("SAM_GeothermalNoFin", "pressure_ratio_3"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pump_depth_ft_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pump_depth_ft", &result)) + make_access_error("SAM_GeothermalNoFin", "pump_depth_ft"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pump_hp_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pump_hp", &result)) + make_access_error("SAM_GeothermalNoFin", "pump_hp"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pump_size_hp_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pump_size_hp", &result)) + make_access_error("SAM_GeothermalNoFin", "pump_size_hp"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pump_watthr_per_lb_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pump_watthr_per_lb", &result)) + make_access_error("SAM_GeothermalNoFin", "pump_watthr_per_lb"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pump_work_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pump_work", &result)) + make_access_error("SAM_GeothermalNoFin", "pump_work"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pumpwork_inj_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pumpwork_inj", &result)) + make_access_error("SAM_GeothermalNoFin", "pumpwork_inj"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_pumpwork_prod_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pumpwork_prod", &result)) + make_access_error("SAM_GeothermalNoFin", "pumpwork_prod"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_qCondenser_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "qCondenser", &result)) + make_access_error("SAM_GeothermalNoFin", "qCondenser"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_qRejectByStage_1_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "qRejectByStage_1", &result)) + make_access_error("SAM_GeothermalNoFin", "qRejectByStage_1"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_qRejectByStage_2_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "qRejectByStage_2", &result)) + make_access_error("SAM_GeothermalNoFin", "qRejectByStage_2"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_qRejectByStage_3_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "qRejectByStage_3", &result)) + make_access_error("SAM_GeothermalNoFin", "qRejectByStage_3"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_qRejectTotal_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "qRejectTotal", &result)) + make_access_error("SAM_GeothermalNoFin", "qRejectTotal"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_reservoir_avg_temp_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "reservoir_avg_temp", &result)) + make_access_error("SAM_GeothermalNoFin", "reservoir_avg_temp"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_reservoir_pressure_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "reservoir_pressure", &result)) + make_access_error("SAM_GeothermalNoFin", "reservoir_pressure"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_spec_vol_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "spec_vol", &result)) + make_access_error("SAM_GeothermalNoFin", "spec_vol"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_spec_vol_lp_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "spec_vol_lp", &result)) + make_access_error("SAM_GeothermalNoFin", "spec_vol_lp"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_system_capacity_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "system_capacity", &result)) + make_access_error("SAM_GeothermalNoFin", "system_capacity"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_system_lifetime_recapitalize_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "system_lifetime_recapitalize", length); + if (!result) + make_access_error("SAM_GeothermalNoFin", "system_lifetime_recapitalize"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_system_use_lifetime_output_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "system_use_lifetime_output", &result)) + make_access_error("SAM_GeothermalNoFin", "system_use_lifetime_output"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_system_use_recapitalization_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "system_use_recapitalization", &result)) + make_access_error("SAM_GeothermalNoFin", "system_use_recapitalization"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_timestep_dry_bulb_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "timestep_dry_bulb", length); + if (!result) + make_access_error("SAM_GeothermalNoFin", "timestep_dry_bulb"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_timestep_pressure_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "timestep_pressure", length); + if (!result) + make_access_error("SAM_GeothermalNoFin", "timestep_pressure"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_timestep_resource_temperature_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "timestep_resource_temperature", length); + if (!result) + make_access_error("SAM_GeothermalNoFin", "timestep_resource_temperature"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_timestep_test_values_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "timestep_test_values", length); + if (!result) + make_access_error("SAM_GeothermalNoFin", "timestep_test_values"); + }); + return result; +} + +SAM_EXPORT double* SAM_GeothermalNoFin_Outputs_timestep_wet_bulb_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "timestep_wet_bulb", length); + if (!result) + make_access_error("SAM_GeothermalNoFin", "timestep_wet_bulb"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_v_stage_1_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "v_stage_1", &result)) + make_access_error("SAM_GeothermalNoFin", "v_stage_1"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_v_stage_2_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "v_stage_2", &result)) + make_access_error("SAM_GeothermalNoFin", "v_stage_2"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_v_stage_3_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "v_stage_3", &result)) + make_access_error("SAM_GeothermalNoFin", "v_stage_3"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_x_hp_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "x_hp", &result)) + make_access_error("SAM_GeothermalNoFin", "x_hp"); + }); + return result; +} + +SAM_EXPORT double SAM_GeothermalNoFin_Outputs_x_lp_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "x_lp", &result)) + make_access_error("SAM_GeothermalNoFin", "x_lp"); + }); + return result; +} + diff --git a/api/modules/SAM_LcoefcrElectricity.cpp b/api/modules/SAM_LcoefcrElectricity.cpp new file mode 100644 index 0000000000..0803ab9c17 --- /dev/null +++ b/api/modules/SAM_LcoefcrElectricity.cpp @@ -0,0 +1,312 @@ +#include +#include +#include +#include +#include + +#include + +#include "SAM_api.h" +#include "ErrorHandler.h" +#include "SAM_LcoefcrElectricity.h" + +SAM_EXPORT int SAM_LcoefcrElectricity_execute(SAM_table data, int verbosity, SAM_error* err){ + return SAM_module_exec("lcoefcr_electricity", data, verbosity, err); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SystemControl_sim_type_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "sim_type", number); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_annual_energy_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "annual_energy", number); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_construction_cost_aset(SAM_table ptr, double* arr, int length, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_array(ptr, "c_construction_cost", arr, length); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_construction_interest_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "c_construction_interest", number); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_debt_percent_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "c_debt_percent", number); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_depreciation_schedule_aset(SAM_table ptr, double* arr, int length, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_array(ptr, "c_depreciation_schedule", arr, length); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_equity_return_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "c_equity_return", number); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_inflation_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "c_inflation", number); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_lifetime_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "c_lifetime", number); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_nominal_interest_rate_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "c_nominal_interest_rate", number); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_c_tax_rate_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "c_tax_rate", number); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_fixed_operating_cost_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "fixed_operating_cost", number); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_ui_fcr_input_option_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "ui_fcr_input_option", number); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_ui_fixed_charge_rate_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "ui_fixed_charge_rate", number); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SimpleLCOE_variable_operating_cost_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "variable_operating_cost", number); + }); +} + +SAM_EXPORT void SAM_LcoefcrElectricity_SystemCosts_total_installed_cost_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "total_installed_cost", number); + }); +} + +SAM_EXPORT double SAM_LcoefcrElectricity_SystemControl_sim_type_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "sim_type", &result)) + make_access_error("SAM_LcoefcrElectricity", "sim_type"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_annual_energy_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "annual_energy", &result)) + make_access_error("SAM_LcoefcrElectricity", "annual_energy"); + }); + return result; +} + +SAM_EXPORT double* SAM_LcoefcrElectricity_SimpleLCOE_c_construction_cost_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "c_construction_cost", length); + if (!result) + make_access_error("SAM_LcoefcrElectricity", "c_construction_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_c_construction_interest_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "c_construction_interest", &result)) + make_access_error("SAM_LcoefcrElectricity", "c_construction_interest"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_c_debt_percent_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "c_debt_percent", &result)) + make_access_error("SAM_LcoefcrElectricity", "c_debt_percent"); + }); + return result; +} + +SAM_EXPORT double* SAM_LcoefcrElectricity_SimpleLCOE_c_depreciation_schedule_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "c_depreciation_schedule", length); + if (!result) + make_access_error("SAM_LcoefcrElectricity", "c_depreciation_schedule"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_c_equity_return_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "c_equity_return", &result)) + make_access_error("SAM_LcoefcrElectricity", "c_equity_return"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_c_inflation_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "c_inflation", &result)) + make_access_error("SAM_LcoefcrElectricity", "c_inflation"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_c_lifetime_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "c_lifetime", &result)) + make_access_error("SAM_LcoefcrElectricity", "c_lifetime"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_c_nominal_interest_rate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "c_nominal_interest_rate", &result)) + make_access_error("SAM_LcoefcrElectricity", "c_nominal_interest_rate"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_c_tax_rate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "c_tax_rate", &result)) + make_access_error("SAM_LcoefcrElectricity", "c_tax_rate"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_fixed_operating_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "fixed_operating_cost", &result)) + make_access_error("SAM_LcoefcrElectricity", "fixed_operating_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_ui_fcr_input_option_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "ui_fcr_input_option", &result)) + make_access_error("SAM_LcoefcrElectricity", "ui_fcr_input_option"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_ui_fixed_charge_rate_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "ui_fixed_charge_rate", &result)) + make_access_error("SAM_LcoefcrElectricity", "ui_fixed_charge_rate"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_SimpleLCOE_variable_operating_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "variable_operating_cost", &result)) + make_access_error("SAM_LcoefcrElectricity", "variable_operating_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_SystemCosts_total_installed_cost_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "total_installed_cost", &result)) + make_access_error("SAM_LcoefcrElectricity", "total_installed_cost"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_Outputs_cfin_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "cfin", &result)) + make_access_error("SAM_LcoefcrElectricity", "cfin"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_Outputs_crf_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "crf", &result)) + make_access_error("SAM_LcoefcrElectricity", "crf"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_Outputs_fixed_charge_rate_calc_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "fixed_charge_rate_calc", &result)) + make_access_error("SAM_LcoefcrElectricity", "fixed_charge_rate_calc"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_Outputs_lcoe_fcr_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "lcoe_fcr", &result)) + make_access_error("SAM_LcoefcrElectricity", "lcoe_fcr"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_Outputs_pfin_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "pfin", &result)) + make_access_error("SAM_LcoefcrElectricity", "pfin"); + }); + return result; +} + +SAM_EXPORT double SAM_LcoefcrElectricity_Outputs_wacc_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "wacc", &result)) + make_access_error("SAM_LcoefcrElectricity", "wacc"); + }); + return result; +} + From fc83ecbe40e9c43e7fff10aac9628c2ab1759cde Mon Sep 17 00:00:00 2001 From: tyneises Date: Fri, 2 Oct 2026 13:01:37 -0500 Subject: [PATCH 74/74] hide tys custom ui feedback variables for now --- deploy/runtime/ui/Geothermal System Design.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/runtime/ui/Geothermal System Design.json b/deploy/runtime/ui/Geothermal System Design.json index 96e6d32a2a..95669f95f5 100644 --- a/deploy/runtime/ui/Geothermal System Design.json +++ b/deploy/runtime/ui/Geothermal System Design.json @@ -1,7 +1,7 @@ { "Name": "Geothermal System Design", - "Width": 824.0, - "Height": 184.0, + "Width": 822.0, + "Height": 17.0, "FormObjects": { "Numeric": { "Visible": 1.0,