Storage Models#
Storage technologies input and output the ‘Storage Commodity’ (commodity) as a time series. These technologies can be both filled or charged and unfilled or discharged, resulting in a commodity stream that can be positive and negative.These models are usually constrained by two key model parameters: storage capacity and charge/discharge rate.
Storage Performance Models#
H2I currently supports the following storage performance models:
StorageAutoSizingModel
The following sections detail the inputs and outputs of the storage performance models.
Note
The inputs and outputs of storage performance models are generalized here for any commodity. If input and output names include the word commodity, the actual variable name would be the commodity defined for that storage model. For example, the PySAMBatteryPerformanceModel can only be used for the commodity electricity. Therefore, the commodity_in input to the PySAMBatteryPerformanceModel is actually named electricity_in.
Inputs#
commodity_in: commodity available to use for charging storage
If using a feedback control strategy (this means that the controller received the actual storage state periodically), the control-related inputs for control to the storage performance include:
commodity_demand: the target demand profile to satisfy with the storage performance model and the input commodity. This is passed to the control strategy through thepyomo_dispatch_solvermethod.pyomo_dispatch_solver: the control function from the storage controller that outputs dispatch commands to the storage performance model.
If using an open-loop control strategy, the control input to the storage performance model is:
commodity_set_point: the dispatch commands to the storage performance model, negative values indicate charge commands and positive values indicate discharge commands
Some storage models may also have design inputs of max_charge_rate, storage_capacity, and max_discharge_rate.
Calculations and Outputs#
The storage performance models output timeseries profiles (length of n_timesteps):
commodity_out: storage charge and discharge profile incommodity_rate_units, values are negative when charging and positive when discharging. This is equivalent tostorage_commodity_charge + storage_commodity_dischargestorage_commodity_charge: charge profile the storage, the values are either negative (when charging) or 0 (when doing nothing or discharging). In units ofcommodity_rate_unitsstorage_commodity_discharge: discharge profile the storage, the values are either positive (when discharging) or 0 (when doing nothing or charging). In units ofcommodity_rate_unitsSOC: the storage state-of-charge in units of eitherpercent(values between 0 and 100) orunitless(values between 0 and 1)
The aggregated or summarized performance outputs are (single values):
storage_duration: the storage capacity divided by the storage discharge rate. Units are time-based, such ash(hours).rated_commodity_production: the storage discharge rate in units ofcommodity_rate_units.total_commodity_produced: the summation ofcommodity_outover the simulation in units ofcommodity_amount_units. This value may be negative if the storage charges more than discharges.
The results that are output per-year of the plant_life are:
annual_commodity_produced: each value is thetotal_commodity_producedscaled to a 1-year (8760 hours) simulation. This value may be negative if the storage charges more than discharges.capacity_factor: the storage capacity factor which is calculated in the same way that capacity factors are calculated in converter technologies, which is a ratio of the sum oftotal_commodity_producedto the discharge rate (orrated_commodity_production). This value may be negative if the storage charges more than discharges. \( CF = \frac{\sum_{t=0}^{n_{\text{timesteps}}}(\text{commodity_out}_t*dt)}{\text{\text{discharge}\_\text{rate}*n_{\text{timesteps}}*dt} \)standard_capacity_factor: the storage capacity factor as defined by the NLR ATB. The ratio of the total commodity discharged to the discharge rate (orrated_commodity_production). This value will always be greater than or equal to zero. \( CF_{\text{standard}} = \frac{\sum_{t=0}^{n_{\text{timesteps}}}(\text{storage_commodity_discharge}_t*dt)}{\text{discharge_rate}*n_{\text{timesteps}}*dt} \)
Storage Cost models:#
The available storage cost models are:
ATBBatteryCostModelGenericStorageCostModel-
LinedRockCavernStorageCostModelSaltCavernStorageCostModelPipeStorageCostModelMCHTOLStorageCostModel