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.

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#

name of commodity

Type:

str

commodity_rate_units#

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

Type:

str

demand_profile#

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.

Type:

int | float | list

max_capacity#

Maximum storage energy capacity in commodity_amount_units. Must be greater than zero.

Type:

float

max_charge_rate#

Rated commodity capacity of the storage in commodity_rate_units. Must be greater than zero.

Type:

float

min_soc_fraction#

Minimum allowable state of charge as a fraction (0 to 1).

Type:

float

max_soc_fraction#

Maximum allowable state of charge as a fraction (0 to 1).

Type:

float

init_soc_fraction#

Initial state of charge as a fraction (0 to 1).

Type:

float

commodity_amount_units#

Units of the commodity as an amount (i.e., kW*h or kg). If not provided, defaults to commodity_rate_units*h.

Type:

str | None, optional

max_discharge_rate#

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.

Type:

float | None, optional

charge_equals_discharge#

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.

Type:

bool, optional

charge_efficiency#

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.

Type:

float | None, optional

discharge_efficiency#

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.

Type:

float | None, optional

round_trip_efficiency#

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.

Type:

float | None, optional

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 = (3600, 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.