Buildings.Fluid.HeatExchangers.Radiators

Package with radiators models for hydronic space heating systems

Information


This package contains models for radiators that are typically found in hydronic heating systems.

Package Content

NameDescription
Buildings.Fluid.HeatExchangers.Radiators.RadiatorEN442_2 RadiatorEN442_2 Dynamic radiator for space heating
Buildings.Fluid.HeatExchangers.Radiators.Examples Examples Collection of models that illustrate model use and test models


Buildings.Fluid.HeatExchangers.Radiators.RadiatorEN442_2 Buildings.Fluid.HeatExchangers.Radiators.RadiatorEN442_2

Dynamic radiator for space heating

Buildings.Fluid.HeatExchangers.Radiators.RadiatorEN442_2

Information


This is a model of a radiator that can compute the dynamic or steady-state
response.
The required parameters are data that are typically available from
manufacturers that follow the European Norm EN 442-2.

However, to allow for varying mass flow rates, the transferred heat is computed using a discretization along the water flow path, and heat is exchanged between each compartment and a uniform room air and radiation temperature. This discretization is different from the computation in EN 442-2, which may give water outlet temperatures that are below the room temperature at low mass flow rates. Also, rather than using only one room temperature, this model uses a room air and room radiation temperature.

The parameter energyDynamics (in the Assumptions tab), determines whether the model computes the dynamic or the steady-state response. For the transient response, heat storage is computed using a finite volume approach for the water and the metal mass, which are both assumed to be at the same temperature.

The default parameters are for a flat plate radiator without fins, with one plate of water carying fluid, and a height of 0.42 meters.

Extends from Fluid.Interfaces.PartialStaticTwoPortInterface (Partial model transporting fluid between two ports without storing mass or energy).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
PowerQ_flow_nominal Nominal heating power [W]
RealfraRad0.35Fraction radiant heat transfer
TemperatureDifferencedT_nominal50Nominal temperature difference (between water and air) [K]
Realn1.24Exponent for heat transfer
Nominal condition
MassFlowRatem_flow_nominal Nominal mass flow rate [kg/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
IntegernEle5Number of elements used in the discretization
DynamicsenergyDynamicssystem.energyDynamicsFormulation of energy balance
VolumeVWat5.8E-6*Q_flow_nominalWater volume of radiator [m3]
MassmDry0.0263*Q_flow_nominalDry mass of radiator that will be lumped to water heat capacity [kg]
Advanced
MassFlowRatem_flow_small1E-4*m_flow_nominalSmall mass flow rate for regularization of zero flow [kg/s]
TemperatureDifferencedeltaT0.1Temperature difference used for smoothing of heat transfer coefficient [K]
Diagnostics
Booleanshow_V_flowfalse= true, if volume flow rate at inflowing port is computed
Booleanshow_Tfalse= true, if actual temperature at port is computed (may lead to events)
Initialization
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)
HeatPort_aheatPortConHeat port for convective heat transfer with room air temperature
HeatPort_aheatPortRadHeat port for radiative heat transfer with room radiation temperature

Modelica definition

model RadiatorEN442_2 "Dynamic radiator for space heating"
   extends Fluid.Interfaces.PartialStaticTwoPortInterface(
   showDesignFlowDirection = false);
  parameter Integer nEle(min=1) = 5 
    "Number of elements used in the discretization";
  parameter Modelica.SIunits.Power Q_flow_nominal "Nominal heating power";
  parameter Real fraRad(min=0, max=1) = 0.35 "Fraction radiant heat transfer";
  // Assumptions
  parameter Modelica.Fluid.Types.Dynamics energyDynamics=system.energyDynamics 
    "Formulation of energy balance";

 // Initialization
  parameter Medium.AbsolutePressure p_start = system.p_start 
    "Start value of pressure";
  parameter Boolean use_T_start = true "= true, use T_start, otherwise h_start";
  parameter Medium.Temperature T_start=
    if use_T_start then system.T_start else Medium.temperature_phX(p_start,h_start,X_start) 
    "Start value of temperature";
  parameter Medium.SpecificEnthalpy h_start=
    if use_T_start then Medium.specificEnthalpy_pTX(p_start, T_start, X_start) else Medium.h_default 
    "Start value of specific enthalpy";
  parameter Medium.MassFraction X_start[Medium.nX] = Medium.X_default 
    "Start value of mass fractions m_i/m";
  parameter Medium.ExtraProperty C_start[Medium.nC](
       quantity=Medium.extraPropertiesNames)=fill(0, Medium.nC) 
    "Start value of trace substances";

  parameter Modelica.SIunits.TemperatureDifference dT_nominal(min=0) = 50 
    "Nominal temperature difference (between water and air)";
  parameter Real n = 1.24 "Exponent for heat transfer";
  parameter Modelica.SIunits.Volume VWat = 5.8E-6*Q_flow_nominal 
    "Water volume of radiator";
  parameter Modelica.SIunits.Mass mDry = 0.0263*Q_flow_nominal if 
        not (energyDynamics == Modelica.Fluid.Types.Dynamics.SteadyState) 
    "Dry mass of radiator that will be lumped to water heat capacity";
  Modelica.SIunits.HeatFlowRate QCon_flow 
    "Heat input into the water due to convective heat transfer with room air";
  Modelica.SIunits.HeatFlowRate QRad_flow 
    "Heat input into the water due to radiative heat transfer with room";
  Modelica.SIunits.HeatFlowRate Q_flow "Heat input into the water";
  parameter Modelica.SIunits.TemperatureDifference deltaT=0.1 
    "Temperature difference used for smoothing of heat transfer coefficient";
