Battery

Detailed battery storage model

PySAM.Battery.default(config) Battery

Load defaults for the configuration config. Available configurations are:

  • “FuelCellCommercial”

  • “FuelCellSingleOwner”

  • “GenericBatteryAllEquityPartnershipFlip”

  • “GenericBatteryCommercial”

  • “GenericBatteryHostDeveloper”

  • “GenericBatteryLeveragedPartnershipFlip”

  • “GenericBatteryMerchantPlant”

  • “GenericBatteryResidential”

  • “GenericBatterySaleLeaseback”

  • “GenericBatterySingleOwner”

  • “GenericBatteryThirdParty”

  • “GenericPVWattsWindFuelCellBatteryHybridHostDeveloper”

  • “GenericPVWattsWindFuelCellBatteryHybridSingleOwner”

  • “MEwaveBatterySingleOwner”

  • “PVWattsWindBatteryHybridHostDeveloper”

  • “PVWattsWindBatteryHybridSingleOwner”

  • “PVWattsWindFuelCellBatteryHybridHostDeveloper”

  • “PVWattsWindFuelCellBatteryHybridSingleOwner”

  • “PhotovoltaicWindBatteryHybridHostDeveloper”

  • “PhotovoltaicWindBatteryHybridSingleOwner”

  • “StandaloneBatteryAllEquityPartnershipFlip”

  • “StandaloneBatteryCommercial”

  • “StandaloneBatteryHostDeveloper”

  • “StandaloneBatteryLeveragedPartnershipFlip”

  • “StandaloneBatteryMerchantPlant”

  • “StandaloneBatteryResidential”

  • “StandaloneBatterySaleLeaseback”

  • “StandaloneBatterySingleOwner”

  • “StandaloneBatteryThirdParty”

Note

Some inputs do not have default values and may be assigned a value from the variable’s Required attribute. See variable attribute descriptions below.

PySAM.Battery.from_existing(data, optional config) Battery

Share data with an existing PySAM class. If optional config is a valid configuration name, load the module’s defaults for that configuration.

PySAM.Battery.new() Battery
PySAM.Battery.wrap(ssc_data_t) Battery

Load data from a PySSC object.

Warning

Do not call PySSC.data_free on the ssc_data_t provided to wrap()

Battery is a wrapper for the SSC compute module cmod_battery.cpp

Interdependent Variables

The variables listed below are interdependent with other variables. If you change the value of one of these variables, you may need to change values of other variables. The SAM user interface manages these interdependent variables, but in PySAM, it is up to you change the value of all interdependent variables so they are consistent. See Interdependent Variables for examples and details.

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

  • batt_Qexp

  • batt_Qfull

  • batt_Qfull_flow

  • batt_Qnom

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_computed_bank_capacity

  • batt_computed_series

  • batt_computed_strings

  • batt_current_charge_max

  • batt_current_choice

  • batt_current_discharge_max

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

  • batt_dispatch_load_forecast_choice

  • batt_load_ac_forecast

  • batt_load_ac_forecast_escalation

  • batt_mass

  • batt_power_charge_max_kwac

  • batt_power_charge_max_kwdc

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

  • batt_room_temperature_celsius

  • batt_surface_area

  • dispatch_manual_discharge

  • dispatch_manual_gridcharge

  • dispatch_manual_percent_discharge

  • dispatch_manual_percent_gridcharge

  • grid_curtailment

  • load_escalation

Functions

class PySAM.Battery.Battery

This class contains all the variable information for running a simulation. Variables are grouped together in the subclasses as properties. If property assignments are the wrong type, an error is thrown.

Reopt_size_standalone_battery_post()

Given a PV system with Utilityrate5 parameters, get the optimal battery size. Maps SAM compute module inputs to those of the ReOpt API: Pvsamv1 model linked with Battery, Utilityrate5, with Cashloan optional.

For more information on which PySAM variables are used, see: https://github.com/NREL/ssc/blob/develop/ssc/cmod_battery_eqns.h

For an example, see the ‘Examples’ readthedocs page.

assign(dict) None

Assign attributes from nested dictionary, except for Outputs

nested_dict = { 'Simulation': { var: val, ...}, ...}

execute(int verbosity) None

Execute simulation with verbosity level 0 (default) or 1

export() dict

Export attributes into nested dictionary

get_data_ptr() Pointer

Get ssc_data_t pointer

replace(dict) None

Replace attributes from nested dictionary, except for Outputs. Unassigns all values in each Group then assigns from the input dict.

nested_dict = { 'Simulation': { var: val, ...}, ...}

unassign(name) None

Unassign a value in any of the variable groups.

value(name, optional value) None | float | dict | sequence | str

Get or set by name a value in any of the variable groups.

Simulation Group

class PySAM.Battery.Battery.Simulation
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

Simulation_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

Simulation_vals = { var: val, ...}

percent_complete

Estimated simulation status [%]

INOUT: This variable is both an input and an output to the compute module.

Type:

float

Lifetime Group

class PySAM.Battery.Battery.Lifetime
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

Lifetime_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

Lifetime_vals = { var: val, ...}

analysis_period

Lifetime analysis period [years]

Info: The number of years in the simulation

Required: Required if system_use_lifetime_output=1

Type:

float

inflation_rate

Inflation rate [%]

Constraints: MIN=-99

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

system_use_lifetime_output

Lifetime simulation [0/1]

Options: 0=SingleYearRepeated,1=RunEveryYear

Constraints: BOOLEAN

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

BatterySystem Group

class PySAM.Battery.Battery.BatterySystem
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

BatterySystem_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

BatterySystem_vals = { var: val, ...}

batt_ac_dc_efficiency

Inverter AC to battery DC efficiency

The value of the following variables depends on batt_ac_dc_efficiency:

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

  • batt_Qexp

  • batt_Qfull_flow

  • batt_Qnom

  • batt_computed_bank_capacity

  • batt_computed_series

  • batt_computed_strings

  • batt_current_charge_max

  • batt_current_discharge_max

  • batt_mass

  • batt_power_charge_max_kwac

  • batt_power_charge_max_kwdc

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

  • batt_surface_area

Type:

float

batt_ac_or_dc

Battery interconnection (AC or DC)

Options: 0=DC_Connected,1=AC_Connected

The value of the following variables depends on batt_ac_or_dc:

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

  • batt_Qexp

  • batt_Qfull_flow

  • batt_Qnom

  • batt_computed_bank_capacity

  • batt_computed_series

  • batt_computed_strings

  • batt_current_charge_max

  • batt_current_discharge_max

  • batt_mass

  • batt_power_charge_max_kwac

  • batt_power_charge_max_kwdc

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

  • batt_surface_area

Type:

float

batt_computed_bank_capacity

Battery computed bank capacity [kWh]

INOUT: This variable is both an input and an output to the compute module.

The value of the following variables depends on batt_computed_bank_capacity:

  • batt_Qexp

  • batt_Qfull_flow

  • batt_Qnom

  • batt_mass

  • batt_surface_area

The value of batt_computed_bank_capacity depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

