Buildings.Fluid.HeatExchangers.CoolingTowers
Package with cooling tower models
Information
This package contains components models for cooling towers.
The model Buildings.Fluid.HeatExchangers.CoolingTowers.DryCooler computes the performance of a dry cooler using the epsilon-NTU approach, with flow and temperature dependent convective heat transfer coefficients. It uses the dry bulb air temperature as an input.
The model Buildings.Fluid.HeatExchangers.CoolingTowers.FixedApproach computes a fixed approach temperature. It can be used with either the dry bulb or the wet bulb temperature as an input, as it simply sets the coolant leaving temperature to be equal to the air temperature plus a constant offset. Note that this model does not compute fan energy consumption.
The model Buildings.Fluid.HeatExchangers.CoolingTowers.YorkCalc computes the performance of a wet, open cooling tower based the York formula. It uses the wet bulb temperature as an input.
The model Buildings.Fluid.HeatExchangers.CoolingTowers.Merkel computes the performance of a wet, open cooling tower using the Merkel formula. It uses the wet bulb temperature as an input.
Extends from Modelica.Icons.Package (Icon for standard packages).
Package Content
| Name | Description |
|---|---|
| Cooling tower model based on epsilon-NTU relation | |
| Cooling tower with constant approach temperature | |
| Cooling tower model based on Merkel's theory | |
| Cooling tower with variable speed using the York calculation for the approach temperature | |
| Package with correlations for cooling tower performance | |
| Cooling tower performance data | |
| Collection of models that illustrate model use and test models | |
| Collection of validation models | |
| Package with base classes for Buildings.Fluid.HeatExchangers.CoolingTowers |
Buildings.Fluid.HeatExchangers.CoolingTowers.DryCooler
Cooling tower model based on epsilon-NTU relation
Information
Model for a steady-state or dynamic dry cooling tower with a variable speed fan using epsilon-NTU method for heat transfer.
Thermal performance
To compute the thermal performance, this model takes as parameters the nominal cooling capacity, air dry-bulb temperature, and cooling fluid (water or glycol) inlet and outlet temperatures as specified in the data record Buildings.Fluid.HeatExchangers.CoolingTowers.Data.DryCooler.Generic. The cooling tower performance is modeled using the effectiveness-NTU relationship for a crossflow configuration.
Changes in convective heat transfer coefficient on the coolant-side and the air-side due to change in flow rate and temperature are taken into account using the model Buildings.Fluid.HeatExchangers.BaseClasses.HADryCoil. This correction can be configured in the data record Buildings.Fluid.HeatExchangers.CoolingTowers.Data.DryCooler.Generic.
Extends from Buildings.Fluid.HeatExchangers.CoolingTowers.BaseClasses.CoolingTowerVariableSpeed (Base class for cooling towers with variable speed fan).
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | PartialMedium | Medium in the component | |
| Generic | dat | Performance data record | |
| Nominal condition | |||
| MassFlowRate | m_flow_nominal | dat.Q_flow_nominal/cp_defaul... | Nominal mass flow rate [kg/s] |
| PressureDifference | dp_nominal | dat.dp_nominal | Pressure difference [Pa] |
| Fan | |||
| Power | PFan_nominal | dat.PFan_nominal | Fan power at full speed [W] |
| Real | yMin | 0.3 | Minimum control signal until fan is switched off (used for smoothing between forced and free convection regime) [1] |
| fan | fanRelPow | dat.fanRelPow | Fan relative power consumption as a function of control signal, fanRelPow=P(y)/P(y=1) |
| 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 | false | = 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 | 30 | 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 |
| 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) |
| output RealOutput | TLvg | Leaving water temperature [K] |
| input RealInput | y | Fan control signal [1] |
| output RealOutput | PFan | Electric power consumed by fan [W] |
| input RealInput | TDryBul | Entering air dry bulb temperature [K] |
Modelica definition
Buildings.Fluid.HeatExchangers.CoolingTowers.FixedApproach
Cooling tower with constant approach temperature
Information
Model for a steady-state or dynamic cooling tower with constant approach temperature.
The approach temperature is the difference between the leaving water temperature and
the entering air temperature.
The entering air temperature is used from the signal TAir. If
connected to the a dry-bulb temperature, then a dry cooling tower is modeled.
If connected to a wet-bulb temperature, then a wet cooling tower is modeled.
By connecting a signal that contains either the dry-bulb or the wet-bulb temperature, this model can be used to estimate the water return temperature from a cooling tower. For a more detailed model, use for example the YorkCalc model.
Extends from Buildings.Fluid.HeatExchangers.CoolingTowers.BaseClasses.CoolingTower (Base class for cooling towers).
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | PartialMedium | Medium in the component | |
| TemperatureDifference | TApp | 2 | Approach temperature difference [K] |
| 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 | false | = 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 | 30 | 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 |
| 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) |
| output RealOutput | TLvg | Leaving water temperature [K] |
| input RealInput | TAir | Entering air dry or wet bulb temperature [K] |
Modelica definition
Buildings.Fluid.HeatExchangers.CoolingTowers.Merkel
Cooling tower model based on Merkel's theory
Information
Model for a steady-state or dynamic cooling tower with a variable speed fan using Merkel's calculation method.
Thermal performance
To compute the thermal performance, this model takes as parameters the nominal water mass flow rate, the water-to-air mass flow ratio at nominal condition, the nominal inlet air wetbulb temperature, and the nominal water inlet and outlet temperatures. Cooling tower performance is modeled using the effectiveness-NTU relationships for various heat exchanger flow regimes.
The total heat transfer between the air and water entering the tower is computed based on Merkel's theory. The fundamental basis for Merkel's theory is that the steady-state total heat transfer is proportional to the difference between the enthalpy of air and the enthalpy of air saturated at the wetted-surface temperature. This is represented by
dQ̇total = UdA/cp (hs - ha),
where hs is the enthalpy of saturated air at the wetted-surface temperature, ha is the enthalpy of air in the free stream, cp is the specific heat of moist air, U is the cooling tower overall heat transfer coefficient, and A is the heat transfer surface area.
The model also treats the moist air as an equivalent gas with a mean specific heat cpe defined as
cpe = Δh / ΔTwb,
where Δh and ΔTwb are the enthalpy difference and wetbulb temperature difference, respectively, between the entering and leaving air.
For off-design conditions, Merkel's theory is modified to include Sheier's adjustment factors that change the current UA value. The three adjustment factors, based on the current wetbulb temperature, air flow rates, and water flow rates, are used to calculate the UA value as
UAe = UA0 · fUA,wetbulb · fUA,airflow · fUA,waterflow,
where UAe and UA0 are the equivalent and design overall heat transfer coefficent-area products, respectively. The factors fUA,wetbulb, fUA,airflow, and fUA,waterflow adjust the current UA value for the current wetbulb temperature, air flow rate, and water flow rate, respectively. These adjustment factors are third-order polynomial functions defined as
fUA,x = cx,0 + cx,1 x + cx,2 x2 + cx,3 x3,
where x = {(T0,wetbulb - Twetbulb),
ṁair ⁄ ṁ0,air,
ṁwat ⁄ ṁ0,wat}
for the respective adjustment factor, and the
coefficients cx,0, cx,1, cx,2, and cx,3
are the user-defined
values for the respective adjustment factor functions obtained from
Buildings.Fluid.HeatExchangers.CoolingTowers.Data.Merkel.BaseClasses.UACorrection.
By changing the parameter UACor, the
user can update the values in this record based on the performance characteristics of
their specific cooling tower.
Comparison with the cooling tower model of EnergyPlus
This model is similar to the model CoolingTower:VariableSpeed:Merkel
that is implemented in the EnergyPlus building energy simulation program version 8.9.0.
The main differences are:
- Not implemented are the basin heater power consumption and the make-up water usage.
- The model has no built-in control to switch individual cells of the tower on or off. To switch cells on or off, use multiple instances of this model, and use your own control law to compute the input signal y.
Assumptions
The following assumptions are made with Merkel's theory and this implementation:
- The moist air enthalpy is a function of wetbulb temperature only.
- The wetted surface temperature is equal to the water temperature.
- Cycle losses are not taken into account.
References
EnergyPlus 8.9.0 Engineering Reference, March 23, 2018.
Extends from Buildings.Fluid.HeatExchangers.CoolingTowers.BaseClasses.CoolingTowerVariableSpeed (Base class for cooling towers with variable speed fan).
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | PartialMedium | Medium in the component | |
| Generic | dat | Performance data | |
| Nominal condition | |||
| MassFlowRate | m_flow_nominal | dat.Q_flow_nominal/cp_defaul... | Nominal mass flow rate [kg/s] |
| PressureDifference | dp_nominal | dat.dp_nominal | Pressure difference [Pa] |
| Fan | |||
| Power | PFan_nominal | dat.PFan_nominal | Fan power at full speed [W] |
| Real | yMin | 0.3 | Minimum control signal until fan is switched off (used for smoothing between forced and free convection regime) [1] |
| fan | fanRelPow | dat.fanRelPow | Fan relative power consumption as a function of control signal, fanRelPow=P(y)/P(y=1) |
| 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 | false | = 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 | 30 | 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 |
| 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) |
| output RealOutput | TLvg | Leaving water temperature [K] |
| input RealInput | y | Fan control signal [1] |
| output RealOutput | PFan | Electric power consumed by fan [W] |
| input RealInput | TWetBul | Entering air wet bulb temperature [K] |
Modelica definition
Buildings.Fluid.HeatExchangers.CoolingTowers.YorkCalc
Cooling tower with variable speed using the York calculation for the approach temperature
Information
Model for a steady-state or dynamic cooling tower with variable speed fan using the York calculation for the approach temperature at off-design conditions.
Thermal performance
To compute the thermal performance, this model takes as parameters the inlet and outlet temperatures of the cooling loop and the inlet air wet bulb temperature, and the rejected heat at the design condition. The design mass flow rate (of the chiller condenser loop) is then calculated based on these parameters.
For off-design conditions, the model uses the actual range temperature and a polynomial
to compute the approach temperature for free convection and for forced convection, i.e.,
with the fan operating. The polynomial is valid for a York cooling tower.
If the fan input signal y is below the minimum fan revolution yMin,
then the cooling tower operates in free convection mode, otherwise it operates in
the forced convection mode.
For numerical reasons, this transition occurs in the range of y ∈ [0.9*yMin, yMin].
Fan power consumption
The fan power consumption at the design condition can be specified as follows:
-
The parameter
fraPFan_nominalcan be used to specify at the nominal conditions the fan power divided by the water flow rate. The default value is 275 Watts for a water flow rate of 0.15 kg/s. -
The parameter
PFan_nominalcan be set to the fan power at nominal conditions. If a user does not set this parameter, then the fan power will bePFan_nominal = fraPFan_nominal * m_flow_nominal, wherem_flow_nominalis the nominal water flow rate.
In the forced convection mode, the actual fan power is
computed as PFan=fanRelPow(y) * PFan_nominal, where
the default value for the fan relative power consumption at part load is
fanRelPow(y)=y3.
In the free convection mode, the fan power consumption is zero.
For numerical reasons, the transition of fan power from the part load mode
to zero power consumption in the free convection mode occurs in the range
y ∈ [0.9*yMin, yMin].
To change the fan relative power consumption at part load in the forced convection mode,
points of fan controls signal and associated relative power consumption can be specified.
In between these points, the values are interpolated using cubic splines.
Comparison the cooling tower model of EnergyPlus
This model is similar to the model Cooling Tower:Variable Speed that
is implemented in the EnergyPlus building energy simulation program version 6.0.
The main differences are
- Not implemented are the basin heater power consumption, and the make-up water usage.
-
The model has no built-in control to switch individual cells of the tower on or off.
To switch cells on or off, use multiple instances of this model, and use your own
control law to compute the input signal
y.
Assumptions and limitations
This model requires a medium that has the same computation of the enthalpy as Buildings.Media.Water, which computes
h = cp (T-T0),
where
h is the enthalpy,
cp = 4184 J/(kg K) is the specific heat capacity,
T is the temperature in Kelvin and
T0 = 273.15 Kelvin.
If this is not the case, the simulation will stop with an error message.
The reason for this limitation is that as of January 2015, OpenModelica
failed to translate the model if Medium.temperature() is used
instead of
Water.temperature().
References
EnergyPlus 2.0.0 Engineering Reference, April 9, 2007.
Extends from Buildings.Fluid.HeatExchangers.CoolingTowers.BaseClasses.CoolingTowerVariableSpeed (Base class for cooling towers with variable speed fan).
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | PartialMedium | Medium in the component | |
| Generic | dat | Performance data | |
| Nominal condition | |||
| MassFlowRate | m_flow_nominal | dat.Q_flow_nominal/cp_defaul... | Nominal mass flow rate [kg/s] |
| PressureDifference | dp_nominal | dat.dp_nominal | Pressure difference [Pa] |
| Fan | |||
| Power | PFan_nominal | dat.PFan_nominal | Fan power at full speed [W] |
| Real | yMin | 0.3 | Minimum control signal until fan is switched off (used for smoothing between forced and free convection regime) [1] |
| fan | fanRelPow | dat.fanRelPow | Fan relative power consumption as a function of control signal, fanRelPow=P(y)/P(y=1) |
| 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 | false | = 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 | 30 | 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 |
| 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) |
| output RealOutput | TLvg | Leaving water temperature [K] |
| input RealInput | y | Fan control signal [1] |
| output RealOutput | PFan | Electric power consumed by fan [W] |
| input RealInput | TWetBul | Entering air wet bulb temperature [K] |