Buildings.Fluid.Boilers

Package with boiler models

Information

This package contains components models for boilers.

Extends from Modelica.Icons.VariantsPackage (Icon for package containing variants).

Package Content

Name Description
Buildings.Fluid.Boilers.UsersGuide UsersGuide User's Guide
Buildings.Fluid.Boilers.BoilerPolynomial BoilerPolynomial Boiler with efficiency curve described by a polynomial of the control signal and (optional) temperature
Buildings.Fluid.Boilers.BoilerTable BoilerTable Boiler with efficiency described by a table with control signal and inlet temperature
Buildings.Fluid.Boilers.Data Data Package containing performance data for boilers
Buildings.Fluid.Boilers.Examples Examples Collection of models that illustrate model use and test models
Buildings.Fluid.Boilers.Validation Validation Collection of validation models
Buildings.Fluid.Boilers.BaseClasses BaseClasses Package with base classes for Buildings.Fluid.Boilers

Buildings.Fluid.Boilers.BoilerPolynomial Buildings.Fluid.Boilers.BoilerPolynomial

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

Buildings.Fluid.Boilers.BoilerPolynomial

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.


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

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
Genericfue Fuel type
PowerQ_flow_nominal Nominal heating power [W]
ThermalConductanceUA0.05*Q_flow_nominal/30Overall UA value [W/K]
Efficiencyeta_nominalif effCur == Buildings.Fluid...Boiler efficiency at nominal condition [1]
EfficiencyCurveseffCurBuildings.Fluid.Types.Effici...Curve used to compute the efficiency
Reala[:]{0.9}Coefficients for efficiency curve
TemperatureT_nominal353.15Temperature used to compute nominal efficiency (only used if efficiency curve depends on temperature) [K]
Nominal condition
MassFlowRatem_flow_nominal Nominal mass flow rate [kg/s]
PressureDifferencedp_nominal Pressure difference [Pa]
Custom Parameters
Efficiencyetaif effCur == Buildings.Fluid...Boiler efficiency [1]
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_Ttrue= true, if actual temperature at port is computed
Flow resistance
Booleanfrom_dpfalse= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistancefalse= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM0.1Fraction of nominal flow rate where flow transitions to laminar
Dynamics
Conservation equations
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state
VolumeVWat1.5E-6*Q_flow_nominalWater volume of boiler [m3]
MassmDry1.5E-3*Q_flow_nominalMass of boiler that will be lumped to water heat capacity [kg]
Initialization
AbsolutePressurep_startMedium.p_defaultStart value of pressure [Pa]
TemperatureT_startMedium.T_defaultStart value of temperature [K]
MassFractionX_start[Medium.nX]Medium.X_defaultStart value of mass fractions m_i/m [kg/kg]
ExtraPropertyC_start[Medium.nC]fill(0, Medium.nC)Start value of trace substances

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)
input RealInputyPart load ratio
output RealOutputTTemperature of the fluid [K]
HeatPort_aheatPortHeat port, can be used to connect to ambient

Modelica definition

model BoilerPolynomial "Boiler with efficiency curve described by a polynomial of the control signal and (optional) temperature" extends Buildings.Fluid.Boilers.BaseClasses.PartialBoiler( eta=if 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) elseif effCur ==Buildings.Fluid.Types.EfficiencyCurves.QuadraticLinear then Buildings.Utilities.Math.Functions.quadraticLinear(a=aQuaLin, x1=y, x2=T) else 0, final eta_nominal = if 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=1) elseif effCur ==Buildings.Fluid.Types.EfficiencyCurves.QuadraticLinear then Buildings.Utilities.Math.Functions.quadraticLinear(a=aQuaLin, x1=1, x2=T_nominal) else 999); parameter Buildings.Fluid.Types.EfficiencyCurves effCur=Buildings.Fluid.Types.EfficiencyCurves.Constant "Curve used to compute the efficiency"; parameter Real a[:] = {0.9} "Coefficients for efficiency curve"; parameter Modelica.Units.SI.Temperature T_nominal=353.15 "Temperature used to compute nominal efficiency (only used if efficiency curve depends on temperature)"; protected parameter Real aQuaLin[6] = if size(a, 1) == 6 then a else fill(0, 6) "Auxiliary variable for efficiency curve because quadraticLinear requires exactly 6 elements"; initial equation if effCur == Buildings.Fluid.Types.EfficiencyCurves.QuadraticLinear then assert(size(a, 1) == 6, "The parameter 'a' must have exactly 6 elements when the boiler efficiency curve is set to 'Buildings.Fluid.Types.EfficiencyCurves.QuadraticLinear'. The number of elements currently supplied is " + String(size(a, 1)) + "."); end if; end BoilerPolynomial;