batt_computed_series

Battery number of cells in series

INOUT: This variable is both an input and an output to the compute module.

The value of batt_computed_series depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

batt_computed_strings

Battery number of strings of cells

INOUT: This variable is both an input and an output to the compute module.

The value of the following variables depends on batt_computed_strings:

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

The value of batt_computed_strings depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

batt_current_charge_max

Battery maximum charge current [A]

INOUT: This variable is both an input and an output to the compute module.

The value of batt_current_charge_max depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

batt_current_choice

Limit cells by current or power

The value of the following variables depends on batt_current_choice:

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

  • batt_Qexp

  • batt_Qfull_flow

  • batt_Qnom

  • batt_computed_bank_capacity

  • batt_computed_series

  • batt_computed_strings

  • batt_current_charge_max

  • batt_current_discharge_max

  • batt_mass

  • batt_power_charge_max_kwac

  • batt_power_charge_max_kwdc

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

  • batt_surface_area

Type:

float

batt_current_discharge_max

Battery maximum discharge current [A]

INOUT: This variable is both an input and an output to the compute module.

The value of batt_current_discharge_max depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

batt_dc_ac_efficiency

Battery DC to AC efficiency

The value of the following variables depends on batt_dc_ac_efficiency:

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

  • batt_Qexp

  • batt_Qfull_flow

  • batt_Qnom

  • batt_computed_bank_capacity

  • batt_computed_series

  • batt_computed_strings

  • batt_current_charge_max

  • batt_current_discharge_max

  • batt_mass

  • batt_power_charge_max_kwac

  • batt_power_charge_max_kwdc

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

  • batt_surface_area

Type:

float

batt_dc_dc_efficiency

System DC to battery DC efficiency

The value of the following variables depends on batt_dc_dc_efficiency:

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

  • batt_Qexp

  • batt_Qfull_flow

  • batt_Qnom

  • batt_computed_bank_capacity

  • batt_computed_series

  • batt_computed_strings

  • batt_current_charge_max

  • batt_current_discharge_max

  • batt_mass

  • batt_power_charge_max_kwac

  • batt_power_charge_max_kwdc

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

  • batt_surface_area

Type:

float

batt_inverter_efficiency_cutoff

Inverter efficiency at which to cut battery charge or discharge off [%]

Type:

float

batt_loss_choice

Loss power input option [0/1]

Options: 0=Monthly,1=TimeSeries

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

batt_losses

Battery system losses at each timestep (kW DC for DC connected, AC for AC connected) [kW]

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

sequence

batt_losses_charging

Battery system losses when charging (kW DC for DC connected, AC for AC connected) [kW]

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

sequence

batt_losses_discharging

Battery system losses when discharging (kW DC for DC connected, AC for AC connected) [kW]

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

sequence

batt_losses_idle

Battery system losses when idle (kW DC for DC connected, AC for AC connected) [kW]

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

sequence

batt_mass

Battery mass [kg]

The value of batt_mass depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_computed_bank_capacity

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

batt_meter_position

Position of battery relative to electric meter

Options: 0=BehindTheMeter,1=FrontOfMeter

Type:

float

batt_power_charge_max_kwac

Battery maximum charge power (AC) [kWac]

INOUT: This variable is both an input and an output to the compute module.

The value of batt_power_charge_max_kwac depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

batt_power_charge_max_kwdc

Battery maximum charge power (DC) [kWdc]

INOUT: This variable is both an input and an output to the compute module.

The value of batt_power_charge_max_kwdc depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

batt_power_discharge_max_kwac

Battery maximum discharge power (AC) [kWac]

INOUT: This variable is both an input and an output to the compute module.

The value of batt_power_discharge_max_kwac depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

batt_power_discharge_max_kwdc

Battery maximum discharge power (DC) [kWdc]

INOUT: This variable is both an input and an output to the compute module.

The value of batt_power_discharge_max_kwdc depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

batt_replacement_capacity

Capacity degradation at which to replace battery [%]

Type:

float

batt_replacement_option

Enable battery replacement? [0=none,1=capacity based,2=user schedule]

Constraints: INTEGER,MIN=0,MAX=2

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

batt_replacement_schedule_percent

Percentage of battery capacity to replace in each year [%]

Options: length <= analysis_period

Required: Required if batt_replacement_option=2

Type:

sequence

batt_surface_area

Battery surface area [m^2]

The value of batt_surface_area depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_computed_bank_capacity

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

en_batt

Enable battery storage model [0/1]

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

en_standalone_batt

Enable standalone battery storage model [0/1]

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

en_wave_batt

Enable wave battery storage model [0/1]

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

om_replacement_cost1

Cost to replace battery per kWh [$/kWh]

Type:

sequence

SystemOutput Group

class PySAM.Battery.Battery.SystemOutput
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

SystemOutput_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

SystemOutput_vals = { var: val, ...}

annual_energy

Annual Energy [kWh]

INOUT: This variable is both an input and an output to the compute module.

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

capacity_factor

Capacity factor [%]

INOUT: This variable is both an input and an output to the compute module.

Type:

float

energy_hourly_kW

Power output of array [kW]

Info: Lifetime system generation

INOUT: This variable is both an input and an output to the compute module.

Required: Required if en_wave_batt=1

Type:

sequence

gen

System power generated [kW]

INOUT: This variable is both an input and an output to the compute module.

Type:

sequence

Load Group

class PySAM.Battery.Battery.Load
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

Load_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

Load_vals = { var: val, ...}

crit_load

Critical electricity load (year 1) [kW]

Type:

sequence

crit_load_escalation

Annual critical load escalation [%/year]

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

sequence

grid_outage

Grid outage in this time step [0/1]

Options: 0=GridAvailable,1=GridUnavailable,Length=load

Type:

sequence

load

Electricity load (year 1) [kW]

The value of the following variables depends on load:

  • batt_room_temperature_celsius

Type:

sequence

load_escalation

Annual load escalation [%/year]

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

The value of the following variables depends on load_escalation:

  • batt_load_ac_forecast_escalation

Type:

sequence

run_resiliency_calcs

Enable resilence calculations for every timestep [0/1]

Options: 0=DisableCalcs,1=EnableCalcs

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

BatteryCell Group

class PySAM.Battery.Battery.BatteryCell
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

BatteryCell_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

BatteryCell_vals = { var: val, ...}

LeadAcid_q10_computed

Capacity at 10-hour discharge rate [Ah]

The value of LeadAcid_q10_computed depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_computed_strings

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

LeadAcid_q20_computed

Capacity at 20-hour discharge rate [Ah]

The value of LeadAcid_q20_computed depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_computed_strings

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

LeadAcid_qn_computed

Capacity at discharge rate for n-hour rate [Ah]

The value of LeadAcid_qn_computed depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_computed_strings

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

LeadAcid_tn

Time to discharge [h]

Type:

float

batt_C_rate

Rate at which voltage vs. capacity curve input

Type:

float

batt_Cp

Battery specific heat capacity [J/KgK]

