Buildings.DHC.Loads.Steam.BaseClasses

Package with base classes for Buildings.DHC.Loads.Steam

Information

This package contains base classes that are used to construct the models in Buildings.DHC.Loads.Steam.

Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).

Package Content

Name Description
Buildings.DHC.Loads.Steam.BaseClasses.ControlVolumeCondensation ControlVolumeCondensation Control volume model exhibiting the condensation process of water
Buildings.DHC.Loads.Steam.BaseClasses.SteamTrap SteamTrap Steam trap with isenthalpic expansion from high to atmospheric pressure, followed by a isobaric condensation process as flashed steam is brought back to a liquid state
Buildings.DHC.Loads.Steam.BaseClasses.ValveSelfActing ValveSelfActing Ideal pressure reducing valve for steam heating systems
Buildings.DHC.Loads.Steam.BaseClasses.Examples Examples Collection of models that illustrate model use and test models

Buildings.DHC.Loads.Steam.BaseClasses.ControlVolumeCondensation Buildings.DHC.Loads.Steam.BaseClasses.ControlVolumeCondensation

Control volume model exhibiting the condensation process of water

Buildings.DHC.Loads.Steam.BaseClasses.ControlVolumeCondensation

Information

This model represents a condensation process of water with liquid and vapor phases in equilibrium and at a saturated state. Further information regarding the model formulation and assumptions are in the base class Buildings.DHC.BaseClasses.Steam.PartialSaturatedControlVolume.

References

Kathryn Hinkelman, Saranya Anbarasu, Michael Wetter, Antoine Gautier, Wangda Zuo. 2022. “A Fast and Accurate Modeling Approach for Water and Steam Thermodynamics with Practical Applications in District Heating System Simulation,” Energy, 254(A), pp. 124227. 10.1016/j.energy.2022.124227

Kathryn Hinkelman, Saranya Anbarasu, Michael Wetter, Antoine Gautier, Baptiste Ravache, Wangda Zuo 2022. “Towards Open-Source Modelica Models For Steam-Based District Heating Systems.” Proc. of the 1st International Workshop On Open Source Modelling And Simulation Of Energy Systems (OSMSES 2022), Aachen, German, April 4-5, 2022. 10.1109/OSMSES54027.2022.9769121

Extends from Buildings.DHC.BaseClasses.Steam.PartialSaturatedControlVolume (Partial control volume for evaporation/condensation processes).

Parameters

TypeNameDefaultDescription
replaceable package Medium_aPartialMediumMedium model for port_a (inlet)
replaceable package Medium_bPartialMediumMedium model for port_b (outlet)
MassFlowRatem_flow_small1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
replaceable package MediumWatTemperatureDependentDensityLiquid water medium
replaceable package MediumSteSteamSteam medium
VolumeV Total volume [m3]
Nominal condition
MassFlowRatem_flow_nominal Nominal mass flow rate [kg/s]
Initialization
VolumeFlowRateVWat_flow.start0Volumetric flow rate of liquid water [m3/s]
Advanced
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
Assumptions
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal. Used only if model has two ports.
Dynamics
Equations
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state
DynamicsmassDynamicsenergyDynamicsType of mass balance: dynamic (3 initialization options) or steady state
Initialization
AbsolutePressurep_startMediumSte.p_defaultStart value of pressure [Pa]
VolumeVWat_startV/2Start value of liquid volume [m3]

Connectors

TypeNameDescription
replaceable package Medium_aMedium model for port_a (inlet)
replaceable package Medium_bMedium model for port_b (outlet)
FluidPort_aport_aFluid connector a (positive design flow direction is from port_a to port_b)
FluidPort_bport_bFluid connector b (positive design flow direction is from port_a to port_b)
HeatPort_aheatPortHeat port
output RealOutputVLiqLiquid volume [m3]

Modelica definition

model ControlVolumeCondensation "Control volume model exhibiting the condensation process of water" extends Buildings.DHC.BaseClasses.Steam.PartialSaturatedControlVolume( redeclare final package Medium_a=MediumSte, redeclare final package Medium_b=MediumWat); equation // boundary conditions at the ports port_a.m_flow = mSte_flow; port_a.h_outflow = hSte; port_b.m_flow = mWat_flow; port_b.h_outflow = hWat; end ControlVolumeCondensation;

