The IDAES Mixer unit model represents operations where multiple streams of material are combined into a single flow. The Mixer class can be used to create either a stand-alone mixer unit, or as part of a unit model where multiple streams need to be mixed.
Mixer units have zero degrees of freedom.
The IDAES Mixer unit model does not use ControlVolumes, and instead writes a set of material, energy and momentum balances to combine the inlet streams into a single mixed stream. Mixer models have a user-defined number of inlet Ports (by default named inlet_1, inlet_2, etc.) and one outlet Port (named outlet).
Mixed State Block
If a mixed state block is provided in the construction arguments, the Mixer model will use this as the StateBlock for the mixed stream in the resulting balance equations. This allows a Mixer unit to be used as part of a larger unit operation by linking multiple inlet streams to a single existing StateBlock.
Mixer units have the following variables (i indicates index by inlet):
Variable Name | Symbol | Notes |
---|---|---|
phase_equilibrium_generation | Xeq, t, r | Only if has_phase_equilibrium = True, Generation term for phase equilibrium |
minimum_pressure | Pmin, t, i | Only if momentum_mixing_type = MomemntumMixingType.minimize |
Mixer units have the following parameters:
Variable Name | Symbol | Notes |
---|---|---|
eps_pressure | ϵ | Only if momentum_mixing_type = MomemntumMixingType.minimize, smooth minimum parameter |
The constraints written by the Mixer model depend upon the construction arguments chosen.
If material_mixing_type is `extensive`:
- If material_balance_type is `componentPhase`:
`material_mixing_equations(t, p, j)`:
0 = ∑iFin, i, p, j − Fout, p, j + ∑rnr, p, j × Xeq, t, r
- If material_balance_type is `componentTotal`:
`material_mixing_equations(t, j)`:
0 = ∑p(∑iFin, i, p, j − Fout, p, j + ∑rnr, p, j × Xeq, t, r)
- If material_balance_type is `total`:
`material_mixing_equations(t)`:
0 = ∑p∑j(∑iFin, i, p, j − Fout, p, j + ∑rnr, p, j × Xeq, t, r)
where nr, p, j is the stoichiometric coefficient of component j in phase p in reaction r.
If 'energy_mixing_type` is `extensive`:
`enthalpy_mixing_equations(t)`:
0 = ∑i∑pHin, i, p − ∑pHout, p
If 'momentum_mixing_type` is minimize, a series of smooth minimum operations are performed:
`minimum_pressure_constraint(t, i)`:
For the first inlet:
Pmin, t, i = Pt, iOtherwise:
Pmin, t, i = smin(Pmin, t, i − 1, Pt, i, eps)
Here, Pt, i is the pressure in inlet i at time t, Pmin, t, i is the minimum pressure in all inlets up to inlet i, and smin is the smooth minimum operator (see IDAES Utility Function documentation).
The minimum pressure in all inlets is then:
`mixture_pressure(t)`:
Pmix, t = Pmin, t, i = last
If momentum_mixing_type is equality, the pressure in all inlets and the outlet are equated.
Note
This may result in an over-specified problem if the user is not careful.
`pressure_equality_constraints(t, i)`:
Pmix, t = Pt, i
Often the minimum inlet pressure constraint is useful for sequential modular type initialization, but the equal pressure constants are required for pressure-driven flow models. In these cases it may be convenient to use the minimum pressure constraint for some initialization steps, them deactivate it and use the equal pressure constraints. The momentum_mixing_type is minimum_and_equality this will create the constraints for both with the minimum pressure constraint being active.
The mixture_pressure(t) and pressure_equality_constraints(t, i) can be directly activated and deactivated, but only one set of constraints should be active at a time. The use_minimum_inlet_pressure_constraint()
and use_equal_pressure_constraint()
methods are also provided to switch between constant sets.
idaes.models.unit_models.mixer
Mixer
MixerData