Buildings.Fluids.Boilers

Package with boiler models

Package Content

NameDescription
Buildings.Fluids.Boilers.BoilerPolynomial BoilerPolynomial Boiler with efficiency curve described by a polynomial of the temperature
Buildings.Fluids.Boilers.Examples Examples Collection of models that illustrate model use and test models


Buildings.Fluids.Boilers.BoilerPolynomial Buildings.Fluids.Boilers.BoilerPolynomial

Boiler with efficiency curve described by a polynomial of the temperature

Buildings.Fluids.Boilers.BoilerPolynomial

Information


This is a model of a boiler that computes the heat transferred
to the medium based on an input control signal.
The efficiency of the boiler can be computed using polynomials
in the control signal y and
the boiler temperature T.

The parameter Q0_flow is the power transferred to the fluid for y=1 and, if the efficiency depends on temperature, for T=T0.

Optionally, the port heatPort can be connected to a heat port outside of this model to impose a boundary condition in order to model heat losses to the ambient. When using this heatPort, make sure that the efficiency curve effCur does not already account for this heat loss.

On the Assumptions tag, the model can be parameterized to compute a transient or steady-state response. The transient response of the boiler is computed using a first order differential equation to compute the boiler's water and metal temperature, which are lumped into one state. The boiler outlet temperature is equal to this water temperature.


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

Parameters

TypeNameDefaultDescription
replaceable package MediumModelica.Media.Interfaces.Pa...Medium in the component
PowerQ0_flow Nominal heating power [W]
TemperatureT0353.15Temperature used to compute nominal efficiency (only used if efficiency curve depends on temperature) [K]
EfficiencyCurveseffCurBuildings.Fluids.Types.Effic...Curve used to compute the efficiency
Reala[:]{0.9}Coefficients for efficiency curve
TemperatureDifferencedT0 Temperature difference of water loop at nominal load [K]
ThermalConductanceUA0.05*Q0_flow/30Overall UA value [W/K]
Nominal condition
MassFlowRatem0_flowQ0_flow/dT0/cp0Nominal mass flow rate [kg/s]
Timetau0Time constant at nominal flow [s]
Initialization
MassFlowRatem_flow.start0Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) [kg/s]
Pressuredp.start0Pressure difference between port_a and port_b [Pa]
Assumptions
BooleanallowFlowReversalsystem.allowFlowReversal= true to allow flow reversal, false restricts to design direction (port_a -> port_b)
Dynamics
DynamicsenergyDynamicssystem.energyDynamicsFormulation of energy balance
DynamicsmassDynamicsenergyDynamicsFormulation of mass balance
VolumeVWat1.5E-6*Q0_flowWater volume of boiler [m3]
MassmDry1.5E-3*Q0_flowMass of boiler that will be lumped to water heat capacity [kg]
Advanced
MassFlowRatem_flow_small1E-4*m0_flowSmall mass flow rate for regularization of zero flow [kg/s]
Diagnostics
Booleanshow_V_flowtrue= true, if volume flow rate at inflowing port is computed
Initialization
AbsolutePressurep_a_startsystem.p_startGuess value for inlet pressure [Pa]
AbsolutePressurep_b_startp_a_startGuess value for outlet pressure [Pa]
AbsolutePressurep_startsystem.p_startStart value of pressure [Pa]
Booleanuse_T_starttrue= true, use T_start, otherwise h_start
TemperatureT_startif use_T_start then system.T...Start value of temperature [K]
SpecificEnthalpyh_startif use_T_start then Medium.s...Start value of specific enthalpy [J/kg]
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
HeatPort_aheatPortHeat port, can be used to connect to ambient
output RealOutputT[K]

Modelica definition

model BoilerPolynomial 
  "Boiler with efficiency curve described by a polynomial of the temperature"

  extends Interfaces.PartialDynamicTwoPortTransformer(m0_flow=Q0_flow/dT0/cp0, final tau=0,
    vol(                                                                                    final V =   VWat));

  parameter Modelica.SIunits.Power Q0_flow "Nominal heating power";
  parameter Modelica.SIunits.Temperature T0 = 353.15 
    "Temperature used to compute nominal efficiency (only used if efficiency curve depends on temperature)";
  // Assumptions
  parameter Buildings.Fluids.Types.EfficiencyCurves effCur=Buildings.Fluids.Types.EfficiencyCurves.Constant 
    "Curve used to compute the efficiency";
  parameter Real a[:] = {0.9} "Coefficients for efficiency curve";
  parameter Modelica.SIunits.TemperatureDifference dT0(min=0) 
    "Temperature difference of water loop at nominal load";
  parameter Modelica.SIunits.ThermalConductance UA=0.05*Q0_flow/30 
    "Overall UA value";
  parameter Modelica.SIunits.Volume VWat = 1.5E-6*Q0_flow 
    "Water volume of boiler";
  parameter Modelica.SIunits.Mass mDry =   1.5E-3*Q0_flow if 
        not (energyDynamics == Modelica_Fluid.Types.Dynamics.SteadyState) 
    "Mass of boiler that will be lumped to water heat capacity";

  Real eta(min=0) "Boiler efficiency";

  Modelica.SIunits.Power QFue_flow "Sensible heat released by fuel";
  Modelica.SIunits.Power QWat_flow "Heat transfer from gas into water";

  Modelica.Blocks.Interfaces.RealInput y(min=0, max=1) "Part load ratio";
protected 
  Real eta0 "Boiler efficiency at nominal condition";

protected 
   parameter Modelica.SIunits.SpecificHeatCapacity cp0=Medium.specificHeatCapacityCp(sta0) 
    "Specific heat capacity of fluid in boiler";
protected 
  Modelica.Thermal.HeatTransfer.Components.ThermalConductor UAOve(G=UA) 
    "Overall thermal conductance (if heatPort is connected)";
public 
  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";
  Modelica.Blocks.Interfaces.RealOutput T(final quantity="ThermodynamicTemperature",
                                          final unit = "K", displayUnit = "degC", min=0);
public 
  Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow preHeaFlo;
  Modelica.Blocks.Sources.RealExpression Q_flow_in(y=QWat_flow);
equation 
  if effCur ==Buildings.Fluids.Types.EfficiencyCurves.Constant then
    eta  = a[1];
    eta0 = a[1];
  elseif effCur ==Buildings.Fluids.Types.EfficiencyCurves.Polynomial then
    eta  = Buildings.Fluids.BaseClasses.polynomial(a=a, x=y);
    eta0 = Buildings.Fluids.BaseClasses.polynomial(a=a, x=1);
  elseif effCur ==Buildings.Fluids.Types.EfficiencyCurves.QuadraticLinear then
    eta  = Buildings.Fluids.BaseClasses.quadraticLinear(a=a, x1=y, x2=T);
    eta0 = Buildings.Fluids.BaseClasses.quadraticLinear(a=a, x1=1, x2=T0);
  else
    eta  = 0;
    eta0 = 999;
  end if;
  assert(eta > 0.001, "Efficiency curve is wrong.");
  // Heat released by fuel
  QFue_flow = y * Q0_flow/eta0;
  // Heat input into water
  QWat_flow = eta * QFue_flow;
  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);
end BoilerPolynomial;

HTML-documentation generated by Dymola Thu Feb 19 16:51:01 2009.