modelBoilerPolynomial
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
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | homotopyInitialization (from TwoPortHeatMassExchanger) | true | = true, use homotopy method |
| Buildings.Fluid.Data.Fuels.Generic | fue (from PartialBoiler) | Fuel type | |
| Modelica.Units.SI.HeatFlowRate | Q_flow_nominal (from PartialBoiler) | Nominal heating power (useful heat) | |
| Modelica.Units.SI.Efficiency | eta_nominal (from PartialBoiler) | Boiler efficiency at nominal condition, useful heat divided by fuel use | |
| Modelica.Units.SI.HeatFlowRate | QFue_flow_nominal (from PartialBoiler) | Q_flow_nominal/eta_nominal | Fuel use at nominal conditions |
| Buildings.Fluid.Types.EfficiencyCurves | effCur | Buildings.Fluid.Types.EfficiencyCurves.Constant | Curve used to compute the efficiency |
| Real[:] | a | {0.9} | Coefficients for efficiency curve |
| Modelica.Units.SI.Temperature | T_nominal | 353.15 | Temperature used to compute nominal efficiency (only used if efficiency curve depends on temperature) |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from PartialTwoPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dp_nominal (from TwoPortFlowResistanceParameters) | Pressure difference | |
| Advanced | |||
| Modelica.Units.SI.MassFlowRate | m_flow_small (from PartialTwoPortInterface) | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialTwoPortInterface) | false | = true, if actual temperature at port is computed |
| Flow resistance | |||
| Boolean | computeFlowResistance (from TwoPortFlowResistanceParameters) | true | =true, compute flow resistance. Set to false to assume no friction |
| Boolean | from_dp (from TwoPortFlowResistanceParameters) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Real | n (from TwoPortFlowResistanceParameters) | 2 | Flow exponent, n=1 for laminar, n=2 for turbulent |
| Boolean | linearizeFlowResistance (from TwoPortFlowResistanceParameters) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Real | deltaM (from TwoPortFlowResistanceParameters) | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
| Dynamics › Nominal condition | |||
| Modelica.Units.SI.Time | tau (from TwoPortHeatMassExchanger) | 30 | Time constant at nominal flow (if energyDynamics <> SteadyState) |
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from TwoPortHeatMassExchanger) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Initialization | |||
| Medium.AbsolutePressure | p_start (from TwoPortHeatMassExchanger) | Medium.p_default | Start value of pressure |
| Medium.Temperature | T_start (from TwoPortHeatMassExchanger) | Medium.T_default | Start value of temperature |
| Medium.MassFraction[Medium.nX] | X_start (from TwoPortHeatMassExchanger) | Medium.X_default | Start value of mass fractions m_i/m |
| Medium.ExtraProperty[Medium.nC] | C_start (from TwoPortHeatMassExchanger) | fill(0, Medium.nC) | Start value of trace substances |
| Heat loss to ambient | |||
| Modelica.Units.SI.ThermalConductance | UA (from PartialBoiler) | 0.05*Q_flow_nominal/30 | Overall UA value |
| Dynamics | |||
| Modelica.Units.SI.Volume | VWat (from PartialBoiler) | 1.5E-6*Q_flow_nominal | Water volume of boiler |
| Modelica.Units.SI.Mass | mDry (from PartialBoiler) | 1.5E-3*Q_flow_nominal | Mass of boiler that will be lumped to water heat capacity |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a (from PartialTwoPort) | Fluid connector a (positive design flow direction is from port_a to port_b) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b (from PartialTwoPort) | Fluid connector b (positive design flow direction is from port_a to port_b) | |
| Modelica.Blocks.Interfaces.RealInput | y (from PartialBoiler) | Part load ratio | |
| Modelica.Blocks.Interfaces.RealOutput | T (from PartialBoiler) | Temperature of the fluid | |
| Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a | heatPort (from PartialBoiler) | Heat port, can be used to connect to ambient |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.MassFlowRate | m_flow (from PartialTwoPortInterface) | 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 PartialTwoPortInterface) | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium.ThermodynamicState | sta_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.ThermodynamicState | sta_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.MixingVolume | vol (from TwoPortHeatMassExchanger) | ||
| Buildings.Fluid.FixedResistances.PressureDrop | preDro (from TwoPortHeatMassExchanger) | Flow resistance | |
| Modelica.Units.SI.Efficiency | eta (from PartialBoiler) | Boiler efficiency, useful heat divided by fuel use | |
| Modelica.Units.SI.HeatFlowRate | QFue_flow (from PartialBoiler) | y*QFue_flow_nominal | Heat released by fuel |
| Modelica.Units.SI.HeatFlowRate | QUse_flow (from PartialBoiler) | eta*QFue_flow | Useful heat for exchange with fluid ports |
| Modelica.Units.SI.HeatFlowRate | QExh_flow (from PartialBoiler) | -QFue_flow + QWat_flow | Heat exhausted by flu gas (negative) |
| Modelica.Units.SI.Power | QAmb_flow (from PartialBoiler) | heatPort.Q_flow | Heat loss to ambient (negative) |
| Modelica.Units.SI.Power | QWat_flow (from PartialBoiler) | QUse_flow - QAmb_flow | Heat transfer from gas into water (from where some heat is lost to ambient) |
| Modelica.Units.SI.MassFlowRate | mFue_flow (from PartialBoiler) | QFue_flow/fue.h | Fuel mass flow rate |
| Modelica.Units.SI.VolumeFlowRate | VFue_flow (from PartialBoiler) | mFue_flow/fue.d | Fuel volume flow rate |
| Modelica.Thermal.HeatTransfer.Components.HeatCapacitor | heaCapDry (from PartialBoiler) | Heat capacity of boiler metal | |
| Buildings.HeatTransfer.Sources.PrescribedHeatFlow | preHeaFlo (from PartialBoiler) | Prescribed heat flow | |
| Modelica.Blocks.Sources.RealExpression | Q_flow_in (from PartialBoiler) | Heat transfer from gas into water | |
| Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor | temSen (from PartialBoiler) | Temperature of fluid | |
| Modelica.Thermal.HeatTransfer.Components.ThermalConductor | UAOve (from PartialBoiler) | Overall thermal conductance (if heatPort is connected) |
Revisions
-
October 11, 2026, by Michael Wetter:
Corrected bug in base class that led to heat loss of boiler to be accounted twice in the energy balance. With this change, theheatPortmust be connected, as otherwise, the heat loss is not properly calculated. The translation will stop with an error message if theheatPortis unconnected.
This is for #4775. -
March 7, 2022, by Michael Wetter:
Setfinal massDynamics=energyDynamics.
This is for #1542. -
October 13, 2021, by Hongxiang Fu:
For the implementation ofBuildings.Fluid.Boilers.BoilerTable, moved most of the code to the base modelBuildings.Fluid.Boilers.BaseClasses.PartialBoiler. This is for #2651. -
May 27, 2016, by Michael Wetter:
Corrected size of input argument toBuildings.Utilities.Math.Functions.quadraticLinearfor JModelica compliance check. -
May 30, 2014, by Michael Wetter:
Removed undesirable annotationEvaluate=true. -
October 9, 2013 by Michael Wetter:
Removed conditional declaration ofmDryas 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 parameterm_flow_nominalto 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.
-
Removed parameter
-
January 29, 2009 by Michael Wetter:
First implementation.