modelBoilerPolynomial

Boiler with efficiency curve described by a polynomial of the control signal and (optional) temperature

Extends from Buildings.Fluid.Boilers.BaseClasses.PartialBoiler (Boiler base class with efficiency unspecified).

Information

This is a model of a boiler whose efficiency is described by a polynomial. See Buildings.Fluid.Boilers.UsersGuide for details.

The parameter effCur determines what polynomial is used to compute the efficiency with the following selections:

Parameter effCur

Efficiency curve

Buildings.Fluid.Types.EfficiencyCurves.Constant

η = a1

Buildings.Fluid.Types.EfficiencyCurves.Polynomial

η = a1 + a2 y + a3 y2 + ...

Buildings.Fluid.Types.EfficiencyCurves.QuadraticLinear

η = a1 + a2 y + a3 y2 + (a4 + a5 y + a6 y2) T

where T is the boiler outlet temperature in Kelvin. For effCur = Buildings.Fluid.Types.EfficiencyCurves.Polynomial, an arbitrary number of polynomial coefficients can be specified.

Parameters

TypeNameDefaultDescription
BooleanhomotopyInitialization (from TwoPortHeatMassExchanger)true= true, use homotopy method
Buildings.Fluid.Data.Fuels.Genericfue (from PartialBoiler)Fuel type
Modelica.Units.SI.PowerQ_flow_nominal (from PartialBoiler)Nominal heating power
Modelica.Units.SI.ThermalConductanceUA (from PartialBoiler)0.05*Q_flow_nominal/30Overall UA value
Modelica.Units.SI.Efficiencyeta_nominal (from PartialBoiler)Boiler efficiency at nominal condition
Buildings.Fluid.Types.EfficiencyCurveseffCurBuildings.Fluid.Types.EfficiencyCurves.ConstantCurve used to compute the efficiency
Real[:]a{0.9}Coefficients for efficiency curve
Modelica.Units.SI.TemperatureT_nominal353.15Temperature used to compute nominal efficiency (only used if efficiency curve depends on temperature)
Assumptions
BooleanallowFlowReversal (from PartialTwoPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Nominal condition
Modelica.Units.SI.MassFlowRatem_flow_nominal (from PartialTwoPortInterface)Nominal mass flow rate
Modelica.Units.SI.PressureDifferencedp_nominal (from TwoPortFlowResistanceParameters)Pressure difference
Advanced
Modelica.Units.SI.MassFlowRatem_flow_small (from PartialTwoPortInterface)1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow
Advanced › Diagnostics
Booleanshow_T (from PartialTwoPortInterface)false= true, if actual temperature at port is computed
Flow resistance
BooleancomputeFlowResistance (from TwoPortFlowResistanceParameters)true=true, compute flow resistance. Set to false to assume no friction
Booleanfrom_dp (from TwoPortFlowResistanceParameters)false= true, use m_flow = f(dp) else dp = f(m_flow)
Realn (from TwoPortFlowResistanceParameters)2Flow exponent, n=1 for laminar, n=2 for turbulent
BooleanlinearizeFlowResistance (from TwoPortFlowResistanceParameters)false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM (from TwoPortFlowResistanceParameters)0.1Fraction of nominal flow rate where flow transitions to laminar
Dynamics › Nominal condition
Modelica.Units.SI.Timetau (from TwoPortHeatMassExchanger)30Time constant at nominal flow (if energyDynamics <> SteadyState)
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from TwoPortHeatMassExchanger)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Initialization
Medium.AbsolutePressurep_start (from TwoPortHeatMassExchanger)Medium.p_defaultStart value of pressure
Medium.TemperatureT_start (from TwoPortHeatMassExchanger)Medium.T_defaultStart value of temperature
Medium.MassFraction[Medium.nX]X_start (from TwoPortHeatMassExchanger)Medium.X_defaultStart value of mass fractions m_i/m
Medium.ExtraProperty[Medium.nC]C_start (from TwoPortHeatMassExchanger)fill(0, Medium.nC)Start value of trace substances
Dynamics
Modelica.Units.SI.VolumeVWat (from PartialBoiler)1.5E-6*Q_flow_nominalWater volume of boiler
Modelica.Units.SI.MassmDry (from PartialBoiler)1.5E-3*Q_flow_nominalMass of boiler that will be lumped to water heat capacity

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a (from PartialTwoPort)Fluid connector a (positive design flow direction is from port_a to port_b)
Modelica.Fluid.Interfaces.FluidPort_bport_b (from PartialTwoPort)Fluid connector b (positive design flow direction is from port_a to port_b)
Modelica.Blocks.Interfaces.RealInputy (from PartialBoiler)Part load ratio
Modelica.Blocks.Interfaces.RealOutputT (from PartialBoiler)Temperature of the fluid
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_aheatPort (from PartialBoiler)Heat port, can be used to connect to ambient