Buildings.DHC.Loads.Steam.BaseClasses.SteamTrap Buildings.DHC.Loads.Steam.BaseClasses.SteamTrap

Steam trap with isenthalpic expansion from high to atmospheric pressure, followed by a isobaric condensation process as flashed steam is brought back to a liquid state

Buildings.DHC.Loads.Steam.BaseClasses.SteamTrap

Information

The steam trap ensures that only liquid condensate leaves the component, while any flashed steam is returned to a liquid state before discharge. The model assumes a steady state isenthalpic thermodynamic process that transforms water from an upstream high pressure state to atmospheric pressure, followed by an isobaric condensation process as flashed steam vapor is returned to a liquid state. This implementation is consistent with physical valves that vent to the atmosphere.

References

Kathryn Hinkelman, Saranya Anbarasu, Michael Wetter, Antoine Gautier, Wangda Zuo. 2022. “A Fast and Accurate Modeling Approach for Water and Steam Thermodynamics with Practical Applications in District Heating System Simulation,” Energy, 254(A), pp. 124227. 10.1016/j.energy.2022.124227

Kathryn Hinkelman, Saranya Anbarasu, Michael Wetter, Antoine Gautier, Baptiste Ravache, Wangda Zuo 2022. “Towards Open-Source Modelica Models For Steam-Based District Heating Systems.” Proc. of the 1st International Workshop On Open Source Modelling And Simulation Of Energy Systems (OSMSES 2022), Aachen, German, April 4-5, 2022. 10.1109/OSMSES54027.2022.9769121

Extends from Buildings.Fluid.Interfaces.PartialTwoPortInterface (Partial model with two ports and declaration of quantities that are used by many models).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
Nominal condition
MassFlowRatem_flow_nominal Nominal mass flow rate [kg/s]
Assumptions
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced
MassFlowRatem_flow_small1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed

Connectors

TypeNameDescription
replaceable package MediumMedium in the component
FluidPort_aport_aFluid connector a (positive design flow direction is from port_a to port_b)
FluidPort_bport_bFluid connector b (positive design flow direction is from port_a to port_b)
output RealOutputQLos_flowHeat transfer loss rate [W]

Modelica definition

model SteamTrap "Steam trap with isenthalpic expansion from high to atmospheric pressure, followed by a isobaric condensation process as flashed steam is brought back to a liquid state" extends Buildings.Fluid.Interfaces.PartialTwoPortInterface( redeclare replaceable package Medium=Buildings.Media.Water); constant Modelica.Units.SI.AbsolutePressure pAtm=101325 "Atmospheric pressure discharge state"; constant Modelica.Units.SI.Temperature TSat= Buildings.Media.Steam.saturationTemperature(pAtm) "Saturation temperature at atmospheric pressure"; Modelica.Blocks.Interfaces.RealOutput QLos_flow(unit="W") "Heat transfer loss rate"; Medium.SpecificEnthalpy dh "Change in enthalpy"; equation // Pressure setpoints port_b.p = pAtm; // Flashed steam condenses port_b.h_outflow = Medium.specificEnthalpy( state=Medium.setState_pTX( p=pAtm, T=TSat, X=inStream(port_a.Xi_outflow))); dh = port_b.h_outflow - inStream(port_a.h_outflow); // Return reverse flow as the inStream value port_a.h_outflow = inStream(port_a.h_outflow); // Steady state conservation of mass port_a.m_flow + port_b.m_flow = 0; // Steady state conservation of energy port_a.m_flow*dh = QLos_flow; end SteamTrap;

Buildings.DHC.Loads.Steam.BaseClasses.ValveSelfActing Buildings.DHC.Loads.Steam.BaseClasses.ValveSelfActing

Ideal pressure reducing valve for steam heating systems

Buildings.DHC.Loads.Steam.BaseClasses.ValveSelfActing

Information

This is the model of self-acting control valve that automatically adjusts the diameter of valve orifice to reduce the unregulated inlet pressure to a constant, reduced outlet pressure.

