modelTwoPhaseSeparator

Model of a fully-mixed two-phase tank that works as ideally phase seperator

Information

This is a model of a ideally working two-phase separator. The separator separates a vapor mixture into its liquid and vapour parts until the tank is either empty or full.

Assumptions

Several assumptions are made and presented below:

  • Dynamic mass and energy balances.
  • Thermodynamic equilibrium at all times.
  • Upright position of the separator with circular cross-sectional area.
  • Inlet at the top.
  • Outlet at the bottom.
  • Heat losses can be computed optionally. However, time independent heat transfer coefficients are assumed that must be given a priori.

Moreover, the thermodynamic model is generally based on the tank model presented by Quoilin et al. (2014) in their ThermoCycle library.

Calculation of specific enthalpies

The specific enthalpies at the tank's inlet and outlet depend on the relative tank level. The calculation procedures are presented below:

Calculation procedure of specific enthalpy at inlet

Calculation procedure of specific enthalpy at outlet

Implementation

If the two-phase separator is connected with respect to design direction, it will behave like a liquid receiver. If the two-phase separator is connected aggainst design direction or flow reversal occurs, it will behave like a mist eliminator.

References

Quoilin, Sylvain; Desideri, Adriano; Wronski, Jorrit; Bell, Ian and Lemort, Vincent (2014): ThermoCycle: A Modelica library for the simulation of thermodynamic systems. In: Proceedings of the 10th International Modelica Conference; March 10-15; 2014; Lund; Sweden. Linköping University Electronic Press, S. 683–692.

Parameters

TypeNameDefaultDescription
Geometry
Modelica.Units.SI.VolumeVTanInn2e-3Inner total volume of the tank
Modelica.Units.SI.AreaATanInnVTanInn/hTanInnInner cross-sectional area of the tank
Modelica.Units.SI.LengthhTanInn0.5Inner height of the tank
Modelica.Units.SI.DiameterdTanInnsqrt(4*ATanInn/Modelica.Constants.pi)Inner diameter of the tank
Heat losses › General
BooleanuseHeatLossfalse= true, if heat losses are computed
Heat losses › Geometry
Modelica.Units.SI.LengthsIns0.1Thickness of insulation
Heat losses › Properties
Modelica.Units.SI.ThermalConductivitylamIns0.04Thermal conductivity of the insulation
Modelica.Units.SI.CoefficientOfHeatTransferalpInn100Inner mean heat transfer coefficient
Modelica.Units.SI.CoefficientOfHeatTransferalpOut10Outer mean heat transfer coefficient
Assumptions
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced › Medium Initialisation
Modelica.Units.SI.PressureDifferencedp_start0Guess value of dp = port_a.p - port_b.p
Medium.MassFlowRatem_flow_start_a0.1Guess value of port_a.m_flow
Medium.MassFlowRatem_flow_start_b0.1Guess value of port_b.m_flow
Advanced › Tank Initialisation
BooleansteStafalse= true, if tank is initialised steady state
Modelica.Units.SI.VolumeVLiq00.2*VTanInnVolume of the liquid phase at initialisation
Modelica.Units.SI.AbsolutePressurepTan010e5Mean pressure of the medium in the tank at initialisation
Modelica.Units.SI.SpecificEnthalpyhTan0300e3Mean specific enthalpy of the medium in the tank at initialisation
Advanced › Numeric limitations
Modelica.Units.SI.MassFlowRatem_flow_nominal0.1Nominal mass flow rate
Medium.MassFlowRatem_flow_small1e-6*m_flow_nominalSmall mass flow rate for regularization of zero flow
Advanced › Diagnostics
Booleanshow_Tfalse= true, if temperatures at port_a and port_b are computed
Booleanshow_V_flowfalse= true, if volume flow rate at port_a and port_b are computed
Booleanshow_tankPropertiestrue= true, if tank properties are included as summary record
Booleanshow_tankPropertiesDetailedfalse= true, if more detailed tank properties are included as summary record
Booleanshow_heatLossesfalse= true, if heat losses are included as summary record

Components

TypeNameDefaultDescription
Medium.SaturationPropertiessatTanSaturation properties of the medium in the tank
TankPropertiestankPropertiesRecord that summarises basic tank properties
TankPropertiesDetailedtankPropertiesDetailedRecord that summarises detailed tank properties
HeatLossesheatLossesRecord that contains properties of calculated heat losses
Modelica.Fluid.Interfaces.FluidPort_aport_aFluid connector a (positive design flow direction is from port_a to port_b)
Modelica.Fluid.Interfaces.FluidPort_bport_bFluid connector b (positive design flow direction is from port_a to port_b)
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_aheatPortHeat port for heat losses if losses are computed
Modelica.Units.SI.VolumeFlowRateport_a_V_flowport_a.m_flow/Modelica.Fluid.Utilities.regStep(port_a.m_flow, Medium.density(Medium.setState_phX(p = port_a.p, h = inStream(port_a.h_outflow), X = inStream(port_a.Xi_outflow))), Medium.density(Medium.setState_phX(p = port_b.p, h = inStream(port_b.h_outflow), X = inStream(port_b.Xi_outflow))), m_flow_small)Volume flow rate at port_a (positive when flow from port_a to port_b)
Modelica.Units.SI.VolumeFlowRateport_b_V_flowport_b.m_flow/Modelica.Fluid.Utilities.regStep(port_b.m_flow, Medium.density(Medium.setState_phX(p = port_b.p, h = inStream(port_b.h_outflow), X = inStream(port_b.Xi_outflow))), Medium.density(Medium.setState_phX(p = port_a.p, h = inStream(port_a.h_outflow), X = inStream(port_a.Xi_outflow))), m_flow_small)Volume flow rate at port_b (positive when flow from port_a to port_b)
Medium.Temperatureport_a_TModelica.Fluid.Utilities.regStep(port_a.m_flow, Medium.temperature(Medium.setState_phX(p = port_a.p, h = inStream(port_a.h_outflow), X = inStream(port_a.Xi_outflow))), Medium.temperature(Medium.setState_phX(p = port_a.p, h = port_a.h_outflow, X = port_a.Xi_outflow)), m_flow_small)Temperature close to port_a, if show_T = true
Medium.Temperatureport_b_TModelica.Fluid.Utilities.regStep(port_b.m_flow, Medium.temperature(Medium.setState_phX(p = port_b.p, h = inStream(port_b.h_outflow), X = inStream(port_b.Xi_outflow))), Medium.temperature(Medium.setState_phX(p = port_b.p, h = port_b.h_outflow, X = port_b.Xi_outflow)), m_flow_small)Temperature close to port_b, if show_T = true

Contents

NameDescription
Medium
TankPropertiesRecord that contains properties of the tank
TankPropertiesDetailedRecord that contains detailed properties of the tank
HeatLossesRecord that contains properties of calculated heat losses

Revisions

  • October 18, 2017, by Mirko Engelpracht, Christian Vering:
    First implementation (see issue 457).