modelCoolingTowersParallel

Multiple identical cooling towers in parallel connection

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

Information

This model implements a parallel cooling tower system with num identical cooling towers.

The cooling tower model is an instance of Buildings.Fluid.HeatExchangers.CoolingTowers.Merkel.

Parameters

TypeNameDefaultDescription
Integernum2Number of cooling towers
Modelica.Units.SI.PressureDifferencedpValve_nominalNominal pressure difference of the valve
Fluid.HeatExchangers.CoolingTowers.Data.Merkel.GenericdatPerformance data record
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.PressureDifferencedp_nominalNominal pressure difference of the tower
RealratWatAir_nominal0.625Design water-to-air ratio
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.FixedInitialType of energy balance: dynamic (3 initialization options) or steady state
Heat transfer
Modelica.Units.SI.TemperatureTAirInWB_nominalNominal outdoor (air inlet) wetbulb temperature
Modelica.Units.SI.TemperatureTWatIn_nominalNominal water inlet temperature
Modelica.Units.SI.TemperatureDifferencedT_nominalTemperature difference between inlet and outlet of the tower
Fan
Modelica.Units.SI.PowerPFan_nominalFan power
Dynamics › Time needed to open or close valve
Booleanuse_strokeTimetrueSet to true to continuously open and close valve
Dynamics
Modelica.Units.SI.TimestrokeTime30Time needed to change valve position from 0 to 1

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)
Modelica.Blocks.Interfaces.BooleanInput[num]onOn signal for cooling towers
Modelica.Blocks.Interfaces.RealInputuFanSpeFan speed control signal
Modelica.Blocks.Interfaces.RealInputTWetBulEntering air wetbulb temperature
Modelica.Blocks.Interfaces.RealOutput[num]PFanElectric power consumed by fan
Modelica.Blocks.Interfaces.RealOutputTLvgLeaving water temperature

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
Buildings.Fluid.HeatExchangers.CoolingTowers.Merkel[num]cooTowCooling tower
Buildings.Fluid.Actuators.Valves.TwoWayEqualPercentage[num]valCooling tower valves
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal[num]booToReaBoolean signal to real signal
Buildings.Fluid.Sensors.TemperatureTwoPortsenTem

Revisions

  • April 29, 2026, by Michael Wetter:
    Refactored to no longer allow the cooling tower model and its data record to be replaceable. This was done since the input connector for the Merkel cooling tower has been renamed to TWetBul, and its base class has no longer this input connector.
    This is for issue 4567.
  • November 16, 2022, by Michael Wetter:
    Changed rise time of valve to 30 seconds so that it is the same as the one for the pumps.
  • May 19, 2020 by Jing Wang:
    First implementation.