Buildings.Fluid.Boilers.BaseClasses

Package with base classes for Buildings.Fluid.Boilers

Information

This package contains base classes that are used to construct the models in Buildings.Fluid.Boilers.

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

Package Content

Name Description
Buildings.Fluid.Boilers.BaseClasses.PartialBoiler PartialBoiler Boiler base class with efficiency unspecified

Buildings.Fluid.Boilers.BaseClasses.PartialBoiler Buildings.Fluid.Boilers.BaseClasses.PartialBoiler

Boiler base class with efficiency unspecified

Buildings.Fluid.Boilers.BaseClasses.PartialBoiler

Information

This is a base model of a boiler. The efficiency specified in extended models. See Buildings.Fluid.Boilers.UsersGuide for details.

Extends from Interfaces.TwoPortHeatMassExchanger (Partial model transporting one fluid stream with storing mass or energy).

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_nominal Boiler efficiency at nominal condition [1]
Nominal condition
MassFlowRatem_flow_nominal Nominal mass flow rate [kg/s]
PressureDifferencedp_nominal Pressure difference [Pa]
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
Nominal condition
TimetauVWat*rho_default/m_flow_nomi...Time constant at nominal flow (if energyDynamics <> SteadyState) [s]
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
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

partial model PartialBoiler "Boiler base class with efficiency unspecified" extends Interfaces.TwoPortHeatMassExchanger( redeclare final Buildings.Fluid.MixingVolumes.MixingVolume vol, show_T = true, final tau=VWat*rho_default/m_flow_nominal); parameter Buildings.Fluid.Data.Fuels.Generic fue "Fuel type"; // These parameters can be supplied via Data records parameter Modelica.SIunits.Power Q_flow_nominal "Nominal heating power"; parameter Modelica.SIunits.ThermalConductance UA=0.05*Q_flow_nominal/30 "Overall UA value"; parameter Modelica.SIunits.Volume VWat = 1.5E-6*Q_flow_nominal "Water volume of boiler"; parameter Modelica.SIunits.Mass mDry = 1.5E-3*Q_flow_nominal "Mass of boiler that will be lumped to water heat capacity"; parameter Modelica.SIunits.Efficiency eta_nominal "Boiler efficiency at nominal condition"; input Modelica.SIunits.Efficiency eta "Boiler efficiency"; Modelica.SIunits.Power QFue_flow = y * Q_flow_nominal/eta_nominal "Heat released by fuel"; Modelica.SIunits.Power QWat_flow = eta * QFue_flow + UAOve.Q_flow "Heat transfer from gas into water"; // The direction of UAOve.Q_flow is from the ambient to the boiler // and therefore it takes a plus size here. Modelica.SIunits.MassFlowRate mFue_flow = QFue_flow/fue.h "Fuel mass flow rate"; Modelica.SIunits.VolumeFlowRate VFue_flow = mFue_flow/fue.d "Fuel volume flow rate"; Modelica.Blocks.Interfaces.RealInput y(min=0, max=1) "Part load ratio"; Modelica.Blocks.Interfaces.RealOutput T( final quantity="ThermodynamicTemperature", final unit = "K", displayUnit = "degC", min=0) "Temperature of the fluid"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a heatPort "Heat port, can be used to connect to ambient"; Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heaCapDry( C=500*mDry, T(start=T_start)) if not (energyDynamics == Modelica.Fluid.Types.Dynamics.SteadyState) "Heat capacity of boiler metal"; Buildings.HeatTransfer.Sources.PrescribedHeatFlow preHeaFlo "Prescribed heat flow"; Modelica.Blocks.Sources.RealExpression Q_flow_in(y=QWat_flow) "Heat transfer from gas into water"; Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temSen "Temperature of fluid"; Modelica.Thermal.HeatTransfer.Components.ThermalConductor UAOve(G=UA) "Overall thermal conductance (if heatPort is connected)"; equation assert(eta > 0.001, "Efficiency curve is wrong."); connect(UAOve.port_b, vol.heatPort); connect(UAOve.port_a, heatPort); connect(heaCapDry.port, vol.heatPort); connect(temSen.T, T); connect(preHeaFlo.port, vol.heatPort); connect(Q_flow_in.y,preHeaFlo. Q_flow); connect(vol.heatPort, temSen.port); end PartialBoiler;