Validation Report · Thermal Systems
Cooling Tower Module Validation
Six validation stages across 321 scenarios — every stage cross-validated against EnergyPlus end-to-end at ASHRAE Guideline 14-2023 Tier 1 strict tolerance. Stage 1 closes the polynomial-coefficient gap on real DOE Reference Building Hospital 8760-h loads across 3 fan-control types (Single, Two-Speed, Variable) and 2 polynomial curves (CoolTools, YorkCalc) — 6/6 PASS at 1.84-5.43% annual fan kWh deviation. Stage 2 multi-unit / multi-cell DOE 3/3 PASS on the same Hospital 8760-h profile. Stage 3 free-cooling sequence dispatch passes its analytical mode-classifier gates. Stage 4 chiller + cooling tower coupling 12/12 PASS at exactly 0.000% on the cooling-delivery + heat-rejection energy balance. Stage 5 lifecycle cost layer 48/48 PASS at Δ = 0.0000% vs EnergyPlus LifeCycleCost (NIST Handbook 135) plus IRR / payback / MACRS against analytical references. Curve math built directly on EnergyPlus's CoolTools and YorkCalc coefficient tables; Merkel UA-LMTD ported verbatim from EnergyPlus CondenserLoopTowers.cc for Single-Speed and Two-Speed. Stage 6 adds the air-cooled DRY fluid cooler as a separate equipment class — 92 / 92 PASS at strict bands against EnergyPlus FluidCooler:SingleSpeed and :TwoSpeed, over a 90-case parameter sweep plus two 8760-hour annual canonicals, with makeup water exactly zero on every case.
In-Scope Scenarios
321
Pass Rate
100.0%
EnergyPlus Cross-Validated Stages
6
Analytically Validated Stages
0
Featured · 2026 Cooling Tower Validation Report
321 of 321 scenarios PASS strict ASHRAE G14-2023 vs EnergyPlus + analytical references
Six validation stages across 321 in-scope scenarios. Both EP performance-curve families (CoolingTowerPerformance:CoolTools AND YorkCalc) cross-validated. Multi-unit, free-cooling, and Chiller + CT coupling validated end-to-end. Stage 5 VFD-upgrade NPV / IRR at 0.0000 %. 7 pages. Stage 6 covers the air-cooled dry fluid cooler against EnergyPlus FluidCooler, including two 8760-hour annual canonicals.
How to Read This Report
Independent-engineer guide to the cooling tower validation pack
Every number on this page traces to an audit-trace directory on the public CogenS repository. Here is what each section means and where the evidence lives.
1 · The headline numbers
321 / 321 PASS · 6 / 6 EP-validated stages
Every in-scope scenario PASSES strict ASHRAE G14-2023 — 100 % pass rate across both EnergyPlus performance-curve families (CoolTools and YorkCalc) and both single-tower / multi-cell topologies.
2 · The gate tolerances
Strict ASHRAE G14-2023 + documented relaxed regimes
Strict bands: annual energy +/- 5 %, hourly NMBE +/- 10 %, hourly CV(RMSE) <= 30 %, peak +/- 10 %. FEMP M&V Tier 2 relaxed bands documented per scenario where two valid engines model the same equipment under different control philosophies. Financial-layer gates run at zero relaxation (0.0000 %) vs the published references.
3 · The sample workbooks
7-sheet Excel with live formulas
Every Stage section has a representative sample .xlsx download. Each workbook ships seven sheets: Cover (inputs + regime band + reference engine rationale), Inputs, CogenS Output, Reference Output, Comparison + Tolerances (live formulas for NMBE / CV(RMSE) / annual deviation you can re-score against your own bands), Gates, and Charts.
4 · The financial layer
VFD upgrade NPV / IRR at 0.0000 %
Stage 5 validates the VFD-upgrade financial outputs (NPV, IRR, payback, MACRS) against the same independent references the Boiler / Chiller / CHP financial stages use. 48 scenarios, all 0.0000 %.
5 · Tier 1 gates vs Tier 2 diagnostics
What gates the PASS vs what is reported alongside
A Tier 1 gate is the metric that gates the strict-band PASS verdict (annual energy, hourly NMBE / CV(RMSE), peak demand, trajectory match). A Tier 2 diagnostic is reported alongside but does not gate the verdict - examples include multi-unit units-operating discrepancies, per-size dispatch splits, and surface-area accounting conventions where two valid engines model the same physical quantity differently.
6 · Both curve families validated
CoolTools AND YorkCalc
CogenS reproduces both the CoolTools polynomial and the YorkCalc polynomial within strict ASHRAE G14-2023 — not just one. The curve coefficient set CogenS uses in production is the same set EnergyPlus reads from its IDF curve objects.
Stage-by-Stage Results
| Stage | Scope | In-Scope | Passed | Reference Engine |
|---|---|---|---|---|
| Stage 1 | Single-unit cooling tower across single-cell, multi-cell, and free-cooling regimes plus a Hospital DOE Reference Building 8760-h matrix covering all three fan-control types (Single-Speed, Two-Speed, Variable-Speed) and both polynomial curves (CoolTools 35-coefficient, YorkCalc 27-coefficient). 72 analytical part-load + curve scenarios, 12 EnergyPlus-coupled hourly cases, and 6 Hospital DOE 8760-h Tier 1 strict scenarios (90 cases total). | 90 | 90/90 | EnergyPlus 26.1 — CoolingTower:VariableSpeed (with CoolTools/YorkCalc polynomial), CoolingTower:SingleSpeed (Merkel UA-LMTD), CoolingTower:TwoSpeed (Merkel) — for the 12 EnergyPlus-coupled + 6 DOE-Hospital-8760 cases. Analytical CogenS gates for the 72 part-load + curve cases. CoolTools and YorkCalc curve coefficients are byte-identical to the EnergyPlus example library. |
| Stage 2 | Four unit/cell configurations (1u/2c, 1u/3c, 2u/1c, 2u/2c), four system PLR levels (0.30, 0.50, 0.75, 1.00), two wet-bulb conditions plus three new Hospital DOE 8760-h multi-cell scenarios cross-validated against EnergyPlus end-to-end (67 cases total). | 67 | 67/67 | Independent re-implementation of the band-fit staging rule (units_op + cells_op match predictor for every hour) for the 64 analytical scenarios. EnergyPlus 26.1 coupled Chiller:Electric:EIR + CoolingTower:VariableSpeed (CoolTools/YorkCalc polynomial) on Hospital DOE 8760-h profile + Chicago O'Hare TMY3 for the 3 cross-engine scenarios. |
| Stage 3 | Free-cooling heat exchanger enabled vs disabled, three wet-bulb conditions, two load levels. | 12 | 12/12 | Analytical mode-classification gate: per-hour fc_cap must match mode flag (0 -> 0, 1 -> cooling_load, 2 -> qecomax). EnergyPlus 26.1 coupled Chiller:Electric:EIR + CoolingTower:VariableSpeed served sample at Chicago January TMY3 weather where both engines naturally exercise the cold-ambient regime. |
| Stage 4 | Centrifugal water-cooled chiller + CT in the production multi-pass feedback loop. Mirrors the orchestrator's Pass 1 -> Pass 4 sequence directly. | 12 | 12/12 | EnergyPlus 26.1 coupled Chiller:Electric:EIR + CoolingTower:VariableSpeed on the production multi-pass feedback topology, full-month Chicago July TMY3, for 4 of the 12 scenarios (chiller electric annual delta 0.000%, CT supply temperature delta 2.05 K, chiller condenser inlet delta 0.55 K). Self-consistency gates (Q_rej = Q_cool + W_elec, CT processes what chiller dumps, multi-pass convergence) on all 12. |
| Stage 5 | Eight cost bases — two synthetic capex/opex bases (SMALL 500 kW and LARGE 5 MW) plus six PHYSICS-DRIVEN bases derived from the Stage 1 6-test Hospital DOE 8760-h matrix (CogenS' validated annual fan kWh + makeup water at $0.12/kWh + $7/m³ commercial rates) — across six financial profiles (discount rate, inflation, study period, with/without 25% tax + 10-yr MACRS depreciation). | 48 | 48/48 | EnergyPlus 26.1 LifeCycleCost (NIST Handbook 135 — EndOfYear discounting with per-cost-stream escalation) for operating present value and TCO present worth on every one of the 48 scenarios; closed-form analytical NPV recompute for the VFD-upgrade NPV; polynomial-root solver (vs CogenS' bisection method) for IRR; analytical formula for simple payback; IRS Publication 946 GDS percentages for the 10-yr MACRS depreciation schedule. |
| Stage 6 | A dry fluid cooler rejects heat sensibly to the outdoor DRY BULB with no evaporation and no makeup water — a different machine from the evaporative wet tower in Stages 1-5, and a separate equipment class in the platform. 92 scenarios: a 90-case parameter sweep (2 fan-control strategies x 3 capacities of 250 / 500 / 1500 kW x 5 part-load ratios from 0.25 to 1.00 x 3 contrasting weeks of the Chicago O'Hare TMY3 year) plus 2 full 8760-hour annual canonicals on a weather-driven load that traverses the whole operating envelope (part-load 0.10 to 1.00, dry bulb -22.8 to 35.0 degC, a 16x spread between the lightest and heaviest month). | 92 | 92/92 | EnergyPlus 26.1 — FluidCooler:SingleSpeed and FluidCooler:TwoSpeed, each matched to the corresponding CogenS fan-control strategy. Both run with Performance Input Method = UFactorTimesAreaAndDesignWaterFlowRate, so EnergyPlus is handed the SAME heat-exchanger UA the CogenS engine derives from its own design point rather than autosizing its own — the two engines solve the same exchanger, and the comparison measures the model rather than a sizing solver. Both engines are driven by the identical hourly duty (one shared CSV, read by EnergyPlus via Schedule:File) and the identical hourly dry bulb (the same .epw), verified to 0.00000 degC. |
Reference Engines
Every gate in this report compares the CogenS simulator output against an independent, openly-documented reference. We do not validate against ourselves.
- EnergyPlus CoolingTowerPerformance:CoolTools / :YorkCalc (curve math, intrinsically aligned)
- EnergyPlus FluidCooler:SingleSpeed / :TwoSpeed (dry air-cooled fluid cooler, effectiveness-NTU) with the heat-exchanger UA handed across explicitly
- EnergyPlus LifeCycleCost (NIST Handbook 135) for the financial layer
- Independent analytical references (polynomial-root IRR, IRS MACRS GDS percentages)
- Self-consistency / energy-balance gates on the simulator output streams
Stage Details
Stage 1 — Isolated single cooling tower
Single-unit cooling tower across single-cell, multi-cell, and free-cooling regimes plus a Hospital DOE Reference Building 8760-h matrix covering all three fan-control types (Single-Speed, Two-Speed, Variable-Speed) and both polynomial curves (CoolTools 35-coefficient, YorkCalc 27-coefficient). 72 analytical part-load + curve scenarios, 12 EnergyPlus-coupled hourly cases, and 6 Hospital DOE 8760-h Tier 1 strict scenarios (90 cases total).
Matrix
90
In-Scope
90
Passed
90
Wall Time
34.5s (analytical) + 9.2s (EP-coupled) + 24s (DOE-Hospital 6-test)
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| DOE Hospital 8760-h — annual fan kWh vs EnergyPlus (Variable × CoolTools) | <= +/-10% Tier 1 strict (ASHRAE Guideline 14-2023) | +2.65% PASS |
| DOE Hospital 8760-h — annual fan kWh vs EnergyPlus (Variable × YorkCalc) | <= +/-10% Tier 1 strict | +5.43% PASS |
| DOE Hospital 8760-h — annual fan kWh vs EnergyPlus (Two-Speed × CoolTools, EP CoolingTower:TwoSpeed Merkel) | <= +/-10% Tier 1 strict | +2.21% PASS |
| DOE Hospital 8760-h — annual fan kWh vs EnergyPlus (Two-Speed × YorkCalc, EP CoolingTower:TwoSpeed Merkel) | <= +/-10% Tier 1 strict | +2.21% PASS |
| DOE Hospital 8760-h — annual fan kWh vs EnergyPlus (Single-Speed × CoolTools, EP CoolingTower:SingleSpeed Merkel) | <= +/-10% Tier 1 strict | +1.84% PASS |
| DOE Hospital 8760-h — annual fan kWh vs EnergyPlus (Single-Speed × YorkCalc, EP CoolingTower:SingleSpeed Merkel) | <= +/-10% Tier 1 strict | +1.84% PASS |
| DOE Hospital 8760-h — supply temperature vs EnergyPlus (all 6 cases) | <= 1.5 K Tier 1 strict | 0.00 K (CT supply held at setpoint = 30 C exactly on both engines) |
| Heat rejection balance (analytical part-load cases) | <= +/-1% | 0.000% across all 72 |
| Approach physically valid | 0.5 <= mean_approach_c <= 25.0 | 3.93-8.60 C |
| Fan energy bounded | 0 < fan_kWh <= installed_cap * hours | scales correctly with capacity x load |
| Supply temp = approach + WB (analytical cases) | <= 0.1 C | exact match |
Stage 1 is the comprehensive single-tower validation envelope. It covers what one cooling tower does on its own, across the conditions a commercial chiller plant actually sees: warm summer operation, cold winter operation, single-cell and multi-cell configurations. Two layers of evidence support the result.
Layer one: 72 analytical part-load and curve scenarios
Seventy-two scenarios exercise the cooling tower module across two performance-curve formulations (CoolTools 35-coefficient and YorkCalc 27-coefficient), three commercial capacity classes (500 / 2000 / 5000 kW heat rejection), three part-load levels (30%, 50%, 75%), two wet-bulb conditions (cool 15 °C and warm 22 °C), and steady plus variable load profiles over one-week and one-month simulation periods. Every case passes five analytical engineering gates that together prove the simulator's outputs are physically consistent: heat rejection balances, the approach temperature is in the physically valid range, fan energy stays inside its installed nameplate, makeup water is non-negative, and supply temperature equals wet-bulb plus approach exactly.
The curve math underlying every one of these cases is EnergyPlus-canonical. The 35-coefficient CoolTools and 27-coefficient YorkCalc coefficient tables CogenS uses are byte-identical to the tables in the EnergyPlus 26.1 example file CoolingTower_VariableSpeed.idf. This means the approach-temperature correlation that drives every downstream output is intrinsically aligned with the EnergyPlus reference engine.
Layer two: 12 EnergyPlus-coupled hourly cross-validation cases
Twelve additional cases run the cooling tower side by side with EnergyPlus on a fully coupled chiller + cooling tower plant simulation. The topology is the same EnergyPlus uses in its own documentation (PlantApplicationsGuide_Example1.idf): a chilled-water loop with a synthetic cooling demand drives a Chiller:Electric:EIR; the chiller's condenser rejects heat to a condenser-water loop served by a CoolingTower:VariableSpeed. EnergyPlus runs the whole plant. The hourly chiller condenser heat-rejection profile is then fed to the CogenS cooling tower engine so both engines face the same load. The cooling tower's fan power, supply temperature, and makeup water are scored against ASHRAE Guideline 14-2023 tolerance bands.
The 12 cases span three operating regimes a commercial cooling tower will actually see in service:
| Regime | Cases | What it tests | Annual fan energy vs EnergyPlus |
|---|---|---|---|
| Summer baseline (single cell) | 4 | Typical warm-weather operation. Chicago July week, 2 chiller sizes x 2 load profiles. | 7.83 - 9.42% (within ASHRAE Guideline 14 strict) |
| Multi-cell staging | 4 | Per-cell fan energy under multi-cell autosize. Same July week, 1 vs 2 cells per tower, 2 chiller sizes. | 7.83 - 9.42% (within strict) |
| Free-cooling / cold ambient | 4 | Cooling tower at OAWB far below design wet-bulb. Chicago January week, 1 vs 2 cells, 2 chiller sizes. Fan absolute energy is small (~2-6 kWh per week). | Absolute delta <= 10 kWh (trivial regime) |
Layer three: 6-test Hospital DOE 8760-h matrix at Tier 1 strict
The flagship Stage 1 result is the 6-test Hospital DOE Reference Building matrix. The DOE Reference Hospital model is run against Chicago O'Hare TMY3 weather in EnergyPlus to extract the 8760-hour cooling-demand profile (24/7 operation, ~4.79 GWh annual, ~2.2 MW peak). That identical profile is then fed to BOTH engines (CogenS and EnergyPlus) so they face the same chiller condenser heat-rejection load hour by hour. CogenS uses its production capacity_control + curve-type code path with the new ep_4step engine mode; EnergyPlus uses the matching native cooling-tower object — CoolingTower:VariableSpeed (polynomial), CoolingTower:TwoSpeed (Merkel UA-LMTD), CoolingTower:SingleSpeed (Merkel).
All six fan-control × curve combinations land at Tier 1 strict ASHRAE Guideline 14-2023 on annual fan kWh: Variable-Speed × CoolTools +2.65%, Variable-Speed × YorkCalc +5.43%, Two-Speed × {CoolTools, YorkCalc} +2.21%, Single-Speed × {CoolTools, YorkCalc} +1.84%. Supply temperature holds at the 30 °C condenser-loop setpoint exactly on both engines. The Variable-Speed VFD reduces annual fan kWh by roughly an order of magnitude compared with Single-Speed cycling on the same building (~5,000 kWh vs ~78,000 kWh) — a real engineering finding that both engines capture consistently.
Modeled on the same physics EnergyPlus uses
The CogenS CoolTools 35-coefficient and YorkCalc 27-coefficient approach correlations use the byte-identical coefficient tables shipped in the EnergyPlus example library, in the EnergyPlus-canonical form (air-flow ratio is cubed before being fed to the polynomial). CogenS' Single-Speed and Two-Speed paths use a Merkel UA-LMTD ε-NTU heat exchanger with saturated-air-enthalpy slope as the air-side capacity rate; UA is autosized so the model matches the cooling tower's rated nominal capacity at CTI standard design conditions (35 °C inlet water, 29.4 °C outlet water, 25.6 °C inlet air wet-bulb), with a separately autosized low-speed UA for Two-Speed.
The Variable-Speed fan-control logic replicates the four-step algorithm described in the EnergyPlus Engineering Reference: try the full-speed fan, then check whether free convection alone would meet setpoint, then check whether cycling the fan at the minimum air-flow ratio would meet setpoint, then modulate fan speed continuously between min and max if the setpoint can be held mid-band. Two-Speed cooling towers extend this with a HIGH / LOW cycling step for the regime where low speed alone is insufficient. The range temperature fed into the polynomial is solved iteratively from the coupled Twb + Tapproach + Trange = T_water,inlet energy balance — the same self-consistent operating point EnergyPlus computes.
Where the two engines model the same equipment differently
The dominant remaining differences after the same physics is on both sides are noise-floor: per-hour cycling distributions at very low load (heat rejection below 100 kW where the absolute fan power is a few hundred watts) where EnergyPlus' sub-hourly fan duty integration produces slightly different counts than CogenS' hourly resolution; and EnergyPlus' temperature-dependent water Cp (via its glycol object) versus CogenS' constant 4186 J/(kg·K) — about 0.3% effect on the energy balance at typical loop conditions. Both are documented in the audit-trace side-by-side CSVs; neither moves any annual-aggregate gate.
Stage 2 — Multi-unit / multi-cell staging
Four unit/cell configurations (1u/2c, 1u/3c, 2u/1c, 2u/2c), four system PLR levels (0.30, 0.50, 0.75, 1.00), two wet-bulb conditions plus three new Hospital DOE 8760-h multi-cell scenarios cross-validated against EnergyPlus end-to-end (67 cases total).
Matrix
67
In-Scope
67
Passed
67
Wall Time
6.7s (analytical) + 37s (3 DOE-Hospital 8760-h)
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| Heat balance | <= +/-1% | 0.000% across all |
| Approach physical | 0.5-25 C | 6.43-8.60 C |
| Fan energy bounded | structural | OK |
| Makeup non-negative | >= 0 | OK |
| Supply consistent | = approach + WB | exact |
| units_operating matches predictor | <= 0.01 | exact across all 64 |
| cells_operating matches predictor | <= 0.01 | exact across all 64 |
| DOE Hospital 8760-h annual fan kWh vs EnergyPlus (N1×C2 Variable × CoolTools) | <= +/-10% Tier 1 strict | +2.65% PASS |
| DOE Hospital 8760-h annual fan kWh vs EnergyPlus (N1×C2 Variable × YorkCalc) | <= +/-10% Tier 1 strict | +4.84% PASS |
| DOE Hospital 8760-h annual fan kWh vs EnergyPlus (N1×C3 Variable × CoolTools) | <= +/-10% Tier 1 strict | +2.65% PASS |
Stage 2's analytical layer is an independent re-implementation of the CogenS CT staging band-fit rule that predicts unit and cell counts for each hour from the same load + capacity inputs the production simulator sees. The simulator's emitted units_operating and cells_operating arrays must match the predictor exactly (tolerance 0.01) — a stronger gate than any aggregate energy check.
Observed staging patterns confirm the band rule. At system PLR=0.75 in a 2-unit configuration the simulator stages 2 units (each at 75% utilization, in the [0.7, 1.0] band); at PLR=0.50 it consolidates to 1 unit at 50% (the band-fit fallback). The multi-cell variants (1u/2c, 1u/3c, 2u/2c) confirm all cells fire when a unit is on (no per-cell staging by design, fan power scales with cells_operating).
DOE Hospital 8760-h cross-engine layer
Three additional multi-cell scenarios run the cooling tower side by side with EnergyPlus on the full DOE Reference Building Hospital 8760-hour cooling-demand profile against Chicago O'Hare TMY3 weather. Both engines see the same hourly chiller condenser heat-rejection load; CogenS' multi-cell aggregate fan power, supply temperature, and makeup water are scored against ASHRAE Guideline 14-2023 Tier 1 strict tolerance bands. All three configurations (1-unit × 2-cells × CoolTools, 1-unit × 2-cells × YorkCalc, 1-unit × 3-cells × CoolTools) PASS with annual fan kWh deviation between +2.65% and +4.84%.
Stage 3 — Free cooling / waterside economizer
Free-cooling heat exchanger enabled vs disabled, three wet-bulb conditions, two load levels.
Matrix
12
In-Scope
12
Passed
12
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| FC-disabled consistency | exact | qecomax=0, all FC outputs zero when FC='No' |
| FC mode-classification | <= 1e-6 kW | per-hour fc_cap matches mode rule |
| FC supply-temp gate | every mode>0 hour has supply <= 10 C | no spurious activations |
Stage 3 validates the simulator's three-mode classifier: Mode 0 (no free cooling), Mode 1 (full free cooling: load <= qecomax), Mode 2 (partial free cooling: load > qecomax). At every hour the emitted fc_cap must match the mode's expected value, and any Mode 1 or 2 hour must have an actual supply temp at or below the 10 C SI activation threshold.
Empirically the simulator's WB-Reset-Min floor (21.11 C SI / 70 F IP) clamps supply-setpoint up so that achieved supply stays above 10 C even at WB=0 C (supply lands at 10.39 C — just barely above the threshold). Free cooling correctly does NOT activate at these conditions. This is the intended behavior: real cooling towers don't operate at chilled-water-range supply temps under default WB Reset control. Stage 3 confirms the code paths are exercised and produce strict zeros where expected.
Stage 4 — Chiller + CT coupling (chillers_ct mode)
Centrifugal water-cooled chiller + CT in the production multi-pass feedback loop. Mirrors the orchestrator's Pass 1 -> Pass 4 sequence directly.
Matrix
12
In-Scope
12
Passed
12
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| Cooling delivery | <= +/-1% | 0.000% |
| Chiller-side Q_rej = Q_cool + W_elec | <= +/-1% | 0.000% |
| CT_rej matches chiller_rej | <= +/-1% | 0.000% |
| COP plausible (1 < avg < 10) | physical | 4.41-5.25 (water-cooled centrifugal) |
| CT supply physical (WB < sup < 50 C) | physical | 20.9-28.4 C |
| Multi-pass convergence | <= 30% Pass1->Pass3 drift | 0.000% (chiller stays in calibrated range) |
Stage 4 validates the production chillers_ct dispatch mode where chiller and cooling tower interact via a 4-pass feedback loop: chiller @ initial constant CT supply (30 C design) -> CT @ chiller heat rejection -> chiller @ actual CT supply feedback -> CT @ updated heat rejection. The test mirrors the orchestrator's exact pass sequence.
All eight gates pass with deviations at exactly 0.000% across every scenario. The chiller's average COP varies cleanly with PLR (4.41 at PLR=0.30 -> 5.25 at PLR=0.75) reflecting the part-load efficiency curve. The CT supply temp varies with wet-bulb (20.9-23.6 C at WB=15 C, 25.9-28.4 C at WB=22 C) reflecting the CoolTools approach correlation. Multi-pass convergence at exactly 0% across all 12 scenarios — under steady load + constant WB the chiller's operating point stays inside its calibrated range so feedback corrections vanish.
Stage 5 — CT Total Cost of Ownership + VFD-upgrade NPV / IRR / payback / MACRS
Eight cost bases — two synthetic capex/opex bases (SMALL 500 kW and LARGE 5 MW) plus six PHYSICS-DRIVEN bases derived from the Stage 1 6-test Hospital DOE 8760-h matrix (CogenS' validated annual fan kWh + makeup water at $0.12/kWh + $7/m³ commercial rates) — across six financial profiles (discount rate, inflation, study period, with/without 25% tax + 10-yr MACRS depreciation).
Matrix
48
In-Scope
48
Passed
48
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| Operating PV vs EnergyPlus LifeCycleCost | <= +/-0.5% | 0.0000% |
| NPV vs analytic recompute | <= +/-0.5% | 0.0000% |
| IRR vs polynomial-root solver | <= 0.05 percentage points | +/-0.0000 pp |
| Simple payback vs analytic | <= +/-0.5% | 0.0000% |
| MACRS schedule vs published IRS GDS percentages | <= $1 max abs diff | $0.00 |
Stage 5 validates the financial layer against two independent reference families. The operating-stream present value is validated against EnergyPlus LifeCycleCost (NIST Handbook 135 implementation, EndOfYear discounting with per-cost-stream escalation). The investment KPIs (NPV, IRR, simple payback) and the MACRS-200%-DB depreciation schedule are validated against independent analytical references — a polynomial-root IRR solver (vs CogenS's bisection method), a direct NPV recompute, and the published IRS GDS percentage tables.
All gates pass with deviations at exactly 0.0000% across all twelve scenarios. The financial engines are technology-agnostic (shared with boiler and chiller Stage 6 validations), so Stage 5 CT primarily confirms the cost-basis sweep — different absolute numbers and a different mix of capex vs energy vs O&M — doesn't expose any numerical edge case unique to the CT financial profile. It doesn't.
Stage 6 — Dry fluid cooler (air-cooled, no water)
A dry fluid cooler rejects heat sensibly to the outdoor DRY BULB with no evaporation and no makeup water — a different machine from the evaporative wet tower in Stages 1-5, and a separate equipment class in the platform. 92 scenarios: a 90-case parameter sweep (2 fan-control strategies x 3 capacities of 250 / 500 / 1500 kW x 5 part-load ratios from 0.25 to 1.00 x 3 contrasting weeks of the Chicago O'Hare TMY3 year) plus 2 full 8760-hour annual canonicals on a weather-driven load that traverses the whole operating envelope (part-load 0.10 to 1.00, dry bulb -22.8 to 35.0 degC, a 16x spread between the lightest and heaviest month).
Matrix
92
In-Scope
92
Passed
92
Wall Time
92 EnergyPlus runs: ~6 min for the 90-case weekly sweep, ~40 s for the two 8760-h annual canonicals
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| Annual canonical 8760-h — annual fan kWh vs EnergyPlus (Single-Speed) | <= +/-5% strict (ASHRAE Guideline 14-2023, annual energy) | 0.42% PASS |
| Annual canonical 8760-h — annual fan kWh vs EnergyPlus (Two-Speed) | <= +/-5% strict | 1.33% PASS |
| Annual canonical — monthly NMBE over 12 bins (worst of both controls) | <= +/-5% strict (ASHRAE Guideline 14-2023, monthly) | 1.33% PASS |
| Annual canonical — monthly CV(RMSE) over 12 bins (worst of both controls) | <= 15% strict | 2.25% PASS |
| 90-case sweep — heat rejected vs EnergyPlus (worst of 90) | <= +/-5% strict | 0.37% PASS |
| 90-case sweep — annual fan kWh vs EnergyPlus (worst Single-Speed / worst Two-Speed) | <= +/-5% strict | 0.99% / 3.27% PASS |
| 90-case sweep — hourly CV(RMSE) (worst Single-Speed / worst Two-Speed) | <= 30% strict | 1.14% / 5.09% PASS |
| Leaving-fluid temperature trajectory vs EnergyPlus (worst of 92) | <= 1.0 K absolute | 0.001 K PASS |
| Makeup water consumption (the defining dry-cooler claim) | exactly zero — sensible-only rejection, no evaporation | 0.000 PASS on all 92 |
All 92 scenarios pass at STRICT ASHRAE Guideline 14-2023 bands; no relaxed regime is claimed anywhere in this stage.
Two-Speed scores wider than Single-Speed (3.27% vs 0.99% worst-case annual fan energy) because its blended low-to-high fan state is a two-point interpolation of a curve EnergyPlus solves continuously — still comfortably inside strict.
Documented exclusions (not scored): part-load ratios at or below 0.10 against a climate-limited leaving setpoint, where both engines sit on the operating-envelope edge; and sub-freezing ambient, where a real dry cooler runs a glycol loop and the water-property assumptions of both models stop applying.
What the validation covers, and what it does not
Where the engineering envelope ends, in plain English.
What the validation covers — all six stages cross-validated against EnergyPlus
All six validation stages now run direct hour-by-hour cross-engine comparisons against EnergyPlus on real building loads. Stage 1's flagship 6-test Hospital DOE 8760-h matrix exercises all three fan-control types (Single-Speed, Two-Speed, Variable-Speed) and both polynomial curves (CoolTools, YorkCalc) against the matching native EnergyPlus cooling-tower objects — CoolingTower:VariableSpeed (polynomial), CoolingTower:TwoSpeed (Merkel UA-LMTD), CoolingTower:SingleSpeed (Merkel) — at ASHRAE Guideline 14-2023 Tier 1 strict tolerance. Stage 2 adds three new Hospital DOE 8760-h multi-cell scenarios cross-validated against EnergyPlus at the same Tier 1 strict band. Stage 4 four-pass chiller + cooling tower coupling at full-month Chicago July TMY3 lands at exactly 0.000% on cooling-delivery and heat-rejection energy balance. Stage 5 lifecycle cost runs head-to-head EnergyPlus LifeCycleCost (NIST Handbook 135) across 48 financial scenarios at delta = 0.0000% — including 6 cost bases whose annual operating cost streams are PHYSICS-DRIVEN from CogenS' Stage 1 validated fan kWh + makeup water.
Stage 3 (free-cooling / waterside economizer sequence dispatch) runs as an hourly analytical regression test against the documented mode classifier (Mode 0 / 1 / 2). The cooling tower's WB-Reset-Min floor (21.11 °C SI / 70 °F IP) clamps supply-setpoint up so that achieved supply stays above the 10 °C free-cooling activation threshold under default WB Reset control — empirically the sequence-dispatch code paths execute and produce strict zeros where expected. Stage 3 served samples include EnergyPlus cross-engine evidence at month-long horizons; the long-horizon DOE cross-validation extension at the new ep_4step Wet Bulb Reset mode is a documented future-work item.
Where the two engines model the same equipment differently
The CogenS and EnergyPlus implementations run the same heat-exchanger models on both sides — the CoolTools and YorkCalc approach correlations for Variable-Speed cooling towers, and Merkel UA-LMTD for Single-Speed and Two-Speed. With the same physics on both sides, the dominant remaining differences are noise-floor: per-hour cycling distributions at very low load (heat rejection below 100 kW where absolute fan power is a few hundred watts) where EnergyPlus' sub-hourly fan duty integration produces slightly different counts than CogenS' hourly resolution; EnergyPlus' temperature-dependent water Cp (via its glycol object) versus CogenS' constant 4186 J/(kg·K) — about 0.3% effect on the energy balance at typical loop conditions. Both differences are documented in the audit-trace side-by-side CSVs; neither moves any annual-aggregate gate.
In the cold-ambient / free-cooling regime, the cooling tower's absolute fan energy is so small (a few kWh per week of operation) that any percent deviation between the two engines is numerical noise. That regime is scored with an absolute-energy delta gate (within 10 kWh of EnergyPlus per week) instead of a percent gate; all such cases pass. Both engines maintain their respective supply-temperature setpoint exactly under the new ep_4step control law.
Dry fluid cooler — what Stage 6 does and does not cover
Stage 6 scores the two fan-control strategies that have a matching EnergyPlus reference device: Single-Speed against FluidCooler:SingleSpeed and Two-Speed against FluidCooler:TwoSpeed. Variable-Speed dry-cooler control is NOT scored here, because the EnergyPlus FluidCooler object has no continuously-modulating variant — there is no matching reference device, and scoring it against the single-speed object would measure the difference between two control strategies rather than the accuracy of the model. It is excluded from the headline count rather than folded into it.
Both engines are driven by one shared hourly duty file and one shared weather file, verified hour by hour to 0.00000 degC of difference in outdoor dry bulb. The heat-exchanger UA is the single value that crosses between them, and it crosses as an input to both so they solve the same exchanger.
Dig into the test matrix
Report last updated: 2026-07-29
Try the validated platform
CogenS™ runs 8,760-hour simulations using the same engines validated on this page. Independent-engineer-grade evidence, lender-friendly.