PEM Electrolyzer

The DISPATCHES PEM Electrolyzer Model represents a simple proton-exchange membrane electrolyzer that operates with a fixed efficiency in converting electricity to hydrogen gas. The outlet state is determined via an H2 property package.

Degrees of Freedom

The PEM Electrolyzer Model has 0 degrees of freedom.

Model Structure

The PEM Electrolyzer Model consists of a fixed conversion rate between the inlet electricity and the outlet flow rate of hydrogen gas.


The PEM Electrolyzer Model Model uses the following variables:

Variable Name








\(O_{t, *}\)

state variables such as mol flow, temperature, pressure


Outlet flow of hydrogen gas depends on efficiency:

\[O_{t, f} = I_{t} \times \eta\]

PEM Electrolyzer Class

class dispatches.unit_models.pem_electrolyzer.PEM_Electrolyzer(*args, **kwds)

Simple 0D proton-exchange membrane electrolyzer model.

  • rule (function) – A rule function or None. Default rule calls build().

  • concrete (bool) – If True, make this a toplevel model. Default - False.

  • ctype (class) –

    Pyomo ctype of the block. Default - pyomo.environ.Block

    Config args

    PEM Electrolyzer does not support dynamic models, thus this must be False.


    Gibbs reactors do not have defined volume, thus this must be False.


    Property parameter object used to define property calculations, default - useDefault. Valid values: { useDefault - use default package from parent model or flowsheet, PropertyParameterObject - a PropertyParameterBlock object.}


    A ConfigBlock with arguments to be passed to a property block(s) and used when constructing these, default - None. Valid values: { see property package for documentation.}

  • initialize (dict) – ProcessBlockData config for individual elements. Keys are BlockData indexes and values are dictionaries with config arguments as keys.

  • idx_map (function) – Function to take the index of a BlockData element and return the index in the initialize dict from which to read arguments. This can be provided to override the default behavior of matching the BlockData index exactly to the index in initialize.


(PEM_Electrolyzer) New instance