diff --git a/deploy/runtime/defaults/PVWatts Wind FuelCell Battery Hybrid_Single Owner.json b/deploy/runtime/defaults/PVWatts Wind FuelCell Battery Hybrid_Single Owner.json index a7f27497a9..733dbf1a74 100644 --- a/deploy/runtime/defaults/PVWatts Wind FuelCell Battery Hybrid_Single Owner.json +++ b/deploy/runtime/defaults/PVWatts Wind FuelCell Battery Hybrid_Single Owner.json @@ -11271,36 +11271,10 @@ "batt_discharge_percent_4": 25.0, "batt_discharge_percent_5": 25.0, "batt_discharge_percent_6": 25.0, - "batt_dispatch_auto_can_charge": 0.0, - "batt_dispatch_auto_can_clipcharge": 0.0, - "batt_dispatch_auto_can_fuelcellcharge": 0.0, "batt_dispatch_auto_can_gridcharge": 0.0, "batt_dispatch_choice": 0.0, "batt_dispatch_choice_ui": 3.0, "batt_dispatch_excl": 0.0, - "batt_dispatch_pvs_ac_lb": -0.1, - "batt_dispatch_pvs_ac_lb_enable": 0.0, - "batt_dispatch_pvs_ac_ub": 1.05, - "batt_dispatch_pvs_ac_ub_enable": 0.0, - "batt_dispatch_pvs_battery_energy": 0.0, - "batt_dispatch_pvs_battery_power": 0.0, - "batt_dispatch_pvs_battery_rte": 0.0, - "batt_dispatch_pvs_curtail_as_control": 0.0, - "batt_dispatch_pvs_curtail_if_violation": 0.0, - "batt_dispatch_pvs_forecast_shift_periods": 3.0, - "batt_dispatch_pvs_interconnection_limit": 20000.0, - "batt_dispatch_pvs_kf": 0.3, - "batt_dispatch_pvs_ki": 1.8, - "batt_dispatch_pvs_kp": 1.2, - "batt_dispatch_pvs_max_ramp": 10.0, - "batt_dispatch_pvs_nameplate": 0.0, - "batt_dispatch_pvs_nameplate_ac": 0.0, - "batt_dispatch_pvs_ramp_interval": 10.0, - "batt_dispatch_pvs_short_forecast_enable": 0.0, - "batt_dispatch_pvs_soc_rest": 50.0, - "batt_dispatch_pvs_timestep_multiplier": 3.0, - "batt_dispatch_pvs_wf_forecast_choice": 0.0, - "batt_dispatch_pvs_wf_timestep": 60.0, "batt_dispatch_update_frequency_hours": 0.0, "batt_dispatch_wf_forecast_choice": 0.0, "batt_gridcharge_percent_1": 100.0, @@ -11323,10 +11297,6 @@ "batt_pv_clipping_forecast": [ 0.0 ], - "batt_pvs_pv_ac_forecast": [ - 0.0 - ], - "batt_pvs_user_specified_weather_file": "", "batt_replacement_option": 1.0, "batt_salvage_percentage": 0.0, "batt_salvage_value": 0.0, @@ -11419,6 +11389,9 @@ "debt_message": "", "debt_option": 1.0, "debt_percent": 50.0, + "degradation": [ + 0.0 + ], "depr_alloc_custom_percent": 0.0, "depr_alloc_macrs_15_percent": 0.0, "depr_alloc_macrs_5_percent": 100.0, @@ -20938,6 +20911,7 @@ "dscr_limit_debt_fraction": 0.0, "dscr_maximum_debt_fraction": 100.0, "dscr_reserve_months": 0.0, + "en_batt": 1.0, "en_electricity_rates": 0.0, "enable_interconnection_limit": 0.0, "equip1_reserve_cost": 0.1, @@ -30573,6 +30547,7 @@ 7.0 ], "system_capacity": 439418.0, + "system_use_lifetime_output": 1.0, "term_int_rate": 4.0, "term_tenor": 18.0, "tod_library": "Uniform Dispatch", diff --git a/deploy/runtime/startup.lk b/deploy/runtime/startup.lk index 2e1b51e8cf..c7539c0f79 100644 --- a/deploy/runtime/startup.lk +++ b/deploy/runtime/startup.lk @@ -2738,7 +2738,7 @@ addpage( [[ 'Operating Costs Fuel Cell Hybrid' ]], { 'sidebar'='Fuel Cell Operat // battery setup_pages_battery_cell_and_system(false, false); // No REopt and FOM setup_pages_battery_life(); -addpage( [[ {'name'='Battery Dispatch Automated FOM', 'caption'='Automated'} ], [{'name'='Battery Dispatch PV Smoothing', 'caption'='PV Smoothing'}], [ {'name'='Battery Dispatch Custom Time Series', 'caption'='Custom Time Series'} ], [{'name'='Fuel Cell Dispatch Manual', 'caption'='Manual'}]], { 'sidebar'='Dispatch', 'help'='fuelcell_dispatch', 'exclusive_var' = 'batt_dispatch_excl', 'exclusive_header_pages' = ['Fuel Cell Dispatch', 'Battery Dispatch Common', 'Battery Dispatch Options FOM'], 'exclusive_tabs'=true, 'exclusive_hide'=true} ); +addpage( [[ {'name'='Battery Dispatch Automated FOM', 'caption'='Automated'} ], [ {'name'='Battery Dispatch Custom Time Series', 'caption'='Custom Time Series'} ], [{'name'='Fuel Cell Dispatch Manual', 'caption'='Manual'}]], { 'sidebar'='Dispatch', 'help'='fuelcell_dispatch', 'exclusive_var' = 'batt_dispatch_excl', 'exclusive_header_pages' = ['Fuel Cell Dispatch', 'Battery Dispatch Common', 'Battery Dispatch Standalone Options FOM'], 'exclusive_tabs'=true, 'exclusive_hide'=true} ); addpage( [[ 'Standalone Battery Costs', 'Battery Enable' ]], { 'sidebar'='Battery Installation Costs', 'help'='cc_standalone_battery', 'bin_name'='Battery' } ); addpage( [[ 'Operating Costs Standalone Battery']], { 'sidebar'='Battery Operating Costs', 'help'='oc_battery', 'bin_name'='Battery' } ); setup_grid_limits_page(); diff --git a/deploy/runtime/ui/Battery Dispatch Manual.json b/deploy/runtime/ui/Battery Dispatch Manual.json index d776daae46..6b3d422853 100644 --- a/deploy/runtime/ui/Battery Dispatch Manual.json +++ b/deploy/runtime/ui/Battery Dispatch Manual.json @@ -5588,6 +5588,8 @@ "", "function toggle_dispatch()", "{", + "\tmode = value('batt_dispatch_choice');\r", + "\r", "\tallow_grid_charge = true;", "\tallow_pv_charge = true;", "\tallow_discharge = true;", @@ -5595,7 +5597,6 @@ "\tfront_of_meter = !behind_the_meter();", "\tif (front_of_meter == true)", "\t{", - "\t\tmode = ${batt_dispatch_choice};", "\t\tif (mode == 3)", "\t\t{", "\t\t\tallow_grid_charge = true;", @@ -5610,8 +5611,6 @@ "\t}", "\telse", "\t{", - "\t\tmode = ${batt_dispatch_choice};", - "", "\t\tif (mode != 3)", "\t\t\tenable_manual_inputs(false, false, false, false);", "\t\telse", diff --git a/deploy/runtime/ui/Battery Dispatch Options FOM.json b/deploy/runtime/ui/Battery Dispatch Options FOM.json index a6739f57e8..09baca9f0e 100644 --- a/deploy/runtime/ui/Battery Dispatch Options FOM.json +++ b/deploy/runtime/ui/Battery Dispatch Options FOM.json @@ -487,9 +487,7 @@ "\tenable_charge_from_clip();", "\tshow_hide_charge_options();", "\twave_batt_smoothing_msg();", - "\tif ( technology() == 'Fuel Cell' \r", - "\t || technology() == 'PVWatts Wind FuelCell Battery Hybrid' \r", - "\t || technology() == 'Generic PVWatts Wind FuelCell Battery Hybrid' )", + "\tif ( technology() == 'Fuel Cell' )", "\t{", "\t\tcheck_fuel_cell_dispatch(); // function defined in Fuel Cell Dispatch callback", "\t}", diff --git a/deploy/runtime/ui/Battery Dispatch Standalone Options FOM.json b/deploy/runtime/ui/Battery Dispatch Standalone Options FOM.json index ad9ce5a9dd..7e853e47c6 100644 --- a/deploy/runtime/ui/Battery Dispatch Standalone Options FOM.json +++ b/deploy/runtime/ui/Battery Dispatch Standalone Options FOM.json @@ -381,7 +381,13 @@ "on_change{'batt_dispatch_choice_ui'} = define() ", "{", "\tshow_hide_charge_options();", - "\tcheck_auto_ppa();", + "\tcheck_auto_ppa();\r", + "\tif ( technology() == 'PVWatts Wind FuelCell Battery Hybrid' \r", + "\t || technology() == 'Generic PVWatts Wind FuelCell Battery Hybrid' )\r", + "\t{\r", + "\t\tcheck_fuel_cell_dispatch(); // function defined in Fuel Cell Dispatch callback\r", + "\t}\r", + "\t", "\tvalue('batt_dispatch_excl', value('batt_dispatch_choice_ui'));", "};", "", diff --git a/deploy/runtime/ui/Fuel Cell Dispatch Manual.json b/deploy/runtime/ui/Fuel Cell Dispatch Manual.json index 94cfe9f292..55c8696779 100644 --- a/deploy/runtime/ui/Fuel Cell Dispatch Manual.json +++ b/deploy/runtime/ui/Fuel Cell Dispatch Manual.json @@ -6443,8 +6443,16 @@ "", "function toggle_discharge_percent()", "{", - "\tbtm = behind_the_meter();", - "\ten_manual = value('en_batt') && (value('batt_dispatch_choice_ui') == 3);", + "\tbtm = behind_the_meter();\r", + "\tif ( technology() == 'PVWatts Wind FuelCell Battery Hybrid' \r", + "\t || technology() == 'Generic PVWatts Wind FuelCell Battery Hybrid' )\r", + "\t{\r", + "\t\ten_manual = value('batt_dispatch_choice_ui') == 2;\r", + "\t}\r", + "\telse\r", + "\t{", + "\t\ten_manual = value('en_batt') && (value('batt_dispatch_choice_ui') == 3);\r", + "\t}\t", "\tenable('batt_discharge_percent_1', en_manual && (value('pv.storage.p1.discharge')==1));", "\tenable('batt_discharge_percent_2', en_manual && (value('pv.storage.p2.discharge')==1));", "\tenable('batt_discharge_percent_3', en_manual && (value('pv.storage.p3.discharge')==1));", diff --git a/deploy/runtime/ui/Fuel Cell Dispatch.json b/deploy/runtime/ui/Fuel Cell Dispatch.json index 9a9b3c335c..866a591ddf 100644 --- a/deploy/runtime/ui/Fuel Cell Dispatch.json +++ b/deploy/runtime/ui/Fuel Cell Dispatch.json @@ -525,15 +525,30 @@ "}", "", "function check_fuel_cell_dispatch()", - "{", - "\tfix_manual_dispatch = value('fuelcell_dispatch_choice') == 2 &&", - "\t\t\t\t value('batt_dispatch_choice_ui') != 3;", + "{\r", + "\tif ( technology() == 'PVWatts Wind FuelCell Battery Hybrid' || technology() == 'Generic PVWatts Wind FuelCell Battery Hybrid' )\r", + "\t{\r", + "\t\tfix_manual_dispatch = value('fuelcell_dispatch_choice') == 2 \r", + "\t\t\t && value('batt_dispatch_choice_ui') != 2;\r", + "\t}\r", + "\telse\r", + "\t{", + "\t\tfix_manual_dispatch = value('fuelcell_dispatch_choice') == 2 \r", + "\t\t\t && value('batt_dispatch_choice_ui') != 3;", + "\t}\r", "\tif ( fix_manual_dispatch )", "\t{", "\t\tok = yesno('Fuel cell manual dispatch requires battery manual dispatch.\\nThe fuel cell manual dispatch option requires that the battery dispatch option be set to manual (even if the system does not include a battery).\\n\\nWould you like SAM to automatically set the battery dispatch option to manual dispatch?');", "\t\tif ( ok )", "\t\t{ ", - "\t\t\tvalue('batt_dispatch_choice_ui',3); // 3=manual dispatch for FOM and BTM battery", + "\t\t\tif ( technology() == 'PVWatts Wind FuelCell Battery Hybrid' || technology() == 'Generic PVWatts Wind FuelCell Battery Hybrid' )\r", + "\t\t\t{\r", + "\t\t\t\tvalue('batt_dispatch_choice_ui', 2);\r", + "\t\t\t}\r", + "\t\t\telse\r", + "\t\t\t{\r", + "\t\t\t\tvalue('batt_dispatch_choice_ui', 3);\r", + "\t\t\t}\r", "\t\t}", "\t\telse", "\t\t{",