Validation Report · Thermal Systems
Chiller Module Validation
Ten chiller validation stages totalling 289 in-scope scenarios. 287/289 PASS strict ASHRAE Guideline 14-2023 (annual energy +/-5%, peak +/-10%, hourly NMBE +/-10%, CV(RMSE) <=30%). Eight of the ten stages are cross-validated head-to-head against EnergyPlus 26.1 Chiller:Electric:EIR (electric), Chiller:Absorption:Indirect (absorption), PlantEquipmentOperation:CoolingLoad SequentialUniformPLR, and LifeCycleCost. Chilled-storage tank physics are cross-validated against EnergyPlus WaterHeater:Stratified — see the dedicated Thermal Energy Storage report, which covers the complete charge and discharge duty cycle (78 / 78). Two documented near-strict edges at +0.5 percentage points over the gate boundary: Direct Absorption N=2 Hospital winter sub-min cycling on annual electric, and Scroll 2-size peak-hour electric at the summer-peak hours.
In-Scope Scenarios
289
Pass Rate
99.3%
EnergyPlus Cross-Validated Stages
8
Analytically Validated Stages
2
Featured · 2026 Chiller Validation Report
287 of 289 scenarios PASS strict ASHRAE G14-2023 vs EnergyPlus + analytical references
Ten validation stages across 289 in-scope scenarios. Eight of the ten are cross-validated against EnergyPlus 26.1 (Chiller:Electric:EIR, WaterHeater:Stratified for the chilled tank, LifeCycleCost); the two storage-coupling stages are scored analytically — the EnergyPlus comparison for that topology is deferred and the report says so on every affected stage. Five chiller equipment classes (air-cooled scroll/screw, water-cooled centrifugal, indirect/direct absorption). Financial KPIs at 0.0000 %. 11 pages.
How to Read This Report
Independent-engineer guide to the chiller 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
Scenarios · Pass rate · EP-cross-validated stages
In-Scope Scenarios is the count after documented exclusions. Pass Rate is strict ASHRAE G14-2023 unless the case sits in a relaxed regime documented on the Cover sheet of its xlsx workbook. EnergyPlus Cross-Validated Stages counts every stage with a direct EP comparison — for chiller that is all 10.
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
Independent references, all at 0.0000 %
The financial Stage validates total cost of ownership, NPV, IRR, payback, and MACRS-200%-DB depreciation against EnergyPlus LifeCycleCost (NIST Handbook 135), a polynomial-root IRR solver, a closed-form analytical NPV recompute, and the IRS Publication 946 GDS percentage tables. The financial engine is technology-agnostic and serves as the foundation across modules.
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 · The 2 documented out-of-strict-band cases
Multi-unit + 2-size annual cycling edges
Two of 289 scenarios fall outside the strict band on the annual-extension matrix: a multi-unit identical plant at <20 % aggregate PLR and a 2-size annual dispatch case. Both reflect documented control-philosophy differences between CogenS' band-fit / proportional dispatch and EP's 'Optimal' smallest-first scheme. System energy total stays inside strict G14; the per-size split is a Tier 2 diagnostic.
Stage-by-Stage Results
| Stage | Scope | In-Scope | Passed | Reference Engine |
|---|---|---|---|---|
| Stage 1 | Single-unit isolated chiller under variable chilled-water demand. Three commercial air-cooled equipment classes (screw, scroll, reciprocating) swept across part-load ratios, capacities, evaporator leaving temperatures, condenser entering temperatures, and simulation periods. Each scenario runs the equipment in CogenS and EnergyPlus with identical CAPFT, EIRFT, and EIRFPLR performance curves drawn from the production coefficient database. | 189 | 189/189 | EnergyPlus 26.1 Chiller:Electric:EIR (matched CAPFT, EIRFT, EIRFPLR curves) scored against ASHRAE Guideline 14-2023 |
| Stage 1b | Five chiller types -- Air-Cooled Electric Screw, Air-Cooled Electric Scroll, Water-Cooled Electric Centrifugal, Indirect-Fired Absorption (Hot Water / Steam), Direct-Fired Absorption (Natural Gas) -- each run for 8,760 hours against a DOE Reference Building Large Hospital cooling demand at Chicago O'Hare TMY3 weather. Plant capacity sized to 1.15x peak load. Real Neon DB curves loaded for every chiller variant; absorption Indirect / Direct backfilled with Single-Effect and Direct-Fired BiQuadratic CAPFT + EIRFT + (Cubic) SteamUseFPLR coefficient sets. | 5 | 5/5 | EnergyPlus 26.1 Chiller:Electric:EIR (electric) + Chiller:Absorption:Indirect (absorption) with matched curves, scored against ASHRAE Guideline 14-2023 strict. |
| Stage 2 | Multi-chiller plant where two identical units share a single chilled-water load. Six exclusions documented in the result envelope reflect a known control-law difference between CogenS and EnergyPlus at part-load-low conditions where the two engines apply different staging philosophies. The remaining 39 in-scope scenarios pass under ASHRAE Guideline 14-2023. | 39/45 | 39/39 | EnergyPlus 26.1 PlantEquipmentOperation:CoolingLoad with the Optimal load-distribution scheme |
| Stage 2-annual | Five chiller types x {N=2, N=3} identical-unit plants running 8,760 hours of DOE Reference Building Large Hospital cooling demand. Per-unit capacity = (1.15 x peak_load) / N units. EnergyPlus plant load distribution scheme set to SequentialUniformPLR to mirror the CogenS minimum-units-within-optimum staging + equal-PLR sharing convention. | 10 | 9/10 | EnergyPlus 26.1 multi-unit Chiller:Electric:EIR / Chiller:Absorption:Indirect plant with PlantEquipmentOperation:CoolingLoad SequentialUniformPLR. |
| Stage 3 | Two chillers of different sizes serving a single load — the standard topology where a smaller chiller handles base load and a larger chiller stages in for peaks. Ten scenarios span the dispatch regimes where the size-aware staging rule matters. CogenS uses a system-COP-optimized dispatch ordering; EnergyPlus uses Optimal load distribution. | 10 | 10/10 | EnergyPlus 26.1 multi-chiller PlantEquipmentOperation:CoolingLoad |
| Stage 3-annual | Same-family 2-size plants on a shared chilled-water loop with SequentialUniformPLR distribution, 8,760-hour DOE Reference Building Large Hospital cooling demand. Air-Cooled Screw 1x1500kW + 1x1100kW (= 2600kW aggregate) and Air-Cooled Scroll 1x1500kW + 1x1100kW. | 2 | 1/2 | EnergyPlus 26.1 two-type Chiller:Electric:EIR plant with LeavingSetpointModulated flow + per-outlet SetpointManager + flow-fraction Schedule:File scaling LoadProfile:Plant flow with the actual cooling demand. |
| Stage 4 | Insulated stratified chilled-water tank holding cooling capacity for later delivery. Stage 4 tests the standby physics — how fast a charged tank loses its cooling capacity through ambient gains over a quiet period. Two tank volumes (10 / 50 m³) × three insulation levels (0.3 / 0.5 / 1.0 W/m²·K) = 6 cases, one week at 5 axial nodes, tank at 5 °C in a 25 °C plant room, validated against EnergyPlus WaterHeater:Stratified. | 6 | 6/6 | EnergyPlus 26.1 WaterHeater:Stratified (the reference for stratified-tank physics, validated for both hot and chilled water), with the tank held below ambient so the shell term is a heat gain. Re-scored July 2026 against the current stratified-tank engine; the previous engine's figures are quoted alongside each gate rather than replaced silently. |
| Stage 4-annual | 1,000 m3 chilled-water tank + scaled DOE Reference Building Hospital 8,760-hour discharge profile + source-loop chiller charging during 22:00 - 06:00 off-peak window. EP topology: ThermalStorage:ChilledWater:Stratified with Source Side wired to a PlantLoop carrying Pump + DistrictCooling; Use Side wired to a PlantLoop carrying Pump + LoadProfile:Plant with negative-signed cooling demand. | 0/1 | 0/0 | EnergyPlus 26.1 ThermalStorage:ChilledWater:Stratified coupled to source-loop DistrictCooling + use-loop LoadProfile:Plant. |
| Stage 4b | Deep daily charge/discharge cycle on the chilled-storage tank: charge during off-peak hours, discharge to serve a daytime cooling load. Four scenarios across two cycling depths validate the cycling energy balance using an analytical engineering approach (cumulative energy in = cumulative energy out plus shell losses to within +/-1%). | 4 | 4/4 | Analytical energy-balance gate on the CogenS engine output (the EnergyPlus side-by-side cycling topology requires additional plant-loop scaffolding scheduled for the next release)Analytical gates |
| Stage 5 | Coupled chiller-plus-storage system operating as a single plant. Twelve scenarios span the setpoint-buffer composition (chiller maintains the tank within a temperature band, tank serves the cooling load) under varied load profiles and storage sizing. | 12 | 12/12 | Decoupled analytical energy-balance harness on the CogenS engines (tank shell gain extracted independently, then the chiller scored against (load + shell gain)). Re-scored July 2026 with the storage engine swapped and the chiller engine held fixed. The EnergyPlus side-by-side for this coupled topology remains deferred; the tank physics themselves are cross-validated against EnergyPlus in Stage 4 and in the Thermal Energy Storage module validation.Analytical gates |
| Stage 6 | The investment-grade financial outputs for chiller-plus-storage projects: total cost of ownership, net present value, internal rate of return, simple payback, and MACRS-200%-DB depreciation. Twelve scenarios cover two cost bases and six financial profiles. | 12 | 12/12 | EnergyPlus LifeCycleCost (NIST Handbook 135 reference implementation); independent polynomial-root IRR solver and IRS Publication 946 MACRS GDS schedules |
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 26.1 Chiller:Electric:EIR (air-cooled screw, scroll, reciprocating)
- Chilled-storage tank physics: see the dedicated Thermal Energy Storage report (EnergyPlus 26.1 WaterHeater:Stratified, charge + discharge, 78 / 78). The chiller module's own storage-coupling stages (4b, 5) are scored on an analytical energy-balance harness, not an EnergyPlus side-by-side.
- EnergyPlus 26.1 PlantEquipmentOperation:CoolingLoad for multi-unit and multi-type dispatch
- EnergyPlus LifeCycleCost (NIST Handbook 135) for the financial layer
- Independent analytical references (polynomial-root IRR, IRS Publication 946 MACRS GDS percentages, energy-balance gates)
Stage Details
Stage 1 — Isolated single chiller
Single-unit isolated chiller under variable chilled-water demand. Three commercial air-cooled equipment classes (screw, scroll, reciprocating) swept across part-load ratios, capacities, evaporator leaving temperatures, condenser entering temperatures, and simulation periods. Each scenario runs the equipment in CogenS and EnergyPlus with identical CAPFT, EIRFT, and EIRFPLR performance curves drawn from the production coefficient database.
Matrix
189
In-Scope
189
Passed
189
Wall Time
approx. 22 minutes (189 EnergyPlus runs)
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| Annual electric input | <= +/-5% (ASHRAE Guideline 14-2023) | Within strict on all 189 |
| NMBE on hourly electric input | <= +/-10% | Within strict |
| CV(RMSE) on hourly electric input | <= 30% | Within strict |
| Annual cooling delivered | <= +/-5% | Within strict |
| Annual average COP | <= +/-5% | Within strict |
| Peak hour electric input | <= +/-10% | Within strict |
Stage 1 is the foundational chiller validation. It answers the question every independent engineer asks first: does the chiller module predict the electric input that EnergyPlus would predict, across the equipment classes a project will actually use, at the chilled-water leaving temperatures and condenser conditions a project will actually see? On 189 of 189 scenarios, the answer is yes — within the strict ASHRAE Guideline 14-2023 tolerance band on annual electric energy, NMBE, CV(RMSE), and peak demand.
What the matrix covers
The matrix sweeps three air-cooled equipment classes (screw, scroll, reciprocating compressor families) across part-load fractions from 25% to 100%, three nominal capacities (350 / 700 / 1,400 kW cooling), three evaporator leaving temperatures (5.5 / 6.7 / 7.2 °C), and two outdoor dry-bulb regimes (mild 25 °C and hot 35 °C). Each combination runs through both engines with identical bi-quadratic CAPFT and EIRFT curves and quadratic EIRFPLR curves drawn from the production coefficient database — same equipment, same load, same condensing conditions. Then every output gets scored against the ASHRAE Guideline 14-2023 tolerance bands.
Headline result
Annual electric input, NMBE, CV(RMSE), annual cooling delivered, annual COP, and peak hour electric input all land inside the strict ASHRAE Guideline 14-2023 band across every one of the 189 scenarios. The CogenS chiller engine matches EnergyPlus at the level a lender's independent engineer expects.
Stage 1B - Annual 8,760-hour realistic-load head-to-head
Five chiller types -- Air-Cooled Electric Screw, Air-Cooled Electric Scroll, Water-Cooled Electric Centrifugal, Indirect-Fired Absorption (Hot Water / Steam), Direct-Fired Absorption (Natural Gas) -- each run for 8,760 hours against a DOE Reference Building Large Hospital cooling demand at Chicago O'Hare TMY3 weather. Plant capacity sized to 1.15x peak load. Real Neon DB curves loaded for every chiller variant; absorption Indirect / Direct backfilled with Single-Effect and Direct-Fired BiQuadratic CAPFT + EIRFT + (Cubic) SteamUseFPLR coefficient sets.
Matrix
5
In-Scope
5
Passed
5
Wall Time
approx. 90 seconds (5 EnergyPlus + 5 CogenS 8,760-h runs)
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| Annual electric input | <= +/-5% | 5/5 within strict (-1.55%, -1.60%, +0.24%, -0.57%, -0.67%) |
| Annual cooling delivered | <= +/-5% | 5/5 within strict (max abs 1.62%) |
| Peak hour electric | <= +/-10% | 5/5 within strict |
| NMBE on hourly electric | <= +/-10% | 5/5 within strict |
| CV(RMSE) on hourly electric | <= 30% | 5/5 within strict (max 2.78%) |
Stage 1B extends Stage 1 from constant + sinusoidal short-horizon scenarios to the full 8,760-hour annual operation a real chiller plant sees. The exercise surfaced and closed two production-engine bugs: (i) the BiQuadratic EIRFPLR coefficients shipped on Path B Centrifugal were truncated when the IDF builder serialised the curve to EnergyPlus' 1-D Quadratic field -- closed by collapsing the BiQuadratic at the constant condenser-temperature setpoint to a 1-D Quadratic that both engines consume identically. (ii) the chiller_simulator's cycling floor was using the curve-validity ep_min instead of the mechanical min_part_load_ratio -- closed in production; Path B Centrifugal where ep_min=0.12 < min_plr=0.25 was the exposed case.
Absorption Indirect runs at -0.57% / -0.57% (electric / cooling) using Single-Effect Cubic SteamUseFPLR coefficients backfilled into the Neon DB. Absorption Direct runs at -0.67% / -0.57% using Direct-Fired Quadratic SteamUseFPLR. All 5 PASS Tier 1 strict ASHRAE Guideline 14-2023 on annual sum, peak, and hourly NMBE / CV(RMSE).
Stage 2 — Multi-unit identical staging
Multi-chiller plant where two identical units share a single chilled-water load. Six exclusions documented in the result envelope reflect a known control-law difference between CogenS and EnergyPlus at part-load-low conditions where the two engines apply different staging philosophies. The remaining 39 in-scope scenarios pass under ASHRAE Guideline 14-2023.
Matrix
45
In-Scope
39
Passed
39
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| Annual electric input per chiller | <= +/-5% in-scope (Tier 2 +/-15% for Reciprocating low-PLR sub-regime) | Strict band on screw/scroll, Tier 2 documented on reciprocating low-PLR |
| Annual cooling delivered system-wide | <= +/-5% | Within strict on all in-scope |
| Per-chiller load share | documented architectural difference | CogenS equal-loading aligns with TRANE/JCI/Carrier real-plant sequences |
Stage 2 tests how two identical chillers share a single chilled-water load. The relevant engineering question is the staging philosophy: should the controller load one chiller heavily and bring the second one in only when the first hits maximum, or should both chillers operate in parallel at roughly equal part-load?
EnergyPlus's Optimal scheme picks the first approach: load chiller 1 to its optimum part-load ratio and stage chiller 2 in at minimum capacity. CogenS picks the second approach: load both chillers near-equally. Both are physically valid. CogenS's equal-loading philosophy reflects the actual sequence-of-operation logic shipped by the major chilled-water-plant controls vendors (TRANE Tracer, Johnson Controls Metasys, Carrier i-Vu) in commercial buildings.
On screw and scroll chillers, the quadratic shape of the part-load efficiency curve means the two staging philosophies produce annual electric energy within ASHRAE Guideline 14-2023 strict tolerance (5-12% deviation across the in-scope envelope). On reciprocating chillers at deep part-load (PLR <= 0.25), the curve nonlinearity is steep enough that the two staging philosophies diverge by 16-28%. Those six reciprocating low-PLR scenarios are documented as an out-of-scope regime — a control-law philosophy difference between two physically valid engines, not a model error.
Documented exclusions in this stage
STAGE2_CHILLER_RECIP_2x350_PLR025_OAT35
Category: Reciprocating low-PLR staging divergence
At PLR <= 0.25 with two reciprocating chillers in parallel, the quadratic EIRFPLR curve combined with EnergyPlus's Optimal scheme (loading one unit to optimum and cycling the second at minimum) produces a 16-28% gap against CogenS's equal-loading strategy. CogenS's equal-loading reflects the real-plant control sequences shipped by TRANE, JCI, and Carrier in commercial chilled-water applications. The deviation is a control-law philosophy difference between two physically valid engines, not a curve error. Documented as an out-of-scope regime for Stage 2.
STAGE2_CHILLER_RECIP_2x350_PLR025_OAT25
Category: Reciprocating low-PLR staging divergence
Same control-law difference at mild outdoor conditions.
STAGE2_CHILLER_RECIP_2x700_PLR025_OAT35
Category: Reciprocating low-PLR staging divergence
Same control-law difference at higher capacity.
STAGE2_CHILLER_RECIP_2x700_PLR025_OAT25
Category: Reciprocating low-PLR staging divergence
Same control-law difference.
STAGE2_CHILLER_RECIP_2x1400_PLR025_OAT35
Category: Reciprocating low-PLR staging divergence
Same control-law difference at the largest capacity tier.
STAGE2_CHILLER_RECIP_2x1400_PLR025_OAT25
Category: Reciprocating low-PLR staging divergence
Same control-law difference.
Stage 2 - Annual 8,760-hour multi-unit identical plant
Five chiller types x {N=2, N=3} identical-unit plants running 8,760 hours of DOE Reference Building Large Hospital cooling demand. Per-unit capacity = (1.15 x peak_load) / N units. EnergyPlus plant load distribution scheme set to SequentialUniformPLR to mirror the CogenS minimum-units-within-optimum staging + equal-PLR sharing convention.
Matrix
10
In-Scope
10
Passed
9
Wall Time
approx. 3 minutes (10 EnergyPlus + 10 CogenS 8,760-h runs)
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| Annual electric input | <= +/-5% | 9/10 within strict; Direct N=2 at -5.54% (0.54 percentage points over the strict gate; cooling / peak / hourly NMBE / CV(RMSE) all PASS) |
| Annual cooling delivered | <= +/-5% | 10/10 within strict (max abs 1.62%) |
| Peak / NMBE / CV(RMSE) | <= +/-10% / <=30% | 10/10 within strict |
Stage 2 multi-unit extends to 8,760-hour Hospital demand. Two more production-engine bugs surfaced and closed: (i) the chiller_simulator _calculate_staging fallback opened all N units at sub-minimum PLR when load fell below the smallest unit's mechanical floor; production fix keeps a single unit cycling on/off matching EnergyPlus' behaviour. (ii) the default EnergyPlus 'Optimal' load distribution behaves as sequential-fill on parallel-chiller plants -- switched to SequentialUniformPLR for cross-engine consistency.
The single Direct-Fired Absorption N=2 documented edge sits at -5.54% on the annual electric gate (0.54 percentage points over the strict +/-5%). All other six gates PASS strict on that case. Cause: per-unit capacity 1,275 kW is large relative to Hospital winter low-load hours, so most of the year is in deep sub-min cycling where absorption COP=1.0 amplifies any cycling-fraction divergence. Direct-Fired N=3 (per-unit 850 kW) PASS strict at -4.42%.
Stage 3 — Multi-size (2-type) dispatch
Two chillers of different sizes serving a single load — the standard topology where a smaller chiller handles base load and a larger chiller stages in for peaks. Ten scenarios span the dispatch regimes where the size-aware staging rule matters. CogenS uses a system-COP-optimized dispatch ordering; EnergyPlus uses Optimal load distribution.
Matrix
10
In-Scope
10
Passed
10
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| Annual electric input per chiller type | <= +/-5% (ASHRAE Guideline 14-2023) for full-load cases; <= +/-15% (FEMP Tier 2) for the N>=2, PLR<1.0 sub-regime | Strict on full-load, Tier 2 on the sub-regime |
| Annual cooling delivered system-wide | <= +/-5% | Within strict |
Stage 3 tests the two-size dispatch rule. A small chiller and a large chiller share a chilled-water load. CogenS picks the dispatch order that maximizes system COP at each hour; EnergyPlus's Optimal scheme prefers the fewest-units-near-optimum-PLR approach. The same Jensen's inequality on the EIRFPLR curve that drives the Stage 2 staging difference appears here in a different form.
System-wide annual cooling delivered matches inside ASHRAE Guideline 14-2023 strict tolerance on every case. Per-chiller annual electric energy matches strict at full-load; at sub-full-load with two chillers operating simultaneously the per-type split lands inside the FEMP relaxed band (+/-15% annual), the documented Tier 2 regime where two correct engines apply different sequencing philosophies.
Stage 3 - Annual 8,760-hour 2-type / 2-size plant
Same-family 2-size plants on a shared chilled-water loop with SequentialUniformPLR distribution, 8,760-hour DOE Reference Building Large Hospital cooling demand. Air-Cooled Screw 1x1500kW + 1x1100kW (= 2600kW aggregate) and Air-Cooled Scroll 1x1500kW + 1x1100kW.
Matrix
2
In-Scope
2
Passed
1
Wall Time
approx. 30 seconds (2 EnergyPlus + 2 CogenS 8,760-h runs)
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| Annual electric input | <= +/-5% | 2/2 within strict (Screw -2.63%, Scroll -2.71%) |
| Annual cooling delivered | <= +/-5% | 2/2 within strict (+0.05% on both) |
| Peak hour electric | <= +/-10% | 1/2 within strict (Screw PASS; Scroll +10.83% at h4789-h4792 = 0.83 percentage points over) |
| NMBE / CV(RMSE) | <= +/-10% / <=30% | 2/2 within strict |
Stage 3 surfaced and closed a real CogenS production bug in the 2-type COP-optimization dispatch (cop_optimization.py find_best_combination): the prior _evaluate_fill_scenario rejected ALL combinations whose per-unit PLR fell below the chiller's mechanical min_plr -- producing zero cooling at all winter-load hours (140 zero hours / 8,760, 15.5% annual cooling deficit). Fix: clamp the per-unit PLR to min_plr for the COP-ranking calculation only and pass the actual sub-min PLR through to the chiller_simulator so its cycling_fraction logic produces the right heat input.
Three EP-test fixes also landed: (i) chiller flow mode NotModulated -> LeavingSetpointModulated with per-outlet SetpointManagers, (ii) CHW pump topology aligned with Stage 1B (98 kPa head, 0.72 wire-to-water efficiency, affinity-law cubic '0,0,0,1' eliminating phantom pump heat), (iii) LoadProfile:Plant flow_fraction Schedule:File scaling with load (Schedule:File Column Number=1; a previous draft used 0 which silently kept loop fraction at 1.0). Combined: -7.5% -> -2.7% electric gap, -3.7% -> +0.05% cooling gap. The Scroll +10.83% peak failure is a small CogenS-side curve-evaluation edge at h4789-h4792; all other gates PASS strict.
Stage 4 — Chilled thermal energy storage (standby physics)
Insulated stratified chilled-water tank holding cooling capacity for later delivery. Stage 4 tests the standby physics — how fast a charged tank loses its cooling capacity through ambient gains over a quiet period. Two tank volumes (10 / 50 m³) × three insulation levels (0.3 / 0.5 / 1.0 W/m²·K) = 6 cases, one week at 5 axial nodes, tank at 5 °C in a 25 °C plant room, validated against EnergyPlus WaterHeater:Stratified.
Matrix
6
In-Scope
6
Passed
6
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| Tank temperature trajectory NMBE | <= +/-10% (ASHRAE Guideline 14-2023) | +0.05% to +0.36% across all 6 cases — all PASS (was -7.00% to -2.27%) |
| Tank temperature trajectory CV(RMSE) | <= 30% | 0.05% to 0.36% — all PASS (was 2.61% to 7.90%) |
| Standby cooling-capacity loss | ±2% of the EnergyPlus shell gain | -0.1% to +0.0% across all 6 cases. Previously -16.8% to -19.4% under a sidewall-only surface convention, now corrected to the full surface. |
| Total tank temperature rise (168 h) | diagnostic | CogenS -1.31 to -6.39 °C vs EP -1.31 to -6.39 °C — the two engines now agree to the reported precision on every case. |
Stage 4 validates the chilled-water-storage standby physics. A tank charged to its low-temperature setpoint (5 °C) is held with no further charge or discharge in a 25 °C plant room, so ambient heat slowly degrades the stored cooling capacity over a week. Two tank volumes (10 / 50 m³) × three insulation levels (0.3 / 0.5 / 1.0 W/m²·K) are scored against EnergyPlus 26.1 WaterHeater:Stratified, which is validated for both hot and chilled stratified tanks.
These figures were re-scored against the current stratified-tank engine in July 2026, and chilled service is where the re-score moved most. Trajectory CV(RMSE) improves by roughly a factor of twenty (2.61-7.90% to 0.05-0.36%) and the week-long temperature rise now matches EnergyPlus to the reported precision on every case. Both engines PASS the Guideline 14 bands, so the verdict is unchanged at 6 / 6; what changed is how closely the trajectory tracks.
Standby capacity loss previously sat inside a wider band that was attributed to a surface-area convention difference with EnergyPlus. It was not a convention difference but an under-count: the engine integrated the cylindrical side wall only, which for this tank geometry is 8/10 of the surface, so the two end caps were missing. The current engine integrates the full surface and the diagnostic is now within 0.1%.
Stage 4 - Annual 8,760-hour chiller + chilled TES coupled (in progress)
1,000 m3 chilled-water tank + scaled DOE Reference Building Hospital 8,760-hour discharge profile + source-loop chiller charging during 22:00 - 06:00 off-peak window. EP topology: ThermalStorage:ChilledWater:Stratified with Source Side wired to a PlantLoop carrying Pump + DistrictCooling; Use Side wired to a PlantLoop carrying Pump + LoadProfile:Plant with negative-signed cooling demand.
Matrix
1
In-Scope
0
Passed
0
Wall Time
approx. 10 seconds per EnergyPlus run
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| Architectural verification | EP runs without fatal; source-side cooling fires during charge window; tank temperature stays in chilled-water range | PASS -- tank mean 5.67 C / max 8.47 C (vs Phase 1 unbounded climb to 254 C); Source Side Heat Transfer Rate non-zero during charge window. |
| ASHRAE Guideline 14 strict gates (charge / discharge / temperature / SOC) | Per BoilerTESCogensSpec gate set | 0 / 7 within strict pending Phase 3 schedule coupling. CogenS charge / discharge schedule generation needs to be replaced with tes_dispatch.py compute_tes_dispatch_pre_pass so the autonomous EP source-loop dispatch is matched on the CogenS side. |
Stage 4 Annual Phase 1 + Phase 2 close the architectural gap documented in the 2026-06-01 'runtime instability' note (the tank's Nominal Cooling Capacity field is SIZING info for an external source-loop chiller; EnergyPlus does NOT use it as an internal magic chiller when Source Side ports are blank). Phase 2 adds the source-loop wiring (Pump + DistrictCooling + ChargeAvailabilitySchedule + per-outlet SetpointManager + Sizing:Plant), three real fixes (LoadProfile cooling sign convention -> negative on CHW loop, EP 26.1 ThermalStorage variable name changes 'Heat Loss Rate' -> 'Tank Heat Gain Rate', source-side heat-transfer-rate sign negative during charging in EP).
Phase 3 (next session) replaces the CogenS-side hand-built daily charge / discharge schedule with the proper coupled dispatch from modules/technologies/chiller/profile_calculation/tes_dispatch.py::compute_tes_dispatch_pre_pass. EP topology is correct as-shipped; only the CogenS-side schedule generation needs the final wiring.
Stage 4b — Chilled storage charge/discharge cycling
Deep daily charge/discharge cycle on the chilled-storage tank: charge during off-peak hours, discharge to serve a daytime cooling load. Four scenarios across two cycling depths validate the cycling energy balance using an analytical engineering approach (cumulative energy in = cumulative energy out plus shell losses to within +/-1%).
Matrix
4
In-Scope
4
Passed
4
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| Cumulative energy balance closure | <= +/-1% over the full cycle | Within band on all 4 |
| Tank trajectory monotonicity per phase | Charge phase strictly cools, discharge phase strictly warms | Pass on all 4 |
This stage has NOT been re-scored against the current stratified-tank engine — every figure below describes the engine that shipped before July 2026. Re-running it would also prove little on its own: an energy-balance closure check verifies that the numbers are self-consistent, not that they match an independent simulation, so it closes on either engine. The regime itself — chilled charge and discharge cycling — is now cross-validated against EnergyPlus by the Thermal Energy Storage module validation, which covers 36 chilled-water scenarios spanning both duties against the 4 here, and against a real EnergyPlus reference rather than a self-check.
Stage 4b validates the chilled-storage tank under deep daily cycling. The tank charges to its setpoint during off-peak hours and discharges to serve the daytime cooling load. Energy balance must close (energy charged in = energy discharged out plus shell-loss gains) to within engineering tolerance over the full cycle.
All four scenarios pass the cumulative-energy-balance gate within +/-1%. The tank trajectory is monotone during each phase (strictly cooling during charge, strictly warming during discharge with no spurious reversals). The Stage 4 standby physics validated above already proves the underlying shell-loss model against EnergyPlus.
Stage 5 — Chiller + storage setpoint-buffer coupling
Coupled chiller-plus-storage system operating as a single plant. Twelve scenarios span the setpoint-buffer composition (chiller maintains the tank within a temperature band, tank serves the cooling load) under varied load profiles and storage sizing.
Matrix
12
In-Scope
12
Passed
12
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| System energy balance closure | <= +/-0.5% | 0.021% to 0.267% across all 12 cases — all PASS. (The previous figure published here, 0.000%, does not reproduce: re-running the previous engine measures 0.012% to 0.159%. Both clear the gate.) |
| Tank-setpoint maintenance | Tank temperature stays within +/-2 K of setpoint | 0.63 K to 1.16 K drift — all PASS. Drift roughly doubled from the previous engine (0.63-0.69 K) because the tank now correctly absorbs ambient heat through its end caps as well as its side wall. |
| Chiller COP physically sensible | Within manufacturer curve envelope | Pass on all 12, unchanged from the previous scoring — the chiller engine itself did not change in this release. |
| Tank shell gain over the week (diagnostic) | diagnostic | 38.4 kWh (10 m³) and 111.9 kWh (50 m³), up about 22% from 31.5 / 92.0 kWh. That is the end-cap correction; it is 0.1-0.2% of the cooling load, which is why the gates above barely move. |
Stage 5 validates the chiller-plus-storage coupling using the setpoint-buffer composition. The chiller's job is to keep the tank inside a temperature band; the tank's job is to serve the actual cooling load. Twelve scenarios span two compressor types × two tank volumes × three part-load ratios, with the chiller's electric draw scored against the combined (load plus shell gain) demand.
These figures were re-scored against the current stratified-tank engine in July 2026, with only the storage engine swapped so the movement is attributable to the tank alone. All twelve still pass. The change is small by construction: the tank's shell gain is only one to two tenths of a percent of the cooling load, so correcting it by about a fifth cannot move the energy-balance or COP gates much. Tank drift roughly doubles, from 0.63-0.69 K to 1.04-1.16 K, and remains well inside the 2 K band.
This stage is still scored analytically rather than against EnergyPlus, and the re-score does not change that. An energy-balance check closes on either engine — it verifies that the numbers CogenS reports are self-consistent, not that they match an independent simulation. The chilled-water tank physics themselves ARE cross-validated against EnergyPlus, in Stage 4 above and across the complete charge and discharge duty cycle in the Thermal Energy Storage module validation.
Stage 6 — Total Cost of Ownership and financial KPIs
The investment-grade financial outputs for chiller-plus-storage projects: total cost of ownership, net present value, internal rate of return, simple payback, and MACRS-200%-DB depreciation. Twelve scenarios cover two cost bases and six financial profiles.
Matrix
12
In-Scope
12
Passed
12
Gates Exercised
| Gate | Tolerance | Result |
|---|---|---|
| Operating present value vs EnergyPlus LifeCycleCost | <= +/-0.5% | 0.0000% (exact) |
| NPV vs analytical recompute | <= +/-0.5% | 0.0000% |
| IRR vs polynomial-root solver | <= 0.05 percentage points | +/- 0.0000 pp |
| Simple payback vs analytical | <= +/-0.5% | 0.0000% |
| MACRS schedule vs IRS Publication 946 GDS tables | <= $1 max absolute | $0.00 |
Stage 6 validates the financial layer to the standard a lender's independent engineer requires. Operating present value runs against EnergyPlus LifeCycleCost (NIST Handbook 135 reference 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.
All gates pass at exactly 0.0000% across all twelve scenarios. The financial engines are technology-agnostic so the chiller Stage 6 results reuse the same financial-engine validation that supports boiler and cooling-tower projects.
What the validation covers, and what it does not
Where the engineering envelope ends, in plain English.
What the validation covers
Four of the six chiller stages are directly cross-validated against EnergyPlus: Stage 1 isolated chiller physics across three air-cooled equipment classes, Stage 2 multi-unit identical staging, Stage 3 multi-size dispatch, and Stage 4 chilled-tank standby physics. Stage 6 financial validation runs directly against EnergyPlus LifeCycleCost and the published IRS Publication 946 MACRS schedules.
Stages 4b and 5 use analytical engineering gates rather than an additional side-by-side EnergyPlus comparison: cumulative-energy-balance closure (+/-1%) and tank-setpoint-maintenance bounds. The underlying tank physics that drives those stages is already validated against EnergyPlus's WaterHeater:Stratified model at Stage 4.
Where the two engines model the same equipment differently
In Stage 2 the reciprocating-chiller deep-part-load regime (PLR <= 0.25) shows a 16-28% gap between EnergyPlus and CogenS on per-chiller annual electric energy. This is a control-law philosophy difference, not a model error: EnergyPlus's Optimal scheme stages units sequentially (load unit 1 to optimum, cycle unit 2 at minimum); CogenS uses equal-loading (both units near-equal part-load). The CogenS approach reflects the real sequence-of-operation logic shipped by the major chilled-water-plant controls vendors (TRANE Tracer, Johnson Controls Metasys, Carrier i-Vu) in commercial buildings. The six affected scenarios are documented as an out-of-scope regime in Stage 2.
In Stage 3, the per-type annual electric energy at sub-full-load with two operating chillers shows a similar control-law-driven split that lands inside the federal FEMP M&V relaxed band (+/-15%) rather than ASHRAE Guideline 14-2023 strict (+/-5%). System-wide annual cooling delivered remains inside strict tolerance — the simulator agrees on what gets cooled, just splits the work between the two units differently.
In Stage 4 the chilled-tank standby capacity loss shows the same shell-loss convention difference described in the boiler thermal-storage validation: CogenS computes losses across the full insulation surface area while EnergyPlus's stratified model uses a sidewall integration. The annual energy effect is bounded within +/-15% and is reported transparently. The tank temperature trajectory (which drives the project's effective storage capacity) lands within ASHRAE Guideline 14-2023 strict tolerance.
Dig into the test matrix
Report last updated: 2026-06-02
Try the validated platform
CogenS™ runs 8,760-hour simulations using the same engines validated on this page. Independent-engineer-grade evidence, lender-friendly.