Buildings.Fluid.Boilers.BoilerTable Buildings.Fluid.Boilers.BoilerTable

Boiler with efficiency described by a table with control signal and inlet temperature

Buildings.Fluid.Boilers.BoilerTable

Information

This is a model of a boiler whose efficiency is described by a table with control signal and inlet temperature. See Buildings.Fluid.Boilers.UsersGuide for details.

The efficiency tables are supplied via Buildings.Fluid.Boilers.Data.

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

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
Genericfueper.fueFuel type
PowerQ_flow_nominalper.Q_flow_nominalNominal heating power [W]
ThermalConductanceUAper.UAOverall UA value [W/K]
Efficiencyeta_nominalper.eta_nominalBoiler efficiency at nominal condition [1]
Genericper Records of efficiency curves
Nominal condition
MassFlowRatem_flow_nominalper.m_flow_nominalNominal mass flow rate [kg/s]
PressureDifferencedp_nominalper.dp_nominalPressure difference [Pa]
Custom Parameters
EfficiencyetaeffTab.yBoiler efficiency [1]
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_Ttrue= true, if actual temperature at port is computed
Flow resistance
Booleanfrom_dpfalse= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistancefalse= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM0.1Fraction of nominal flow rate where flow transitions to laminar
Dynamics
Conservation equations
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state
VolumeVWatper.VWatWater volume of boiler [m3]
MassmDryper.mDryMass of boiler that will be lumped to water heat capacity [kg]
Initialization
AbsolutePressurep_startMedium.p_defaultStart value of pressure [Pa]
TemperatureT_startMedium.T_defaultStart value of temperature [K]
MassFractionX_start[Medium.nX]Medium.X_defaultStart value of mass fractions m_i/m [kg/kg]
ExtraPropertyC_start[Medium.nC]fill(0, Medium.nC)Start value of trace substances

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)
input RealInputyPart load ratio
output RealOutputTTemperature of the fluid [K]
HeatPort_aheatPortHeat port, can be used to connect to ambient

Modelica definition

model BoilerTable "Boiler with efficiency described by a table with control signal and inlet temperature" extends Buildings.Fluid.Boilers.BaseClasses.PartialBoiler( final eta=effTab.y, final Q_flow_nominal = per.Q_flow_nominal, final eta_nominal= per.eta_nominal, final fue=per.fue, final UA=per.UA, final VWat = per.VWat, final mDry = per.mDry, final m_flow_nominal = per.m_flow_nominal, final dp_nominal = per.dp_nominal); parameter Buildings.Fluid.Boilers.Data.Generic per "Records of efficiency curves"; Modelica.Blocks.Tables.CombiTable2Ds effTab(final table=per.effCur, final smoothness=Modelica.Blocks.Types.Smoothness.ContinuousDerivative) "Look-up table that represents a set of efficiency curves varying with both the firing rate (control signal) and the inlet water temperature"; Modelica.Blocks.Sources.RealExpression TIn( y=Medium.temperature(state=Medium.setState_phX( p=port_a.p, h=inStream(port_a.h_outflow), X=inStream(port_a.Xi_outflow)))) "Water inlet temperature"; initial equation assert(abs(per.effCur[end,1] - 1) < 1E-6, "Efficiency curve at full load (y = 1) must be provided."); equation connect(effTab.u1, y); connect(TIn.y, effTab.u2); end BoilerTable;