Gibbs Reactor

The IDAES Gibbs reactor model represents a unit operation where a material stream undergoes some set of reactions such that the Gibbs energy of the material is minimized. Gibbs reactors rely on conservation of individual elements within the system, and thus require element balances, and make use of Lagrange multipliers to find the minimum Gibbs energy state of the system.

Degrees of Freedom

Gibbs reactors generally have 1 degree of freedom.

Typical fixed variables are:

  • reactor heat duty (has_heat_transfer = True only).

Model Structure

The core Gibbs reactor unit model consists of a single Holdup0D (named holdup) with one Inlet Port (named inlet) and one Outlet Port (named outlet).

Construction Arguments

CSTR units have the following construction arguments:

  • property_package - property package to use when constructing Property Blocks (default = ‘use_parent_value’). This is provided as a Property Parameter Block by the Flowsheet when creating the model. If a value is not provided, the Holdup Block will try to use the default property package if one is defined.
  • property_package_args - set of arguments to be passed to the Property Blocks when they are created.
  • inlet_list - list of names to be passed to the build_inlets method (default = None).
  • num_inlets - number of inlets argument to be passed to the build_inlets method (default = None).
  • outlet_list - list of names to be passed to the build_outlets method (default = None).
  • num_outlets - number of outlets argument to be passed to the build_outlets method (default = None).

Additionally, Gibbs reactor units have the following construction arguments which are passed to the Holdup Block for determining which terms to construct in the balance equations. Note that Gibbs reactors do not support dynamic = True as holdups (and thus accumulations) are undefined by definition.

Argument Default Value
material_balance_type ‘element_total’
energy_balance_type ‘total’
momentum_balance_type ‘total’
dynamic False (cannot be True)
include_holdup False
has_rate_reactions True
has_equilibrium_reactions True
has_phase_equilibrium False
has_mass_transfer False
has_heat_transfer True
has_work_transfer False
has_pressure_change False

Additional Constraints

Gibbs reactor models write the following additional constraints to calculate the state that corresponds to the minimum Gibbs energy of the system.

\[0 = g_{pc,t,j} + R \times T_{t} \times ln(y_{t,j} + \sum_e{L_{t,e} \times \alpha_{j,e}})\]

where \(g_{pc,t,j}\) is the pure component molar Gibbs energy of component \(j\) at time \(t\), \(R\) is the gas constant, \(T_t\) is the final temperature of the material, \(y_{t,j}\) is the mole fraction of component \(j\) at time :math`t` in the final material stream, \(L_{t,e}\) is the Lagrange multiplier for element \(e\) at time \(t\) and \(\alpha_{j,e}\) is the number of moles of element \(e\) in one mole of component \(j\). \(g_{pc,t,j}\), \(R\), \(y_{t,j}\) and \(\alpha_{j,e}\) all come from the outlet Property Block.

Variables

Gibbs reactor units add the following additional Variables beyond those created by the Holdup Block.

Variable Name Notes
\(L_{t,e}\) lagrange_mult  
\(V_t\) volume If include_holdup = True this is a reference to holdup.volume, otherwise a Var attached to the Unit Model
\(Q_t\) heat Only if has_heat_transfer = True, reference to holdup.heat

GibbsReactorData Class

class idaes.models.gibbs_reactor.GibbsReactorData(component)[source]

Standard Gibbs Reactor Unit Model Class

This model assume all possible reactions reach equilibrium such that the system partial molar Gibbs free energy is minimized. Since some species mole flow rate might be very small, the natural log of the species molar flow rate is used. Instead of specifying the system Gibbs free energy as an objective function, the equations for zero partial derivatives of the grand function with Lagrangian multiple terms with repect to product species mole flow rates and the multiples are specified as constraints.

build()[source]

Begin building model (pre-DAE transformation).

Parameters:None
Returns:None
post_transform_build()[source]

Continue model construction after DAE transformation.

Parameters:None
Returns:None