USE CASE · DATA CENTER · AI
Cooling an AI hall. Ten scenarios, verified.
Sixteen GPU racks give 2 MW to cold plates. What happens when a pump stops at the hottest hour, when the grid goes down, when a rack leaks, when the next GPUs need 200 kW a rack? Each question is a test case of the model, simulated in OpenModelica, with a verdict and its margin.
01 / THE ARCLANG MODEL
The system, written as an Arcadia model.
Before any physics, the hall is a systems model in ArcLang: who needs what (operational analysis), the requirements, the functions and their chains, a logical architecture with its variants, a physical architecture with typed ports, the cooling modes and a failure scenario. The compiler checks it: units, port physics, traces, the 10 s budget of the leak isolation chain (8.5 s used).
One file holds the requirement, the architecture and the test that verifies it.
A requirement, a CDU variant, the physical node with its thermal and signal ports, the leak isolation chain with its budget, and the test case that simulates a pump failure. The verdict comes back to the requirement; the production gate blocks a release while it fails.
// examples/datacenter/ai-liquid-cooling/ai_liquid_cooling.arc (abridged) requirement "Pump redundancy" { id: "REQ-N1" description: "A CDU pump failing at full load leaves every GPU cold plate at or below 85 °C, without throttling" } component "CDU, three pumps (N+1)" { id: "LC-CDU-N1" variant: true pump_count: 3 pump_flow: 22 kg/s hx_conductance: 450 kW/K } node "Coolant distribution unit" { id: "PN-CDU" coolant_capacity: 8 MJ/K port "secondary" { physics: thermal flange: b } port out "coolant_flow" { is: "Signal" } } functional_chain "Leak isolation" { involves: ["SF-LEAK-DETECT", "SF-LEAK-DECIDE", "SF-LEAK-CLOSE"] latency_budget: 10 s } test_case "Pump failure at full load, two pumps" { verifies: ["REQ-N1"] simulate: { model: "CoolingPhysics.PumpFailureTwoPumps" configuration: "CFG-N" stop_time: 24 h } expects: ["max(\"PN-RACKS\".gpu_temperature) <= 85 °C", "min(\"PN-RACKS\".cap) >= 0.99"] } $ arclang verify ai_liquid_cooling.arc --test TC-PUMP-N ✗ TC-PUMP-N "Pump failure at full load, two pumps": FAIL FAIL min(gpuRacks.cap) = 0.6869 (short by 0.3031)
The physical architecture (PAB) in the ArcLang viewer, as arclang diagram -f html draws it: nodes, the components they deploy, physical links (red) and exchanges (blue).
The logical architecture (LAB): a product line, three variation points and their variants.
The system functions (SAB): the supply loop and the leak isolation chain, each with its latency budget.
The cooling modes (MSM): free cooling, chiller assist, degraded, power capping.
A pump failure during a training run (ES): with and without a spare pump.
02 / THE PHYSICS
The physics, from the chip to the outside air.
The physical architecture becomes Modelica: arclang export -f modelica writes its structure, drawn, and the engineers write the physics of each node with the Modelica Standard Library.
GPU racks.
Sixteen racks of 120 kW; 85 % of the heat goes to the cold plates. The hottest GPU sits at the return end of the coolant, and a cold plate conducts less when the flow falls.
Coolant distribution unit (CDU).
The racks' coolant, its pumps (two, or three for N+1) and a plate exchanger to the facility water, whose conductance follows the flow.
Facility water, dry coolers, chiller.
The dry coolers give the heat to the outside air; a chiller trims what they cannot on hot afternoons. Its efficiency is a share of Carnot: 4.7 at 35 °C, as a real air-cooled chiller.
Control.
A PI holds the coolant supply at 32 °C, fans first, then chiller. A second PI asks the scheduler to cap the GPUs' power when one passes 83 °C: a throttled training run is the failure to avoid.
A product line.
Two generations of racks (120 and 200 kW), three CDUs, two sizes of heat rejection: four configurations, each verified on its own.
The system in OMEdit (OpenModelica 1.27.1), as arclang export -f modelica draws it from the physical architecture.
Inside the CDU: the coolant's thermal mass and the plate exchanger, Modelica Standard Library components wired to the generated connectors.
The racks: the heat to the cold plates, and the hottest GPU read by its sensor.
03 / THE SCENARIOS
Ten questions, ten verdicts.
Each line is a test case of the model; arclang verify runs it in OpenModelica on a 35 °C design day, a training job starting at 1 h. A failure is a finding, not a bug: it says what the design must change.
| Scenario | Verdict | What it shows |
|---|---|---|
| Design summer day, three pumps (N+1) | PASS | GPUs at 76 °C at most, coolant supply at most 36.4 °C, partial PUE 1.077. |
| A pump stops at 14 h, two pumps | FAIL | The flow halves; the GPUs are capped to 69 % of their power to hold 83 °C. |
| The same failure, three pumps | PASS | The spare pump takes over. |
| Grid outage at 14 h | PASS | Pumps on the UPS, fans on the generator after 30 s, chiller back after 10 min: the dry coolers alone hold the GPUs at 79 °C. |
| The generator 1, 3 or 5 min late, with or without a buffer tank | 5 OF 6 | The loop's water rides through 3 min with no cooling at all; 5 min needs a buffer tank of about 30 m³. |
| A rack leaks at 14 h, powered off 10 to 60 s after the alarm | 2 OF 4 | Its valves close in 8.5 s; off within 20 s its GPUs stay under 95 °C, at 30 s they reach 102 °C. The other racks train on. |
| Racks of 200 kW on the current plant | FAIL | The GPUs are throttled all day: 82 % at night (the pumps' flow is short), 73 % in the afternoon. |
| Racks of 200 kW with a high flow CDU, larger coolers, a 1.6 MW chiller | PASS | No throttling, GPUs at 77 °C, partial PUE 1.075. |
| 30 to 45 °C outside × 100 to 132 kW per rack | 9 OF 12 | At 45 °C (and at 40 °C with 132 kW racks) the chiller is short and the GPUs throttle. |
| Monte Carlo over the summers: 35 °C ± 3 K, 110 to 132 kW per rack | PASS | 60 hot days out of 60 without throttling: at least 95 % at 95 % confidence. |
04 / THREE SCENARIOS IN OMEDIT
What the curves say.
The same models open in OMEdit: change a parameter in the variables browser, simulate again, read the curve. The physics is a Modelica package the engineers write and keep; ArcLang regenerates the structure around it without touching a line.
How long does the water hold?
The grid fails at the hottest hour and the generator starts 5 minutes late: no fans, no chiller, the 1.6 MW go into the water of the loop. The hottest GPU climbs from 76 to 83 °C, and the scheduler has to cap the GPUs until the cooling is back. Three minutes ride through; five need a buffer tank.
The hottest GPU during the outage, in kelvin (356 K = 83 °C), generator 5 min late.
Sizing: a 30 m³ buffer tank, or a generator proven to start within 3 minutes.
How fast must a leaking rack go dark?
A rack leaks. The leak isolation chain closes its valves in 8.5 s; from then on its GPUs have no coolant and heat at about 1.25 K per second until the scheduler powers the rack off. Here it waits 30 s: 102.5 °C. Within 20 s they stay under 95 °C, and the fifteen other racks never notice.
The hottest GPU of the isolated rack, powered off 30 s after the alarm.
A requirement for the scheduler: power a leaking rack off within 20 s of the alarm.
What must change for 200 kW racks?
The same hall with next-generation racks. On the current plant the GPUs never run at full power: the pumps cannot move enough coolant (82 % even at night) and the chiller is short in the afternoon (73 %). With a high flow CDU, larger dry coolers and a 1.6 MW chiller, the racks run at 100 % all day.
Share of the GPUs' power allowed over the day: current plant (blue), upgraded plant (red, at 1).
The upgrade, priced from the model: CDU flow +64 %, coolers +70 %, chiller 1.6 MW.
05 / WHY IN ARCLANG
The architecture and the physics, in one model under git.
- Traceable
- Every verdict is attached to a requirement; the production gate blocks a release while one fails or is stale.
- Reviewable
- The model is text in git: a pull request shows which requirement, which parameter and which verdict a change touches.
- Open
- OpenModelica and the Modelica Standard Library; the physics opens in OMEdit; SysML v2 export validated by the OMG pilot implementation.
- Repeatable
- The same commands run in CI: a design change re-runs the ten scenarios and says what moved.
The model and its physics are open: ai_liquid_cooling.arc and CoolingPhysics.mo, in the ArcLang repository (in the release binaries from the next version).