Type:

float

batt_Qexp

Cell capacity at end of exponential zone [Ah]

The value of batt_Qexp depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_computed_bank_capacity

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

batt_Qfull

Fully charged cell capacity [Ah]

The value of the following variables depends on batt_Qfull:

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

  • batt_Qexp

  • batt_Qfull_flow

  • batt_Qnom

  • batt_computed_bank_capacity

  • batt_computed_series

  • batt_computed_strings

  • batt_current_charge_max

  • batt_current_discharge_max

  • batt_mass

  • batt_power_charge_max_kwac

  • batt_power_charge_max_kwdc

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

  • batt_surface_area

Type:

float

batt_Qfull_flow

Fully charged flow battery capacity [Ah]

The value of batt_Qfull_flow depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_computed_bank_capacity

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

batt_Qnom

Cell capacity at end of nominal zone [Ah]

The value of batt_Qnom depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_computed_bank_capacity

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

batt_Vcut

Cutoff voltage for battery rated capacity [V]

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

batt_Vexp

Cell voltage at end of exponential zone [V]

Type:

float

batt_Vfull

Fully charged cell voltage [V]

Type:

float

batt_Vnom

Cell voltage at end of nominal zone [V]

Type:

float

batt_Vnom_default

Default nominal cell voltage [V]

The value of the following variables depends on batt_Vnom_default:

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

  • batt_Qexp

  • batt_Qfull_flow

  • batt_Qnom

  • batt_computed_bank_capacity

  • batt_computed_series

  • batt_computed_strings

  • batt_current_charge_max

  • batt_current_discharge_max

  • batt_mass

  • batt_power_charge_max_kwac

  • batt_power_charge_max_kwdc

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

  • batt_surface_area

Type:

float

batt_calendar_a

Calendar life model coefficient [1/sqrt(day)]

Required: Required if en_batt=1&batt_life_model=0&batt_calendar_choice=1

Type:

float

batt_calendar_b

Calendar life model coefficient [K]

Required: Required if en_batt=1&batt_life_model=0&batt_calendar_choice=1

Type:

float

batt_calendar_c

Calendar life model coefficient [K]

Required: Required if en_batt=1&batt_life_model=0&batt_calendar_choice=1

Type:

float

batt_calendar_choice

Calendar life degradation input option [0/1/2]

Options: 0=NoCalendarDegradation,1=LithiomIonModel,2=InputLossTable

Required: Required if en_batt=1&batt_life_model=0

Type:

float

batt_calendar_lifetime_matrix

Days vs capacity

Required: Required if en_batt=1&batt_life_model=0&batt_calendar_choice=2

Type:

sequence[sequence]

batt_calendar_q0

Calendar life model initial capacity cofficient

Required: Required if en_batt=1&batt_life_model=0&batt_calendar_choice=1

Type:

float

batt_chem

Battery chemistry

Options: 0=LeadAcid,1=LiIon

The value of the following variables depends on batt_chem:

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

  • batt_Qexp

  • batt_Qfull_flow

  • batt_Qnom

  • batt_computed_bank_capacity

  • batt_computed_series

  • batt_computed_strings

  • batt_current_charge_max

  • batt_current_discharge_max

  • batt_mass

  • batt_power_charge_max_kwac

  • batt_power_charge_max_kwdc

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

  • batt_surface_area

Type:

float

batt_h_to_ambient

Heat transfer between battery and environment [W/m2K]

Type:

float

batt_initial_SOC

Initial state-of-charge [%]

Type:

float

batt_life_model

Battery life model specifier [0/1/2]

Options: 0=calendar/cycle,1=NMC,2=LMO/LTO

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

batt_lifetime_matrix

Cycles vs capacity at different depths-of-discharge

Required: Required if en_batt=1&batt_life_model=0

Type:

sequence[sequence]

batt_maximum_SOC

Maximum allowed state-of-charge [%]

Type:

float

batt_minimum_SOC

Minimum allowed state-of-charge during nominal operation [%]

Type:

float

batt_minimum_modetime

Minimum time at charge state [min]

Type:

float

batt_minimum_outage_SOC

Minimum allowed state-of-charge during an outage [%]

Type:

float

batt_resistance

Internal resistance [Ohm]

Type:

float

batt_room_temperature_celsius

Temperature of storage room [C]

Options: length=1 for fixed, # of weatherfile records otherwise

The value of batt_room_temperature_celsius depends on the following variables:

  • grid_curtailment

Type:

sequence

batt_voltage_choice

Battery voltage input option [0/1]

Options: 0=UseVoltageModel,1=InputVoltageTable

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

batt_voltage_matrix

Battery voltage vs. depth-of-discharge

Type:

sequence[sequence]

cap_vs_temp

Effective capacity as function of temperature [C,%]

Type:

sequence[sequence]

Inverter Group

class PySAM.Battery.Battery.Inverter
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

Inverter_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

Inverter_vals = { var: val, ...}

inv_cec_cg_eff_cec

Inverter Coefficient Generator CEC Efficiency [%]

The value of the following variables depends on inv_cec_cg_eff_cec:

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

  • batt_Qexp

  • batt_Qfull_flow

  • batt_Qnom

  • batt_computed_bank_capacity

  • batt_computed_series

  • batt_computed_strings

  • batt_current_charge_max

  • batt_current_discharge_max

  • batt_mass

  • batt_power_charge_max_kwac

  • batt_power_charge_max_kwdc

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

  • batt_surface_area

Type:

float

inv_cec_cg_paco

Inverter Coefficient Generator Max AC Power [Wac]

Type:

float

inv_ds_eff

Inverter Datasheet Efficiency [%]

The value of the following variables depends on inv_ds_eff:

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

  • batt_Qexp

  • batt_Qfull_flow

  • batt_Qnom

  • batt_computed_bank_capacity

  • batt_computed_series

  • batt_computed_strings

  • batt_current_charge_max

  • batt_current_discharge_max

  • batt_mass

  • batt_power_charge_max_kwac

  • batt_power_charge_max_kwdc

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

  • batt_surface_area

Type:

float

inv_ds_paco

Inverter Datasheet Maximum AC Power [Wac]

Type:

float

inv_pd_eff

Inverter Partload Efficiency [%]

The value of the following variables depends on inv_pd_eff:

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

  • batt_Qexp

  • batt_Qfull_flow

  • batt_Qnom

  • batt_computed_bank_capacity

  • batt_computed_series

  • batt_computed_strings

  • batt_current_charge_max

  • batt_current_discharge_max

  • batt_mass

  • batt_power_charge_max_kwac

  • batt_power_charge_max_kwdc

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

  • batt_surface_area

Type:

float

inv_pd_paco

Inverter Partload Maximum AC Power [Wac]

Type:

float

inv_snl_eff_cec

Inverter Sandia CEC Efficiency [%]

