diff --git a/api/api_autogen/library/defaults/HostDeveloper_FlatPlatePVHostDeveloper.json b/api/api_autogen/library/defaults/HostDeveloper_FlatPlatePVHostDeveloper.json index 247736adc0..bab31148f0 100644 --- a/api/api_autogen/library/defaults/HostDeveloper_FlatPlatePVHostDeveloper.json +++ b/api/api_autogen/library/defaults/HostDeveloper_FlatPlatePVHostDeveloper.json @@ -291,6 +291,8 @@ }, "ElectricityRates": { "rate_escalation": [0.000000] + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/HostDeveloper_GenericBatteryHostDeveloper.json b/api/api_autogen/library/defaults/HostDeveloper_GenericBatteryHostDeveloper.json index 827fee4dd5..2707450952 100644 --- a/api/api_autogen/library/defaults/HostDeveloper_GenericBatteryHostDeveloper.json +++ b/api/api_autogen/library/defaults/HostDeveloper_GenericBatteryHostDeveloper.json @@ -306,6 +306,8 @@ }, "ElectricityRates": { "rate_escalation": [0.000000] + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/HostDeveloper_GenericSystemHostDeveloper.json b/api/api_autogen/library/defaults/HostDeveloper_GenericSystemHostDeveloper.json index e997c15c32..74e96784be 100644 --- a/api/api_autogen/library/defaults/HostDeveloper_GenericSystemHostDeveloper.json +++ b/api/api_autogen/library/defaults/HostDeveloper_GenericSystemHostDeveloper.json @@ -293,6 +293,8 @@ }, "ElectricityRates": { "rate_escalation": [0.000000] + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/HostDeveloper_PVBatteryHostDeveloper.json b/api/api_autogen/library/defaults/HostDeveloper_PVBatteryHostDeveloper.json index 7b47298af3..432fd2b9ac 100644 --- a/api/api_autogen/library/defaults/HostDeveloper_PVBatteryHostDeveloper.json +++ b/api/api_autogen/library/defaults/HostDeveloper_PVBatteryHostDeveloper.json @@ -304,6 +304,8 @@ }, "ElectricityRates": { "rate_escalation": [0.000000] + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/HostDeveloper_PVWattsBatteryHostDeveloper.json b/api/api_autogen/library/defaults/HostDeveloper_PVWattsBatteryHostDeveloper.json index 96c49cc2c7..88a36e352e 100644 --- a/api/api_autogen/library/defaults/HostDeveloper_PVWattsBatteryHostDeveloper.json +++ b/api/api_autogen/library/defaults/HostDeveloper_PVWattsBatteryHostDeveloper.json @@ -291,6 +291,8 @@ }, "ElectricityRates": { "rate_escalation": [0.000000] + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_BiopowerSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_BiopowerSingleOwner.json index 1ad5f3a4d6..dcd5d47f64 100644 --- a/api/api_autogen/library/defaults/Singleowner_BiopowerSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_BiopowerSingleOwner.json @@ -285,6 +285,8 @@ "batt_salvage_percentage": 0 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_DSLFSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_DSLFSingleOwner.json index 68d1c64a98..8f3f5bc51a 100644 --- a/api/api_autogen/library/defaults/Singleowner_DSLFSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_DSLFSingleOwner.json @@ -284,6 +284,8 @@ "batt_salvage_percentage": 0 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_ETESSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_ETESSingleOwner.json index 63d1b9e70f..e8b92d18f9 100644 --- a/api/api_autogen/library/defaults/Singleowner_ETESSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_ETESSingleOwner.json @@ -275,6 +275,8 @@ "batt_salvage_percentage": 0 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_EmpiricalTroughSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_EmpiricalTroughSingleOwner.json index f90c453a2f..af541302bc 100644 --- a/api/api_autogen/library/defaults/Singleowner_EmpiricalTroughSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_EmpiricalTroughSingleOwner.json @@ -284,6 +284,8 @@ "batt_salvage_percentage": 0 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_FlatPlatePVSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_FlatPlatePVSingleOwner.json index e96f35a435..bc8fb720e0 100644 --- a/api/api_autogen/library/defaults/Singleowner_FlatPlatePVSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_FlatPlatePVSingleOwner.json @@ -284,6 +284,8 @@ "batt_salvage_percentage": 0 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_FuelCellSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_FuelCellSingleOwner.json index 5ff1e804aa..69a809b8d4 100644 --- a/api/api_autogen/library/defaults/Singleowner_FuelCellSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_FuelCellSingleOwner.json @@ -305,6 +305,8 @@ "battery_total_cost_lcos": 0 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_GenericBatterySingleOwner.json b/api/api_autogen/library/defaults/Singleowner_GenericBatterySingleOwner.json index bbaf29c67f..b29915d042 100644 --- a/api/api_autogen/library/defaults/Singleowner_GenericBatterySingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_GenericBatterySingleOwner.json @@ -297,6 +297,8 @@ "battery_total_cost_lcos": 8.38445e+07 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_GenericCSPSystemSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_GenericCSPSystemSingleOwner.json index 36f123e9d3..db5165381e 100644 --- a/api/api_autogen/library/defaults/Singleowner_GenericCSPSystemSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_GenericCSPSystemSingleOwner.json @@ -284,6 +284,8 @@ "batt_salvage_percentage": 0 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_GenericSystemSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_GenericSystemSingleOwner.json index c57f522359..58fcfaee02 100644 --- a/api/api_autogen/library/defaults/Singleowner_GenericSystemSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_GenericSystemSingleOwner.json @@ -283,6 +283,8 @@ "batt_salvage_percentage": 0 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_GeothermalPowerSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_GeothermalPowerSingleOwner.json index 40989b4c9a..4267878cda 100644 --- a/api/api_autogen/library/defaults/Singleowner_GeothermalPowerSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_GeothermalPowerSingleOwner.json @@ -281,6 +281,8 @@ "batt_salvage_percentage": 0 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_HighXConcentratingPVSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_HighXConcentratingPVSingleOwner.json index abf8caa17a..c82e5b5ace 100644 --- a/api/api_autogen/library/defaults/Singleowner_HighXConcentratingPVSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_HighXConcentratingPVSingleOwner.json @@ -282,6 +282,8 @@ "batt_salvage_percentage": 0 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_MEwaveBatterySingleOwner.json b/api/api_autogen/library/defaults/Singleowner_MEwaveBatterySingleOwner.json index fa1f12c0a6..a532bceb24 100644 --- a/api/api_autogen/library/defaults/Singleowner_MEwaveBatterySingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_MEwaveBatterySingleOwner.json @@ -293,6 +293,8 @@ "battery_total_cost_lcos": 8.29056e+06 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_MEwaveSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_MEwaveSingleOwner.json index 138663f1f4..7028a38948 100644 --- a/api/api_autogen/library/defaults/Singleowner_MEwaveSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_MEwaveSingleOwner.json @@ -274,6 +274,8 @@ "batt_salvage_percentage": 0 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_MSLFSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_MSLFSingleOwner.json index 381fa22093..549948d98f 100644 --- a/api/api_autogen/library/defaults/Singleowner_MSLFSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_MSLFSingleOwner.json @@ -284,6 +284,8 @@ "batt_salvage_percentage": 0 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_MSPTSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_MSPTSingleOwner.json index aae6952c49..532afd26cd 100644 --- a/api/api_autogen/library/defaults/Singleowner_MSPTSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_MSPTSingleOwner.json @@ -282,6 +282,8 @@ "batt_salvage_percentage": 0 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_PTESSingleOwner.json b/api/api_autogen/library/defaults/Singleowner_PTESSingleOwner.json index 0beaaed981..12ebb61dba 100644 --- a/api/api_autogen/library/defaults/Singleowner_PTESSingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_PTESSingleOwner.json @@ -275,6 +275,8 @@ "batt_salvage_percentage": 0 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/api_autogen/library/defaults/Singleowner_PVBatterySingleOwner.json b/api/api_autogen/library/defaults/Singleowner_PVBatterySingleOwner.json index aec0e387ec..8d74967b02 100644 --- a/api/api_autogen/library/defaults/Singleowner_PVBatterySingleOwner.json +++ b/api/api_autogen/library/defaults/Singleowner_PVBatterySingleOwner.json @@ -298,6 +298,8 @@ "battery_total_cost_lcos": 8.79537e+07 }, "ChargesByMonth": { + }, + "HybridFin": { } } } \ No newline at end of file diff --git a/api/include/SAM_Battery.h b/api/include/SAM_Battery.h index e31a3cc854..0116e4da51 100644 --- a/api/include/SAM_Battery.h +++ b/api/include/SAM_Battery.h @@ -2321,6 +2321,18 @@ extern "C" SAM_EXPORT double* SAM_Battery_Outputs_cdf_of_surviving_aget(SAM_table ptr, int* length, SAM_error *err); + SAM_EXPORT double* SAM_Battery_Outputs_cf_battery_replacement_cost_schedule_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Battery_Outputs_cf_energy_net_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Battery_Outputs_cf_om_capacity_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Battery_Outputs_cf_om_fixed_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Battery_Outputs_cf_om_land_lease_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Battery_Outputs_cf_om_production_aget(SAM_table ptr, int* length, SAM_error *err); + SAM_EXPORT double* SAM_Battery_Outputs_crit_load_aget(SAM_table ptr, int* length, SAM_error *err); SAM_EXPORT double* SAM_Battery_Outputs_crit_load_unmet_aget(SAM_table ptr, int* length, SAM_error *err); diff --git a/api/include/SAM_HostDeveloper.h b/api/include/SAM_HostDeveloper.h index b24cff67bc..6aea93a170 100644 --- a/api/include/SAM_HostDeveloper.h +++ b/api/include/SAM_HostDeveloper.h @@ -2421,6 +2421,27 @@ extern "C" SAM_EXPORT void SAM_HostDeveloper_ElectricityRates_rate_escalation_aset(SAM_table ptr, double* arr, int length, SAM_error *err); + // + // HybridFin parameters + // + + /** + * Set cf_hybrid_om_sum: Hybrid O&M costs [$] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_HostDeveloper_HybridFin_cf_hybrid_om_sum_aset(SAM_table ptr, double* arr, int length, SAM_error *err); + + /** + * Set is_hybrid: hybrid configuration [0/1] + * options: 0=singletech,1=hybrid + * constraints: None + * required if: ?=0 + */ + SAM_EXPORT void SAM_HostDeveloper_HybridFin_is_hybrid_nset(SAM_table ptr, double number, SAM_error *err); + + /** * Revenue Getters */ @@ -3087,6 +3108,15 @@ extern "C" SAM_EXPORT double* SAM_HostDeveloper_ElectricityRates_rate_escalation_aget(SAM_table ptr, int* length, SAM_error *err); + /** + * HybridFin Getters + */ + + SAM_EXPORT double* SAM_HostDeveloper_HybridFin_cf_hybrid_om_sum_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double SAM_HostDeveloper_HybridFin_is_hybrid_nget(SAM_table ptr, SAM_error *err); + + /** * Outputs Getters */ diff --git a/api/include/SAM_Pvwattsv8.h b/api/include/SAM_Pvwattsv8.h index fe20d658d9..5a95436052 100644 --- a/api/include/SAM_Pvwattsv8.h +++ b/api/include/SAM_Pvwattsv8.h @@ -543,6 +543,18 @@ extern "C" SAM_EXPORT double SAM_Pvwattsv8_Outputs_capacity_factor_ac_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double* SAM_Pvwattsv8_Outputs_cf_battery_replacement_cost_schedule_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Pvwattsv8_Outputs_cf_energy_net_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Pvwattsv8_Outputs_cf_om_capacity_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Pvwattsv8_Outputs_cf_om_fixed_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Pvwattsv8_Outputs_cf_om_land_lease_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Pvwattsv8_Outputs_cf_om_production_aget(SAM_table ptr, int* length, SAM_error *err); + SAM_EXPORT const char* SAM_Pvwattsv8_Outputs_city_sget(SAM_table ptr, SAM_error *err); SAM_EXPORT double* SAM_Pvwattsv8_Outputs_dc_aget(SAM_table ptr, int* length, SAM_error *err); diff --git a/api/include/SAM_Singleowner.h b/api/include/SAM_Singleowner.h index be2007b676..ece1a139b2 100644 --- a/api/include/SAM_Singleowner.h +++ b/api/include/SAM_Singleowner.h @@ -2464,6 +2464,27 @@ extern "C" SAM_EXPORT void SAM_Singleowner_ChargesByMonth_nm_dollars_applied_ym_mset(SAM_table ptr, double* mat, int nrows, int ncols, SAM_error *err); + // + // HybridFin parameters + // + + /** + * Set cf_hybrid_om_sum: Hybrid O&M costs [$] + * options: None + * constraints: None + * required if: None + */ + SAM_EXPORT void SAM_Singleowner_HybridFin_cf_hybrid_om_sum_aset(SAM_table ptr, double* arr, int length, SAM_error *err); + + /** + * Set is_hybrid: hybrid configuration [0/1] + * options: 0=singletech,1=hybrid + * constraints: None + * required if: ?=0 + */ + SAM_EXPORT void SAM_Singleowner_HybridFin_is_hybrid_nset(SAM_table ptr, double number, SAM_error *err); + + /** * Revenue Getters */ @@ -3137,6 +3158,15 @@ extern "C" SAM_EXPORT double* SAM_Singleowner_ChargesByMonth_nm_dollars_applied_ym_mget(SAM_table ptr, int* nrows, int* ncols, SAM_error *err); + /** + * HybridFin Getters + */ + + SAM_EXPORT double* SAM_Singleowner_HybridFin_cf_hybrid_om_sum_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double SAM_Singleowner_HybridFin_is_hybrid_nget(SAM_table ptr, SAM_error *err); + + /** * Outputs Getters */ diff --git a/api/include/SAM_Windpower.h b/api/include/SAM_Windpower.h index 7743c351d5..6622d00170 100644 --- a/api/include/SAM_Windpower.h +++ b/api/include/SAM_Windpower.h @@ -607,6 +607,18 @@ extern "C" SAM_EXPORT double SAM_Windpower_Outputs_capacity_factor_nget(SAM_table ptr, SAM_error *err); + SAM_EXPORT double* SAM_Windpower_Outputs_cf_battery_replacement_cost_schedule_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Windpower_Outputs_cf_energy_net_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Windpower_Outputs_cf_om_capacity_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Windpower_Outputs_cf_om_fixed_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Windpower_Outputs_cf_om_land_lease_aget(SAM_table ptr, int* length, SAM_error *err); + + SAM_EXPORT double* SAM_Windpower_Outputs_cf_om_production_aget(SAM_table ptr, int* length, SAM_error *err); + SAM_EXPORT double SAM_Windpower_Outputs_cutoff_losses_nget(SAM_table ptr, SAM_error *err); SAM_EXPORT double SAM_Windpower_Outputs_elec_losses_nget(SAM_table ptr, SAM_error *err); diff --git a/api/modules/SAM_Battery.cpp b/api/modules/SAM_Battery.cpp index c5fcdc7528..6e00128bca 100644 --- a/api/modules/SAM_Battery.cpp +++ b/api/modules/SAM_Battery.cpp @@ -4264,6 +4264,78 @@ SAM_EXPORT double* SAM_Battery_Outputs_cdf_of_surviving_aget(SAM_table ptr, int* +SAM_EXPORT double* SAM_Battery_Outputs_cf_battery_replacement_cost_schedule_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_battery_replacement_cost_schedule", length); + if (!result) + make_access_error("SAM_Battery", "cf_battery_replacement_cost_schedule"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Battery_Outputs_cf_energy_net_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_energy_net", length); + if (!result) + make_access_error("SAM_Battery", "cf_energy_net"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Battery_Outputs_cf_om_capacity_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_om_capacity", length); + if (!result) + make_access_error("SAM_Battery", "cf_om_capacity"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Battery_Outputs_cf_om_fixed_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_om_fixed", length); + if (!result) + make_access_error("SAM_Battery", "cf_om_fixed"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Battery_Outputs_cf_om_land_lease_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_om_land_lease", length); + if (!result) + make_access_error("SAM_Battery", "cf_om_land_lease"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Battery_Outputs_cf_om_production_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_om_production", length); + if (!result) + make_access_error("SAM_Battery", "cf_om_production"); + }); + return result; +} + + + SAM_EXPORT double* SAM_Battery_Outputs_crit_load_aget(SAM_table ptr, int* length, SAM_error *err){ double* result = nullptr; translateExceptions(err, [&]{ diff --git a/api/modules/SAM_HostDeveloper.cpp b/api/modules/SAM_HostDeveloper.cpp index 48d1163115..8f8cd240b0 100644 --- a/api/modules/SAM_HostDeveloper.cpp +++ b/api/modules/SAM_HostDeveloper.cpp @@ -1742,6 +1742,18 @@ SAM_EXPORT void SAM_HostDeveloper_ElectricityRates_rate_escalation_aset(SAM_tabl }); } +SAM_EXPORT void SAM_HostDeveloper_HybridFin_cf_hybrid_om_sum_aset(SAM_table ptr, double* arr, int length, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_array(ptr, "cf_hybrid_om_sum", arr, length); + }); +} + +SAM_EXPORT void SAM_HostDeveloper_HybridFin_is_hybrid_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "is_hybrid", number); + }); +} + SAM_EXPORT double* SAM_HostDeveloper_Revenue_dispatch_factors_ts_aget(SAM_table ptr, int* length, SAM_error *err){ double* result = nullptr; translateExceptions(err, [&]{ @@ -4985,6 +4997,29 @@ SAM_EXPORT double* SAM_HostDeveloper_ElectricityRates_rate_escalation_aget(SAM_t +SAM_EXPORT double* SAM_HostDeveloper_HybridFin_cf_hybrid_om_sum_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_hybrid_om_sum", length); + if (!result) + make_access_error("SAM_HostDeveloper", "cf_hybrid_om_sum"); + }); + return result; +} + + + +SAM_EXPORT double SAM_HostDeveloper_HybridFin_is_hybrid_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "is_hybrid", &result)) + make_access_error("SAM_HostDeveloper", "is_hybrid"); + }); + return result; +} + + + SAM_EXPORT double SAM_HostDeveloper_Outputs_adjusted_installed_cost_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 b9f14e85de..6c1a269113 100644 --- a/api/modules/SAM_Pvwattsv8.cpp +++ b/api/modules/SAM_Pvwattsv8.cpp @@ -899,6 +899,78 @@ SAM_EXPORT double SAM_Pvwattsv8_Outputs_capacity_factor_ac_nget(SAM_table ptr, S +SAM_EXPORT double* SAM_Pvwattsv8_Outputs_cf_battery_replacement_cost_schedule_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_battery_replacement_cost_schedule", length); + if (!result) + make_access_error("SAM_Pvwattsv8", "cf_battery_replacement_cost_schedule"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Pvwattsv8_Outputs_cf_energy_net_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_energy_net", length); + if (!result) + make_access_error("SAM_Pvwattsv8", "cf_energy_net"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Pvwattsv8_Outputs_cf_om_capacity_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_om_capacity", length); + if (!result) + make_access_error("SAM_Pvwattsv8", "cf_om_capacity"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Pvwattsv8_Outputs_cf_om_fixed_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_om_fixed", length); + if (!result) + make_access_error("SAM_Pvwattsv8", "cf_om_fixed"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Pvwattsv8_Outputs_cf_om_land_lease_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_om_land_lease", length); + if (!result) + make_access_error("SAM_Pvwattsv8", "cf_om_land_lease"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Pvwattsv8_Outputs_cf_om_production_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_om_production", length); + if (!result) + make_access_error("SAM_Pvwattsv8", "cf_om_production"); + }); + return result; +} + + + SAM_EXPORT const char* SAM_Pvwattsv8_Outputs_city_sget(SAM_table ptr, SAM_error *err){ const char* result = nullptr; translateExceptions(err, [&]{ diff --git a/api/modules/SAM_Singleowner.cpp b/api/modules/SAM_Singleowner.cpp index 95198dfce4..7ed065a38b 100644 --- a/api/modules/SAM_Singleowner.cpp +++ b/api/modules/SAM_Singleowner.cpp @@ -1778,6 +1778,18 @@ SAM_EXPORT void SAM_Singleowner_ChargesByMonth_nm_dollars_applied_ym_mset(SAM_ta }); } +SAM_EXPORT void SAM_Singleowner_HybridFin_cf_hybrid_om_sum_aset(SAM_table ptr, double* arr, int length, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_array(ptr, "cf_hybrid_om_sum", arr, length); + }); +} + +SAM_EXPORT void SAM_Singleowner_HybridFin_is_hybrid_nset(SAM_table ptr, double number, SAM_error *err){ + translateExceptions(err, [&]{ + ssc_data_set_number(ptr, "is_hybrid", number); + }); +} + SAM_EXPORT double* SAM_Singleowner_Revenue_dispatch_factors_ts_aget(SAM_table ptr, int* length, SAM_error *err){ double* result = nullptr; translateExceptions(err, [&]{ @@ -5082,6 +5094,29 @@ SAM_EXPORT double* SAM_Singleowner_ChargesByMonth_nm_dollars_applied_ym_mget(SAM +SAM_EXPORT double* SAM_Singleowner_HybridFin_cf_hybrid_om_sum_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_hybrid_om_sum", length); + if (!result) + make_access_error("SAM_Singleowner", "cf_hybrid_om_sum"); + }); + return result; +} + + + +SAM_EXPORT double SAM_Singleowner_HybridFin_is_hybrid_nget(SAM_table ptr, SAM_error *err){ + double result; + translateExceptions(err, [&]{ + if (!ssc_data_get_number(ptr, "is_hybrid", &result)) + make_access_error("SAM_Singleowner", "is_hybrid"); + }); + return result; +} + + + SAM_EXPORT double SAM_Singleowner_Outputs_adjusted_installed_cost_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ diff --git a/api/modules/SAM_Windpower.cpp b/api/modules/SAM_Windpower.cpp index 01a7071e9c..7c29d16aed 100644 --- a/api/modules/SAM_Windpower.cpp +++ b/api/modules/SAM_Windpower.cpp @@ -962,6 +962,78 @@ SAM_EXPORT double SAM_Windpower_Outputs_capacity_factor_nget(SAM_table ptr, SAM_ +SAM_EXPORT double* SAM_Windpower_Outputs_cf_battery_replacement_cost_schedule_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_battery_replacement_cost_schedule", length); + if (!result) + make_access_error("SAM_Windpower", "cf_battery_replacement_cost_schedule"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Windpower_Outputs_cf_energy_net_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_energy_net", length); + if (!result) + make_access_error("SAM_Windpower", "cf_energy_net"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Windpower_Outputs_cf_om_capacity_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_om_capacity", length); + if (!result) + make_access_error("SAM_Windpower", "cf_om_capacity"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Windpower_Outputs_cf_om_fixed_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_om_fixed", length); + if (!result) + make_access_error("SAM_Windpower", "cf_om_fixed"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Windpower_Outputs_cf_om_land_lease_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_om_land_lease", length); + if (!result) + make_access_error("SAM_Windpower", "cf_om_land_lease"); + }); + return result; +} + + + +SAM_EXPORT double* SAM_Windpower_Outputs_cf_om_production_aget(SAM_table ptr, int* length, SAM_error *err){ + double* result = nullptr; + translateExceptions(err, [&]{ + result = ssc_data_get_array(ptr, "cf_om_production", length); + if (!result) + make_access_error("SAM_Windpower", "cf_om_production"); + }); + return result; +} + + + SAM_EXPORT double SAM_Windpower_Outputs_cutoff_losses_nget(SAM_table ptr, SAM_error *err){ double result; translateExceptions(err, [&]{ diff --git a/deploy/runtime/cashflow.lk b/deploy/runtime/cashflow.lk index 8114340981..e5671600f1 100644 --- a/deploy/runtime/cashflow.lk +++ b/deploy/runtime/cashflow.lk @@ -107,6 +107,11 @@ function is_fuel_tech() function cf_production() { cfline( 'ENERGY', -1); + if ( technology() == 'PVWatts Wind Battery Hybrid') + { + cfline( 'PVWattscf_energy_net',0); + cfline( 'Windcf_energy_net',0); + } if ( is_fom_fin() ) { cfline( 'cf_energy_sales', 0); @@ -244,6 +249,13 @@ function cf_om_expenses() { cfline('cf_utility_bill', 0 ); // electricity purchases for self-consumption and/or battery charging } + if ( technology() == 'PVWatts Wind Battery Hybrid') + { + cfline( 'PVWattscf_om_fixed,PVWattscf_om_production,PVWattscf_om_capacity,PVWattscf_om_land_lease',0); + cfline( 'Windcf_om_fixed,Windcf_om_production,Windcf_om_capacity',0); + cfline( 'Batterycf_om_fixed,Batterycf_om_production,Batterycf_om_capacity,Batterycf_battery_replacement_cost_schedule',0); + } + } function cf_operating_expenses() diff --git a/deploy/runtime/defaults/PVWatts Wind Battery Hybrid_Host Developer.json b/deploy/runtime/defaults/PVWatts Wind Battery Hybrid_Host Developer.json index 3d1948a430..4ca50e549a 100644 --- a/deploy/runtime/defaults/PVWatts Wind Battery Hybrid_Host Developer.json +++ b/deploy/runtime/defaults/PVWatts Wind Battery Hybrid_Host Developer.json @@ -97,6 +97,30 @@ "capex_table_total_installed_ac_cost": 0.0, "capex_table_total_installed_dc_cost": 1800.0, "capex_table_total_installed_land_cost": 0.0, + "cbi_fed_amount": 0.0, + "cbi_fed_deprbas_fed": 0.0, + "cbi_fed_deprbas_sta": 0.0, + "cbi_fed_maxvalue": 0.0, + "cbi_fed_tax_fed": 1.0, + "cbi_fed_tax_sta": 1.0, + "cbi_oth_amount": 0.0, + "cbi_oth_deprbas_fed": 0.0, + "cbi_oth_deprbas_sta": 0.0, + "cbi_oth_maxvalue": 0.0, + "cbi_oth_tax_fed": 1.0, + "cbi_oth_tax_sta": 1.0, + "cbi_sta_amount": 0.0, + "cbi_sta_deprbas_fed": 0.0, + "cbi_sta_deprbas_sta": 0.0, + "cbi_sta_maxvalue": 0.0, + "cbi_sta_tax_fed": 1.0, + "cbi_sta_tax_sta": 1.0, + "cbi_uti_amount": 0.0, + "cbi_uti_deprbas_fed": 0.0, + "cbi_uti_deprbas_sta": 0.0, + "cbi_uti_maxvalue": 0.0, + "cbi_uti_tax_fed": 1.0, + "cbi_uti_tax_sta": 1.0, "city": "-", "contingency": 0.0, "contingency_percent": 0.0, @@ -118,6 +142,50 @@ "grid_per_watt": 0.0, "grid_percent": 0.0, "grid_total": 0.0, + "ibi_fed_amount": 0.0, + "ibi_fed_amount_deprbas_fed": 0.0, + "ibi_fed_amount_deprbas_sta": 0.0, + "ibi_fed_amount_tax_fed": 1.0, + "ibi_fed_amount_tax_sta": 1.0, + "ibi_fed_percent": 0.0, + "ibi_fed_percent_deprbas_fed": 0.0, + "ibi_fed_percent_deprbas_sta": 0.0, + "ibi_fed_percent_maxvalue": 0.0, + "ibi_fed_percent_tax_fed": 1.0, + "ibi_fed_percent_tax_sta": 1.0, + "ibi_oth_amount": 0.0, + "ibi_oth_amount_deprbas_fed": 0.0, + "ibi_oth_amount_deprbas_sta": 0.0, + "ibi_oth_amount_tax_fed": 1.0, + "ibi_oth_amount_tax_sta": 1.0, + "ibi_oth_percent": 0.0, + "ibi_oth_percent_deprbas_fed": 0.0, + "ibi_oth_percent_deprbas_sta": 0.0, + "ibi_oth_percent_maxvalue": 0.0, + "ibi_oth_percent_tax_fed": 1.0, + "ibi_oth_percent_tax_sta": 1.0, + "ibi_sta_amount": 0.0, + "ibi_sta_amount_deprbas_fed": 0.0, + "ibi_sta_amount_deprbas_sta": 0.0, + "ibi_sta_amount_tax_fed": 1.0, + "ibi_sta_amount_tax_sta": 1.0, + "ibi_sta_percent": 0.0, + "ibi_sta_percent_deprbas_fed": 0.0, + "ibi_sta_percent_deprbas_sta": 0.0, + "ibi_sta_percent_maxvalue": 0.0, + "ibi_sta_percent_tax_fed": 1.0, + "ibi_sta_percent_tax_sta": 1.0, + "ibi_uti_amount": 0.0, + "ibi_uti_amount_deprbas_fed": 0.0, + "ibi_uti_amount_deprbas_sta": 0.0, + "ibi_uti_amount_tax_fed": 1.0, + "ibi_uti_amount_tax_sta": 1.0, + "ibi_uti_percent": 0.0, + "ibi_uti_percent_deprbas_fed": 0.0, + "ibi_uti_percent_deprbas_sta": 0.0, + "ibi_uti_percent_maxvalue": 0.0, + "ibi_uti_percent_tax_fed": 1.0, + "ibi_uti_percent_tax_sta": 1.0, "in_location": "Type a location name, street address, or lat,lon in decimal degrees", "in_location_list": "15458 Denver W Pkwy, Golden CO 804041|phoenix,az|45.5,-120.9|Manaus,Brazil", "in_location_options": 0.0, @@ -141,6 +209,32 @@ "inverterarray_power": 3.63636, "inverterarray_power_w": 3636.36, "is_advanced": 0.0, + "itc_fed_amount": [ + 0.0 + ], + "itc_fed_amount_deprbas_fed": 1.0, + "itc_fed_amount_deprbas_sta": 1.0, + "itc_fed_percent": [ + 30.0 + ], + "itc_fed_percent_deprbas_fed": 1.0, + "itc_fed_percent_deprbas_sta": 1.0, + "itc_fed_percent_maxvalue": [ + 1.0 + ], + "itc_sta_amount": [ + 0.0 + ], + "itc_sta_amount_deprbas_fed": 0.0, + "itc_sta_amount_deprbas_sta": 0.0, + "itc_sta_percent": [ + 0.0 + ], + "itc_sta_percent_deprbas_fed": 0.0, + "itc_sta_percent_deprbas_sta": 0.0, + "itc_sta_percent_maxvalue": [ + 1.0 + ], "land_area": 0.0, "land_area_capex": 0.0189035, "land_area_value": 0.0189035, @@ -195,12 +289,54 @@ 0.0 ], "om_production_escal": 0.0, + "pbi_fed_amount": [ + 0.0 + ], + "pbi_fed_escal": 0.0, + "pbi_fed_for_ds": 0.0, + "pbi_fed_tax_fed": 1.0, + "pbi_fed_tax_sta": 1.0, + "pbi_fed_term": 0.0, + "pbi_oth_amount": [ + 0.0 + ], + "pbi_oth_escal": 0.0, + "pbi_oth_for_ds": 0.0, + "pbi_oth_tax_fed": 1.0, + "pbi_oth_tax_sta": 1.0, + "pbi_oth_term": 0.0, + "pbi_sta_amount": [ + 0.0 + ], + "pbi_sta_escal": 0.0, + "pbi_sta_for_ds": 0.0, + "pbi_sta_tax_fed": 1.0, + "pbi_sta_tax_sta": 1.0, + "pbi_sta_term": 0.0, + "pbi_uti_amount": [ + 0.0 + ], + "pbi_uti_escal": 0.0, + "pbi_uti_for_ds": 0.0, + "pbi_uti_tax_fed": 1.0, + "pbi_uti_tax_sta": 1.0, + "pbi_uti_term": 0.0, "per_inverter": 0.71, "per_module": 4.84, "permitting_fixed": 0.0, "permitting_per_watt": 0.0, "permitting_percent": 0.0, "permitting_total": 0.0, + "ptc_fed_amount": [ + 0.0 + ], + "ptc_fed_escal": 0.0, + "ptc_fed_term": 10.0, + "ptc_sta_amount": [ + 0.0 + ], + "ptc_sta_escal": 0.0, + "ptc_sta_term": 10.0, "pv_capex_cost_choice": 0.0, "pv_land_area_is_shown": 0.0, "pvwatts.advanced.is_shown": 0.0, @@ -316,6 +452,30 @@ "bos_cost_per_kw": 0.0, "bos_cost_per_turbine": 0.0, "bos_cost_total": 0.0, + "cbi_fed_amount": 0.0, + "cbi_fed_deprbas_fed": 0.0, + "cbi_fed_deprbas_sta": 0.0, + "cbi_fed_maxvalue": 0.0, + "cbi_fed_tax_fed": 1.0, + "cbi_fed_tax_sta": 1.0, + "cbi_oth_amount": 0.0, + "cbi_oth_deprbas_fed": 0.0, + "cbi_oth_deprbas_sta": 0.0, + "cbi_oth_maxvalue": 0.0, + "cbi_oth_tax_fed": 1.0, + "cbi_oth_tax_sta": 1.0, + "cbi_sta_amount": 0.0, + "cbi_sta_deprbas_fed": 0.0, + "cbi_sta_deprbas_sta": 0.0, + "cbi_sta_maxvalue": 0.0, + "cbi_sta_tax_fed": 1.0, + "cbi_sta_tax_sta": 1.0, + "cbi_uti_amount": 0.0, + "cbi_uti_deprbas_fed": 0.0, + "cbi_uti_deprbas_sta": 0.0, + "cbi_uti_maxvalue": 0.0, + "cbi_uti_tax_fed": 1.0, + "cbi_uti_tax_sta": 1.0, "cols": 1.0, "degradation": [ 0.0 @@ -331,8 +491,78 @@ "env_loss_total": 0.0, "est_bos_cost": 0.0, "est_turbine_cost": 0.0, + "ibi_fed_amount": 0.0, + "ibi_fed_amount_deprbas_fed": 0.0, + "ibi_fed_amount_deprbas_sta": 0.0, + "ibi_fed_amount_tax_fed": 1.0, + "ibi_fed_amount_tax_sta": 1.0, + "ibi_fed_percent": 0.0, + "ibi_fed_percent_deprbas_fed": 0.0, + "ibi_fed_percent_deprbas_sta": 0.0, + "ibi_fed_percent_maxvalue": 0.0, + "ibi_fed_percent_tax_fed": 1.0, + "ibi_fed_percent_tax_sta": 1.0, + "ibi_oth_amount": 0.0, + "ibi_oth_amount_deprbas_fed": 0.0, + "ibi_oth_amount_deprbas_sta": 0.0, + "ibi_oth_amount_tax_fed": 1.0, + "ibi_oth_amount_tax_sta": 1.0, + "ibi_oth_percent": 0.0, + "ibi_oth_percent_deprbas_fed": 0.0, + "ibi_oth_percent_deprbas_sta": 0.0, + "ibi_oth_percent_maxvalue": 0.0, + "ibi_oth_percent_tax_fed": 1.0, + "ibi_oth_percent_tax_sta": 1.0, + "ibi_sta_amount": 0.0, + "ibi_sta_amount_deprbas_fed": 0.0, + "ibi_sta_amount_deprbas_sta": 0.0, + "ibi_sta_amount_tax_fed": 1.0, + "ibi_sta_amount_tax_sta": 1.0, + "ibi_sta_percent": 0.0, + "ibi_sta_percent_deprbas_fed": 0.0, + "ibi_sta_percent_deprbas_sta": 0.0, + "ibi_sta_percent_maxvalue": 0.0, + "ibi_sta_percent_tax_fed": 1.0, + "ibi_sta_percent_tax_sta": 1.0, + "ibi_uti_amount": 0.0, + "ibi_uti_amount_deprbas_fed": 0.0, + "ibi_uti_amount_deprbas_sta": 0.0, + "ibi_uti_amount_tax_fed": 1.0, + "ibi_uti_amount_tax_sta": 1.0, + "ibi_uti_percent": 0.0, + "ibi_uti_percent_deprbas_fed": 0.0, + "ibi_uti_percent_deprbas_sta": 0.0, + "ibi_uti_percent_maxvalue": 0.0, + "ibi_uti_percent_tax_fed": 1.0, + "ibi_uti_percent_tax_sta": 1.0, "inflation_rate": 2.5, "install_type": 0.0, + "itc_fed_amount": [ + 0.0 + ], + "itc_fed_amount_deprbas_fed": 1.0, + "itc_fed_amount_deprbas_sta": 1.0, + "itc_fed_percent": [ + 30.0 + ], + "itc_fed_percent_deprbas_fed": 1.0, + "itc_fed_percent_deprbas_sta": 1.0, + "itc_fed_percent_maxvalue": [ + 1.0 + ], + "itc_sta_amount": [ + 0.0 + ], + "itc_sta_amount_deprbas_fed": 0.0, + "itc_sta_amount_deprbas_sta": 0.0, + "itc_sta_percent": [ + 0.0 + ], + "itc_sta_percent_deprbas_fed": 0.0, + "itc_sta_percent_deprbas_sta": 0.0, + "itc_sta_percent_maxvalue": [ + 1.0 + ], "om_capacity": [ 50.0 ], @@ -350,6 +580,48 @@ "ops_load_loss": 0.0, "ops_loss_total": 0.0, "ops_strategies_loss": 0.0, + "pbi_fed_amount": [ + 0.0 + ], + "pbi_fed_escal": 0.0, + "pbi_fed_for_ds": 0.0, + "pbi_fed_tax_fed": 1.0, + "pbi_fed_tax_sta": 1.0, + "pbi_fed_term": 0.0, + "pbi_oth_amount": [ + 0.0 + ], + "pbi_oth_escal": 0.0, + "pbi_oth_for_ds": 0.0, + "pbi_oth_tax_fed": 1.0, + "pbi_oth_tax_sta": 1.0, + "pbi_oth_term": 0.0, + "pbi_sta_amount": [ + 0.0 + ], + "pbi_sta_escal": 0.0, + "pbi_sta_for_ds": 0.0, + "pbi_sta_tax_fed": 1.0, + "pbi_sta_tax_sta": 1.0, + "pbi_sta_term": 0.0, + "pbi_uti_amount": [ + 0.0 + ], + "pbi_uti_escal": 0.0, + "pbi_uti_for_ds": 0.0, + "pbi_uti_tax_fed": 1.0, + "pbi_uti_tax_sta": 1.0, + "pbi_uti_term": 0.0, + "ptc_fed_amount": [ + 0.0 + ], + "ptc_fed_escal": 0.0, + "ptc_fed_term": 10.0, + "ptc_sta_amount": [ + 0.0 + ], + "ptc_sta_escal": 0.0, + "ptc_sta_term": 10.0, "reference_capacity": 1.0, "reference_number_turbines": 1.0, "reference_resource_file": "WY Southern-Flat Lands.srw", @@ -9594,6 +9866,30 @@ 104.0 ] ], + "cbi_fed_amount": 0.0, + "cbi_fed_deprbas_fed": 0.0, + "cbi_fed_deprbas_sta": 0.0, + "cbi_fed_maxvalue": 0.0, + "cbi_fed_tax_fed": 1.0, + "cbi_fed_tax_sta": 1.0, + "cbi_oth_amount": 0.0, + "cbi_oth_deprbas_fed": 0.0, + "cbi_oth_deprbas_sta": 0.0, + "cbi_oth_maxvalue": 0.0, + "cbi_oth_tax_fed": 1.0, + "cbi_oth_tax_sta": 1.0, + "cbi_sta_amount": 0.0, + "cbi_sta_deprbas_fed": 0.0, + "cbi_sta_deprbas_sta": 0.0, + "cbi_sta_maxvalue": 0.0, + "cbi_sta_tax_fed": 1.0, + "cbi_sta_tax_sta": 1.0, + "cbi_uti_amount": 0.0, + "cbi_uti_deprbas_fed": 0.0, + "cbi_uti_deprbas_sta": 0.0, + "cbi_uti_maxvalue": 0.0, + "cbi_uti_tax_fed": 1.0, + "cbi_uti_tax_sta": 1.0, "compute_as_cube": 1.0, "dispatch_manual_btm_discharge_to_grid": [ 0.0, @@ -10921,7 +11217,77 @@ "genericsys.cost.sales_tax.percent": 0.0, "genericsys.cost.sales_tax.total": 0.0, "genericsys.cost.sales_tax.value": 0.0, + "ibi_fed_amount": 0.0, + "ibi_fed_amount_deprbas_fed": 0.0, + "ibi_fed_amount_deprbas_sta": 0.0, + "ibi_fed_amount_tax_fed": 1.0, + "ibi_fed_amount_tax_sta": 1.0, + "ibi_fed_percent": 0.0, + "ibi_fed_percent_deprbas_fed": 0.0, + "ibi_fed_percent_deprbas_sta": 0.0, + "ibi_fed_percent_maxvalue": 0.0, + "ibi_fed_percent_tax_fed": 1.0, + "ibi_fed_percent_tax_sta": 1.0, + "ibi_oth_amount": 0.0, + "ibi_oth_amount_deprbas_fed": 0.0, + "ibi_oth_amount_deprbas_sta": 0.0, + "ibi_oth_amount_tax_fed": 1.0, + "ibi_oth_amount_tax_sta": 1.0, + "ibi_oth_percent": 0.0, + "ibi_oth_percent_deprbas_fed": 0.0, + "ibi_oth_percent_deprbas_sta": 0.0, + "ibi_oth_percent_maxvalue": 0.0, + "ibi_oth_percent_tax_fed": 1.0, + "ibi_oth_percent_tax_sta": 1.0, + "ibi_sta_amount": 0.0, + "ibi_sta_amount_deprbas_fed": 0.0, + "ibi_sta_amount_deprbas_sta": 0.0, + "ibi_sta_amount_tax_fed": 1.0, + "ibi_sta_amount_tax_sta": 1.0, + "ibi_sta_percent": 0.0, + "ibi_sta_percent_deprbas_fed": 0.0, + "ibi_sta_percent_deprbas_sta": 0.0, + "ibi_sta_percent_maxvalue": 0.0, + "ibi_sta_percent_tax_fed": 1.0, + "ibi_sta_percent_tax_sta": 1.0, + "ibi_uti_amount": 0.0, + "ibi_uti_amount_deprbas_fed": 0.0, + "ibi_uti_amount_deprbas_sta": 0.0, + "ibi_uti_amount_tax_fed": 1.0, + "ibi_uti_amount_tax_sta": 1.0, + "ibi_uti_percent": 0.0, + "ibi_uti_percent_deprbas_fed": 0.0, + "ibi_uti_percent_deprbas_sta": 0.0, + "ibi_uti_percent_maxvalue": 0.0, + "ibi_uti_percent_tax_fed": 1.0, + "ibi_uti_percent_tax_sta": 1.0, "inflation_rate": 2.5, + "itc_fed_amount": [ + 0.0 + ], + "itc_fed_amount_deprbas_fed": 1.0, + "itc_fed_amount_deprbas_sta": 1.0, + "itc_fed_percent": [ + 30.0 + ], + "itc_fed_percent_deprbas_fed": 1.0, + "itc_fed_percent_deprbas_sta": 1.0, + "itc_fed_percent_maxvalue": [ + 1.0 + ], + "itc_sta_amount": [ + 0.0 + ], + "itc_sta_amount_deprbas_fed": 0.0, + "itc_sta_amount_deprbas_sta": 0.0, + "itc_sta_percent": [ + 0.0 + ], + "itc_sta_percent_deprbas_fed": 0.0, + "itc_sta_percent_deprbas_sta": 0.0, + "itc_sta_percent_maxvalue": [ + 1.0 + ], "load": [ 65.6374, 62.5244, @@ -19707,12 +20073,54 @@ "om_fixed_escal": 0.0, "om_production_escal": 0.0, "om_replacement_cost_escal": 0.0, + "pbi_fed_amount": [ + 0.0 + ], + "pbi_fed_escal": 0.0, + "pbi_fed_for_ds": 0.0, + "pbi_fed_tax_fed": 1.0, + "pbi_fed_tax_sta": 1.0, + "pbi_fed_term": 0.0, + "pbi_oth_amount": [ + 0.0 + ], + "pbi_oth_escal": 0.0, + "pbi_oth_for_ds": 0.0, + "pbi_oth_tax_fed": 1.0, + "pbi_oth_tax_sta": 1.0, + "pbi_oth_term": 0.0, + "pbi_sta_amount": [ + 0.0 + ], + "pbi_sta_escal": 0.0, + "pbi_sta_for_ds": 0.0, + "pbi_sta_tax_fed": 1.0, + "pbi_sta_tax_sta": 1.0, + "pbi_sta_term": 0.0, + "pbi_uti_amount": [ + 0.0 + ], + "pbi_uti_escal": 0.0, + "pbi_uti_for_ds": 0.0, + "pbi_uti_tax_fed": 1.0, + "pbi_uti_tax_sta": 1.0, + "pbi_uti_term": 0.0, "peak_shaving_batt_dispatch_choice": 0.0, "ppa_escalation": 1.0, "ppa_multiplier_model": 0.0, "ppa_price_input": [ 0.0 ], + "ptc_fed_amount": [ + 0.0 + ], + "ptc_fed_escal": 0.0, + "ptc_fed_term": 10.0, + "ptc_sta_amount": [ + 0.0 + ], + "ptc_sta_escal": 0.0, + "ptc_sta_term": 10.0, "pv.storage.p1.charge": 1.0, "pv.storage.p1.discharge": 0.0, "pv.storage.p1.dischargetogrid": 0.0, diff --git a/deploy/runtime/defaults/PVWatts Wind Battery Hybrid_Single Owner.json b/deploy/runtime/defaults/PVWatts Wind Battery Hybrid_Single Owner.json index 83067047d5..833d98c0f4 100644 --- a/deploy/runtime/defaults/PVWatts Wind Battery Hybrid_Single Owner.json +++ b/deploy/runtime/defaults/PVWatts Wind Battery Hybrid_Single Owner.json @@ -97,6 +97,30 @@ "capex_table_total_installed_ac_cost": 0.0, "capex_table_total_installed_dc_cost": 90000000.0, "capex_table_total_installed_land_cost": 0.0, + "cbi_fed_amount": 0.0, + "cbi_fed_deprbas_fed": 0.0, + "cbi_fed_deprbas_sta": 0.0, + "cbi_fed_maxvalue": 0.0, + "cbi_fed_tax_fed": 1.0, + "cbi_fed_tax_sta": 1.0, + "cbi_oth_amount": 0.0, + "cbi_oth_deprbas_fed": 0.0, + "cbi_oth_deprbas_sta": 0.0, + "cbi_oth_maxvalue": 0.0, + "cbi_oth_tax_fed": 1.0, + "cbi_oth_tax_sta": 1.0, + "cbi_sta_amount": 0.0, + "cbi_sta_deprbas_fed": 0.0, + "cbi_sta_deprbas_sta": 0.0, + "cbi_sta_maxvalue": 0.0, + "cbi_sta_tax_fed": 1.0, + "cbi_sta_tax_sta": 1.0, + "cbi_uti_amount": 0.0, + "cbi_uti_deprbas_fed": 0.0, + "cbi_uti_deprbas_sta": 0.0, + "cbi_uti_maxvalue": 0.0, + "cbi_uti_tax_fed": 1.0, + "cbi_uti_tax_sta": 1.0, "city": "-", "contingency": 0.0, "contingency_percent": 0.0, @@ -118,6 +142,50 @@ "grid_per_watt": 0.02, "grid_percent": 0.0, "grid_total": 4000000.0, + "ibi_fed_amount": 0.0, + "ibi_fed_amount_deprbas_fed": 0.0, + "ibi_fed_amount_deprbas_sta": 0.0, + "ibi_fed_amount_tax_fed": 1.0, + "ibi_fed_amount_tax_sta": 1.0, + "ibi_fed_percent": 0.0, + "ibi_fed_percent_deprbas_fed": 0.0, + "ibi_fed_percent_deprbas_sta": 0.0, + "ibi_fed_percent_maxvalue": 0.0, + "ibi_fed_percent_tax_fed": 1.0, + "ibi_fed_percent_tax_sta": 1.0, + "ibi_oth_amount": 0.0, + "ibi_oth_amount_deprbas_fed": 0.0, + "ibi_oth_amount_deprbas_sta": 0.0, + "ibi_oth_amount_tax_fed": 1.0, + "ibi_oth_amount_tax_sta": 1.0, + "ibi_oth_percent": 0.0, + "ibi_oth_percent_deprbas_fed": 0.0, + "ibi_oth_percent_deprbas_sta": 0.0, + "ibi_oth_percent_maxvalue": 0.0, + "ibi_oth_percent_tax_fed": 1.0, + "ibi_oth_percent_tax_sta": 1.0, + "ibi_sta_amount": 0.0, + "ibi_sta_amount_deprbas_fed": 0.0, + "ibi_sta_amount_deprbas_sta": 0.0, + "ibi_sta_amount_tax_fed": 1.0, + "ibi_sta_amount_tax_sta": 1.0, + "ibi_sta_percent": 0.0, + "ibi_sta_percent_deprbas_fed": 0.0, + "ibi_sta_percent_deprbas_sta": 0.0, + "ibi_sta_percent_maxvalue": 0.0, + "ibi_sta_percent_tax_fed": 1.0, + "ibi_sta_percent_tax_sta": 1.0, + "ibi_uti_amount": 0.0, + "ibi_uti_amount_deprbas_fed": 0.0, + "ibi_uti_amount_deprbas_sta": 0.0, + "ibi_uti_amount_tax_fed": 1.0, + "ibi_uti_amount_tax_sta": 1.0, + "ibi_uti_percent": 0.0, + "ibi_uti_percent_deprbas_fed": 0.0, + "ibi_uti_percent_deprbas_sta": 0.0, + "ibi_uti_percent_maxvalue": 0.0, + "ibi_uti_percent_tax_fed": 1.0, + "ibi_uti_percent_tax_sta": 1.0, "in_location": "Type a location name, street address, or lat,lon in decimal degrees", "in_location_list": "15458 Denver W Pkwy, Golden CO 804041|phoenix,az|45.5,-120.9|Manaus,Brazil", "in_location_options": 0.0, @@ -141,6 +209,32 @@ "inverterarray_power": 153846.0, "inverterarray_power_w": 153846000.0, "is_advanced": 0.0, + "itc_fed_amount": [ + 0.0 + ], + "itc_fed_amount_deprbas_fed": 1.0, + "itc_fed_amount_deprbas_sta": 1.0, + "itc_fed_percent": [ + 30.0 + ], + "itc_fed_percent_deprbas_fed": 1.0, + "itc_fed_percent_deprbas_sta": 1.0, + "itc_fed_percent_maxvalue": [ + 1.0 + ], + "itc_sta_amount": [ + 0.0 + ], + "itc_sta_amount_deprbas_fed": 0.0, + "itc_sta_amount_deprbas_sta": 0.0, + "itc_sta_percent": [ + 0.0 + ], + "itc_sta_percent_deprbas_fed": 0.0, + "itc_sta_percent_deprbas_sta": 0.0, + "itc_sta_percent_maxvalue": [ + 1.0 + ], "land_area": 0.0, "land_area_capex": 1300.55, "land_area_value": 1300.55, @@ -195,12 +289,54 @@ 0.0 ], "om_production_escal": 0.0, + "pbi_fed_amount": [ + 0.0 + ], + "pbi_fed_escal": 0.0, + "pbi_fed_for_ds": 0.0, + "pbi_fed_tax_fed": 1.0, + "pbi_fed_tax_sta": 1.0, + "pbi_fed_term": 0.0, + "pbi_oth_amount": [ + 0.0 + ], + "pbi_oth_escal": 0.0, + "pbi_oth_for_ds": 0.0, + "pbi_oth_tax_fed": 1.0, + "pbi_oth_tax_sta": 1.0, + "pbi_oth_term": 0.0, + "pbi_sta_amount": [ + 0.0 + ], + "pbi_sta_escal": 0.0, + "pbi_sta_for_ds": 0.0, + "pbi_sta_tax_fed": 1.0, + "pbi_sta_tax_sta": 1.0, + "pbi_sta_term": 0.0, + "pbi_uti_amount": [ + 0.0 + ], + "pbi_uti_escal": 0.0, + "pbi_uti_for_ds": 0.0, + "pbi_uti_tax_fed": 1.0, + "pbi_uti_tax_sta": 1.0, + "pbi_uti_term": 0.0, "per_inverter": 0.03, "per_module": 0.37, "permitting_fixed": 0.0, "permitting_per_watt": 0.01, "permitting_percent": 0.0, "permitting_total": 2000000.0, + "ptc_fed_amount": [ + 0.0 + ], + "ptc_fed_escal": 0.0, + "ptc_fed_term": 10.0, + "ptc_sta_amount": [ + 0.0 + ], + "ptc_sta_escal": 0.0, + "ptc_sta_term": 10.0, "pv_capex_cost_choice": 0.0, "pv_land_area_is_shown": 0.0, "pvwatts.advanced.is_shown": 1.0, @@ -340,6 +476,30 @@ "bos_cost_per_kw": 357.0, "bos_cost_per_turbine": 0.0, "bos_cost_total": 32130000.0, + "cbi_fed_amount": 0.0, + "cbi_fed_deprbas_fed": 0.0, + "cbi_fed_deprbas_sta": 0.0, + "cbi_fed_maxvalue": 0.0, + "cbi_fed_tax_fed": 1.0, + "cbi_fed_tax_sta": 1.0, + "cbi_oth_amount": 0.0, + "cbi_oth_deprbas_fed": 0.0, + "cbi_oth_deprbas_sta": 0.0, + "cbi_oth_maxvalue": 0.0, + "cbi_oth_tax_fed": 1.0, + "cbi_oth_tax_sta": 1.0, + "cbi_sta_amount": 0.0, + "cbi_sta_deprbas_fed": 0.0, + "cbi_sta_deprbas_sta": 0.0, + "cbi_sta_maxvalue": 0.0, + "cbi_sta_tax_fed": 1.0, + "cbi_sta_tax_sta": 1.0, + "cbi_uti_amount": 0.0, + "cbi_uti_deprbas_fed": 0.0, + "cbi_uti_deprbas_sta": 0.0, + "cbi_uti_maxvalue": 0.0, + "cbi_uti_tax_fed": 1.0, + "cbi_uti_tax_sta": 1.0, "cols": 1.0, "degradation": [ 0.0 @@ -355,8 +515,78 @@ "env_loss_total": 0.0, "est_bos_cost": 0.0, "est_turbine_cost": 0.0, + "ibi_fed_amount": 0.0, + "ibi_fed_amount_deprbas_fed": 0.0, + "ibi_fed_amount_deprbas_sta": 0.0, + "ibi_fed_amount_tax_fed": 1.0, + "ibi_fed_amount_tax_sta": 1.0, + "ibi_fed_percent": 0.0, + "ibi_fed_percent_deprbas_fed": 0.0, + "ibi_fed_percent_deprbas_sta": 0.0, + "ibi_fed_percent_maxvalue": 0.0, + "ibi_fed_percent_tax_fed": 1.0, + "ibi_fed_percent_tax_sta": 1.0, + "ibi_oth_amount": 0.0, + "ibi_oth_amount_deprbas_fed": 0.0, + "ibi_oth_amount_deprbas_sta": 0.0, + "ibi_oth_amount_tax_fed": 1.0, + "ibi_oth_amount_tax_sta": 1.0, + "ibi_oth_percent": 0.0, + "ibi_oth_percent_deprbas_fed": 0.0, + "ibi_oth_percent_deprbas_sta": 0.0, + "ibi_oth_percent_maxvalue": 0.0, + "ibi_oth_percent_tax_fed": 1.0, + "ibi_oth_percent_tax_sta": 1.0, + "ibi_sta_amount": 0.0, + "ibi_sta_amount_deprbas_fed": 0.0, + "ibi_sta_amount_deprbas_sta": 0.0, + "ibi_sta_amount_tax_fed": 1.0, + "ibi_sta_amount_tax_sta": 1.0, + "ibi_sta_percent": 0.0, + "ibi_sta_percent_deprbas_fed": 0.0, + "ibi_sta_percent_deprbas_sta": 0.0, + "ibi_sta_percent_maxvalue": 0.0, + "ibi_sta_percent_tax_fed": 1.0, + "ibi_sta_percent_tax_sta": 1.0, + "ibi_uti_amount": 0.0, + "ibi_uti_amount_deprbas_fed": 0.0, + "ibi_uti_amount_deprbas_sta": 0.0, + "ibi_uti_amount_tax_fed": 1.0, + "ibi_uti_amount_tax_sta": 1.0, + "ibi_uti_percent": 0.0, + "ibi_uti_percent_deprbas_fed": 0.0, + "ibi_uti_percent_deprbas_sta": 0.0, + "ibi_uti_percent_maxvalue": 0.0, + "ibi_uti_percent_tax_fed": 1.0, + "ibi_uti_percent_tax_sta": 1.0, "inflation_rate": 2.5, "install_type": 0.0, + "itc_fed_amount": [ + 0.0 + ], + "itc_fed_amount_deprbas_fed": 1.0, + "itc_fed_amount_deprbas_sta": 1.0, + "itc_fed_percent": [ + 30.0 + ], + "itc_fed_percent_deprbas_fed": 1.0, + "itc_fed_percent_deprbas_sta": 1.0, + "itc_fed_percent_maxvalue": [ + 1.0 + ], + "itc_sta_amount": [ + 0.0 + ], + "itc_sta_amount_deprbas_fed": 0.0, + "itc_sta_amount_deprbas_sta": 0.0, + "itc_sta_percent": [ + 0.0 + ], + "itc_sta_percent_deprbas_fed": 0.0, + "itc_sta_percent_deprbas_sta": 0.0, + "itc_sta_percent_maxvalue": [ + 1.0 + ], "om_capacity": [ 43.0 ], @@ -374,6 +604,48 @@ "ops_load_loss": 0.0, "ops_loss_total": 0.0, "ops_strategies_loss": 0.0, + "pbi_fed_amount": [ + 0.0 + ], + "pbi_fed_escal": 0.0, + "pbi_fed_for_ds": 0.0, + "pbi_fed_tax_fed": 1.0, + "pbi_fed_tax_sta": 1.0, + "pbi_fed_term": 0.0, + "pbi_oth_amount": [ + 0.0 + ], + "pbi_oth_escal": 0.0, + "pbi_oth_for_ds": 0.0, + "pbi_oth_tax_fed": 1.0, + "pbi_oth_tax_sta": 1.0, + "pbi_oth_term": 0.0, + "pbi_sta_amount": [ + 0.0 + ], + "pbi_sta_escal": 0.0, + "pbi_sta_for_ds": 0.0, + "pbi_sta_tax_fed": 1.0, + "pbi_sta_tax_sta": 1.0, + "pbi_sta_term": 0.0, + "pbi_uti_amount": [ + 0.0 + ], + "pbi_uti_escal": 0.0, + "pbi_uti_for_ds": 0.0, + "pbi_uti_tax_fed": 1.0, + "pbi_uti_tax_sta": 1.0, + "pbi_uti_term": 0.0, + "ptc_fed_amount": [ + 0.0 + ], + "ptc_fed_escal": 0.0, + "ptc_fed_term": 10.0, + "ptc_sta_amount": [ + 0.0 + ], + "ptc_sta_escal": 0.0, + "ptc_sta_term": 10.0, "reference_capacity": 90000.0, "reference_number_turbines": 36.0, "reference_resource_file": "WY Southern-Flat Lands.srw", @@ -10269,6 +10541,30 @@ 104.0 ] ], + "cbi_fed_amount": 0.0, + "cbi_fed_deprbas_fed": 0.0, + "cbi_fed_deprbas_sta": 0.0, + "cbi_fed_maxvalue": 0.0, + "cbi_fed_tax_fed": 1.0, + "cbi_fed_tax_sta": 1.0, + "cbi_oth_amount": 0.0, + "cbi_oth_deprbas_fed": 0.0, + "cbi_oth_deprbas_sta": 0.0, + "cbi_oth_maxvalue": 0.0, + "cbi_oth_tax_fed": 1.0, + "cbi_oth_tax_sta": 1.0, + "cbi_sta_amount": 0.0, + "cbi_sta_deprbas_fed": 0.0, + "cbi_sta_deprbas_sta": 0.0, + "cbi_sta_maxvalue": 0.0, + "cbi_sta_tax_fed": 1.0, + "cbi_sta_tax_sta": 1.0, + "cbi_uti_amount": 0.0, + "cbi_uti_deprbas_fed": 0.0, + "cbi_uti_deprbas_sta": 0.0, + "cbi_uti_maxvalue": 0.0, + "cbi_uti_tax_fed": 1.0, + "cbi_uti_tax_sta": 1.0, "compute_as_cube": 1.0, "dispatch_manual_btm_discharge_to_grid": [ 0.0, @@ -10280,35 +10576,33 @@ ], "dispatch_manual_charge": [ 1.0, - 1.0, - 1.0, + 0.0, + 0.0, 0.0, 0.0, 0.0 ], "dispatch_manual_discharge": [ - 1.0, 0.0, 1.0, 0.0, 0.0, + 0.0, 0.0 ], "dispatch_manual_gridcharge": [ 0.0, - 1.0, + 0.0, 0.0, 0.0, 0.0, 0.0 ], "dispatch_manual_percent_discharge": [ - 50.0, 25.0, 0.0 ], "dispatch_manual_percent_gridcharge": [ - 100.0, 0.0 ], "dispatch_manual_sched": [ @@ -10330,10 +10624,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10356,10 +10650,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10382,10 +10676,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10408,10 +10702,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10434,10 +10728,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10460,10 +10754,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10486,10 +10780,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10512,10 +10806,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10538,10 +10832,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10564,10 +10858,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10590,10 +10884,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10616,10 +10910,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10644,10 +10938,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10670,10 +10964,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10696,10 +10990,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10722,10 +11016,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10748,10 +11042,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10774,10 +11068,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10800,10 +11094,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10826,10 +11120,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10852,10 +11146,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10878,10 +11172,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10904,10 +11198,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -10930,10 +11224,10 @@ 1.0, 1.0, 1.0, - 1.0, - 1.0, - 1.0, - 1.0, + 2.0, + 2.0, + 2.0, + 2.0, 1.0, 1.0, 1.0 @@ -11598,7 +11892,77 @@ "genericsys.cost.sales_tax.total": 4403700.0, "genericsys.cost.sales_tax.value": 5.0, "grid_interconnection_limit_kwac": 20000.0, + "ibi_fed_amount": 0.0, + "ibi_fed_amount_deprbas_fed": 0.0, + "ibi_fed_amount_deprbas_sta": 0.0, + "ibi_fed_amount_tax_fed": 1.0, + "ibi_fed_amount_tax_sta": 1.0, + "ibi_fed_percent": 0.0, + "ibi_fed_percent_deprbas_fed": 0.0, + "ibi_fed_percent_deprbas_sta": 0.0, + "ibi_fed_percent_maxvalue": 0.0, + "ibi_fed_percent_tax_fed": 1.0, + "ibi_fed_percent_tax_sta": 1.0, + "ibi_oth_amount": 0.0, + "ibi_oth_amount_deprbas_fed": 0.0, + "ibi_oth_amount_deprbas_sta": 0.0, + "ibi_oth_amount_tax_fed": 1.0, + "ibi_oth_amount_tax_sta": 1.0, + "ibi_oth_percent": 0.0, + "ibi_oth_percent_deprbas_fed": 0.0, + "ibi_oth_percent_deprbas_sta": 0.0, + "ibi_oth_percent_maxvalue": 0.0, + "ibi_oth_percent_tax_fed": 1.0, + "ibi_oth_percent_tax_sta": 1.0, + "ibi_sta_amount": 0.0, + "ibi_sta_amount_deprbas_fed": 0.0, + "ibi_sta_amount_deprbas_sta": 0.0, + "ibi_sta_amount_tax_fed": 1.0, + "ibi_sta_amount_tax_sta": 1.0, + "ibi_sta_percent": 0.0, + "ibi_sta_percent_deprbas_fed": 0.0, + "ibi_sta_percent_deprbas_sta": 0.0, + "ibi_sta_percent_maxvalue": 0.0, + "ibi_sta_percent_tax_fed": 1.0, + "ibi_sta_percent_tax_sta": 1.0, + "ibi_uti_amount": 0.0, + "ibi_uti_amount_deprbas_fed": 0.0, + "ibi_uti_amount_deprbas_sta": 0.0, + "ibi_uti_amount_tax_fed": 1.0, + "ibi_uti_amount_tax_sta": 1.0, + "ibi_uti_percent": 0.0, + "ibi_uti_percent_deprbas_fed": 0.0, + "ibi_uti_percent_deprbas_sta": 0.0, + "ibi_uti_percent_maxvalue": 0.0, + "ibi_uti_percent_tax_fed": 1.0, + "ibi_uti_percent_tax_sta": 1.0, "inflation_rate": 2.5, + "itc_fed_amount": [ + 0.0 + ], + "itc_fed_amount_deprbas_fed": 1.0, + "itc_fed_amount_deprbas_sta": 1.0, + "itc_fed_percent": [ + 30.0 + ], + "itc_fed_percent_deprbas_fed": 1.0, + "itc_fed_percent_deprbas_sta": 1.0, + "itc_fed_percent_maxvalue": [ + 1.0 + ], + "itc_sta_amount": [ + 0.0 + ], + "itc_sta_amount_deprbas_fed": 0.0, + "itc_sta_amount_deprbas_sta": 0.0, + "itc_sta_percent": [ + 0.0 + ], + "itc_sta_percent_deprbas_fed": 0.0, + "itc_sta_percent_deprbas_sta": 0.0, + "itc_sta_percent_maxvalue": [ + 1.0 + ], "om_batt_capacity_cost": [ 10.0 ], @@ -11616,21 +11980,63 @@ "om_fixed_escal": 0.0, "om_production_escal": 0.0, "om_replacement_cost_escal": 0.0, + "pbi_fed_amount": [ + 0.0 + ], + "pbi_fed_escal": 0.0, + "pbi_fed_for_ds": 0.0, + "pbi_fed_tax_fed": 1.0, + "pbi_fed_tax_sta": 1.0, + "pbi_fed_term": 0.0, + "pbi_oth_amount": [ + 0.0 + ], + "pbi_oth_escal": 0.0, + "pbi_oth_for_ds": 0.0, + "pbi_oth_tax_fed": 1.0, + "pbi_oth_tax_sta": 1.0, + "pbi_oth_term": 0.0, + "pbi_sta_amount": [ + 0.0 + ], + "pbi_sta_escal": 0.0, + "pbi_sta_for_ds": 0.0, + "pbi_sta_tax_fed": 1.0, + "pbi_sta_tax_sta": 1.0, + "pbi_sta_term": 0.0, + "pbi_uti_amount": [ + 0.0 + ], + "pbi_uti_escal": 0.0, + "pbi_uti_for_ds": 0.0, + "pbi_uti_tax_fed": 1.0, + "pbi_uti_tax_sta": 1.0, + "pbi_uti_term": 0.0, "ppa_escalation": 1.0, "ppa_multiplier_model": 0.0, "ppa_price_input": [ 0.0 ], + "ptc_fed_amount": [ + 0.0 + ], + "ptc_fed_escal": 0.0, + "ptc_fed_term": 10.0, + "ptc_sta_amount": [ + 0.0 + ], + "ptc_sta_escal": 0.0, + "ptc_sta_term": 10.0, "pv.storage.p1.charge": 1.0, - "pv.storage.p1.discharge": 1.0, + "pv.storage.p1.discharge": 0.0, "pv.storage.p1.dischargetogrid": 0.0, "pv.storage.p1.gridcharge": 0.0, - "pv.storage.p2.charge": 1.0, - "pv.storage.p2.discharge": 0.0, + "pv.storage.p2.charge": 0.0, + "pv.storage.p2.discharge": 1.0, "pv.storage.p2.dischargetogrid": 0.0, - "pv.storage.p2.gridcharge": 1.0, - "pv.storage.p3.charge": 1.0, - "pv.storage.p3.discharge": 1.0, + "pv.storage.p2.gridcharge": 0.0, + "pv.storage.p3.charge": 0.0, + "pv.storage.p3.discharge": 0.0, "pv.storage.p3.dischargetogrid": 0.0, "pv.storage.p3.gridcharge": 0.0, "pv.storage.p4.charge": 0.0, diff --git a/deploy/runtime/startup.lk b/deploy/runtime/startup.lk index 026ff9c15f..54a8b616fc 100644 --- a/deploy/runtime/startup.lk +++ b/deploy/runtime/startup.lk @@ -2535,7 +2535,7 @@ sethybridvariabledependencies([ { 'IndependentVartableIndex' = 3,'IndependentVariableName' = 'dispatch_sched_weekday', 'DependentVartableIndex' = 2,'DependentVariableName' = 'dispatch_sched_weekday'}, // battery dispatch { 'IndependentVartableIndex' = 3,'IndependentVariableName' = 'dispatch_sched_weekend', 'DependentVartableIndex' = 2,'DependentVariableName' = 'dispatch_sched_weekend'}, // battery dispatch { 'IndependentVartableIndex' = 3,'IndependentVariableName' = 'grid_interconnection_limit_kwac', 'DependentVartableIndex' = 2,'DependentVariableName' = 'grid_interconnection_limit_kwac'}, // battery dispatch -{ 'IndependentVartableIndex' = 2,'IndependentVariableName' = 'batt_replacement_option', 'DependentVartableIndex' = 3,'DependentVariableName' = 'batt_replacement_option'}, // battery dispatch +{ 'IndependentVartableIndex' = 2,'IndependentVariableName' = 'batt_replacement_option', 'DependentVartableIndex' = 3,'DependentVariableName' = 'batt_replacement_option'}, // battery replacements { 'IndependentVartableIndex' = 0,'IndependentVariableName' = 'system_capacity', 'DependentVartableIndex' = 2,'DependentVariableName' = 'pv_system_capacity'}, // pv smoothing dispatch { 'IndependentVartableIndex' = 0,'IndependentVariableName' = 'ui_step_minutes', 'DependentVartableIndex' = 2,'DependentVariableName' = 'ui_step_minutes'}, // pv smoothing dispatch { 'IndependentVartableIndex' = 0,'IndependentVariableName' = 'system_capacity', 'DependentVartableIndex' = 3,'DependentVariableName' = 'pv_system_capacity'}, @@ -2547,23 +2547,26 @@ sethybridvariabledependencies([ ]); addpage([['Hybrid System']], {'sidebar'='Hybrid System', 'help'='hybrid_system'}); // pv -addpage( [[ 'Solar Resource Data' ]], { 'sidebar'='Location and Resource', 'help'='pv_location_and_resource', 'bin_name'='PVWatts' } ); -addpage( [[ 'PVWatts', {'name'='PV Land Area', 'caption' = 'Land Area', 'collapsible'=true, 'collapsible_var'='pv_land_area_is_shown'}, {'name'='PVWatts Advanced Inputs', 'caption' = 'Advanced Inputs', 'collapsible'=true, 'collapsible_var'='pvwatts.advanced.is_shown'} ]], { 'sidebar'='System Design', 'help'='pvwatts_system_design', 'bin_name'='PVWatts' } ); +addpage( [[ 'Solar Resource Data' ]], { 'sidebar'='PV Location and Resource', 'help'='pv_location_and_resource', 'bin_name'='PVWatts' } ); +addpage( [[ 'PVWatts', {'name'='PV Land Area', 'caption' = 'Land Area', 'collapsible'=true, 'collapsible_var'='pv_land_area_is_shown'}, {'name'='PVWatts Advanced Inputs', 'caption' = 'Advanced Inputs', 'collapsible'=true, 'collapsible_var'='pvwatts.advanced.is_shown'} ]], { 'sidebar'='PV System Design', 'help'='pvwatts_system_design', 'bin_name'='PVWatts' } ); addpage( [[ 'Degradation AC Single Year'], ], { 'sidebar'='PV Degradation','help'='degradation', 'bin_name'='PVWatts' } ); addpage( [[ 'PV Capital Costs' ], [ 'PV Capital Cost Curve', 'PV Capex Table', 'PV Capex Table AC', 'PV Capex Table Land' ]], { 'sidebar'='PV Installation Costs', 'exclusive_var'='pv_capex_cost_choice','help'='cc_pv', 'bin_name'='PVWatts'} ); addpage( [[ 'Operating Costs', 'Operating Costs Land Lease' ]], {'sidebar' = 'PV Operating Costs', 'help'='oc_operating', 'bin_name'='PVWatts'} ); +addpage( [[ 'Financial Tax Credits','Financial Cash Incentives']], { 'sidebar'='PV Incentives', 'help'='incentives', 'bin_name'='PVWatts' } ); // wind addpage( [[ 'Wind Resource File'], [ 'Wind Speed Weibull Distribution'], [ 'Wind Resource Probability Table']], { 'sidebar'='Wind Resource', 'exclusive_var'='wind_resource_model_choice', 'help'='wind_resource', 'bin_name'='Wind' } ); addpage( [[ 'Wind Turbine Design' ]], { 'sidebar'='Wind Turbine', 'help'='wind_turbine', 'bin_name'='Wind' } ); addpage( [[ 'Wind Farm Specifications' ]], { 'sidebar'='Wind Farm', 'help'='wind_farm', 'bin_name'='Wind' } ); -addpage( [[ 'Wind Losses' ]], { 'sidebar'='Losses', 'help'='wind_losses', 'bin_name'='Wind'} ); +addpage( [[ 'Wind Losses' ]], { 'sidebar'='Wind Losses', 'help'='wind_losses', 'bin_name'='Wind'} ); addpage( [[ 'Degradation AC Single Year'] ], { 'sidebar'='Wind Degradation','help'='lifetime', 'bin_name'='Wind'} ); addpage( [[ 'Wind Farm Costs']], { 'sidebar'='Wind Installation Costs', 'help'='cc_wind', 'bin_name'='Wind' } ); addpage( [[ 'Operating Costs' ]], {'sidebar' = 'Wind Operating Costs', 'help'='oc_operating', 'bin_name'='Wind'} ); +addpage( [[ 'Financial Tax Credits','Financial Cash Incentives']], { 'sidebar'='Wind Incentives', 'help'='incentives', 'bin_name'='Wind' } ); // battery setup_hybrid_battery_pages(FOM); 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' } ); +addpage( [[ 'Financial Tax Credits','Financial Cash Incentives']], { 'sidebar'='Battery Incentives', 'help'='incentives', 'bin_name'='Battery' } ); // single owner addpage([['Hybrid Costs']], {'sidebar'='Hybrid System Costs', 'help'='hybrid_system_costs'}); @@ -2600,23 +2603,26 @@ sethybridvariabledependencies([ { 'IndependentVartableIndex' = 2,'IndependentVariableName' = 'total_installed_cost', 'DependentVartableIndex' = 3,'DependentVariableName' = 'battery_total_installed_cost'} ]); // pv -addpage( [[ 'Solar Resource Data' ]], { 'sidebar'='Location and Resource', 'help'='pv_location_and_resource', 'bin_name'='PVWatts' } ); -addpage( [[ 'PVWatts', {'name'='PV Land Area', 'caption' = 'Land Area', 'collapsible'=true, 'collapsible_var'='pv_land_area_is_shown'}, {'name'='PVWatts Advanced Inputs', 'caption' = 'Advanced Inputs', 'collapsible'=true, 'collapsible_var'='pvwatts.advanced.is_shown'} ]], { 'sidebar'='System Design', 'help'='pvwatts_system_design', 'bin_name'='PVWatts' } ); +addpage( [[ 'Solar Resource Data' ]], { 'sidebar'='PV Location and Resource', 'help'='pv_location_and_resource', 'bin_name'='PVWatts' } ); +addpage( [[ 'PVWatts', {'name'='PV Land Area', 'caption' = 'Land Area', 'collapsible'=true, 'collapsible_var'='pv_land_area_is_shown'}, {'name'='PVWatts Advanced Inputs', 'caption' = 'Advanced Inputs', 'collapsible'=true, 'collapsible_var'='pvwatts.advanced.is_shown'} ]], { 'sidebar'='PV System Design', 'help'='pvwatts_system_design', 'bin_name'='PVWatts' } ); addpage( [[ 'Degradation AC Single Year'], ], { 'sidebar'='PV Degradation','help'='degradation', 'bin_name'='PVWatts' } ); addpage( [[ 'PV Capital Costs' ], [ 'PV Capital Cost Curve', 'PV Capex Table', 'PV Capex Table AC', 'PV Capex Table Land' ]], { 'sidebar'='PV Installation Costs', 'exclusive_var'='pv_capex_cost_choice','help'='cc_pv', 'bin_name'='PVWatts'} ); addpage( [[ 'Operating Costs', 'Operating Costs Land Lease' ]], {'sidebar' = 'PV Operating Costs', 'help'='oc_operating', 'bin_name'='PVWatts'} ); +addpage( [[ 'Financial Tax Credits','Financial Cash Incentives']], { 'sidebar'='PV Incentives', 'help'='incentives', 'bin_name'='PVWatts' } ); // wind addpage( [[ 'Wind Resource File'], [ 'Wind Speed Weibull Distribution'], [ 'Wind Resource Probability Table']], { 'sidebar'='Wind Resource', 'exclusive_var'='wind_resource_model_choice', 'help'='wind_resource', 'bin_name'='Wind' } ); addpage( [[ 'Wind Turbine Design' ]], { 'sidebar'='Wind Turbine', 'help'='wind_turbine', 'bin_name'='Wind' } ); addpage( [[ 'Wind Farm Specifications' ]], { 'sidebar'='Wind Farm', 'help'='wind_farm', 'bin_name'='Wind' } ); -addpage( [[ 'Wind Losses' ]], { 'sidebar'='Losses', 'help'='wind_losses', 'bin_name'='Wind'} ); +addpage( [[ 'Wind Losses' ]], { 'sidebar'='Wind Losses', 'help'='wind_losses', 'bin_name'='Wind'} ); addpage( [[ 'Degradation AC Single Year'] ], { 'sidebar'='Wind Degradation','help'='lifetime', 'bin_name'='Wind'} ); addpage( [[ 'Wind Farm Costs']], { 'sidebar'='Wind Installation Costs', 'help'='cc_wind', 'bin_name'='Wind' } ); addpage( [[ 'Operating Costs' ]], {'sidebar' = 'Wind Operating Costs', 'help'='oc_operating', 'bin_name'='Wind'} ); +addpage( [[ 'Financial Tax Credits','Financial Cash Incentives']], { 'sidebar'='Wind Incentives', 'help'='incentives', 'bin_name'='Wind' } ); // battery setup_hybrid_battery_pages(BTM); 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' } ); +addpage( [[ 'Financial Tax Credits','Financial Cash Incentives']], { 'sidebar'='Battery Incentives', 'help'='incentives', 'bin_name'='Battery' } ); // host developer setup_host_developer_pages(LOAD_SIMPLE); addpage([['Hybrid Summary']], {'sidebar'='Hybrid Summary', 'help'='hybrid_summary'}); diff --git a/deploy/runtime/ui/Financial Solution Mode Single Owner.json b/deploy/runtime/ui/Financial Solution Mode Single Owner.json index ebf903fd81..d051adbc97 100644 --- a/deploy/runtime/ui/Financial Solution Mode Single Owner.json +++ b/deploy/runtime/ui/Financial Solution Mode Single Owner.json @@ -719,6 +719,20 @@ " enable( 'ppa_price_input', !is_specify_irr );", "\tshow_escalation = (#${ppa_price_input} < 2);", "\tenable(\"ppa_escalation\",(show_escalation || is_specify_irr));", - "}" + "}\r", + "\r", + "\r", + "function check_auto_ppa()\r", + "{\r", + "\tdispatch = value('batt_dispatch_choice_ui');\r", + "\tif (dispatch == 0 && value('en_batt') != 0 && financing() != \"Merchant Plant\") \r", + "\t{\r", + "\t\tppa_mode = value('ppa_soln_mode');\r", + "\t\tif (ppa_mode == 0) {\r", + "\t\t\tmsgbox('Specify IRR Target not available for automated dispatch.\\nThe automated battery dispatch options require the Specify PPA Price option on the Revenue or Financial Parameters page.\\n\\nPlease change Specify IRR Target to Specify PPA Price and specify a PPA price and optional escalation rate to use the Automated Dispatch options.');\r", + "\t\t}\r", + "\t}\r", + "}\r", + "" ] } \ No newline at end of file diff --git a/src/results.cpp b/src/results.cpp index f94b102bf1..f221465bd5 100644 --- a/src/results.cpp +++ b/src/results.cpp @@ -1082,7 +1082,6 @@ void ResultsViewer::Setup(Simulation* sim) // setup graphs m_graphViewer->Setup(m_sim); - // TODO: remove this after adding for other technologies... // TODO: update GetCurrentContext() when adding for other technologies to correctly assign help context id if (CaseWindow* cw = static_cast(this->GetParent()->GetParent())) @@ -1147,7 +1146,7 @@ void ResultsViewer::Setup(Simulation* sim) ShowPage(7); ShowPage(9); } - + if (cw->GetCase()->GetConfiguration()->TechnologyFullName == "MEwave" && cw->GetCase()->GetConfiguration()->Financing != "Single Owner") { VarValue* wave_resource_model_choice = m_sim->GetValue("wave_resource_model_choice"); @@ -1227,7 +1226,6 @@ void ResultsViewer::Setup(Simulation* sim) m_spatialLayout->Add(new AutoGraphCtrl(m_spatialLayout, m_sim, g3)); } } - m_tables->Setup(m_sim); // build cashflow diff --git a/src/simulation.cpp b/src/simulation.cpp index cd5b6c2104..bef0fb8887 100644 --- a/src/simulation.cpp +++ b/src/simulation.cpp @@ -314,7 +314,7 @@ VarValue *Simulation::GetValue( const wxString &name ) return vv; else { bool found = false; - for (int i = m_inputs.size() - 1; i>0 && !found; i--) { + for (int i = m_inputs.size() - 1; i>=0 && !found; i--) { if (vv = GetInput(name, i)) found = true; } @@ -329,7 +329,7 @@ wxString Simulation::GetLabel( const wxString &var ) else { bool found = false; wxString label = wxEmptyString; - for (int i = m_inputs.size() - 1; i > 0 && !found; i--) { + for (int i = m_inputs.size() - 1; i >= 0 && !found; i--) { label = m_case->Variables(i).Label(var); found = (label.Left(11) != " 0 && !found; i--) { + for (int i = m_inputs.size() - 1; i >= 0 && !found; i--) { units = m_case->Variables(i).Units(var); found = (units != wxEmptyString); } @@ -1192,8 +1192,13 @@ bool Simulation::InvokeWithHandler(ISimulationHandler *ih, wxString folder) wxString label(ssc_info_label(p_inf)); wxString units(ssc_info_units(p_inf)); wxString ui_hint(ssc_info_uihint(p_inf)); - wxString sam_output_name = prepend_name + name; // TODO: hybrid processing - label = prepend_name + " " + label; + wxString sam_output_name = prepend_name + name; // hybrid processing + if (prepend_name.Lower() != label.Left(prepend_name.length()).Lower()) { // check for "Battery Battery..." + if (label.Left(2) == "AC" || label.Left(2) == "DC") // e.g. PVWatts AC..." + label = prepend_name + " " + label; + else + label = prepend_name + " " + label.Left(1).Lower() + label.Right(label.length()-1); + } if (/*(var_type == SSC_OUTPUT || var_type == SSC_INOUT) &&*/ data_type == SSC_NUMBER) {