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.Examples Examples Collection of models that illustrate model use and test models
Buildings.Fluid.HeatExchangers.Radiators.RadiatorEN442_2 RadiatorEN442_2 Dynamic radiator for space heating


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_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)
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;
  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,
    each final m_flow_small=m_flow_small) "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 Tue Sep 29 08:08:40 2009.