modelTwoPhaseSeparator
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:
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
| Type | Name | Default | Description |
|---|---|---|---|
| Geometry | |||
| Modelica.Units.SI.Volume | VTanInn | 2e-3 | Inner total volume of the tank |
| Modelica.Units.SI.Area | ATanInn | VTanInn/hTanInn | Inner cross-sectional area of the tank |
| Modelica.Units.SI.Length | hTanInn | 0.5 | Inner height of the tank |
| Modelica.Units.SI.Diameter | dTanInn | sqrt(4*ATanInn/Modelica.Constants.pi) | Inner diameter of the tank |
| Heat losses › General | |||
| Boolean | useHeatLoss | false | = true, if heat losses are computed |
| Heat losses › Geometry | |||
| Modelica.Units.SI.Length | sIns | 0.1 | Thickness of insulation |
| Heat losses › Properties | |||
| Modelica.Units.SI.ThermalConductivity | lamIns | 0.04 | Thermal conductivity of the insulation |
| Modelica.Units.SI.CoefficientOfHeatTransfer | alpInn | 100 | Inner mean heat transfer coefficient |
| Modelica.Units.SI.CoefficientOfHeatTransfer | alpOut | 10 | Outer mean heat transfer coefficient |
| Assumptions | |||
| Boolean | allowFlowReversal | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Advanced › Medium Initialisation | |||
| Modelica.Units.SI.PressureDifference | dp_start | 0 | Guess value of dp = port_a.p - port_b.p |
| Medium.MassFlowRate | m_flow_start_a | 0.1 | Guess value of port_a.m_flow |
| Medium.MassFlowRate | m_flow_start_b | 0.1 | Guess value of port_b.m_flow |
| Advanced › Tank Initialisation | |||
| Boolean | steSta | false | = true, if tank is initialised steady state |
| Modelica.Units.SI.Volume | VLiq0 | 0.2*VTanInn | Volume of the liquid phase at initialisation |
| Modelica.Units.SI.AbsolutePressure | pTan0 | 10e5 | Mean pressure of the medium in the tank at initialisation |
| Modelica.Units.SI.SpecificEnthalpy | hTan0 | 300e3 | Mean specific enthalpy of the medium in the tank at initialisation |
| Advanced › Numeric limitations | |||
| Modelica.Units.SI.MassFlowRate | m_flow_nominal | 0.1 | Nominal mass flow rate |
| Medium.MassFlowRate | m_flow_small | 1e-6*m_flow_nominal | Small mass flow rate for regularization of zero flow |
| Advanced › Diagnostics | |||
| Boolean | show_T | false | = true, if temperatures at port_a and port_b are computed |
| Boolean | show_V_flow | false | = true, if volume flow rate at port_a and port_b are computed |
| Boolean | show_tankProperties | true | = true, if tank properties are included as summary record |
| Boolean | show_tankPropertiesDetailed | false | = true, if more detailed tank properties are included as summary record |
| Boolean | show_heatLosses | false | = true, if heat losses are included as summary record |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Medium.SaturationProperties | satTan | Saturation properties of the medium in the tank | |
| TankProperties | tankProperties | Record that summarises basic tank properties | |
| TankPropertiesDetailed | tankPropertiesDetailed | Record that summarises detailed tank properties | |
| HeatLosses | heatLosses | Record that contains properties of calculated heat losses | |
| Modelica.Fluid.Interfaces.FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b) | |
| Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a | heatPort | Heat port for heat losses if losses are computed | |
| Modelica.Units.SI.VolumeFlowRate | port_a_V_flow | port_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.VolumeFlowRate | port_b_V_flow | port_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.Temperature | port_a_T | Modelica.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.Temperature | port_b_T | Modelica.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
| Name | Description |
|---|---|
| Medium | |
| TankProperties | Record that contains properties of the tank |
| TankPropertiesDetailed | Record that contains detailed properties of the tank |
| HeatLosses | Record that contains properties of calculated heat losses |
Revisions
- October 18, 2017, by Mirko Engelpracht, Christian Vering:
First implementation (see issue 457).