Surface Water on the GPU
The Surface Water Twin's solver, built for NVIDIA GPUs with Warp, ran 76 storm scenarios for the A27 Chichester bypass on one rented GPU. The modelled water was then exported as an OpenUSD stage, opened in NVIDIA Omniverse and path-traced into the short film below. Open the Surface Water Twin.
43 seconds, silent. The storm of 16 November 2022 on the A27 Chichester bypass, dusk to midnight. Every frame carries its own labels.
What ran
76 scenarios, each run to the end with the same solver code as the Surface Water Twin:
- 12 recorded storms from the Environment Agency's Fishbourne rain gauge, chosen by the most rain in a day and by the heaviest 15 minutes;
- 6 synthetic design storms, shapes for testing rather than return periods;
- 20 runs of the 16 November 2022 storm that vary the ground survey;
- each of those 38 twice: once with no drainage, once with a 12 mm an hour drainage allowance.
They ran in NVIDIA Warp 1.18 on one rented NVIDIA RTX 6000 Ada GPU, in one sitting on 23 October 2026. All 76 finished.
GPU against CPU
Did the GPU match our CPU? Not within the bars we set, so there are no speed figures here.
Before any scenario ran on a GPU, we wrote down how closely the GPU build had to reproduce our own CPU run and committed it (23 October 2026, 11:15 BST): the deepest water at each of the 8 ponds within 1 mm, the whole 1 m depth field within 5 mm at its worst cell and within 1 mm at the 99th percentile, and the solver's five test cases agreeing to the last few digits.
On a narrow screen, swipe the table sideways for every column.
| Check | Verdict | Result | Bar, set in advance |
|---|---|---|---|
| 16 Nov 2022 storm: deepest water at the 8 ponds | Pass | under 0.01 mm | within 1 mm at every pond |
| 16 Nov 2022 storm: depth field, 99th percentile | Pass | 0.03 mm | within 1 mm |
| 16 Nov 2022 storm: depth field, worst cell | Fail | 63 mm, in one patch off the road | within 5 mm |
| Test cases: still lake, sheet flow, dam break, water balance | Pass | all four agree | agree to the last few digits |
| Test case: filling a basin (water held, as a share of its full volume) | Fail | 0.0035 apart | within 0.000001 |
| Retest, set in advance: basin with 2 hours of rain fixed (share of its full volume) | Fail | GPU 0.0087 from the Mac, second CPU 0.0044 | GPU no further from our Mac than a second CPU is |
| Retest, set in advance: 16 Nov 2022 storm with drainage | Pass | identical | road within 5 mm, ponds within 1 mm |
| Retest, set in advance: 16 Nov 2022 storm, road and ponds | Pass | road 0.94 mm, ponds under 0.01 mm | road within 5 mm, ponds within 1 mm |
The worst-cell miss is a slow, late front of water in one patch of ground off the road, whose arrival shifts with tiny rounding differences. Two ordinary CPUs, our Mac and an x86 server, disagree there by 0.89 m on the same storm, so a second CPU would have failed that line too. The basin test stops the rain by a rule checked every 10 minutes, so a last-digit difference can add or remove 10 minutes of rain.
We wrote a dated amendment and a retest before running it. With the basin's rain fixed at 2 hours the two CPUs still differ by 0.0044 of the basin's full volume, and the GPU sits 0.0087 from our Mac, further than the second CPU. The retest failed as well, and it stands: the bars have not been moved.
What passes: on the carriageway and at the ponds, the GPU and the CPU agree to under a millimetre on both storms compared, and with drainage the two runs are identical.
Stills
Six stills, rendered at 4K and shown here at 1080p. Each carries its own labels in the top-left corner.






Loop
A 15-second loop: Whyke Roundabout, 19:15 to 19:30 UTC, rain drawn from the gauge rate.
How it was made
- Measuredterrain
- Environment Agency LiDAR at 1 m (the 2022 composite terrain and surface models).
- Measuredrain
- The Environment Agency's Fishbourne rain gauge, 15-minute record, 16 November 2022.
- Modelledwater
- MapMap's shallow-water solver, written in NVIDIA Warp, with no drainage. The film and the stills draw the water from the CPU run of the 16 November 2022 storm, the run the Surface Water Twin shows, at 96 states 15 minutes apart.
- Renderedpicture
- The terrain, road and water exported as a georeferenced OpenUSD stage, opened headless in NVIDIA Omniverse Kit through Isaac Sim 6.1 and path-traced with RTX on rented NVIDIA GPUs. Buildings are OpenStreetMap footprints with roof shapes fitted to the LiDAR, trees come from LiDAR crowns, and street lamps stand on roads OpenStreetMap tags as lit. Light, rain and materials are illustrative. The water's edge is smoothed for display, within 0.5 m of the model, and the picture between 15-minute model states is interpolated.
