Commercial Office Building · Building Automation

Cooling Tower Sim — Condenser-Water Control Bench

A physics-based simulation of the building’s condenser-water system — two evaporative cooling-tower cells and the lead/standby condenser-water pumps — used to rehearse control sequences, test setpoints, and compare staging strategies before touching the live plant. The engine is calibrated to field telemetry from the building automation system.


Interactive animated mimic of the condenser-water cooling loop with manual overrides, adjustable setpoints, sequencing and model constants.

About this model what it is, how it’s calibrated, what it can’t yet do

What this is

A transient, physics-based simulation of the building’s condenser-water loop — a control and efficiency test bench for rehearsing the cooling-tower sequence, trying setpoints, and weighing pump and fan staging against energy use. It is not a data historian. The same calibrated engine runs here and in the headless model used for analysis.

The real system it represents

An open evaporative tower — two crossflow cells (CT-1 / CT-2), 564 nominal tons, with (2) 25 HP induced-draft fans — rejects building heat to outdoor air. Two 75 HP vertical-inline pumps (CTP-1 / CTP-2, one running at a time, swapped automatically once a week) circulate condenser water to the building’s water-source heat pumps, AHU compressors, and computer-room cooling. A recent renovation separated the basins and re-filled the cells; one cell was out for several weeks of the fit period, which is why single-cell operation stays a first-class mode here.

What’s under the hood

pump affinity laws + mfr head curve series / parallel hydraulic resistances ε-NTU + air-side Merkel tower wet-bulb enthalpy driving force first-order thermal transport basin water balance AHU-stage building load the running controller program (design SOO selectable)

The bench is modeled on the actual installed equipment, not just automation data. The pump head curve is the manufacturer submittal; the cooling-tower capacity, fan power, and basin volume are the tower nameplate and engineering data; the condenser-water piping is the real Sch 40 runs — sizes and lengths taken off the building prints; and the control logic is the program running on the tower controller, with the building’s documented sequence of operations selectable beside it. The BAS field trends then calibrate the loop resistances and validate the result against measured flow, pressure, and temperature — but the equipment skeleton is the real plant.

Everything was re-fit to a late-summer-to-fall season of 2-minute BAS trends (both pumps, one cell and two, bypass shut and open, the first winter-mode night) with an on-site weather station, and is scored by replaying the model’s own engine through every poll. Hydraulics: both cells at 60.5 % pump give ≈975 gpm at ≈9.4 psi; the replayed flow is within −9 gpm on average (RMS 29) and pump DP within 0.35 psi RMS. Since late summer the loop has run about 1.9× the resistance fitted earlier in the year, drifting about ±8 % with load and weather. Tower: fed the measured inlet, flow, fan and wet bulb, each cell’s leaving water is within +0.12 °F on average (RMS 0.74 °F, ~52,000 steady polls); at the manufacturer’s certified selection (918 gpm per cell, 74 °F wet bulb) it leaves 85.5 °F against the certified ~85 °F. Whole plant: with the fans, pump and bypass forced to what was measured, supply runs 0.8 °F cold on average (RMS 2.9 °F, the loop amplifying small tower errors at a ~1 °F range); with the controller program running everything in AUTO on the real setpoints, 0.5 °F cold (RMS 2.4 °F), pump speed within 0.9 % RMS, and about as many makeup fills as the real plant (20 vs 20 a day). Building load is fit to the air handlers’ compressor stages (31 t RMS per poll, −4 t on average), and the basins to the levels, fills, drawdowns and two loss-of-flow events. Hold-out: on three days after the fit, data it never saw, flow stayed within +4 gpm (RMS 12), the tower alone within −0.1 °F (RMS 0.45 °F) and the makeup fills matched (17 a day); with the fans off at ~50 t the whole loop ran 2 °F cold, which at that load is only ~2.6 t of heat. On 13 more days after that (with the program's new 17 % fan floor and 30 % bypass ceiling) the program replayed in AUTO held supply within −0.3 °F (RMS 2.8 °F) and the 3rd-floor DP within 0.07 psi RMS, and the tower alone stayed within −0.1 °F (RMS 0.43 °F) — except at fan speeds under the old 33 % floor, never seen in the fit, where it leaves ~0.7 °F too cold.

How to drive it

Press Pause/Run and let the sequence operate the plant, or take any actuator to HAND to override it (including over safeties). Watch the faceplate and the supply-temperature trend; use the power draw figure to weigh the energy cost of staging and setpoint choices.

Known limitations — read before drawing conclusions

  • Cold weather is extrapolated. The fit covers wet bulbs from the 40s to the 70s and the first winter-mode night (down to ~35 °F). There's no sub-freezing data, so the fans-off free cooling, the bypass in deep cold, freeze and the heat pumps' winter draw are provisional until a cold-spell trend exists.
  • The tower is weak below ~400 gpm per cell. It's fit on 460–1,000 gpm per cell. In two loss-of-flow events (200–400 gpm, fans high) the real cell still cooled 90–97 °F water to ~75 °F, and the model rejects only 40–70 % of that heat, so supply runs 10–12 °F warm there. The same regime covers a wide-open bypass. Fan speeds under 33 % are new since late October (the program's floor dropped to 17 %): there the model leaves ~0.7 °F too cold, its fan curve extrapolated.
  • Basin levels: the fill valve's stroke, the level sensor's lag and the 0.6–1.35″ day-to-day drift in CT-2's offset aren't modeled. With the bypass open the real basins sit ~0.6″ higher than the model and fill less often.
  • Loop resistance is fixed. The 3rd-floor DP is a fixed function of flow, which suits this constant-flow building (no two-way valves at the loads), but the measured resistance drifts about ±8 % with load and weather (higher at light load) and the model doesn't follow it.
  • The building-load model is a late-summer and fall fit. Load here is heat on the loop, compressor heat included: building mode is fit to measured loop heat (flow × range), so no ×1.2 goes on top. Fit to August–October (air-handler compressor stages, on-site weather), it reproduces the measured load to 31 t RMS per poll and 18 t on daily means, −4 t on average. The rest is day to day: Mondays run about two stages high, and units fail. It has seen outdoor enthalpy from 14 to 40 Btu/lb; hotter days follow the saturation toward the 28 stages available (~360 t at the certified 74 °F wet bulb). The heat-pump heating side, which matters in winter, comes from fall nights down to 37 °F and is extrapolated below that. The locked-out curve has a floor (~10 stages, the internal load at minimum OA), climbs above ~25 Btu/lb and with dry bulb above 60 °F (after one hold-out afternoon, warm and dry, ran 12.7 stages against 6.1 modeled); on 13 later days that shaped nothing, weekday daytime load is within −1 t on average (RMS 33 t). Days when the AHUs' own OA sensor reads low and they economize past the modeled limits still miss either way.
  • Thermal response is quasi-steady. The building and return nodes carry no heat capacitance, so a sudden load step gives a slightly sharp return-temperature response. Transient accuracy hasn't been scored on its own; read step responses as indicative.