The value of the following variables depends on inv_snl_eff_cec:

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

  • batt_Qexp

  • batt_Qfull_flow

  • batt_Qnom

  • batt_computed_bank_capacity

  • batt_computed_series

  • batt_computed_strings

  • batt_current_charge_max

  • batt_current_discharge_max

  • batt_mass

  • batt_power_charge_max_kwac

  • batt_power_charge_max_kwdc

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

  • batt_surface_area

Type:

float

inv_snl_paco

Inverter Sandia Maximum AC Power [Wac]

Type:

float

inverter_count

Number of inverters

Type:

float

inverter_model

Inverter model specifier

Options: 0=cec,1=datasheet,2=partload,3=coefficientgenerator,4=generic

Constraints: INTEGER,MIN=0,MAX=4

Required: False. Automatically set to 4 if not assigned explicitly or loaded from defaults.

The value of the following variables depends on inverter_model:

  • LeadAcid_q10_computed

  • LeadAcid_q20_computed

  • LeadAcid_qn_computed

  • batt_Qexp

  • batt_Qfull_flow

  • batt_Qnom

  • batt_computed_bank_capacity

  • batt_computed_series

  • batt_computed_strings

  • batt_current_charge_max

  • batt_current_discharge_max

  • batt_mass

  • batt_power_charge_max_kwac

  • batt_power_charge_max_kwdc

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

  • batt_surface_area

Type:

float

Losses Group

class PySAM.Battery.Battery.Losses
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

Losses_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

Losses_vals = { var: val, ...}

dcoptimizer_loss

DC optimizer loss

Type:

float

BatteryDispatch Group

class PySAM.Battery.Battery.BatteryDispatch
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

BatteryDispatch_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

BatteryDispatch_vals = { var: val, ...}

batt_custom_dispatch

Custom battery power for every time step [kW]

Info: kWAC if AC-connected, else kWDC

Required: Required if en_batt=1&en_standalone_batt=0&batt_dispatch_choice=2

Type:

sequence

batt_cycle_cost

Input battery cycle degradaton penalty per year [$/cycle-kWh]

Info: length 1 or analysis_period, length 1 will be extended using inflation

Required: Required if batt_cycle_cost_choice=1

Type:

sequence

batt_cycle_cost_choice

Use SAM cost model for degradaton penalty or input custom via batt_cycle_cost [0/1]

Options: 0=UseCostModel,1=InputCost

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

batt_dispatch_auto_btm_can_discharge_to_grid

Behind the meter battery can discharge to grid? [0/1]

Type:

float

batt_dispatch_auto_can_charge

System charging allowed for automated dispatch? [0/1]

Type:

float

batt_dispatch_auto_can_clipcharge

Battery can charge from clipped power? [0/1]

Type:

float

batt_dispatch_auto_can_fuelcellcharge

Charging from fuel cell allowed for automated dispatch? [0/1]

Type:

float

batt_dispatch_auto_can_gridcharge

Grid charging allowed for automated dispatch? [0/1]

Type:

float

batt_dispatch_charge_only_system_exceeds_load

Battery can charge from system only when system output exceeds load [0/1]

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=0

Type:

float

batt_dispatch_choice

Battery dispatch algorithm [0/1/2/3/4/5]

Options: If behind the meter: 0=PeakShaving,1=InputGridTarget,2=InputBatteryPower,3=ManualDispatch,4=RetailRateDispatch,5=SelfConsumption if front of meter: 0=AutomatedEconomic,1=PV_Smoothing,2=InputBatteryPower,3=ManualDispatch

Required: Required if en_batt=1

Type:

float

batt_dispatch_discharge_only_load_exceeds_system

Battery can discharge battery only when load exceeds system output [0/1]

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=0

Type:

float

batt_dispatch_load_forecast_choice

Load forecast choice for automatic dispatch [0/1/2]

Options: 0=LookAhead,1=LookBehind,2=InputForecast

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

The value of the following variables depends on batt_dispatch_load_forecast_choice:

  • batt_load_ac_forecast

  • batt_load_ac_forecast_escalation

Type:

float

batt_dispatch_pvs_ac_lb

AC lower bound [fraction of nameplate]

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_pvs_ac_lb_enable

Enable AC lower bound [0/1]

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_pvs_ac_ub

AC upper bound [fraction of nameplate]

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_pvs_ac_ub_enable

Enable AC upper bound [0/1]

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_pvs_curtail_as_control

Correct up-ramp violations [0/1]

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_pvs_curtail_if_violation

Curtail violations [0/1]

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_pvs_forecast_shift_periods

Forecasting window [periods of ramp intervals]

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_pvs_kf

Forecast accumulation error multiplier (kf)

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_pvs_ki

Return to rest SOC multiplier (ki)

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_pvs_kp

Track PV power multiplier (kp)

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_pvs_max_ramp

Maximum ramp rate [% of nameplate per ramp interval]

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_pvs_nameplate_ac

Nameplate for pv smoothing [kWac]

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_pvs_short_forecast_enable

Enable short term power forecast [0/1]

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_pvs_soc_rest

Battery resting SOC [%]

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_pvs_timestep_multiplier

Ramp timestep multiplier

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=1&batt_dispatch_choice=1

Type:

float

batt_dispatch_update_frequency_hours

Frequency to update the look-ahead dispatch [hours]

Type:

float

batt_dispatch_wf_forecast_choice

Weather forecast choice for automatic dispatch [0/1/2]

Options: 0=LookAhead,1=LookBehind,2=InputForecast

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

batt_load_ac_forecast

Load ac power forecast [kW]

Info: Length either 8760 or 8760 * steps per hour

The value of batt_load_ac_forecast depends on the following variables:

  • batt_dispatch_load_forecast_choice

Type:

sequence

batt_load_ac_forecast_escalation

Annual load escalation for ac power forecast [kW]

Options: length <= analysis_period

The value of batt_load_ac_forecast_escalation depends on the following variables:

  • batt_dispatch_load_forecast_choice

  • load_escalation

Type:

sequence

batt_look_ahead_hours

Hours to look ahead in automated dispatch [hours]

Constraints: MIN=1

Type:

float

batt_pv_ac_forecast

PV ac power forecast [kW]

Info: Length either 8760 * steps per hour (values repeat each year) or 8760 * steps per hour * analysis period

Type:

sequence

batt_pv_clipping_forecast

PV clipping forecast [kW]

Info: Length either 8760 * steps per hour (values repeat each year) or 8760 * steps per hour * analysis period

Type:

sequence

batt_target_choice

Target power input option [0/1]

Options: 0=InputMonthlyTarget,1=InputFullTimeSeries

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=0&batt_dispatch_choice=1

Type:

float

batt_target_power

Grid target power for every time step [kW]

Required: Required if en_batt=1&batt_meter_position=0&batt_dispatch_choice=1

Type:

sequence

batt_target_power_monthly

Grid target power on monthly basis [kW]

Required: Required if en_batt=1&batt_meter_position=0&batt_dispatch_choice=1

Type:

sequence

dispatch_manual_btm_discharge_to_grid

Periods 1-6 behind the meter discharging to grid allowed?

Required: Required if en_batt=1&batt_dispatch_choice=3&batt_meter_position=0

