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
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | num | 2 | Number of cooling towers |
| Modelica.Units.SI.PressureDifference | dpValve_nominal | Nominal pressure difference of the valve | |
| Fluid.HeatExchangers.CoolingTowers.Data.Merkel.Generic | dat | Performance data record | |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from PartialTwoPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dp_nominal | Nominal pressure difference of the tower | |
| Real | ratWatAir_nominal | 0.625 | Design water-to-air ratio |
| Advanced | |||
| Modelica.Units.SI.MassFlowRate | m_flow_small (from PartialTwoPortInterface) | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialTwoPortInterface) | false | = true, if actual temperature at port is computed |
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamics.FixedInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Heat transfer | |||
| Modelica.Units.SI.Temperature | TAirInWB_nominal | Nominal outdoor (air inlet) wetbulb temperature | |
| Modelica.Units.SI.Temperature | TWatIn_nominal | Nominal water inlet temperature | |
| Modelica.Units.SI.TemperatureDifference | dT_nominal | Temperature difference between inlet and outlet of the tower | |
| Fan | |||
| Modelica.Units.SI.Power | PFan_nominal | Fan power | |
| Dynamics › Time needed to open or close valve | |||
| Boolean | use_strokeTime | true | Set to true to continuously open and close valve |
| Dynamics | |||
| Modelica.Units.SI.Time | strokeTime | 30 | Time needed to change valve position from 0 to 1 |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a (from PartialTwoPort) | Fluid connector a (positive design flow direction is from port_a to port_b) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b (from PartialTwoPort) | Fluid connector b (positive design flow direction is from port_a to port_b) | |
| Modelica.Blocks.Interfaces.BooleanInput[num] | on | On signal for cooling towers | |
| Modelica.Blocks.Interfaces.RealInput | uFanSpe | Fan speed control signal | |
| Modelica.Blocks.Interfaces.RealInput | TWetBul | Entering air wetbulb temperature | |
| Modelica.Blocks.Interfaces.RealOutput[num] | PFan | Electric power consumed by fan | |
| Modelica.Blocks.Interfaces.RealOutput | TLvg | Leaving water temperature |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.MassFlowRate | m_flow (from PartialTwoPortInterface) | port_a.m_flow | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp (from PartialTwoPortInterface) | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium.ThermodynamicState | sta_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.ThermodynamicState | sta_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] | cooTow | Cooling tower | |
| Buildings.Fluid.Actuators.Valves.TwoWayEqualPercentage[num] | val | Cooling tower valves | |
| Buildings.Controls.OBC.CDL.Conversions.BooleanToReal[num] | booToRea | Boolean signal to real signal | |
| Buildings.Fluid.Sensors.TemperatureTwoPort | senTem |
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 toTWetBul, 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.