Implementation

To simplify the complex relationships of the valve opening (y_actual), mass flow rate (m_flow), and change in pressure (dp) for compressible medium (such as steam), this model is implemented using an ideal source Buildings.Fluid.Movers.BaseClasses.IdealSource, that allows the pressure drop to be prescribed independently of mass flow rate.

The model maintains dp based on the user specified downstream pressure value (pb_nominal), except for instances where the upstream pressure falls below pb_nominal. In these instances, the valve exibits no pressure drop (dpSet = 0) and asserts a warning. This model assumes that dp across the valve is independent of m_flow. This generally leads to a simplier set of equations.

References

Kathryn Hinkelman, Saranya Anbarasu, Michael Wetter, Antoine Gautier, Wangda Zuo. 2022. “A Fast and Accurate Modeling Approach for Water and Steam Thermodynamics with Practical Applications in District Heating System Simulation,” Energy, 254(A), pp. 124227. 10.1016/j.energy.2022.124227

Kathryn Hinkelman, Saranya Anbarasu, Michael Wetter, Antoine Gautier, Baptiste Ravache, Wangda Zuo 2022. “Towards Open-Source Modelica Models For Steam-Based District Heating Systems.” Proc. of the 1st International Workshop On Open Source Modelling And Simulation Of Energy Systems (OSMSES 2022), Aachen, German, April 4-5, 2022. 10.1109/OSMSES54027.2022.9769121

Extends from Buildings.Fluid.Interfaces.PartialTwoPortInterface (Partial model with two ports and declaration of quantities that are used by many models).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
Nominal condition
MassFlowRatem_flow_nominal Nominal mass flow rate [kg/s]
Pressurepb_nominal Nominal outlet pressure [Pa]
Assumptions
BooleanallowFlowReversalfalse= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced
MassFlowRatem_flow_small1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
PressureDifferencedp_startpb_nominalGuess value of dp = port_a.p - port_b.p [Pa]
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed

Connectors

TypeNameDescription
FluidPort_aport_aFluid connector a (positive design flow direction is from port_a to port_b)
FluidPort_bport_bFluid connector b (positive design flow direction is from port_a to port_b)

Modelica definition

model ValveSelfActing "Ideal pressure reducing valve for steam heating systems" extends Buildings.Fluid.Interfaces.PartialTwoPortInterface( final allowFlowReversal=false); parameter Modelica.Units.SI.Pressure pb_nominal( displayUnit="Pa", min=101325) "Nominal outlet pressure"; parameter Modelica.Units.SI.PressureDifference dp_start(displayUnit="Pa")=pb_nominal "Guess value of dp = port_a.p - port_b.p"; Buildings.Fluid.Sensors.Pressure pUp(redeclare final package Medium = Medium) "Pressure sensor"; Buildings.Utilities.Math.SmoothMax dpSet(final deltaX=0.5) "Pressure drop setpoint"; protected Buildings.Fluid.Movers.BaseClasses.IdealSource ideSou( redeclare final package Medium = Medium, final allowFlowReversal=allowFlowReversal, final dp_start=dp_start, m_flow_start=m_flow_nominal, final m_flow_small=m_flow_small, final show_T=show_T, final control_m_flow=false, final control_dp=true) "Ideal source controlling dp"; Modelica.Blocks.Sources.RealExpression pbSet(final y=pb_nominal) "Downstream pressure setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant zer(final k=0) "Zero"; Buildings.Controls.OBC.CDL.Reals.Subtract dpReq "Calculating dp required"; equation assert(dpReq.y > 0, "pb_nominal is set higher than the upstream pressure in " + getInstanceName() + ", which results in a negative pressure drop. This is not typical of real systems and should be verified.", AssertionLevel.warning); connect(ideSou.port_b, port_b); connect(pUp.port, ideSou.port_a); connect(zer.y, dpSet.u1); connect(dpSet.y, ideSou.dp_in); connect(port_a, ideSou.port_a); connect(pUp.p, dpReq.u1); connect(pbSet.y, dpReq.u2); connect(dpReq.y, dpSet.u2); end ValveSelfActing;