h2integrate.control.control_strategies.demand_openloop_controller#

Classes

DemandOpenLoopControlBase(**kwargs)

Base OpenMDAO component for open-loop demand tracking.

DemandOpenLoopControlBaseConfig(*, ...)

Configuration for defining an open-loop demand profile.

class h2integrate.control.control_strategies.demand_openloop_controller.DemandOpenLoopControlBaseConfig(*, commodity_units, commodity_name, demand_profile)#

Configuration for defining an open-loop demand profile.

This configuration object specifies the commodity being controlled and the demand profile that should be met by downstream components.

Parameters:
  • commodity_units (str)

  • commodity_name (str)

  • demand_profile (int | float | list)

commodity_units#

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

Type:

str

commodity_name#

Name of the commodity being controlled (e.g., "hydrogen"). Converted to lowercase and stripped of whitespace.

Type:

str

demand_profile#

Demand values for each timestep, in the same units as commodity_units. May be a scalar for constant demand or a list/array for time-varying demand.

Type:

int | float | list

commodity_units: str#
commodity_name: str#
demand_profile: int | float | list#
class h2integrate.control.control_strategies.demand_openloop_controller.DemandOpenLoopControlBase(**kwargs)#

Base OpenMDAO component for open-loop demand tracking.

This component defines the interfaces required for open-loop demand controllers, including inputs for demand, supplied commodity, and outputs tracking unmet demand, unused production, and total unmet demand. Subclasses must implement the compute() method to define the controller behavior.

initialize()#

Declare component options.

Options:

driver_config (dict): Driver-level configuration parameters. plant_config (dict): Plant-level configuration, including number of

simulation timesteps.

tech_config (dict): Technology-specific configuration, including

controller settings.

setup()#

Define inputs and outputs for demand control.

Creates time-series inputs and outputs for commodity demand, supply, unmet demand, unused commodity, and total unmet demand. Shapes and units are determined by the plant configuration and controller configuration.

Raises:

KeyError -- If required configuration keys are missing from plant_config or tech_config.

compute()#

This method must be implemented by subclasses to define the controller.

Raises:

NotImplementedError -- Always, unless implemented in a subclass.