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 resulting mixture 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 between 0 and 2 degrees of freedom, depending on construction arguments.
Typical fixed variables are:
 reactor heat duty (has_heat_transfer = True only).
 reactor pressure change (has_pressure_change = True only).
Model Structure¶
The core Gibbs reactor unit model consists of a single ControlVolume0DBlock (named control_volume) with one Inlet Port (named inlet) and one Outlet Port (named outlet).
Variables¶
Gibbs reactor units add the following additional Variables beyond those created by the Control Volume Block.
Variable Name  Symbol  Notes 

lagrange_mult  \(L_{t,e}\)  Lagrange multipliers 
heat_duty  \(Q_t\)  Only if has_heat_transfer = True, reference 
deltaP  \(\Delta P_t\)  Only if has_pressure_change = True, reference 
Constraints¶
Gibbs reactor models write the following additional constraints to calculate the state that corresponds to the minimum Gibbs energy of the system.
gibbs_minimization(time, phase, component):
where \(g_{partial,t,j}\) is the partial molar Gibbs energy of component \(j\) at time \(t\), \(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_{partial,t,j}\) and \(\alpha_{j,e}\) come from the outlet StateBlock.
GibbsReactor Class¶

class
idaes.unit_models.gibbs_reactor.
GibbsReactor
(*args, **kwargs)¶ Parameters:  rule (function) – A rule function or None. Default rule calls build().
 concrete (bool) – If True, make this a toplevel model. Default  False.
 ctype (str) – Pyomo ctype of the block. Default  “Block”
 default (dict) –
Default ProcessBlockData config
 Keys
 dynamic
 Gibbs reactors do not support dynamic models, thus this must be False.
 has_holdup
 Gibbs reactors do not have defined volume, thus this must be False.
 energy_balance_type
 Indicates what type of energy balance should be constructed, default  EnergyBalanceType.enthalpyTotal. Valid values: { EnergyBalanceType.none  exclude energy balances, EnergyBalanceType.enthalpyTotal  single enthalpy balance for material, EnergyBalanceType.enthalpyPhase  enthalpy balances for each phase, EnergyBalanceType.energyTotal  single energy balance for material, EnergyBalanceType.energyPhase  energy balances for each phase.}
 momentum_balance_type
 Indicates what type of momentum balance should be constructed, default  MomentumBalanceType.pressureTotal. Valid values: { MomentumBalanceType.none  exclude momentum balances, MomentumBalanceType.pressureTotal  single pressure balance for material, MomentumBalanceType.pressurePhase  pressure balances for each phase, MomentumBalanceType.momentumTotal  single momentum balance for material, MomentumBalanceType.momentumPhase  momentum balances for each phase.}
 has_heat_transfer
 Indicates whether terms for heat transfer should be constructed, default  False. Valid values: { True  include heat transfer terms, False  exclude heat transfer terms.}
 has_pressure_change
 Indicates whether terms for pressure change should be constructed, default  False. Valid values: { True  include pressure change terms, False  exclude pressure change terms.}
 property_package
 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.}
 property_package_args
 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 described under the “default” argument above.
 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 overide the default behavior of matching the BlockData index exactly to the index in initialize.
Returns: (GibbsReactor) New instance
GibbsReactorData Class¶

class
idaes.unit_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.