Type:

sequence

dispatch_manual_charge

Periods 1-6 charging from system allowed?

Required: Required if en_batt=1&en_standalone_batt=0&batt_dispatch_choice=3

Type:

sequence

dispatch_manual_discharge

Periods 1-6 discharging allowed?

Required: Required if en_batt=1&batt_dispatch_choice=3

The value of the following variables depends on dispatch_manual_discharge:

  • dispatch_manual_percent_discharge

Type:

sequence

dispatch_manual_fuelcellcharge

Periods 1-6 charging from fuel cell allowed?

Type:

sequence

dispatch_manual_gridcharge

Periods 1-6 grid charging allowed?

Required: Required if en_batt=1&batt_dispatch_choice=3

The value of the following variables depends on dispatch_manual_gridcharge:

  • dispatch_manual_percent_gridcharge

Type:

sequence

dispatch_manual_percent_discharge

Periods 1-6 discharge percent [%]

Required: Required if en_batt=1&batt_dispatch_choice=3

The value of dispatch_manual_percent_discharge depends on the following variables:

  • dispatch_manual_discharge

Type:

sequence

dispatch_manual_percent_gridcharge

Periods 1-6 gridcharge percent [%]

Required: Required if en_batt=1&batt_dispatch_choice=3

The value of dispatch_manual_percent_gridcharge depends on the following variables:

  • dispatch_manual_gridcharge

Type:

sequence

dispatch_manual_sched

Battery dispatch schedule for weekday

Required: Required if en_batt=1&batt_dispatch_choice=3

Type:

sequence[sequence]

dispatch_manual_sched_weekend

Battery dispatch schedule for weekend

Required: Required if en_batt=1&batt_dispatch_choice=3

Type:

sequence[sequence]

dispatch_manual_system_charge_first

System charges battery before meeting load [0/1]

Options: 0=LoadFirst,1=ChargeFirst

Required: Required if en_batt=1&en_standalone_batt=0&batt_meter_position=0&batt_dispatch_choice=3&batt_dispatch_charge_only_system_exceeds_load=0

Type:

float

SystemCosts Group

class PySAM.Battery.Battery.SystemCosts
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

SystemCosts_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

SystemCosts_vals = { var: val, ...}

om_batt_replacement_cost

Replacement cost 1 [$/kWh]

Required: False. Automatically set to 0.0 if not assigned explicitly or loaded from defaults.

Type:

sequence

om_batt_variable_cost

Battery production-based System Costs amount [$/MWh]

Required: False. Automatically set to 0.0 if not assigned explicitly or loaded from defaults.

Type:

sequence

om_production_escal

Production-based O&M escalation [%/year]

Required: False. Automatically set to 0.0 if not assigned explicitly or loaded from defaults.

Type:

float

om_replacement_cost_escal

Replacement cost escalation [%/year]

Required: False. Automatically set to 0.0 if not assigned explicitly or loaded from defaults.

Type:

float

FuelCell Group

class PySAM.Battery.Battery.FuelCell
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

FuelCell_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

FuelCell_vals = { var: val, ...}

fuelcell_power

Electricity from fuel cell AC [kW]

Type:

sequence

PriceSignal Group

class PySAM.Battery.Battery.PriceSignal
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

PriceSignal_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

PriceSignal_vals = { var: val, ...}

dispatch_factors_ts

Dispatch payment factor time step

Required: Required if forecast_price_signal_model=0&en_batt=1&batt_meter_position=1&ppa_multiplier_model=1

Type:

sequence

dispatch_sched_weekday

Diurnal weekday TOD periods [1..9]

Info: 12 x 24 matrix

Required: Required if en_batt=1&batt_meter_position=1&forecast_price_signal_model=0&ppa_multiplier_model=0

Type:

sequence[sequence]

dispatch_sched_weekend

Diurnal weekend TOD periods [1..9]

Info: 12 x 24 matrix

Required: Required if en_batt=1&batt_meter_position=1&forecast_price_signal_model=0&ppa_multiplier_model=0

Type:

sequence[sequence]

dispatch_tod_factors

TOD factors for periods 1-9

Required: Required if en_batt=1&batt_meter_position=1&forecast_price_signal_model=0&ppa_multiplier_model=0

Type:

sequence

forecast_price_signal_model

Forecast price signal model selected [0/1]

Options: 0=PPA based,1=Merchant Plant

Constraints: INTEGER,MIN=0,MAX=1

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

mp_ancserv1_revenue

Ancillary services 1 revenue input [ [MW, $/MW]]

Required: Required if en_batt=1&batt_meter_position=1&forecast_price_signal_model=1

Type:

sequence[sequence]

mp_ancserv2_revenue

Ancillary services 2 revenue input [ [MW, $/MW]]

Required: Required if en_batt=1&batt_meter_position=1&forecast_price_signal_model=1

Type:

sequence[sequence]

mp_ancserv3_revenue

Ancillary services 3 revenue input [ [MW, $/MW]]

Required: Required if en_batt=1&batt_meter_position=1&forecast_price_signal_model=1

Type:

sequence[sequence]

mp_ancserv4_revenue

Ancillary services 4 revenue input [ [MW, $/MW]]

Required: Required if en_batt=1&batt_meter_position=1&forecast_price_signal_model=1

Type:

sequence[sequence]

mp_enable_ancserv1

Enable ancillary services 1 revenue [0/1]

Constraints: INTEGER,MIN=0,MAX=1

Required: Required if forecast_price_signal_model=1

Type:

float

mp_enable_ancserv2

Enable ancillary services 2 revenue [0/1]

Constraints: INTEGER,MIN=0,MAX=1

Required: Required if forecast_price_signal_model=1

Type:

float

mp_enable_ancserv3

Enable ancillary services 3 revenue [0/1]

Constraints: INTEGER,MIN=0,MAX=1

Required: Required if forecast_price_signal_model=1

Type:

float

mp_enable_ancserv4

Enable ancillary services 4 revenue [0/1]

Constraints: INTEGER,MIN=0,MAX=1

Required: Required if forecast_price_signal_model=1

Type:

float

mp_enable_energy_market_revenue

Enable energy market revenue [0/1]

Options: 0=false,1=true

Constraints: INTEGER,MIN=0,MAX=1

Required: Required if en_batt=1&batt_meter_position=1&forecast_price_signal_model=1

Type:

float

mp_energy_market_revenue

Energy market revenue input [ [MW, $/MW]]

Required: Required if en_batt=1&batt_meter_position=1&forecast_price_signal_model=1

Type:

sequence[sequence]

ppa_escalation

PPA escalation rate [%/year]

Required: Required if forecast_price_signal_model=0&en_batt=1&batt_meter_position=1

Type:

float

ppa_multiplier_model

PPA multiplier model [0/1]

Options: 0=diurnal,1=timestep

Constraints: INTEGER,MIN=0

Required: Required if forecast_price_signal_model=0&en_batt=1&batt_meter_position=1

Type:

float

ppa_price_input

PPA Price Input [$/kWh]

