h2integrate.storage.storage_performance_model#

Classes

StoragePerformanceModel(**kwargs)

OpenMDAO component for a storage component.

StoragePerformanceModelConfig(*, ...[, ...])

Configuration class for storage performance models.

class h2integrate.storage.storage_performance_model.StoragePerformanceModelConfig(*, min_soc_fraction, max_soc_fraction, demand_profile, commodity, commodity_rate_units, max_capacity, max_charge_rate, init_soc_fraction, commodity_amount_units=None, max_discharge_rate=None, charge_equals_discharge=True, charge_efficiency=None, discharge_efficiency=None, round_trip_efficiency=None)#

Configuration class for storage performance models.

This class defines configuration parameters for simulating storage performance with the Pyomo controllers. It includes specifications such as capacity, charge rate, state-of-charge limits, and charge/discharge efficiencies.

Variables:
  • commodity (str) -- name of commodity

  • commodity_rate_units (str) -- Units of the commodity (e.g., "kg/h").

  • demand_profile (int | float | list) -- Demand values for each timestep, in the same units as commodity_rate_units. May be a scalar for constant demand or a list/array for time-varying demand.

  • max_capacity (float) -- Maximum storage energy capacity in commodity_amount_units. Must be greater than zero.

  • max_charge_rate (float) -- Rated commodity capacity of the storage in commodity_rate_units. Must be greater than zero.

  • min_soc_fraction (float) -- Minimum allowable state of charge as a fraction (0 to 1).

  • max_soc_fraction (float) -- Maximum allowable state of charge as a fraction (0 to 1).

  • init_soc_fraction (float) -- Initial state of charge as a fraction (0 to 1).

  • commodity_amount_units (str | None, optional) -- Units of the commodity as an amount (i.e., kW*h or kg). If not provided, defaults to commodity_rate_units*h.

  • max_discharge_rate (float | None, optional) -- Maximum rate at which the commodity can be discharged (in units per time step, e.g., "kg/time step"). This rate does not include the discharge_efficiency. Only required if charge_equals_discharge is False.

  • charge_equals_discharge (bool, optional) -- If True, set the max_discharge_rate equal to the max_charge_rate. If False, specify the max_discharge_rate as a value different than the max_charge_rate. Defaults to True.

  • charge_efficiency (float | None, optional) -- Efficiency of charging the storage, represented as a decimal between 0 and 1 (e.g., 0.9 for 90% efficiency). Optional if round_trip_efficiency is provided.

  • discharge_efficiency (float | None, optional) -- Efficiency of discharging the storage, represented as a decimal between 0 and 1 (e.g., 0.9 for 90% efficiency). Optional if round_trip_efficiency is provided.

  • round_trip_efficiency (float | None, optional) -- Combined efficiency of charging and discharging the storage, represented as a decimal between 0 and 1 (e.g., 0.81 for 81% efficiency). Optional if charge_efficiency and discharge_efficiency are provided.

Parameters:
  • min_soc_fraction (float)

  • max_soc_fraction (float)

  • demand_profile (int | float | list)

  • commodity (str)

  • commodity_rate_units (str)

  • max_capacity (float)

  • max_charge_rate (float)

  • init_soc_fraction (float)

  • commodity_amount_units (str)

  • max_discharge_rate (float | None)

  • charge_equals_discharge (bool)

  • charge_efficiency (float | None)

  • discharge_efficiency (float | None)

  • round_trip_efficiency (float | None)

commodity: str#
commodity_rate_units: str#
max_capacity: float#
max_charge_rate: float#
init_soc_fraction: float#
commodity_amount_units: str#
max_discharge_rate: float | None#
charge_equals_discharge: bool#
charge_efficiency: float | None#
discharge_efficiency: float | None#
round_trip_efficiency: float | None#
class h2integrate.storage.storage_performance_model.StoragePerformanceModel(**kwargs)#

OpenMDAO component for a storage component.

_time_step_bounds = (1, 3600)#
setup()#

Set up the storage performance model in OpenMDAO.

Initializes the configuration and defines inputs/outputs for OpenMDAO. If dispatch connections are specified, it also sets up a discrete input for Pyomo solver integration.

compute(inputs, outputs, discrete_inputs=[], discrete_outputs=[])#

Run the storage performance model.