public 
  Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a heatPortCon 
    "Heat port for convective heat transfer with room air temperature";
  Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a heatPortRad 
    "Heat port for radiative heat transfer with room radiation temperature";

  Modelica.Thermal.HeatTransfer.Components.HeatCapacitor[nEle] heaCapDry(
      each C=500*mDry/nEle,
      each T(start=T_start)) if not (energyDynamics == Modelica.Fluid.Types.Dynamics.SteadyState) 
    "heat capacity of radiator metal";

  Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow[nEle] preHeaFloCon 
    "Heat input into radiator from convective heat transfer";
  Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow[nEle] preHeaFloRad 
    "Heat input into radiator from radiative heat transfer";

  Fluid.MixingVolumes.MixingVolume[nEle] vol(
    redeclare each package Medium = Medium,
    each nPorts = 2,
    each V=VWat/nEle,
    each final use_HeatTransfer=true,
    redeclare each model HeatTransfer =
        Modelica.Fluid.Vessels.BaseClasses.HeatTransfer.IdealHeatTransfer,
    each final energyDynamics=energyDynamics,
    each final massDynamics=energyDynamics,
    each final p_start=p_start,
    each final use_T_start=use_T_start,
    each final T_start=T_start,
    each final h_start=h_start,
    each final X_start=X_start,
    each final C_start=C_start) "Volume for fluid stream";
protected 
   Modelica.SIunits.TemperatureDifference[nEle] dTCon 
    "Temperature difference for convective heat transfer";
   Modelica.SIunits.TemperatureDifference[nEle] dTRad 
    "Temperature difference for radiative heat transfer";
   parameter Modelica.SIunits.ThermalConductance UA_nominaln = Q_flow_nominal /dT_nominal^n/nEle;
   Modelica.SIunits.ThermalConductance[nEle] UACon 
    "Thermal conductance between radiator and room for convective heat transfer";
   Modelica.SIunits.ThermalConductance[nEle] UARad 
    "Thermal conductance between radiator and room for radiative heat transfer";

equation 
  for i in 1:nEle loop
     dTCon[i] = heatPortCon.T - vol[i].medium.T;
     dTRad[i] = heatPortRad.T - vol[i].medium.T;
     UACon[i] = (1-fraRad)  * UA_nominaln *
                Buildings.Utilities.Math.Functions.regNonZeroPower(x=dTCon[i], n=n-1, delta=deltaT);
     UARad[i] = fraRad      * UA_nominaln *
                Buildings.Utilities.Math.Functions.regNonZeroPower(x=dTRad[i], n=n-1, delta=deltaT);
     preHeaFloCon[i].Q_flow = UACon[i] * dTCon[i];
     preHeaFloRad[i].Q_flow = UARad[i] * dTRad[i];
  end for;
  QCon_flow = sum(preHeaFloCon[i].Q_flow for i in 1:nEle);
  QRad_flow = sum(preHeaFloRad[i].Q_flow for i in 1:nEle);
  Q_flow = QCon_flow + QRad_flow;
  heatPortCon.Q_flow = QCon_flow;
  heatPortRad.Q_flow = QRad_flow;

  connect(preHeaFloCon.port, vol.heatPort);
  connect(preHeaFloRad.port, vol.heatPort);
  connect(heaCapDry.port, vol.heatPort);
  connect(port_a, vol[1].ports[1]);
  connect(vol[nEle].ports[2], port_b);
  for i in 1:nEle-1 loop

    connect(vol[i].ports[2], vol[i+1].ports[1]);
  end for;
end RadiatorEN442_2;

HTML-documentation generated by Dymola Mon Jun 14 14:27:57 2010.