modelPartialSaturatedControlVolume
Extends from Buildings.BaseClasses.BaseIcon (Base icon), Buildings.DHC.BaseClasses.Steam.PartialTwoPortTwoMedium (Partial model with two ports with two separate medium models without storing mass or energy).
Information
This model represents a partial control volume for either condensation or
evaporation processes of water with liquid and vapor phases in equilibrium
and at a saturated state.
Models that extend this base class need to assign the mass flow rate at
each port and the enthlapy at each port, as exemplifed in the evaporation
and condensation models listed below.
The volume can exchange heat through
its heatPort when configured with dynamic mass and
energy balances. In steady state, the heat port is conditionally removed
in order to maintain a consistent set of equations.
This model is similar to Modelica.Fluid.Examples.DrumBoiler.BaseClasses.EquilibriumDrumBoiler with the following exceptions:
-
Rather than a two-phase medium, fluid mediums are modeled as two
single-state fluids, with liquid water at the up-stream port
(port_a), and steam vapor at the downstream port(port_b)for instances of this base class that model evaporation (the opposite for condensation); - The metal drum is excluded from the mass and energy balances;
Implementation
This model is configured to allow both steady state and dynamic mass
and energy balances. The heat transfer through the
heatPort is disabled in steady state balance.
This is required because the fluid is restricted to a saturated state;
thus, the heat transfer rate is a function of mass flow rate only
if the volume is steady. The fluid mass m in the volume is
calculated as
m = ρsVs + ρwVw
where ρ is density,V is volume, and subscripts represent the steam and liquid water components, respectively. The total internal energy U is
U = ρsVshs + ρwVw − pV
where h is specific enthalpy, p is pressure, and the total volume of fluid V=Vs+Vw.
The steady state mass balance is given as
ṁs + ṁw = 0,
while no additional equation is given for the steady state energy balance, since the heat flow rate into the water must be removed from the system in which the control volume is used.
The dynamic mass and energy balances are given as
dm/dt = ṁs + ṁw
dU/dt = Q̇ + ṁs hs + ṁ
w hw
where ̇ṁs and ṁw
are the mass flow rates of steam and liquid water
respectively; Q̇ is the heat flow rate
into the control volume;
hs and hw are the specific
enthalpies of steam and liquid water, respectively.
Note that with an evaporation process, the liquid
phase (water) is always assigned at the port_a (inlet),
while the vapor phase (steam) is always at the port_b (outlet).
The opposite holds for a condensation process.
Assumptions
Three principal assumptions are made with this model:
- The fluid within the volume is wet steam.
- Liquid and vapor subcomponents are at equilibrium; and
- Fluid is discharged from the volume as ei ther saturated liquid or saturated vapor.
Models that extend this base class include Buildings.DHC.Plants.Steam.BaseClasses.ControlVolumeEvaporation and Buildings.DHC.Loads.Steam.BaseClasses.ControlVolumeCondensation.
Reference
Hinkelman, Kathryn, Saranya Anbarasu, Michael Wetter, Antoine Gautier, and Wangda Zuo. 2022. “A Fast and Accurate Modeling Approach for Water and Steam Thermodynamics with Practical Applications in District Heating System Simulation.” Preprint. February 24. doi:10.13140/RG.2.2.20710.29762.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.MassFlowRate | m_flow_small (from PartialTwoPortTwoMedium) | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Modelica.Units.SI.Volume | V | Total volume | |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from PartialTwoPortTwoMedium) | Nominal mass flow rate | |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialTwoPortTwoMedium) | false | = true, if actual temperature at port is computed |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPortTwoMedium) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal. Used only if model has two ports. |
| Dynamics › Equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from PartialTwoPortTwoMedium) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | massDynamics (from PartialTwoPortTwoMedium) | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state |
| Initialization | |||
| Medium_b.AbsolutePressure | p_start (from PartialTwoPortTwoMedium) | Medium_b.p_default | Start value of pressure |
| Medium_b.Temperature | T_start (from PartialTwoPortTwoMedium) | Medium_b.T_default | Start value of temperature |
| Modelica.Units.SI.Volume | VWat_start | V/2 | Start value of liquid volume |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a (from PartialTwoPortTwoMedium) | Fluid connector a (positive design flow direction is from port_a to port_b) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b (from PartialTwoPortTwoMedium) | Fluid connector b (positive design flow direction is from port_a to port_b) | |
| Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a | heatPort | Heat port | |
| Modelica.Blocks.Interfaces.RealOutput | VLiq | Liquid volume |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.MassFlowRate | m_flow (from PartialTwoPortTwoMedium) | port_a.m_flow | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp (from PartialTwoPortTwoMedium) | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium_a.ThermodynamicState | sta_a (from PartialTwoPortTwoMedium) | Medium_a.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) | Medium properties in port_a |
| Medium_b.ThermodynamicState | sta_b (from PartialTwoPortTwoMedium) | Medium_b.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) | Medium properties in port_b |
| MediumWat.ThermodynamicState | stateWat | Saturated state, liquid water | |
| MediumSte.ThermodynamicState | stateSte | Saturated state, steam | |
| MediumSte.AbsolutePressure | p | Pressure inside volume | |
| MediumSte.Temperature | T | Temperature inside volume | |
| Modelica.Units.SI.Volume | VSte | Volume of steam vapor | |
| Modelica.Units.SI.Volume | VWat | Volume of liquid water phase | |
| Modelica.Units.SI.VolumeFlowRate | VWat_flow | Volumetric flow rate of liquid water | |
| MediumSte.SpecificEnthalpy | hSte | Specific enthalpy of steam vapor | |
| MediumWat.SpecificEnthalpy | hWat | Specific enthalpy of liquid water | |
| MediumSte.Density | rhoSte | Density of steam vapor | |
| MediumWat.Density | rhoWat | Density of liquid water | |
| Modelica.Units.SI.Mass | m | Total mass of volume | |
| Modelica.Units.SI.Energy | U | Internal energy | |
| Modelica.Units.SI.MassFlowRate | mWat_flow | Water mass flow rate | |
| Modelica.Units.SI.MassFlowRate | mSte_flow | Steam mass flow rate |
Contents
| Name | Description |
|---|---|
| Liquid water medium | |
| Steam medium |
Revisions
-
May 4, 2022 by David Blum:
Update stateSte to use MediumSte instead of MediumWat. -
February 26, 2022 by Kathryn Hinkelman:
First implementation.