h2integrate.storage.simple_storage_auto_sizing#

Classes

StorageAutoSizingModel(**kwargs)

Performance model that calculates the storage charge rate and capacity needed to either:

StorageSizingModelConfig(*[, commodity, ...])

Configuration class for the StorageAutoSizingModel.

class h2integrate.storage.simple_storage_auto_sizing.StorageSizingModelConfig(*, commodity='hydrogen', commodity_rate_units='kg/h', demand_profile=0.0)#

Configuration class for the StorageAutoSizingModel.

Parameters:
  • commodity (str)

  • commodity_rate_units (str)

  • demand_profile (int | float | list)

commodity#

Name of the commodity being controlled (e.g., “hydrogen”). Defaults to “hydrogen”

Type:

str, optional

commodity_rate_units#

Units of the commodity (e.g., “kg/h”). Defaults to “kg/h”.

Type:

str, optional

demand_profile#

The demand values for each time step (in the same units as commodity_rate_units) or a scalar for a constant demand.

Type:

scalar or list

commodity: str#
commodity_rate_units: str#
demand_profile: int | float | list#
class h2integrate.storage.simple_storage_auto_sizing.StorageAutoSizingModel(**kwargs)#

Performance model that calculates the storage charge rate and capacity needed to either:

  1. supply the commodity at a constant rate based on the commodity production profile or

  2. try to meet the commodity demand with the given commodity production profile.

Then simulates performance of a basic storage component using the charge rate and capacity calculated.

Note: this storage performance model is intended to be used with the PassThroughOpenLoopController controller and is not compatible with the DemandOpenLoopStorageController controller.

Inputs:
{commodity}_in (float): Input commodity flow timeseries (e.g., hydrogen production)

used to estimate the demand if commodity_demand_profile is zero. - Units: Defined in commodity_rate_units (e.g., “kg/h”).

{commodity}_set_point (float): Input commodity flow timeseries (e.g., hydrogen production)

used as the available input commodity to meet the demand.

{commodity}_demand_profile (float): Demand profile of commodity.
  • Units: Defined in commodity_rate_units (e.g., “kg/h”).

Outputs:
max_capacity (float): Maximum storage capacity of the commodity.
  • Units: in non-rate units, e.g., “kg” if commodity_rate_units is “kg/h”

max_charge_rate (float): Maximum rate at which the commodity can be charged
  • Units: Defined in commodity_rate_units (e.g., “kg/h”).

Assumed to also be the discharge rate.

{commodity}_out (np.ndarray): the commodity used to meet demand from the available

input commodity and storage component. Defined in commodity_rate_units.

total_{commodity}_produced (float): sum of commodity discharged from storage over

the simulation. Defined in commodity_rate_units*h

rated_{commodity}_production (float): maximum commodity that could be discharged

in a timestep. Defined in commodity_rate_units

annual_{commodity}_produced (np.ndarray): total commodity discharged per year.

Defined in commodity_rate_units*h/year

capacity_factor (np.ndarray): ratio of commodity discharged to the maximum

commodity that could be discharged over the simulation. Defined as a ratio (units of unitless)

setup()#

Declare inputs and outputs.

Available attributes:

name pathname comm options

compute(inputs, outputs)#

Computation for the OM component.

For a template class this is not implement and raises an error.