modelCoolingTowerGroup

Model of multiple identical cooling towers in parallel

Extends from Buildings.Fluid.Interfaces.PartialTwoPortInterface (Partial model with two ports and declaration of quantities that are used by many models).

Information

This model represents a set of identical cooling towers that are piped in parallel. No actuated isolation valves are included.

Control points

The following input and output points are available.

  • Start command (VFD Run) y1: DO signal dedicated to each unit, with a dimensionality of one
  • Speed command y: AO signal common to all units, with a dimensionality of zero
  • CW supply temperature TConWatSup: AI signal common to all units, with a dimensionality of zero

Details

Modeling approach

In a parallel arrangement, all operating units have the same operating point. This allows modeling the heat transfer from outdoor air to condenser water with a single instance of Buildings.Fluid.HeatExchangers.CoolingTowers.Merkel. Hydronics are resolved with mass flow rate multiplier components. Note that the elevation head of open-circuit cooling towers is not modeled, which is an inherent limitation of the cooling tower component model.

The fan cycling On and Off is implicitly modeled in the cooling tower component which uses a low limit of the control signal to switch to a free convection regime at zero fan power.

Parameters

TypeNameDefaultDescription
IntegernUniNumber of units operating at design conditions
RealyFan_min0.1CT fan minimum speed
Modelica.Units.SI.HeatFlowRateQ_flow_nominalmConWatUni_flow_nominal*4200*(TConWatSup_nominal - TConWatRet_nominal)Cooling tower design load
Fluid.HeatExchangers.CoolingTowers.Data.Merkel.GenericdatCooTowCooling tower performance data
Assumptions
BooleanallowFlowReversal (from PartialTwoPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Nominal condition
Modelica.Units.SI.MassFlowRatem_flow_nominal (from PartialTwoPortInterface)Nominal mass flow rate
Modelica.Units.SI.MassFlowRatemConWatUni_flow_nominalCW design mass flow rate (each unit)
Modelica.Units.SI.MassFlowRatemConWat_flow_nominalnUni*mConWatUni_flow_nominalCW design mass flow rate (all units)
Modelica.Units.SI.PressureDifferencedpConWatFriUni_nominalCW flow-friction losses through tower and piping only (without elevation head or valve)
Modelica.Units.SI.MassFlowRatemAirUni_flow_nominalAir mass flow rate (each unit)
Modelica.Units.SI.TemperatureTWetBulEnt_nominalEntering air wetbulb temperature
Modelica.Units.SI.TemperatureTConWatRet_nominalCW return temperature (tower entering)
Modelica.Units.SI.TemperatureTConWatSup_nominalCW supply temperature (tower leaving)
Modelica.Units.SI.PowerPFanUni_nominalFan power (each unit)
Advanced
Modelica.Units.SI.MassFlowRatem_flow_small (from PartialTwoPortInterface)1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow
Advanced › Diagnostics
Booleanshow_T (from PartialTwoPortInterface)false= true, if actual temperature at port is computed
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamicsModelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Dynamics › Nominal condition
Modelica.Units.SI.Timetau30Time constant of fluid volume for nominal flow, used if energy or mass balance is dynamic

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a (from PartialTwoPort)Fluid connector a (positive design flow direction is from port_a to port_b)
Modelica.Fluid.Interfaces.FluidPort_bport_b (from PartialTwoPort)Fluid connector b (positive design flow direction is from port_a to port_b)
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nUni]y1Cooling tower Start command
Buildings.Controls.OBC.CDL.Interfaces.RealInputyCooling tower speed (common to all tower cells)
BoundaryConditions.WeatherData.BusweaBusBus with weather data
Buildings.Controls.OBC.CDL.Interfaces.RealOutputPPower drawn by tower fans
Buildings.Controls.OBC.CDL.Interfaces.RealOutputTConWatSupCW supply temperature (tower leaving)

Components

TypeNameDefaultDescription
Modelica.Units.SI.MassFlowRatem_flow (from PartialTwoPortInterface)port_a.m_flowMass flow rate from port_a to port_b (m_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp (from PartialTwoPortInterface)port_a.p - port_b.pPressure difference between port_a and port_b
Medium.ThermodynamicStatesta_a (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(inStream(port_a.h_outflow)), noEvent(inStream(port_a.Xi_outflow)))Medium properties in port_a
Medium.ThermodynamicStatesta_b (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) else Medium.setState_phX(port_b.p, noEvent(port_b.h_outflow), noEvent(port_b.Xi_outflow))Medium properties in port_b
Fluid.BaseClasses.MassFlowRateMultipliermulInlFlow rate multiplier
Fluid.BaseClasses.MassFlowRateMultipliermulOutFlow rate multiplier
Buildings.Templates.Components.Controls.MultipleCommandscomConvert command signals
Buildings.Controls.OBC.CDL.Reals.MultiplymulPScale power
Fluid.HeatExchangers.CoolingTowers.MerkelcooCooling tower
Buildings.Controls.OBC.CDL.Logical.Pre[nUni]preY1Left limit of signal avoiding direct feedback of status to controller
Buildings.Controls.OBC.CDL.Conversions.BooleanToRealbooToReaConvert to real
Buildings.Controls.OBC.CDL.Reals.MultiplyinpCompute pump input signal

Revisions

  • April 27, 2026, by Michael Wetter:
    Refactored for new cooling tower implementation.
    This is for issue 4567.
  • June 20, 2024, by Michael Wetter:
    Corrected annotation.
    This is for issue 3900.
  • February 24, 2023, by Antoine Gautier:
    First implementation.