Flash Unit

The IDAES Flash model represents a unit operation where a single stream undergoes a flash separation into two phases. The Flash model supports mutile types of flash operations, including pressure changes and addition or removal of heat.

Degrees of Freedom

Flash units generally have 2 degrees of freedom.

Typical fixed variables are:

  • heat duty or outlet temperature (see note),
  • pressure change or outlet pressure.

Note: When setting the outlet temeprature of a Flash unit, it is best to set holdup.properties_out[t].temperature. Setting the temperature in one of the outlet streams directly results in a much harder problme ot solve, and may be degenerate in some cases.

Model Structure

The core Flash unit model consists of a single Holdup0D (named holdup) with one Inlet Port (named inlet) and one Outlet Port (named outlet, default with two indexes (‘Vap’ and ‘Liq’)). The Flash model supports two methods for splitting the material stream between the two outlets; either by utilizing an IDAES OutletSplitter Block with fixed split fractions, or by directly linking the vapor flow to the “Vap” outlet and the liquid flow to the “Liq” outlet.

Using an OutletSplitter block allows for a generic formulation that can handle more than just vapor-liquid equilibrium and allows for non-ideal splitting (with some entrainment of phases), but results in a larger problem with additonal variables and constraints. The direct splitting option results in a smaller problem size, but is limited to a small set of problem formulations.

Direct outlet splitting requires that the state variables used by the assoicated property package meet specific requirements in order that the Flash model can find the necessary information for splitting the outlet flows. To support direct outlet splitting, the property package must use one of a specified set of state variables and support a certain set of property calacuations, as outlined in the table below.

State Variables Required Properties
Material flow and composition
flow_mol & mole_frac flow_mol_phase & mole_frac_phase
flow_mol_phase & mole_frac_phase flow_mol_phase & mole_frac_phase
flow_mol_comp flow_mol_phase_comp
flow_mol_phase_comp flow_mol_phase_comp
flow_mass & mass_frac flow_mass_phase & mass_frac_phase
flow_mass_phase & mass_frac_phase flow_mass_phase & mass_frac_phase
flow_mass_comp flow_mass_phase_comp
flow_mass_phase_comp flow_mass_phase_comp
Energy state
temperature temperature
enth_mol enth_mol_phase
enth_mol_phase enth_mol_phase
enth_mass enth_mass_phase
enth_mass_phase enth_mass_phase
Pressure state
pressure pressure

Construction Arguments

Flash 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 = [‘Vap’, ‘Liq’]).
  • num_outlets - number of outlets argument to be passed to the build_outlets method (default = None).
  • outlet_type - whether to use a genetic OutletSplitter (‘generic’, default) or to use direct outlet splitting (‘direct’).

Additionally, Flash units have the following construction arguments which are passed to the Holdup Block for determining which terms to construct in the balance equations.

Argument Default Value
material_balance_type ‘component_phase’
energy_balance_type ‘enthalpy_total’
momentum_balance_type ‘pressure’
dynamic False
include_holdup False
has_rate_reactions False
has_equilibrium_reactions False
has_phase_equilibrium True
has_mass_transfer False
has_heat_transfer True
has_work_transfer False
has_pressure_change True

Additional Constraints

Flash units write no additional Constraints beyond those written by the Holdup Block.

However, if an OutletSplitter is used, the Flash unit automatically fixes the split fractions of the outlets such that all the liquid phase goes to the outlet named “Liq” and all the vapor phase goes to the outlet named “Vap”. This is done as follows for all t in the time domain:

  • split_fraction(t, “Liq”, “Liq”).fix(1.0)
  • split_fraction(t, “Vap”, “Vap”).fix(1.0)

Variables

Flash units add one additional Variable beyond those created by the Holdup Block.

Name Notes
split_fraction Reference to holdup.outlet_splitter.split_fraction

FlashData Class

class idaes.models.flash.FlashData(component)[source]

Standard Flash Unit Model Class

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