From f28fc7dfeaafc775d6fade0f4d7969e40a151305 Mon Sep 17 00:00:00 2001 From: Matt Prilliman <54449384+mjprilliman@users.noreply.github.com> Date: Mon, 25 Nov 2024 17:05:20 -0600 Subject: [PATCH 1/3] UPdate marine device cost curves --- ssc/cmod_mhk_costs.cpp | 58 +++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/ssc/cmod_mhk_costs.cpp b/ssc/cmod_mhk_costs.cpp index f8c94e744..2998ec1a1 100644 --- a/ssc/cmod_mhk_costs.cpp +++ b/ssc/cmod_mhk_costs.cpp @@ -167,58 +167,58 @@ class cm_mhk_costs : public compute_module //Most CapEx costs depend on technology if (technology == TIDAL) { // device = RM1 - structural_assembly = 284245.0 * system_capacity_MW + 785137.0; - power_takeoff = 1527017.0 * system_capacity_MW + 505548.0; - mooring_found_substruc = 437091.0 * system_capacity_MW + 433518.0; + structural_assembly = 417185.0 * system_capacity_MW + 1068446.0; + power_takeoff = 1821066.0 * system_capacity_MW + 602898.0; + mooring_found_substruc = 443055.0 * system_capacity_MW + 384877.0; //BOS costs SAM Cost Model v8.xlsx - development = 3197591.76 * pow(system_capacity_MW, 0.49); - eng_and_mgmt = 850744.0 * pow(system_capacity_MW, 0.565); + development = 189783 * system_capacity_MW + 8935599; + eng_and_mgmt = 78127 * system_capacity_MW + 2325517; } else // wave { if (device_type == RM3) { - structural_assembly = 6854912.0 * system_capacity_MW + 2629191.0; - power_takeoff = 2081129.0 * pow(system_capacity_MW, 0.91); - mooring_found_substruc = 1836365.0 * system_capacity_MW + 29672.0; + structural_assembly = 8174919.0 * system_capacity_MW + 3135478.0; + power_takeoff = 2481879.0 * pow(system_capacity_MW, 0.91); + mooring_found_substruc = 2189982.0 * system_capacity_MW + 35386.0; //BOS costs SAM Cost Model v8.xlsx - development = 3197591.76 * pow(system_capacity_MW, 0.49); - eng_and_mgmt = 850744.0 * pow(system_capacity_MW, 0.5649); + development = 189783 * system_capacity_MW + 8935599; + eng_and_mgmt = 78127 * system_capacity_MW + 2325517; } else if (device_type == RM5) { - structural_assembly = 6848402.0 * system_capacity_MW + 3315338.0; - power_takeoff = 1600927.0 * pow(system_capacity_MW, 0.91); - mooring_found_substruc = 2158462.0 * system_capacity_MW + 1048932.0; + structural_assembly = 8167155.0 * system_capacity_MW + 3953752.0; + power_takeoff = 1909207.0 * pow(system_capacity_MW, 0.91); + mooring_found_substruc = 2574104.0 * system_capacity_MW + 1250918.0; //BOS costs SAM Cost Model v8.xlsx - development = 3197591.76 * pow(system_capacity_MW, 0.49); - eng_and_mgmt = 850744.0 * pow(system_capacity_MW, 0.5649); + development = 189783 * system_capacity_MW + 8935599; + eng_and_mgmt = 78127 * system_capacity_MW + 2325517; } else if (device_type == RM6) { - structural_assembly = 13320092.0 * system_capacity_MW + 6681164.0; - power_takeoff = 3796551.0 * pow(system_capacity_MW, 0.78); - mooring_found_substruc = 2030816.0 * system_capacity_MW + 478400.0; + structural_assembly = 15885057.0 * system_capacity_MW + 7967714.0; + power_takeoff = 4527629.0 * pow(system_capacity_MW, 0.78); + mooring_found_substruc = 2421878.0 * system_capacity_MW + 570523.0; //BOS costs SAM Cost Model v8.xlsx - development = 3197591.76 * pow(system_capacity_MW, 0.49); - eng_and_mgmt = 850744.0 * pow(system_capacity_MW, 0.565); + development = 189783 * system_capacity_MW + 8935599; + eng_and_mgmt = 78127 * system_capacity_MW + 2325517; } else //generic model applies to everything else { - structural_assembly = 6854912.0 * system_capacity_MW + 2629191.0; - power_takeoff = 1179579.0 * system_capacity_MW + 2495107.0; - mooring_found_substruc = 1178598.0 * system_capacity_MW + 1602348.0; + structural_assembly = 7708042.0 * system_capacity_MW + 7092078; + power_takeoff = 1550104.0 * system_capacity_MW + 5331628.0; + mooring_found_substruc = 1619167.0 * system_capacity_MW; //BOS costs SAM Cost Model v8.xlsx - development = 3197591.0 * pow(system_capacity_MW, 0.49); - eng_and_mgmt = 850744.0 * pow(system_capacity_MW, 0.565); + development = 189783 * system_capacity_MW + 8935599; + eng_and_mgmt = 78127 * system_capacity_MW + 2325517; } } // REmaining BOS costs that are not CapEx dependent and not technology dependent - assembly_and_install = 2805302.0 * pow(system_capacity_MW, 0.66); + assembly_and_install = 2564748 * pow(system_capacity_MW, 0.67); other_infrastructure = 0; //electrical infrastructure costs @@ -338,11 +338,11 @@ class cm_mhk_costs : public compute_module + array_cable_system + export_cable_system + onshore_substation + offshore_substation + other_elec_infra; // Calculate the CapEx dependent BOS costs - plant_commissioning = 0.016 * capex; - site_access_port_staging = 0.011 * capex; + plant_commissioning = 56103 * system_capacity_MW; + site_access_port_staging = 75462 * system_capacity_MW; // Calculate the CapEx-dependent financial costs - project_contingency = 0.05 * capex; + project_contingency = 0.08 * capex; insurance_during_construction = 0.01 * capex; reserve_accounts = 0.03 * capex; From 95c01cf34b5d939af5239540ee5349efac37250e Mon Sep 17 00:00:00 2001 From: Matt Prilliman <54449384+mjprilliman@users.noreply.github.com> Date: Wed, 4 Dec 2024 09:23:08 -0600 Subject: [PATCH 2/3] Fix error check for tidal compute module, update passing of monthly energy output for hybrids --- ssc/cmod_mhk_tidal.cpp | 5 ++--- ssc/common.cpp | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ssc/cmod_mhk_tidal.cpp b/ssc/cmod_mhk_tidal.cpp index d057ba2b2..34028e181 100644 --- a/ssc/cmod_mhk_tidal.cpp +++ b/ssc/cmod_mhk_tidal.cpp @@ -107,9 +107,9 @@ class cm_mhk_tidal : public compute_module //Read and store tidal resource and power curve: util::matrix_t tidal_resource_matrix = as_matrix("tidal_resource"); util::matrix_t tidal_power_curve = as_matrix("tidal_power_curve"); - + int tidal_resource_model_choice = as_integer("tidal_resource_model_choice"); //Check to ensure size of _power_vect == _speed_vect : - if ( tidal_power_curve.nrows() != tidal_resource_matrix.nrows() ) + if ( tidal_resource_model_choice == 0 && tidal_power_curve.nrows() != tidal_resource_matrix.nrows() ) throw exec_error("mhk_tidal", "Size of Power Curve is not equal to Tidal Resource"); //Store the number of rows- this will have to change if resource and power curve can have different stream speeds @@ -155,7 +155,6 @@ class cm_mhk_tidal : public compute_module + as_double("loss_downtime") + as_double("loss_additional"); - int tidal_resource_model_choice = as_integer("tidal_resource_model_choice"); double tidal_resource_start_velocity = 0; double tidal_power_start_velocity = 0; double tidal_resource_end_velocity = 0; diff --git a/ssc/common.cpp b/ssc/common.cpp index eaecf85d6..5f091be18 100644 --- a/ssc/common.cpp +++ b/ssc/common.cpp @@ -1326,7 +1326,7 @@ var_info vtab_hybrid_fin_om[] = { /* VARTYPE DATATYPE NAME LABEL UNITS META GROUP REQUIRED_IF CONSTRAINTS UI_HINTS*/ { SSC_INPUT, SSC_NUMBER, "is_hybrid", "hybrid configuration", "0/1", "0=singletech,1=hybrid", "HybridFin", "?=0", "", "" }, { SSC_INPUT, SSC_ARRAY, "cf_hybrid_om_sum", "Hybrid O&M costs", "$", "", "HybridFin", "", "", "" }, - { SSC_INOUT, SSC_ARRAY, "monthly_energy", "Monthly AC energy in Year 1", "kWh", "", "Monthly", "", "LENGTH = 12", "" }, + { SSC_INPUT, SSC_ARRAY, "monthly_energy", "Monthly AC energy in Year 1", "kWh", "", "Monthly", "", "LENGTH = 12", "" }, var_info_invalid }; From 9b9a3397373d37d01631f277e46fbcfdf031c1a4 Mon Sep 17 00:00:00 2001 From: Matt Prilliman <54449384+mjprilliman@users.noreply.github.com> Date: Fri, 6 Dec 2024 09:12:36 -0600 Subject: [PATCH 3/3] Move IPH edit to other PR --- ssc/common.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ssc/common.cpp b/ssc/common.cpp index 5f091be18..eaecf85d6 100644 --- a/ssc/common.cpp +++ b/ssc/common.cpp @@ -1326,7 +1326,7 @@ var_info vtab_hybrid_fin_om[] = { /* VARTYPE DATATYPE NAME LABEL UNITS META GROUP REQUIRED_IF CONSTRAINTS UI_HINTS*/ { SSC_INPUT, SSC_NUMBER, "is_hybrid", "hybrid configuration", "0/1", "0=singletech,1=hybrid", "HybridFin", "?=0", "", "" }, { SSC_INPUT, SSC_ARRAY, "cf_hybrid_om_sum", "Hybrid O&M costs", "$", "", "HybridFin", "", "", "" }, - { SSC_INPUT, SSC_ARRAY, "monthly_energy", "Monthly AC energy in Year 1", "kWh", "", "Monthly", "", "LENGTH = 12", "" }, + { SSC_INOUT, SSC_ARRAY, "monthly_energy", "Monthly AC energy in Year 1", "kWh", "", "Monthly", "", "LENGTH = 12", "" }, var_info_invalid };