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 |
---|---|
PartialBoiler | Boiler base class with efficiency unspecified |
Buildings.Fluid.Boilers.BaseClasses.PartialBoiler
Boiler base class with efficiency unspecified
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
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium in the component | |
Generic | fue | Fuel type | |
Power | Q_flow_nominal | Nominal heating power [W] | |
ThermalConductance | UA | 0.05*Q_flow_nominal/30 | Overall UA value [W/K] |
Efficiency | eta_nominal | Boiler efficiency at nominal condition [1] | |
Nominal condition | |||
MassFlowRate | m_flow_nominal | Nominal mass flow rate [kg/s] | |
PressureDifference | dp_nominal | Pressure difference [Pa] | |
Assumptions | |||
Boolean | allowFlowReversal | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
Advanced | |||
MassFlowRate | m_flow_small | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
Diagnostics | |||
Boolean | show_T | true | = true, if actual temperature at port is computed |
Flow resistance | |||
Boolean | from_dp | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Dynamics | |||
Nominal condition | |||
Time | tau | VWat*rho_default/m_flow_nomi... | Time constant at nominal flow (if energyDynamics <> SteadyState) [s] |
Conservation equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Volume | VWat | 1.5E-6*Q_flow_nominal | Water volume of boiler [m3] |
Mass | mDry | 1.5E-3*Q_flow_nominal | Mass of boiler that will be lumped to water heat capacity [kg] |
Initialization | |||
AbsolutePressure | p_start | Medium.p_default | Start value of pressure [Pa] |
Temperature | T_start | Medium.T_default | Start value of temperature [K] |
MassFraction | X_start[Medium.nX] | Medium.X_default | Start value of mass fractions m_i/m [kg/kg] |
ExtraProperty | C_start[Medium.nC] | fill(0, Medium.nC) | Start value of trace substances |
Connectors
Type | Name | Description |
---|---|---|
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b) |
input RealInput | y | Part load ratio |
output RealOutput | T | Temperature of the fluid [K] |
HeatPort_a | heatPort | Heat 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.Units.SI.Power Q_flow_nominal "Nominal heating power";
parameter Modelica.Units.SI.ThermalConductance UA=0.05*Q_flow_nominal/30
"Overall UA value";
parameter Modelica.Units.SI.Volume VWat=1.5E-6*Q_flow_nominal
"Water volume of boiler";
parameter Modelica.Units.SI.Mass mDry=1.5E-3*Q_flow_nominal
"Mass of boiler that will be lumped to water heat capacity";
parameter Modelica.Units.SI.Efficiency eta_nominal
"Boiler efficiency at nominal condition";
input Modelica.Units.SI.Efficiency eta "Boiler efficiency";
Modelica.Units.SI.Power QFue_flow=y*Q_flow_nominal/eta_nominal
"Heat released by fuel";
Modelica.Units.SI.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 sign here.
Modelica.Units.SI.MassFlowRate mFue_flow=QFue_flow/fue.h
"Fuel mass flow rate";
Modelica.Units.SI.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;