LOW NPSHa LOW FLOW LOW CWS FREEZE FREEZE RISK OAT LOCKOUT OVER HP AIR INGEST BASIN OVERFLOW PUMP DEADHEAD BASIN LOW ΔT CLAMPED — kW speed 20 min/s
Supply · CWS
—
Return · CWR
—
Approach to WB
—
Loop flow
—
Heat rejection
—
—
Power draw
—
Condenser-water loop — process schematic Cooling towers and lead/standby pumps feed the building via a blue cold supply and red warm return main; live values shown at each real sensor/valve location. Overflow, 21″ Overflow, 21″ TOWER 1 TOWER 2 PUMP 1 PUMP 2 BUILDING 15 DX AHU · WSHP · CRAC — —% — —% — °F — °F Cold-basin level (▲ = makeup filling)—″ Cold-basin level (▲ = makeup filling)—″ — — — — — — — °F — — °F — psi — °F — — psi —% — °F — — psi —% — psi
cool warm pipe color = water temp · dash speed = that pipe’s flow · fan/pump spin = actual speed
Supply temperature trendCWS over time vs setpoint and the 50 degree low limit.
Supply trend (blue) vs setpoint (green)
Manual control & mode HAND overrides the sequence — incl. safety
Towers Single feeds Lead pump Lead tower
To replicate the live plant (both cells): set Dual, Pump → HAND 60.5% → expect ≈975 gpm on the tower meters, ≈9.4 psi at the 3rd floor (the fall median). Earlier in the year one cell alone at 60% gave ≈1,230 gpm / 7.75 psi; the loop has run about 1.9× that resistance since late summer.
Manual valves & isolation basin level, air-ingestion, dead-head, overflow
Tower return = BAS control valve; tower supply = manual butterfly. The basins have no equalizer line, but their outlets tee together before the strainer, so while both supply butterflies are open the suction keeps them one pool: shut CT-2 return and CT-1's basin refills CT-2's through the tee (all the flow and heat go to CT-1). Shut CT-2 supply too and CT-2's basin is isolated. Quick-fill (straight to a basin) is normally OFF; the makeup goes into the pump discharge.
Setpoints & sequencing the running program, or the documented design sequence
As running on the tower controller. One PI loop on header supply drives both fans at the same speed; a running fan never drops below the minimum speed, so at light load it short-cycles (36–74 starts/day in the fall trends). The bypass holds supply at setpoint − offset, capped at the max opening; in winter mode it also can't drop the towers' leaving water below the winter minimum. Pumps run on a DP cascade (3rd floor → header DP setpoint → speed) and swap Tuesdays 10:00. This program has no basin-freeze trip, WSHP low limit or pump speed floor — those are design-sequence items.
Tower model ε calibration knobs
Hydraulics resistances & DP curve (field-calibrated)
Water side basin levels, makeup, evaporation, the header sensor
Both cold basins draw through one suction tee, so they act as one pool: CT-2 rides ~1″ higher (its longer outlet run). The makeup joins the pump discharge and fills on CT-1's level (on below SP−1″, off at SP), with level-fail timers forcing a top-up after 60–90 min off. Each cell's hot-water basin and fill hold ~0.34 gal per gpm, which drains back when the flow drops: a pump stop at today's flow lifts the basins ~3.5″, near the 21″ overflow. Below ~11″ the outlet pulls air and the tower flow collapses. Fit to the fall trends.
PID gains per sequence; directional anti-windup
Ambient & load
Building load model compressor stages, fit to the Aug–Oct AHU trends
Active when Load source = building. Loop load = 24/7 base + heat per stage × compressor stages running − heat-pump heating. On weekdays 05:00–18:00 the AHUs run; each economizes with no compressor while OAT and OA enthalpy are under its limits, and once locked out its stages climb with enthalpy toward the stages available. After hours a small share runs on tenant overrides. Fit to August–October (AHU stages, loop flow × range, on-site weather): weekday daytime within ~40 t RMS, the rest is day-to-day (Mondays, units down). The heat-pump heating side is fit to fall nights down to 37 °F and extrapolated below. Hover any control for what it does.

Free and open source (MIT) · source on GitHub · related: Wet-Bulb Calculator, HVAC Network Scanner, PPCL Workbench, HVACTrend · more projects