Components

TypeNameDefaultDescription
Modelica.Units.SI.MassFlowRatem_flow (from PartialTwoPortInterface)port_a.m_flowMass flow rate from port_a to port_b (m_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp (from PartialTwoPortInterface)port_a.p - port_b.pPressure difference between port_a and port_b
Medium.ThermodynamicStatesta_a (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(inStream(port_a.h_outflow)), noEvent(inStream(port_a.Xi_outflow)))Medium properties in port_a
Medium.ThermodynamicStatesta_b (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) else Medium.setState_phX(port_b.p, noEvent(port_b.h_outflow), noEvent(port_b.Xi_outflow))Medium properties in port_b
Buildings.Fluid.MixingVolumes.MixingVolumevol (from TwoPortHeatMassExchanger)
Buildings.Fluid.FixedResistances.PressureDroppreDro (from TwoPortHeatMassExchanger)Flow resistance
Modelica.Units.SI.Efficiencyeta (from PartialBoiler)Boiler efficiency
Modelica.Units.SI.PowerQFue_flow (from PartialBoiler)y*Q_flow_nominal/eta_nominalHeat released by fuel
Modelica.Units.SI.PowerQWat_flow (from PartialBoiler)eta*QFue_flow + UAOve.Q_flowHeat transfer from gas into water
Modelica.Units.SI.MassFlowRatemFue_flow (from PartialBoiler)QFue_flow/fue.hFuel mass flow rate
Modelica.Units.SI.VolumeFlowRateVFue_flow (from PartialBoiler)mFue_flow/fue.dFuel volume flow rate
Modelica.Thermal.HeatTransfer.Components.HeatCapacitorheaCapDry (from PartialBoiler)Heat capacity of boiler metal
Buildings.HeatTransfer.Sources.PrescribedHeatFlowpreHeaFlo (from PartialBoiler)Prescribed heat flow
Modelica.Blocks.Sources.RealExpressionQ_flow_in (from PartialBoiler)Heat transfer from gas into water
Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensortemSen (from PartialBoiler)Temperature of fluid
Modelica.Thermal.HeatTransfer.Components.ThermalConductorUAOve (from PartialBoiler)Overall thermal conductance (if heatPort is connected)

Revisions

  • March 7, 2022, by Michael Wetter:
    Set final massDynamics=energyDynamics.
    This is for #1542.
  • October 13, 2021, by Hongxiang Fu:
    For the implementation of Buildings.Fluid.Boilers.BoilerTable, moved most of the code to the base model Buildings.Fluid.Boilers.BaseClasses.PartialBoiler. This is for #2651.
  • May 27, 2016, by Michael Wetter:
    Corrected size of input argument to Buildings.Utilities.Math.Functions.quadraticLinear for JModelica compliance check.
  • May 30, 2014, by Michael Wetter:
    Removed undesirable annotation Evaluate=true.
  • October 9, 2013 by Michael Wetter:
    Removed conditional declaration of mDry as the use of a conditional parameter in an instance declaration is not correct Modelica syntax.
  • December 14, 2012 by Michael Wetter:
    Renamed protected parameters for consistency with the naming conventions.
  • December 22, 2011 by Michael Wetter:
    Added computation of fuel usage and improved the documentation.
  • May 25, 2011 by Michael Wetter:
    • Removed parameter dT_nominal, and require instead the parameter m_flow_nominal to be set by the user. This was needed to avoid a non-literal value for the nominal attribute of the pressure drop model.
    • Changed assignment of parameters in model instantiation, and updated model for the new base class that does not have a temperature sensor.
  • January 29, 2009 by Michael Wetter:
    First implementation.