Required: Required if forecast_price_signal_model=0&en_batt=1&batt_meter_position=1

Type:

sequence

Revenue Group

class PySAM.Battery.Battery.Revenue
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

Revenue_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

Revenue_vals = { var: val, ...}

mp_ancserv1_revenue_single

Ancillary services 1 revenue input

Info: Lifetime x 1[Price($/MWh)]

Required: Required if forecast_price_signal_model=1&mp_enable_ancserv1_percent_gen=1

Type:

sequence[sequence]

mp_ancserv2_revenue_single

Ancillary services 2 revenue input

Info: Lifetime x 1[Price($/MWh)]

Required: Required if forecast_price_signal_model=1&mp_enable_ancserv2_percent_gen=1

Type:

sequence[sequence]

mp_ancserv3_revenue_single

Ancillary services 3 revenue input

Info: Lifetime x 1[Price($/MWh)]

Required: Required if forecast_price_signal_model=1&mp_enable_ancserv3_percent_gen=1

Type:

sequence[sequence]

mp_ancserv4_revenue_single

Ancillary services 4 revenue input

Info: Lifetime x 1[Price($/MWh)]

Required: Required if forecast_price_signal_model=1&mp_enable_ancserv4_percent_gen=1

Type:

sequence[sequence]

mp_enable_ancserv1_percent_gen

Enable percent demand cleared capacity option for ancillary service 1 [0/1]

Constraints: INTEGER,MIN=0,MAX=1

Required: Required if forecast_price_signal_model=1

Type:

float

mp_enable_ancserv2_percent_gen

Enable percent demand cleared capacity option for ancillary service 2 [0/1]

Constraints: INTEGER,MIN=0,MAX=1

Required: Required if forecast_price_signal_model=1

Type:

float

mp_enable_ancserv3_percent_gen

Enable percent demand cleared capacity option for ancillary service 3 [0/1]

Constraints: INTEGER,MIN=0,MAX=1

Required: Required if forecast_price_signal_model=1

Type:

float

mp_enable_ancserv4_percent_gen

Enable percent demand cleared capacity option for ancillary service 4 [0/1]

Constraints: INTEGER,MIN=0,MAX=1

Required: Required if forecast_price_signal_model=1

Type:

float

mp_enable_market_percent_gen

Enable percent demand cleared capacity option for market revenue [0/1]

Constraints: INTEGER,MIN=0,MAX=1

Required: Required if forecast_price_signal_model=1

Type:

float

mp_energy_market_revenue_single

Energy market revenue input

Info: Lifetime x 1 [Price($/MWh)]

Required: Required if forecast_price_signal_model=1&mp_enable_market_percent_gen=1

Type:

sequence[sequence]

ElectricityRates Group

class PySAM.Battery.Battery.ElectricityRates
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

ElectricityRates_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

ElectricityRates_vals = { var: val, ...}

en_electricity_rates

Optionally enable/disable electricity_rate [years]

Constraints: INTEGER,MIN=0,MAX=1

Type:

float

rate_escalation

Annual electricity rate escalation [%/year]

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

sequence

ur_annual_min_charge

Annual minimum charge [$]

Required: False. Automatically set to 0.0 if not assigned explicitly or loaded from defaults.

Type:

float

ur_billing_demand_lookback_percentages

Billing demand lookback percentages by month and consider actual peak demand [%]

Info: 12x2

Required: Required if ur_enable_billing_demand=1

Type:

sequence[sequence]

ur_billing_demand_lookback_period

Billing demand lookback period [mn]

Constraints: INTEGER,MIN=0,MAX=12

Required: Required if ur_enable_billing_demand=1

Type:

float

ur_billing_demand_minimum

Minimum billing demand [kW]

Required: Required if ur_enable_billing_demand=1

Type:

float

ur_dc_billing_demand_periods

Billing demand applicability to a given demand charge time of use period

Required: Required if ur_enable_billing_demand=1

Type:

sequence[sequence]

ur_dc_enable

Enable demand charge [0/1]

Options: 0=disable,1=enable

Constraints: BOOLEAN

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

ur_dc_flat_mat

Demand rates (flat) table [col 0=month, col 1=tier no, col 2=tier peak (kW), col 3=charge ($/kW)]

Info: nx4

Required: Required if ur_dc_enable=1

Type:

sequence[sequence]

ur_dc_sched_weekday

Demand charge weekday schedule [Periods defined in ur_dc_tou_mat]

Info: 12x24

Type:

sequence[sequence]

ur_dc_sched_weekend

Demand charge weekend schedule [Periods defined in ur_dc_tou_mat]

Info: 12x24

Type:

sequence[sequence]

ur_dc_tou_mat

Demand rates (TOU) table [col 0=period no, col 1=tier no, col 2=tier peak (kW), col 3=charge ($/kW)]

Info: nx4

Required: Required if ur_dc_enable=1

Type:

sequence[sequence]

ur_ec_sched_weekday

Energy charge weekday schedule [Periods defined in ur_ec_tou_mat]

Info: 12x24

Type:

sequence[sequence]

ur_ec_sched_weekend

Energy charge weekend schedule [Periods defined in ur_ec_tou_mat]

Info: 12x24

Type:

sequence[sequence]

ur_ec_tou_mat

Energy rates table [col 0=period no, col 1=tier no, col 2=max usage, col 3=max usage units (0=kWh, 1=kWh/kW, 2=kWh daily, 3=kWh/kW daily), col 4=buy rate ($/kWh), col 5=sell rate ($/kWh)]

Info: nx6

Type:

sequence[sequence]

ur_en_ts_buy_rate

Enable time step buy rates [0/1]

Options: 0=disable,1=enable

Constraints: BOOLEAN

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

ur_en_ts_sell_rate

Enable time step sell rates [0/1]

Options: 0=disable,1=enable

Constraints: BOOLEAN

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

ur_enable_billing_demand

Enable billing demand ratchets [0/1]

Options: 0=disable,1=enable

Constraints: INTEGER,MIN=0,MAX=1

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

ur_metering_option

Metering options [0=net energy metering,1=net energy metering with $ credits,2=net billing,3=net billing with carryover to next month,4=buy all - sell all]

Info: Net metering monthly excess

Constraints: INTEGER,MIN=0,MAX=4

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

ur_monthly_fixed_charge

Monthly fixed charge [$]

Required: False. Automatically set to 0.0 if not assigned explicitly or loaded from defaults.

Type:

float

ur_monthly_min_charge

Monthly minimum charge [$]

Required: False. Automatically set to 0.0 if not assigned explicitly or loaded from defaults.

Type:

float

ur_nm_credit_month

Month of year end payout (true-up) [mn]

Constraints: INTEGER,MIN=0,MAX=11

Required: False. Automatically set to 11 if not assigned explicitly or loaded from defaults.

Type:

float

ur_nm_credit_rollover

Apply net metering true-up credits to future bills [0/1]

Options: 0=disable,1=enable

Constraints: INTEGER,MIN=0,MAX=1

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

ur_nm_yearend_sell_rate

