h2integrate.control.control_strategies.demand_openloop_controller#
Classes
|
Base OpenMDAO component for open-loop demand tracking. |
|
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_configortech_config.
- compute()#
This method must be implemented by subclasses to define the controller.
- Raises:
NotImplementedError -- Always, unless implemented in a subclass.