diff --git a/README.md b/README.md index 8a48f0ae9..863557925 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ # System Advisor Model (SAM) ![Build](https://github.com/NREL/SAM/actions/workflows/ci.yml/badge.svg) -[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FNREL%2FSAM.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2FNREL%2FSAM?ref=badge_shield) The SAM Open Source Project repository contains the source code, tools, and instructions to build a desktop version of the National Renewable Energy Laboratory's System Advisor Modelâ„¢ (SAMâ„¢). SAM is a simulation program for electricity generation projects. It has models for different kinds of renewable energy systems and financial models for residential, commercial, and utility-scale projects. For more details about SAM's capabilities, see the SAM website at [https://sam.nrel.gov/](https://sam.nrel.gov/). diff --git a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerLCOECalculator.json b/api/api_autogen/library/defaults/Geothermal_GeothermalPowerLCOECalculator.json index ced2772bb..c17de1ada 100644 --- a/api/api_autogen/library/defaults/Geothermal_GeothermalPowerLCOECalculator.json +++ b/api/api_autogen/library/defaults/Geothermal_GeothermalPowerLCOECalculator.json @@ -19,10 +19,12 @@ "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, @@ -30,6 +32,7 @@ "fracture_width": 175, "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, @@ -168,6 +171,7 @@ "specify_pump_work": 0, "startup_frac": 0.2, "startup_time": 1, + "stim_success_rate": 0, "subsurface_water_loss": 2, "system_use_lifetime_output": 0, "temp_decline_max": 30, diff --git a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVAllEquityPartnershipFlip.json b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVAllEquityPartnershipFlip.json index 2df5e5658..a3be4bec8 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVAllEquityPartnershipFlip.json +++ b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVAllEquityPartnershipFlip.json @@ -458,7 +458,8 @@ "Load": { }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVCommercial.json b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVCommercial.json index 74e2266c5..fb7d3f9d2 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVCommercial.json +++ b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVCommercial.json @@ -460,7 +460,8 @@ "load_escalation": [0.000000] }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVHostDeveloper.json b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVHostDeveloper.json index b1f4e0271..bd0646c95 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVHostDeveloper.json +++ b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVHostDeveloper.json @@ -460,7 +460,8 @@ "load_escalation": [0.000000] }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVLCOECalculator.json b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVLCOECalculator.json index 7d05757be..ae1d04666 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVLCOECalculator.json +++ b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVLCOECalculator.json @@ -449,7 +449,8 @@ "Load": { }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVLeveragedPartnershipFlip.json b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVLeveragedPartnershipFlip.json index 2df5e5658..a3be4bec8 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVLeveragedPartnershipFlip.json +++ b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVLeveragedPartnershipFlip.json @@ -458,7 +458,8 @@ "Load": { }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVMerchantPlant.json b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVMerchantPlant.json index 9dcf1042b..8646f1874 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVMerchantPlant.json +++ b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVMerchantPlant.json @@ -458,7 +458,8 @@ "Load": { }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVNone.json b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVNone.json index ff10ca99d..4e462c1b4 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVNone.json +++ b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVNone.json @@ -449,7 +449,8 @@ "Load": { }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVResidential.json b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVResidential.json index 86d02d825..4705b95a6 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVResidential.json +++ b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVResidential.json @@ -460,7 +460,8 @@ "load_escalation": [0.000000] }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVSaleLeaseback.json b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVSaleLeaseback.json index 2df5e5658..a3be4bec8 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVSaleLeaseback.json +++ b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVSaleLeaseback.json @@ -458,7 +458,8 @@ "Load": { }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVSingleOwner.json b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVSingleOwner.json index 2df5e5658..a3be4bec8 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVSingleOwner.json +++ b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVSingleOwner.json @@ -458,7 +458,8 @@ "Load": { }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVThirdParty.json b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVThirdParty.json index d1ffa5066..9e9359f34 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVThirdParty.json +++ b/api/api_autogen/library/defaults/Pvsamv1_FlatPlatePVThirdParty.json @@ -460,7 +460,8 @@ "load_escalation": [0.000000] }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_PVBatteryAllEquityPartnershipFlip.json b/api/api_autogen/library/defaults/Pvsamv1_PVBatteryAllEquityPartnershipFlip.json index 0c0fd0654..677d5bd10 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_PVBatteryAllEquityPartnershipFlip.json +++ b/api/api_autogen/library/defaults/Pvsamv1_PVBatteryAllEquityPartnershipFlip.json @@ -485,7 +485,8 @@ "Load": { }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_PVBatteryCommercial.json b/api/api_autogen/library/defaults/Pvsamv1_PVBatteryCommercial.json index dd4eaba57..821b1e22e 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_PVBatteryCommercial.json +++ b/api/api_autogen/library/defaults/Pvsamv1_PVBatteryCommercial.json @@ -491,7 +491,8 @@ "run_resiliency_calcs": 0 }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_PVBatteryHostDeveloper.json b/api/api_autogen/library/defaults/Pvsamv1_PVBatteryHostDeveloper.json index bd90ab787..71ae5a077 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_PVBatteryHostDeveloper.json +++ b/api/api_autogen/library/defaults/Pvsamv1_PVBatteryHostDeveloper.json @@ -491,7 +491,8 @@ "run_resiliency_calcs": 0 }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_PVBatteryLeveragedPartnershipFlip.json b/api/api_autogen/library/defaults/Pvsamv1_PVBatteryLeveragedPartnershipFlip.json index 0c0fd0654..677d5bd10 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_PVBatteryLeveragedPartnershipFlip.json +++ b/api/api_autogen/library/defaults/Pvsamv1_PVBatteryLeveragedPartnershipFlip.json @@ -485,7 +485,8 @@ "Load": { }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_PVBatteryMerchantPlant.json b/api/api_autogen/library/defaults/Pvsamv1_PVBatteryMerchantPlant.json index 6f40a6e82..14ff29b36 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_PVBatteryMerchantPlant.json +++ b/api/api_autogen/library/defaults/Pvsamv1_PVBatteryMerchantPlant.json @@ -485,7 +485,8 @@ "Load": { }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_PVBatteryResidential.json b/api/api_autogen/library/defaults/Pvsamv1_PVBatteryResidential.json index 32835f7e7..dcaa2fea1 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_PVBatteryResidential.json +++ b/api/api_autogen/library/defaults/Pvsamv1_PVBatteryResidential.json @@ -491,7 +491,8 @@ "run_resiliency_calcs": 0 }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_PVBatterySaleLeaseback.json b/api/api_autogen/library/defaults/Pvsamv1_PVBatterySaleLeaseback.json index 0c0fd0654..677d5bd10 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_PVBatterySaleLeaseback.json +++ b/api/api_autogen/library/defaults/Pvsamv1_PVBatterySaleLeaseback.json @@ -485,7 +485,8 @@ "Load": { }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_PVBatterySingleOwner.json b/api/api_autogen/library/defaults/Pvsamv1_PVBatterySingleOwner.json index 932449539..de555abaf 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_PVBatterySingleOwner.json +++ b/api/api_autogen/library/defaults/Pvsamv1_PVBatterySingleOwner.json @@ -485,7 +485,8 @@ "Load": { }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_PVBatteryThirdParty.json b/api/api_autogen/library/defaults/Pvsamv1_PVBatteryThirdParty.json index 3bf7fc622..635848943 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_PVBatteryThirdParty.json +++ b/api/api_autogen/library/defaults/Pvsamv1_PVBatteryThirdParty.json @@ -491,7 +491,8 @@ "run_resiliency_calcs": 0 }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { "constant": 0, diff --git a/api/api_autogen/library/defaults/Pvsamv1_PhotovoltaicWindBatteryHybridHostDeveloper.json b/api/api_autogen/library/defaults/Pvsamv1_PhotovoltaicWindBatteryHybridHostDeveloper.json index 3bb2482eb..adac76ae4 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_PhotovoltaicWindBatteryHybridHostDeveloper.json +++ b/api/api_autogen/library/defaults/Pvsamv1_PhotovoltaicWindBatteryHybridHostDeveloper.json @@ -458,7 +458,8 @@ "Load": { }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { }, diff --git a/api/api_autogen/library/defaults/Pvsamv1_PhotovoltaicWindBatteryHybridSingleOwner.json b/api/api_autogen/library/defaults/Pvsamv1_PhotovoltaicWindBatteryHybridSingleOwner.json index 1f11777f3..c182c463b 100644 --- a/api/api_autogen/library/defaults/Pvsamv1_PhotovoltaicWindBatteryHybridSingleOwner.json +++ b/api/api_autogen/library/defaults/Pvsamv1_PhotovoltaicWindBatteryHybridSingleOwner.json @@ -458,7 +458,8 @@ "Load": { }, "PVLosses": { - "enable_subhourly_clipping": 0 + "enable_subhourly_clipping": 0, + "enable_subinterval_distribution": 0 }, "AdjustmentFactors": { }, diff --git a/api/include/SAM_Battery.h b/api/include/SAM_Battery.h index 172b0e7b9..f3f821065 100644 --- a/api/include/SAM_Battery.h +++ b/api/include/SAM_Battery.h @@ -2399,6 +2399,8 @@ extern "C" SAM_EXPORT double* SAM_Battery_Outputs_batt_dispatch_sched_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err); + SAM_EXPORT double SAM_Battery_Outputs_batt_grid_charge_percent_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double* SAM_Battery_Outputs_batt_power_aget(SAM_table ptr, int* length, SAM_error *err); SAM_EXPORT double* SAM_Battery_Outputs_batt_power_dc_aget(SAM_table ptr, int* length, SAM_error *err); @@ -2467,6 +2469,10 @@ extern "C" SAM_EXPORT double* SAM_Battery_Outputs_batt_voltage_cell_aget(SAM_table ptr, int* length, SAM_error *err); + SAM_EXPORT double SAM_Battery_Outputs_batt_year1_charge_from_grid_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Battery_Outputs_batt_year1_charge_from_system_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double SAM_Battery_Outputs_capacity_factor_sales_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double* SAM_Battery_Outputs_cdf_of_surviving_aget(SAM_table ptr, int* length, SAM_error *err); diff --git a/api/include/SAM_Battwatts.h b/api/include/SAM_Battwatts.h index 03ae94746..12ae4dabc 100644 --- a/api/include/SAM_Battwatts.h +++ b/api/include/SAM_Battwatts.h @@ -331,6 +331,8 @@ extern "C" SAM_EXPORT double* SAM_Battwatts_Outputs_batt_dispatch_sched_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err); + SAM_EXPORT double SAM_Battwatts_Outputs_batt_grid_charge_percent_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double* SAM_Battwatts_Outputs_batt_power_aget(SAM_table ptr, int* length, SAM_error *err); SAM_EXPORT double* SAM_Battwatts_Outputs_batt_power_dc_aget(SAM_table ptr, int* length, SAM_error *err); @@ -399,6 +401,10 @@ extern "C" SAM_EXPORT double* SAM_Battwatts_Outputs_batt_voltage_cell_aget(SAM_table ptr, int* length, SAM_error *err); + SAM_EXPORT double SAM_Battwatts_Outputs_batt_year1_charge_from_grid_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Battwatts_Outputs_batt_year1_charge_from_system_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double* SAM_Battwatts_Outputs_cdf_of_surviving_aget(SAM_table ptr, int* length, SAM_error *err); SAM_EXPORT double* SAM_Battwatts_Outputs_crit_load_aget(SAM_table ptr, int* length, SAM_error *err); diff --git a/api/include/SAM_Pvsamv1.h b/api/include/SAM_Pvsamv1.h index a6231b623..449e56430 100644 --- a/api/include/SAM_Pvsamv1.h +++ b/api/include/SAM_Pvsamv1.h @@ -7515,6 +7515,8 @@ extern "C" SAM_EXPORT double* SAM_Pvsamv1_Outputs_batt_dispatch_sched_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err); + SAM_EXPORT double SAM_Pvsamv1_Outputs_batt_grid_charge_percent_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double* SAM_Pvsamv1_Outputs_batt_power_aget(SAM_table ptr, int* length, SAM_error *err); SAM_EXPORT double* SAM_Pvsamv1_Outputs_batt_power_dc_aget(SAM_table ptr, int* length, SAM_error *err); @@ -7583,6 +7585,10 @@ extern "C" SAM_EXPORT double* SAM_Pvsamv1_Outputs_batt_voltage_cell_aget(SAM_table ptr, int* length, SAM_error *err); + SAM_EXPORT double SAM_Pvsamv1_Outputs_batt_year1_charge_from_grid_nget(SAM_table ptr, SAM_error *err); + + SAM_EXPORT double SAM_Pvsamv1_Outputs_batt_year1_charge_from_system_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double* SAM_Pvsamv1_Outputs_bifacial_electrical_mismatch_aget(SAM_table ptr, int* length, SAM_error *err); SAM_EXPORT double SAM_Pvsamv1_Outputs_capacity_factor_nget(SAM_table ptr, SAM_error *err); diff --git a/api/include/SAM_Pvwattsv7.h b/api/include/SAM_Pvwattsv7.h index 3de5f9886..9f655a611 100644 --- a/api/include/SAM_Pvwattsv7.h +++ b/api/include/SAM_Pvwattsv7.h @@ -555,6 +555,8 @@ extern "C" SAM_EXPORT double* SAM_Pvwattsv7_Outputs_snow_aget(SAM_table ptr, int* length, SAM_error *err); + SAM_EXPORT double* SAM_Pvwattsv7_Outputs_snow_cover_aget(SAM_table ptr, int* length, SAM_error *err); + SAM_EXPORT double SAM_Pvwattsv7_Outputs_solrad_annual_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double* SAM_Pvwattsv7_Outputs_solrad_monthly_aget(SAM_table ptr, int* length, SAM_error *err); diff --git a/api/include/SAM_Pvwattsv8.h b/api/include/SAM_Pvwattsv8.h index 2715c1f64..4aa2f1f72 100644 --- a/api/include/SAM_Pvwattsv8.h +++ b/api/include/SAM_Pvwattsv8.h @@ -723,6 +723,8 @@ extern "C" SAM_EXPORT double* SAM_Pvwattsv8_Outputs_snow_aget(SAM_table ptr, int* length, SAM_error *err); + SAM_EXPORT double* SAM_Pvwattsv8_Outputs_snow_cover_aget(SAM_table ptr, int* length, SAM_error *err); + SAM_EXPORT double* SAM_Pvwattsv8_Outputs_soiling_f_aget(SAM_table ptr, int* length, SAM_error *err); SAM_EXPORT double SAM_Pvwattsv8_Outputs_solrad_annual_nget(SAM_table ptr, SAM_error *err); diff --git a/api/modules/SAM_Battery.cpp b/api/modules/SAM_Battery.cpp index 83417b3ae..7feb0854a 100644 --- a/api/modules/SAM_Battery.cpp +++ b/api/modules/SAM_Battery.cpp @@ -3593,6 +3593,15 @@ SAM_EXPORT double* SAM_Battery_Outputs_batt_dispatch_sched_mget(SAM_table ptr, i return result; } +SAM_EXPORT double SAM_Battery_Outputs_batt_grid_charge_percent_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "batt_grid_charge_percent", &result)) + make_access_error("SAM_Battery", "batt_grid_charge_percent"); + }); + return result; +} + SAM_EXPORT double* SAM_Battery_Outputs_batt_power_aget(SAM_table ptr, int* length, SAM_error *err){ double* result = nullptr; translateExceptions(err, [&]{ @@ -3928,6 +3937,24 @@ SAM_EXPORT double* SAM_Battery_Outputs_batt_voltage_cell_aget(SAM_table ptr, int return result; } +SAM_EXPORT double SAM_Battery_Outputs_batt_year1_charge_from_grid_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "batt_year1_charge_from_grid", &result)) + make_access_error("SAM_Battery", "batt_year1_charge_from_grid"); + }); + return result; +} + +SAM_EXPORT double SAM_Battery_Outputs_batt_year1_charge_from_system_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "batt_year1_charge_from_system", &result)) + make_access_error("SAM_Battery", "batt_year1_charge_from_system"); + }); + return result; +} + SAM_EXPORT double SAM_Battery_Outputs_capacity_factor_sales_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ diff --git a/api/modules/SAM_Battwatts.cpp b/api/modules/SAM_Battwatts.cpp index f7665a86c..e1bdc87e4 100644 --- a/api/modules/SAM_Battwatts.cpp +++ b/api/modules/SAM_Battwatts.cpp @@ -614,6 +614,15 @@ SAM_EXPORT double* SAM_Battwatts_Outputs_batt_dispatch_sched_mget(SAM_table ptr, return result; } +SAM_EXPORT double SAM_Battwatts_Outputs_batt_grid_charge_percent_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "batt_grid_charge_percent", &result)) + make_access_error("SAM_Battwatts", "batt_grid_charge_percent"); + }); + return result; +} + SAM_EXPORT double* SAM_Battwatts_Outputs_batt_power_aget(SAM_table ptr, int* length, SAM_error *err){ double* result = nullptr; translateExceptions(err, [&]{ @@ -949,6 +958,24 @@ SAM_EXPORT double* SAM_Battwatts_Outputs_batt_voltage_cell_aget(SAM_table ptr, i return result; } +SAM_EXPORT double SAM_Battwatts_Outputs_batt_year1_charge_from_grid_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "batt_year1_charge_from_grid", &result)) + make_access_error("SAM_Battwatts", "batt_year1_charge_from_grid"); + }); + return result; +} + +SAM_EXPORT double SAM_Battwatts_Outputs_batt_year1_charge_from_system_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "batt_year1_charge_from_system", &result)) + make_access_error("SAM_Battwatts", "batt_year1_charge_from_system"); + }); + return result; +} + SAM_EXPORT double* SAM_Battwatts_Outputs_cdf_of_surviving_aget(SAM_table ptr, int* length, SAM_error *err){ double* result = nullptr; translateExceptions(err, [&]{ diff --git a/api/modules/SAM_Pvsamv1.cpp b/api/modules/SAM_Pvsamv1.cpp index b350b8950..4c8f449e8 100644 --- a/api/modules/SAM_Pvsamv1.cpp +++ b/api/modules/SAM_Pvsamv1.cpp @@ -11768,6 +11768,15 @@ SAM_EXPORT double* SAM_Pvsamv1_Outputs_batt_dispatch_sched_mget(SAM_table ptr, i return result; } +SAM_EXPORT double SAM_Pvsamv1_Outputs_batt_grid_charge_percent_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "batt_grid_charge_percent", &result)) + make_access_error("SAM_Pvsamv1", "batt_grid_charge_percent"); + }); + return result; +} + SAM_EXPORT double* SAM_Pvsamv1_Outputs_batt_power_aget(SAM_table ptr, int* length, SAM_error *err){ double* result = nullptr; translateExceptions(err, [&]{ @@ -12103,6 +12112,24 @@ SAM_EXPORT double* SAM_Pvsamv1_Outputs_batt_voltage_cell_aget(SAM_table ptr, int return result; } +SAM_EXPORT double SAM_Pvsamv1_Outputs_batt_year1_charge_from_grid_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "batt_year1_charge_from_grid", &result)) + make_access_error("SAM_Pvsamv1", "batt_year1_charge_from_grid"); + }); + return result; +} + +SAM_EXPORT double SAM_Pvsamv1_Outputs_batt_year1_charge_from_system_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "batt_year1_charge_from_system", &result)) + make_access_error("SAM_Pvsamv1", "batt_year1_charge_from_system"); + }); + return result; +} + SAM_EXPORT double* SAM_Pvsamv1_Outputs_bifacial_electrical_mismatch_aget(SAM_table ptr, int* length, SAM_error *err){ double* result = nullptr; translateExceptions(err, [&]{ diff --git a/api/modules/SAM_Pvwattsv7.cpp b/api/modules/SAM_Pvwattsv7.cpp index 1d781c191..73876397a 100644 --- a/api/modules/SAM_Pvwattsv7.cpp +++ b/api/modules/SAM_Pvwattsv7.cpp @@ -915,6 +915,16 @@ SAM_EXPORT double* SAM_Pvwattsv7_Outputs_snow_aget(SAM_table ptr, int* length, S return result; } +SAM_EXPORT double* SAM_Pvwattsv7_Outputs_snow_cover_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "snow_cover", length); + if (!result) + make_access_error("SAM_Pvwattsv7", "snow_cover"); + }); + return result; +} + SAM_EXPORT double SAM_Pvwattsv7_Outputs_solrad_annual_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ diff --git a/api/modules/SAM_Pvwattsv8.cpp b/api/modules/SAM_Pvwattsv8.cpp index cb8008842..dee26c160 100644 --- a/api/modules/SAM_Pvwattsv8.cpp +++ b/api/modules/SAM_Pvwattsv8.cpp @@ -1253,6 +1253,16 @@ SAM_EXPORT double* SAM_Pvwattsv8_Outputs_snow_aget(SAM_table ptr, int* length, S return result; } +SAM_EXPORT double* SAM_Pvwattsv8_Outputs_snow_cover_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "snow_cover", length); + if (!result) + make_access_error("SAM_Pvwattsv8", "snow_cover"); + }); + return result; +} + SAM_EXPORT double* SAM_Pvwattsv8_Outputs_soiling_f_aget(SAM_table ptr, int* length, SAM_error *err){ double* result = nullptr; translateExceptions(err, [&]{ diff --git a/deploy/runtime/metrics.lk b/deploy/runtime/metrics.lk index cf853f3f6..cb2e9422c 100644 --- a/deploy/runtime/metrics.lk +++ b/deploy/runtime/metrics.lk @@ -406,7 +406,9 @@ function standalone_battery_metrics() { metric( 'average_battery_roundtrip_efficiency', {'label'='Battery roundtrip efficiency', 'mode'='f', 'deci'='2', 'post'='%' } ); //metric( 'kwh_per_kw', {'label'='First year kWhAC/kWDC', 'mode'='f', 'deci'='0', 'thousep'='true' } ); - metric( 'batt_system_charge_percent', {'label'='Battery charge energy from system', 'mode'='f', 'deci'='1', 'thousep'='false', 'post'='%' } ); + //metric( 'batt_system_charge_percent', {'label'='Battery charge energy from system', 'mode'='f', 'deci'='1', 'thousep'='false', 'post'='%' } ); + metric( 'batt_year1_charge_from_grid', {'label'='Battery energy charged from grid (Year 1)', 'mode'='f', 'deci'='0', 'thousep'='true', 'post'=' kWh' } ); + } function generic_csp_metrics()