Skip to content

Latest commit

 

History

History
121 lines (70 loc) · 5.15 KB

File metadata and controls

121 lines (70 loc) · 5.15 KB

Mixer

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.

Degrees of Freedom

Mixer units have zero degrees of freedom.

Model Structure

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.

Variables

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

Parameters

Mixer units have the following parameters:

Variable Name Symbol Notes
eps_pressure ϵ Only if momentum_mixing_type = MomemntumMixingType.minimize, smooth minimum parameter

Constraints

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 = ∑pj(∑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 = ∑ipHin, 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, i

Otherwise:


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.

Mixer Class

idaes.models.unit_models.mixer

Mixer

MixerData Class

MixerData