modelBoilerPolynomial

A equilibrium boiler with water phase change from liquid to vapor, discharging saturated steam vapor, with the efficiency curve described by a polynomial.

Extends from Buildings.BaseClasses.BaseIconLow (Base icon with model name below the 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 steam boiler that discharges saturated steam and has an efficiency curve defined by a polynomial. The efficiency in this model represents the fuel-to-water efficiency (e.g., thermal efficiency). This model is similar to the Buildings.Fluid.Boilers.BoilerPolynomial for the efficiency and fuel mass flow rate computation with the following exceptions:

  • June 17, 2026, by Michael Wetter:
    Updated implementation to allow a flow coefficient n that is different from 2. This allows use of the model for not fully turbulent flow.
    This is for Buildings, #4620.
  • Water enters port_a in liquid state and exits port_b in vapor state.
  • The liquid and vapor phases are at equilibrium; thus, the steam boiler is constrained to saturated states only with the volume containing a wet steam mixture.
  • If the boiler is configured in steady state, several blocks involving the heat flow rate are conditionally removed to avoid overconstraining the model. This is because the discharging fluid is constrained at a saturated state. The blocks that are conditionally removed as a result are within the green region in the below figure:

Boiler polynomial steam with blocks in green conditionally removed if steady state

Implementation

In order to improve the numerical efficiency, this model follows the split-medium approach using the Buildings.DHC.BaseClasses.Steam.PartialTwoPortTwoMedium interface model. The saturated mixing volume for an evaporation process Buildings.DHC.Plants.Steam.BaseClasses.ControlVolumeEvaporation represents the phase change process of water from liquid to vapor at equilibrium.

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

Parameters

TypeNameDefaultDescription
Modelica.Units.SI.MassFlowRatem_flow_small (from PartialTwoPortTwoMedium)1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow
Modelica.Units.SI.PowerQ_flow_nominalNominal heating power
Modelica.Units.SI.TemperatureT_nominal373.15Temperature used to compute nominal efficiency (only used if efficiency curve depends on temperature)
Buildings.Fluid.Types.EfficiencyCurveseffCurBuildings.Fluid.Types.EfficiencyCurves.ConstantCurve used to compute the efficiency
Real[:]a{0.9}Coefficients for efficiency curve
Buildings.Fluid.Data.Fuels.GenericfueFuel type
Modelica.Units.SI.ThermalConductanceUA0.05*Q_flow_nominal/30Overall UA value
Nominal condition
Modelica.Units.SI.MassFlowRatem_flow_nominal (from PartialTwoPortTwoMedium)Nominal mass flow rate
Modelica.Units.SI.PressureDifferencedp_nominalPressure drop at nominal mass flow rate
Advanced › Diagnostics
Booleanshow_T (from PartialTwoPortTwoMedium)false= true, if actual temperature at port is computed
Assumptions
BooleanallowFlowReversal (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.DynamicsenergyDynamics (from PartialTwoPortTwoMedium)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Modelica.Fluid.Types.DynamicsmassDynamics (from PartialTwoPortTwoMedium)energyDynamicsType of mass balance: dynamic (3 initialization options) or steady state
Initialization
Medium_b.AbsolutePressurep_start (from PartialTwoPortTwoMedium)Medium_b.p_defaultStart value of pressure
Medium_b.TemperatureT_start (from PartialTwoPortTwoMedium)Medium_b.T_defaultStart value of temperature
Booleanfixed_p_startfalseSet to true if p_start is to be used as an explicit initial equation, not an initial guess
Advanced
Realn2Flow exponent, n=1 for laminar, n=2 for turbulent
Dynamics
Modelica.Units.SI.VolumeV1.5E-6*Q_flow_nominalTotal internal volume of boiler
Modelica.Units.SI.MassmDry1.5E-3*Q_flow_nominalMass of boiler that will be lumped to water heat capacity

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a (from PartialTwoPortTwoMedium)Fluid connector a (positive design flow direction is from port_a to port_b)
Modelica.Fluid.Interfaces.FluidPort_bport_b (from PartialTwoPortTwoMedium)Fluid connector b (positive design flow direction is from port_a to port_b)
Modelica.Blocks.Interfaces.RealInputyPart load ratio
Modelica.Blocks.Interfaces.RealOutputVLiqOutput liquid water volume
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_aheatPortHeat port, can be used to connect to ambient
Modelica.Blocks.Interfaces.RealOutputQFueFloHeat flow rate of the fuel

Components

TypeNameDefaultDescription
Modelica.Units.SI.MassFlowRatem_flow (from PartialTwoPortTwoMedium)port_a.m_flowMass flow rate from port_a to port_b (m_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp (from PartialTwoPortTwoMedium)port_a.p - port_b.pPressure difference between port_a and port_b
Medium_a.ThermodynamicStatesta_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.ThermodynamicStatesta_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
Modelica.Units.SI.Efficiencyetaif effCur == Buildings.Fluid.Types.EfficiencyCurves.Constant then a[1] elseif effCur == Buildings.Fluid.Types.EfficiencyCurves.Polynomial then Buildings.Utilities.Math.Functions.polynomial(a = a, x = y_internal) elseif effCur == Buildings.Fluid.Types.EfficiencyCurves.QuadraticLinear then Buildings.Utilities.Math.Functions.quadraticLinear(a = aQuaLin, x1 = y_internal, x2 = MediumSte.saturationTemperature(port_a.p)) else 0Boiler efficiency
Modelica.Units.SI.PowerQFue_flowy_internal*Q_flow_nominal/eta_nominalHeat released by fuel
Modelica.Units.SI.PowerQWat_floweta*QFue_flowHeat transfer from gas into water
Modelica.Units.SI.MassFlowRatemFue_flowQFue_flow/fue.hFuel mass flow rate
Modelica.Units.SI.VolumeFlowRateVFue_flowmFue_flow/fue.dFuel volume flow rate
Modelica.Thermal.HeatTransfer.Components.HeatCapacitorheaCapDryHeat capacity of boiler metal
Buildings.DHC.Plants.Steam.BaseClasses.ControlVolumeEvaporationvolSteam/water control volume
Buildings.Fluid.FixedResistances.PressureDropresFlow resistance

Contents

NameDescription
MediumWatWater medium - port_a (inlet)
MediumSteSteam medium - port_b (oulet)

Revisions

  • September 15, 2023, by Kathryn Hinkelman:
    Updated publication references.
  • February 25, 2022 by Kathryn Hinkelman:
    Refactored base classes for improved extensibility and relocated models into Steam subpackages.
  • July 22, 2021 by Kathryn Hinkelman:
    First implementation.