Net metering true-up credit sell rate [$/kWh]

Required: False. Automatically set to 0.0 if not assigned explicitly or loaded from defaults.

Type:

float

ur_sell_eq_buy

Set sell rate equal to buy rate [0/1]

Info: Optional override

Constraints: BOOLEAN

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

ur_ts_buy_rate

Time step buy rates [$/kWh]

Type:

sequence

ur_ts_sell_rate

Time step sell rates [$/kWh]

Type:

sequence

ur_yearzero_usage_peaks

Peak usage by month for year zero [kW]

Info: 12

Required: Required if ur_enable_billing_demand=1

Type:

sequence

GridLimits Group

class PySAM.Battery.Battery.GridLimits
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

GridLimits_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

GridLimits_vals = { var: val, ...}

enable_interconnection_limit

Enable grid interconnection limit [0/1]

Info: Enable a grid interconnection limit

Type:

float

grid_curtailment

Grid curtailment as energy delivery limit (first year) [MW]

Required: False for configuration with default inputs. May be required if a variable dependent on its value changes. Example: For the Detailed PV - Single Owner configuration, only Subarray 1 is enabled in the configuration defaults, so Subarray 2 inputs would not be required; if Subarray 2 is enabled, then Subarray 2 inputs is required.

The value of the following variables depends on grid_curtailment:

  • batt_room_temperature_celsius

Type:

sequence

grid_interconnection_limit_kwac

Grid interconnection limit [kWac]

Type:

float

HybridCosts Group

class PySAM.Battery.Battery.HybridCosts
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

HybridCosts_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

HybridCosts_vals = { var: val, ...}

add_om_num_types

Number of O and M types

Info: battery,fuelcell

Constraints: INTEGER,MIN=0,MAX=2

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

degradation

Annual AC degradation [%]

Required: False. Automatically set to 0.0 if not assigned explicitly or loaded from defaults.

Type:

sequence

land_area

Total land area [acres]

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

The value of land_area depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

  • batt_power_discharge_max_kwac

Type:

float

om_batt_capacity_cost

Battery capacity-based System Costs amount [$/kWcap]

Info: battery

Required: False. Automatically set to 0.0 if not assigned explicitly or loaded from defaults.

Type:

sequence

om_batt_fixed_cost

Battery fixed System Costs annual amount [$/year]

Info: battery

Required: False. Automatically set to 0.0 if not assigned explicitly or loaded from defaults.

Type:

sequence

om_batt_nameplate

Battery capacity for System Costs values [kW]

Info: battery

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

The value of om_batt_nameplate depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_computed_bank_capacity

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

Type:

float

om_capacity_escal

Capacity-based O&M escalation [%/year]

Required: False. Automatically set to 0.0 if not assigned explicitly or loaded from defaults.

Type:

float

om_fixed_escal

Fixed O&M escalation [%/year]

Required: False. Automatically set to 0.0 if not assigned explicitly or loaded from defaults.

Type:

float

om_land_lease

Land lease cost [$/acre]

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

sequence

om_land_lease_escal

Land lease cost escalation [%/yr]

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

float

om_production1_values

Battery production for System Costs values [kWh]

Info: battery

Required: False. Automatically set to 0 if not assigned explicitly or loaded from defaults.

Type:

sequence

total_installed_cost

Total installed cost [$]

Required: True

The value of total_installed_cost depends on the following variables:

  • batt_Qfull

  • batt_Vnom_default

  • batt_ac_dc_efficiency

  • batt_ac_or_dc

  • batt_chem

  • batt_computed_bank_capacity

  • batt_current_choice

  • batt_dc_ac_efficiency

  • batt_dc_dc_efficiency

  • batt_power_discharge_max_kwac

  • batt_power_discharge_max_kwdc

Type:

float

Outputs Group

class PySAM.Battery.Battery.Outputs
assign(dict) None

Assign attributes from dictionary, overwriting but not removing values.

Outputs_vals = { var: val, ...}

export() dict

Export attributes into dictionary.

replace(dict) None

Replace attributes from dictionary, unassigning values not present in input dict.

Outputs_vals = { var: val, ...}

annual_crit_load

Critical load energy (year 1) [kWh]

Type:

float

annual_crit_load_unmet

Critical load energy unmet (year 1) [kWh]

Type:

float

annual_crit_load_unmet_percentage

Critical load unmet percentage (year 1) [%]

Type:

float

annual_export_to_grid_energy

Annual energy exported to grid [kWh]

Type:

sequence

annual_import_to_grid_energy

Annual energy imported from grid [kWh]

Type:

sequence

annual_outage_losses_unmet

Battery and system losses unmet energy (year 1) [kWh]

Type:

float

average_battery_conversion_efficiency

Battery average cycle conversion efficiency [%]

Type:

float

average_battery_roundtrip_efficiency

Battery average roundtrip efficiency [%]

Type:

float

avg_critical_load

Hours of autonomy during grid outage critical load met [kWh]

Type:

float

batt_DOD

Battery cycle depth of discharge [%]

Type:

sequence

batt_DOD_cycle_average

Battery average cycle DOD

Type:

sequence

batt_I

Battery current [A]

Type:

sequence

batt_SOC

Battery state of charge [%]

Type:

sequence

batt_annual_charge_energy

Battery annual energy charged [kWh]

Type:

sequence

batt_annual_charge_from_grid

Battery annual energy charged from grid [kWh]

Type:

sequence

batt_annual_charge_from_system

Battery annual energy charged from system [kWh]

Type:

sequence

batt_annual_discharge_energy

Battery annual energy discharged [kWh]

Type:

sequence

batt_annual_energy_loss

Battery annual energy loss [kWh]

Type:

sequence

batt_annual_energy_system_loss

Battery annual system energy loss [kWh]

Type:

sequence

batt_bank_installed_capacity

Battery bank installed capacity [kWh]

Type:

float

batt_bank_replacement

Battery bank replacements per year [number/year]

Type:

sequence

batt_capacity_percent

Battery relative capacity to nameplate [%]

Type:

sequence

batt_capacity_percent_calendar

Battery relative capacity to nameplate (calendar) [%]

Type:

sequence

batt_capacity_percent_cycle

Battery relative capacity to nameplate (cycling) [%]

Type:

sequence

batt_capacity_thermal_percent

Battery capacity percent for temperature [%]

Type:

sequence

batt_conversion_loss

Battery loss from power electronics [kW]

Type:

sequence

batt_cost_to_cycle

Battery computed cycle degradation penalty [$/cycle-kWh]

Type:

sequence

batt_cycles

Battery number of cycles

Type:

sequence

batt_dispatch_sched

Battery dispatch schedule

Type:

sequence[sequence]

batt_power

Electricity to/from battery AC [kW]

Type:

sequence

batt_power_dc

Electricity to/from battery DC [kW]

Type:

sequence

batt_power_target

Electricity battery power target for automated dispatch [kW]

Type:

sequence

batt_pvs_PV_ramp_interval

PV smoothing PV power sampled [kW]

