
2D inundation,
solved on the GPU.
Deceris Inundation is an open-source 2D shallow-water solver for polygonal meshes, implemented with Vulkan.
Model flood depth, momentum and propagation through time — then inspect exactly how the result was produced.

Flooding is not an extent.
An inundation map tells you where water ended up. A hydraulic model describes how it got there.
Deceris Inundation evolves water depth and momentum over terrain through time using the two-dimensional shallow-water equations.




A finite-volume solver on polygonal meshes.
Geometry is prepared in Python. The numerical state is advanced on the GPU through HLLC fluxes, SSP-RK2 integration and CFL-controlled timesteps.
GPKGSHPGeoParquetParquetOBJWhy Vulkan?
GPU compute is part of the solver architecture, not an optimisation added after the numerical model.
Deceris Inundation uses Vulkan through Kompute to keep the computational core separate from a vendor-specific compute API.
Evidence before claims.
Numerical software should be judged against problems with known or independently published behaviour.
Deceris Inundation is tested against analytical solutions and published Environment Agency / Heriot-Watt 2D hydraulic benchmark cases.

Can the scheme reproduce a known solution?
The one-dimensional wet-bed dam-break compares numerical depth directly with the closed-form Stoker solution.

Watch momentum carry the surge across the crest.
The profile exposes the mechanism hidden in plan view: a fast bore descends the 1:200 slope, nearly fills the first depression, crosses the obstruction through conserved momentum, and leaves a disconnected pond in the second basin.
Bed elevation and water-surface profile along the domain centreline.

Does momentum carry water over the crest?
The incoming wave nearly fills the first depression. Conserved momentum carries part of the flow across the obstruction and into the second basin.

Can wet and dry regions remain physically distinct?
Water fills a sequence of depressions over complex topography while published far-field gauges remain dry.

Does the flood front arrive at the right time?
Six gauges track the advancing front against an axisymmetric reference over an extended flat floodplain.
$ just benchmark-obstruction --backend gpu_resident_batch[mesh] obstruction-dem2010-150x50.parquet
[solver] Vulkan · gpu_resident_batch
[run] t = 900.0 s · snapshots saved
[gate] point_2_rise = 0.047 m
[artifact] summary.json · gauges.csv · manifest.json
[result] PASS
Results with receipts.
Benchmark outputs are not screenshots assembled for the website. The harness produces the underlying data, plots, artifacts and provenance used to publish each result.
- benchmark configuration
- raw output and gauge series
- artifact hashes and manifest
- reproduction command
Bring your mesh.
Deceris Inundation operates on polygonal computational cells. The initial release is for researchers and engineers who want to experiment with, inspect and extend a GPU-based 2D hydraulic solver.
The solver should be inspectable.
The numerical implementation, GPU shaders, benchmark harnesses and workflow API are being released under a permissive open-source licence.
Read the equations in code. Change them. Run the benchmarks again.
Open the source Licence · Apache-2.042float cL = sqrt(pc.g * max(hL, 0.0));
43float cR = sqrt(pc.g * max(hR, 0.0));
44
45float SL = min(unL - cL, u_roe - c_roe);
46float SR = max(unR + cR, u_roe + c_roe);
47
48if (SL >= 0.0) F = FL;
49else if (SM >= 0.0) F = FsL;
50else if (SR >= 0.0) F = FsR;
51else F = FR;
Where does the water go?
What does that mean?
follow the wateroutput → exposure → consequence → comparison
Deceris is a platform for exploring scenarios instead of stopping at a single model run. Change the event, intervention or assumption; then compare how the consequences move.
Try Deceris


