Collection of validation models
Information
This package contains validation models for the classes in
Buildings.Fluid.HeatExchangers.CoolingTowers.
Note that most validation models contain simple input data
which may not be realistic, but for which the correct
output can be obtained through an analytic solution.
The examples plot various outputs, which have been verified against these
solutions. These model outputs are stored as reference data and
used for continuous validation whenever models in the library change.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
Name |
Description |
MerkelEnergyPlus
|
Validation with EnergyPlus model for Merkel's cooling tower |
MerkelNominal
|
Validation model that simulates the cooling tower at design conditions |
Validation with EnergyPlus model for Merkel's cooling tower
Information
This model validates the model
Buildings.Fluid.HeatExchangers.CoolingTowers.Merkel by comparing against
results obtained from EnergyPlus.
The EnergyPlus results were obtained using the example file
CoolingTower:VariableSpeed
, with the cooling tower evaluated as
the CoolingTower:VariableSpeed:Merkel
model from EnergyPlus.
The difference in results of the cooling tower's leaving water temperature
(tow.TLvg
and TLvg.EP
)
during the middle and end of the simulation is because the mass flow rate is
zero. For zero mass flow rate, EnergyPlus assumes a steady state condition,
whereas the Modelica model is a dynamic model and hence the properties at the
outlet are equal to the state variables of the model.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
Density | rhoWat | MediumWat.density(MediumWat.... | Default density of water [kg/m3] |
Density | rhoAir | MediumAir.density(MediumAir.... | Default density of air [kg/m3] |
PressureDifference | dp_nominal | 6000 | Nominal pressure difference of cooling tower [Pa] |
VolumeFlowRate | VWat_flow_nominal | 0.00109317 | Nominal volumetric flow rate of water (medium 2) [m3/s] |
VolumeFlowRate | VAir_flow_nominal | 0.561240 | Nominal volumetric flow rate of air (medium 1) [m3/s] |
Temperature | TAirInWB_nominal | 25.60 + 273.15 | Nominal outdoor wetbulb temperature [K] |
TemperatureDifference | TRan | 5.50 | Range temperature (difference between water in and out) [K] |
TemperatureDifference | TApp | 3.90 | Approach temperature (difference between water out and wetbulb) [K] |
Temperature | TWatOut_initial | 33.019 + 273.15 | Nominal water inlet temperature [K] |
Power | PFan_nominal | 213.27113 | Nominal fan power [W] |
Real | r_VEnePlu[:] | {0,0.1,0.2,0.3,0.4,0.5,0.6,0... | Fan control signal |
Real | r_PEnePlu[:] | {0,0.020982275,0.027843038,0... | Fan power output as a function of the signal |
Modelica definition
model MerkelEnergyPlus
extends Modelica.Icons.Example;
package MediumAir =
Buildings.Media.Air ;
package MediumWat =
Buildings.Media.Water ;
parameter Modelica.Units.SI.Density rhoWat=
MediumWat.density(
MediumWat.setState_pTX(
MediumWat.p_default,
MediumWat.T_default,
MediumWat.X_default)) ;
parameter Modelica.Units.SI.Density rhoAir=
MediumAir.density(
MediumAir.setState_pTX(
MediumAir.p_default,
MediumAir.T_default,
MediumAir.X_default)) ;
parameter Modelica.Units.SI.PressureDifference dp_nominal=6000
;
parameter Modelica.Units.SI.VolumeFlowRate VWat_flow_nominal=0.00109317
;
parameter Modelica.Units.SI.VolumeFlowRate VAir_flow_nominal=0.561240
;
parameter Modelica.Units.SI.Temperature TAirInWB_nominal=25.60 + 273.15
;
parameter Modelica.Units.SI.TemperatureDifference TRan=5.50
;
parameter Modelica.Units.SI.TemperatureDifference TApp=3.90
;
parameter Modelica.Units.SI.Temperature TWatOut_initial=33.019 + 273.15
;
parameter Modelica.Units.SI.Power PFan_nominal=213.27113 ;
parameter Real r_VEnePlu[:] = {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
;
parameter Real r_PEnePlu[:] = {0,0.020982275,0.027843038,0.046465108,
0.082729139,0.142515786,0.231705701,0.356179538,0.521817952,0.734501596,1}
;
final parameter Modelica.Units.SI.MassFlowRate mWat_flow_nominal=
VWat_flow_nominal*rhoWat
;
final parameter Modelica.Units.SI.MassFlowRate mAir_flow_nominal=
VAir_flow_nominal*rhoAir
;
final parameter Real ratWatAir_nominal = mWat_flow_nominal/mAir_flow_nominal
;
final parameter Modelica.Units.SI.Temperature TWatIn_nominal=TWatOut_nominal + TRan
;
final parameter Modelica.Units.SI.Temperature TWatOut_nominal=TAirInWB_nominal + TApp
;
Modelica.Blocks.Sources.CombiTimeTable datRea(
tableOnFile=true,
fileName=
ModelicaServices.ExternalReferences.loadResource(
"modelica://Buildings//Resources/Data/Fluid/HeatExchangers/CoolingTowers/Validation/MerkelEnergyPlus/CoolingTower_VariableSpeed_Merkel.dat"),
verboseRead=false,
columns=2:10,
tableName="EnergyPlus",
smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments)
;
Buildings.Fluid.HeatExchangers.CoolingTowers.Merkel tow(
redeclare package Medium = MediumWat,
dp_nominal=dp_nominal,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
T_start=TWatOut_initial,
m_flow_nominal=mWat_flow_nominal,
ratWatAir_nominal=ratWatAir_nominal,
TAirInWB_nominal=TAirInWB_nominal,
TWatIn_nominal=TWatIn_nominal,
TWatOut_nominal=TWatOut_nominal,
PFan_nominal=PFan_nominal,
yMin=0.1,
fraFreCon=0.1,
fanRelPow(r_V=r_VEnePlu, r_P=r_PEnePlu),
UACor(FRAirMin=0.2)) ;
Sources.MassFlowSource_T souWat(
redeclare package Medium = MediumWat,
use_m_flow_in=true,
T=328.15,
nPorts=1,
use_T_in=true)
;
Sources.Boundary_pT sinWat(
redeclare package Medium = MediumWat,nPorts=1)
;
Controls.OBC.UnitConversions.From_degC TEntWat
;
Controls.OBC.UnitConversions.From_degC TAirWB
;
Modelica.Blocks.Sources.RealExpression TLvg_EP(y=datRea.y[4])
;
Modelica.Blocks.Sources.RealExpression Q_flow_EP(y=-1*datRea.y[6])
;
Modelica.Blocks.Sources.RealExpression PFan_EP(y=datRea.y[7])
;
equation
connect(tow.TAir, TAirWB.y);
connect(souWat.ports[1], tow.port_a);
connect(tow.port_b, sinWat.ports[1]);
connect(TEntWat.y, souWat.T_in);
connect(datRea.y[2], TAirWB.u);
connect(TEntWat.u, datRea.y[3]);
connect(souWat.m_flow_in, datRea.y[5]);
connect(tow.y, datRea.y[9]);
end MerkelEnergyPlus;
Validation model that simulates the cooling tower at design conditions
Information
Validation model for the Merkel cooling tower.
The model simulates the cooling tower at the design conditions,
and it verifies that at steady-state, the outlet temperature is the same as the one from the design condition.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
Nominal condition |
MassFlowRate | m_flow_nominal | 0.5 | Design water flow rate [kg/s] |
Real | ratWatAir_nominal | 0.625 | Design water-to-air ratio |
Modelica definition
model MerkelNominal
extends Modelica.Icons.Example;
package Medium_W =
Buildings.Media.Water ;
parameter Modelica.Units.SI.MassFlowRate m_flow_nominal=0.5
;
parameter Real ratWatAir_nominal = 0.625
;
Buildings.Fluid.HeatExchangers.CoolingTowers.Merkel tow(
redeclare package Medium = Medium_W,
ratWatAir_nominal=ratWatAir_nominal,
TAirInWB_nominal=273.15 + 25.55,
TWatIn_nominal=273.15 + 35,
TWatOut_nominal=273.15 + 35 - 5.56,
PFan_nominal=4800,
m_flow_nominal=m_flow_nominal,
dp_nominal=6000,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
show_T=true)
;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant yFan(k=1) ;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TWetBul(k=tow.TAirInWB_nominal)
;
Buildings.Fluid.Sources.MassFlowSource_T sou(
redeclare final package Medium = Medium_W,
m_flow=m_flow_nominal,
T=tow.TWatIn_nominal,
nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT sin(
redeclare package Medium = Medium_W,
nPorts=1) ;
equation
connect(sou.ports[1], tow.port_a);
connect(tow.port_b,sin. ports[1]);
connect(TWetBul.y, tow.TAir);
connect(yFan.y, tow.y);
end MerkelNominal;