Type:

sequence

batt_pvs_P_pv_ac

PV smoothing PV power before smoothing [kW]

Type:

sequence

batt_pvs_battpower

PV smoothing battpower [kW]

Type:

sequence

batt_pvs_battsoc

PV smoothing battery SOC [%]

Type:

sequence

batt_pvs_curtail

PV smoothing curtailed power [kW]

Type:

sequence

batt_pvs_energy_to_grid_percent

PV smoothing energy to grid percent (loss due to curtail and battery loss) [%]

Type:

float

batt_pvs_energy_to_grid_percent_sam

PV smoothing energy to grid percent actual (loss due to curtail and battery loss) [%]

Type:

float

batt_pvs_forecast_pv_energy

PV smoothing PV power forecast [kW]

Type:

sequence

batt_pvs_outpower

PV smoothing outpower [kW]

Type:

sequence

batt_pvs_violation_count

PV smoothing violation count

Type:

float

batt_pvs_violation_list

PV smoothing violation

Type:

sequence

batt_pvs_violation_percent

PV smoothing violation percent (of all intervals-including nighttime) [%]

Type:

float

batt_q0

Battery total charge [Ah]

Type:

sequence

batt_q1

Battery available charge [Ah]

Type:

sequence

batt_q2

Battery bound charge [Ah]

Type:

sequence

batt_qmax

Battery maximum charge with degradation [Ah]

Type:

sequence

batt_qmaxI

Battery maximum capacity at current [Ah]

Type:

sequence

batt_qmax_thermal

Battery maximum charge at temperature [Ah]

Type:

sequence

batt_revenue_charge

Revenue to charge from system [$/kWh]

Type:

sequence

batt_revenue_clipcharge

Revenue to charge from clipped [$/kWh]

Type:

sequence

batt_revenue_discharge

Revenue to discharge [$/kWh]

Type:

sequence

batt_revenue_gridcharge

Revenue to charge from grid [$/kWh]

Type:

sequence

batt_system_charge_percent

Battery charge energy charged from system [%]

Type:

float

batt_system_loss

Battery loss from ancillary equipment [kW]

Type:

sequence

batt_temperature

Battery temperature [C]

Type:

sequence

batt_to_grid

Electricity to grid from battery AC [kW]

Type:

sequence

batt_to_inverter_dc

Electricity to inverter from battery DC [kW]

Type:

sequence

batt_to_load

Electricity to load from battery AC [kW]

Type:

sequence

batt_to_system_load

Electricity to system loads from battery AC [kW]

Type:

sequence

batt_voltage

Battery voltage [V]

Type:

sequence

batt_voltage_cell

Battery cell voltage [V]

Type:

sequence

capacity_factor_sales

Capacity factor based on AC electricity to grid [%]

Type:

float

cdf_of_surviving

Hours of autonomy during grid outage cumulative probabilities

Type:

sequence

cf_battery_replacement_cost_schedule

replacement O&M costs [$]

Type:

sequence

cf_energy_net

annual energy [kWh]

Type:

sequence

cf_fuelcell_replacement_cost_schedule

replacement O&M costs [$]

Type:

sequence

cf_land_lease_expense

Land lease expense [$]

Type:

sequence

cf_om_capacity

capacity O&M costs [$]

Type:

sequence

cf_om_fixed

fixed O&M costs [$]

Type:

sequence

cf_om_fuel_cost

fossil fuel O&M costs [$]

Type:

sequence

cf_om_land_lease

land lease O&M costs [$]

Type:

sequence

cf_om_production

production O&M costs [$]

Type:

sequence

crit_load

Critical load in this timestep [kW]

Type:

sequence

crit_load_unmet

Critical load unmet in this timestep [kW]

Type:

sequence

fuelcell_to_batt

Electricity to battery from fuel cell AC [kW]

Type:

sequence

gen_without_battery

Power produced without the battery or curtailment [kW]

Type:

sequence

grid_power

Electricity to/from grid AC [kW]

Type:

sequence

grid_power_target

Electricity grid power target for automated dispatch [kW]

Type:

sequence

grid_to_batt

Electricity to battery from grid AC [kW]

Type:

sequence

grid_to_load

Electricity to load from grid AC [kW]

Type:

sequence

interconnection_loss

Electricity loss due to curtailment interconnection outage [kW]

Type:

sequence

market_sell_rate_series_yr1

Power price for battery dispatch [$/MWh]

Type:

sequence

monthly_batt_to_grid

Energy to grid from battery [kWh]

Type:

sequence

monthly_batt_to_load

Energy to load from battery [kWh]

Type:

sequence

monthly_batt_to_system_load

Energy to system loads from battery [kWh]

Type:

sequence

monthly_crit_load

Critical load energy [kWh]

Type:

sequence

monthly_crit_load_unmet

Critical load energy unmet [kWh]

Type:

sequence

monthly_crit_load_unmet_percentage

Critical load unmet percentage [%]

Type:

sequence

monthly_grid_to_batt

Energy to battery from grid [kWh]

Type:

sequence

monthly_grid_to_load

Energy to load from grid [kWh]

Type:

sequence

monthly_interconnection_loss

Energy loss due to curtailment, interconnection, or outage [kWh]

Type:

sequence

monthly_outage_losses_unmet

Battery and system losses unmet energy [kWh]

Type:

sequence

monthly_system_to_batt

Energy to battery from system [kWh]

Type:

sequence

monthly_system_to_grid

Energy to grid from system [kWh]

Type:

sequence

monthly_system_to_load

Energy to load from system [kWh]

Type:

sequence

num_ts_load_met_by_system_lifetime

Number of timesteps electric load met by system (lifetime)

Type:

float

num_ts_load_met_by_system_yr1

Number of timesteps electric load met by system (year 1)

Type:

float

outage_durations

Hours of autonomy during grid outage hour list from min to max [hr]

Type:

sequence

outage_losses_unmet

Battery and system losses unmet in this timestep [kW]

Type:

sequence

pdf_of_surviving

Hours of autonomy during grid outage probabilities

Type:

sequence

percent_ts_load_met_by_system_lifetime

Percent of timesteps electric load met by system (lifetime)

Type:

float

percent_ts_load_met_by_system_yr1

Percent of timesteps electric load met by system (year 1)

Type:

float

resilience_hrs

Hours of autonomy during grid outage at each timestep [hr]

Type:

sequence

resilience_hrs_avg

Hours of autonomy during grid outage average [hr]

Type:

float

resilience_hrs_max

Hours of autonomy during grid outage maximum [hr]

Type:

float

resilience_hrs_min

Hours of autonomy during grid outage minimum [hr]

Type:

float

survival_function

Hours of autonomy during grid outage survival function

Type:

sequence

system_to_batt

Electricity to battery from system AC [kW]

Type:

sequence

system_to_batt_dc

Electricity to battery from system DC [kW]

Type:

sequence

system_to_grid

Electricity to grid from system AC [kW]

Type:

sequence

system_to_load

Electricity to load from system AC [kW]

Type:

sequence