Skip to main content

Voronoi Mesh Validation

Voronoi products are generated by HydroBathyDEM and consumed through the shared mesh contract described in Ecosystem Architecture. HydroPolMesh is a migration prototype, not a runtime dependency.

The Voronoi finite-volume path is a separate mesh mode from the production raster D4 workflow. It uses exact polygon areas and edge topology, and can combine resolved 2D flow with a Neal-style subgrid channel graph for rivers that are narrower than the mesh.

Two panels compare the regular D4 grid and the Voronoi mesh: their cells and links, routing methods and optional modules; below, the subgrid options on each, with the routing each one needs

Figure 1. The regular grid and the Voronoi mesh, which also runs quadtrees. On the mesh, the optional modules run on the CPU (NumPy) engine, without the mode 3 classification.

Current supported scope​

Routing modeResolved 2D polygonsNeal channel graphExecution status
Local inertialyesyesCPU validation passed
KinematicyesnoCPU smoke validation passed
Explicit diffusiveyesnoCPU smoke validation passed
Full momentumyesnoCPU benchmark validation passed

These results come from CPU runs. In HydroPol2D-Python, a JAX mesh engine also runs mesh cases on a CUDA GPU; HydroPol2D-MATLAB still stops a Voronoi run that asks for the GPU. India-scale meshes are also not yet validated. Neither GPU results nor India-scale behavior should be inferred from the controlled CPU results.

The public subgrid selections distinguish the structured-grid Neal channel, structured lookup tables, and Voronoi subgrid relations. Enabling one does not silently activate either of the others.

What is checked​

The mesh and solver tests cover geometry validity, conservation, lake at rest, wetting and drying, forcing and groundwater bookkeeping, resolved/subgrid transitions, and fine-reference comparisons. The timestep is constrained by the sum of signal capacities over every incident face. For a Neal graph, it also uses each channel link and transition travel limit and the storage limit at every channel node.

The self-contained channel-CFL test uses two 100 m links meeting at a node and one resolved/subgrid transition. Its first adaptive step is 7.821 s, compared with a 15.641 s one-link wave limit, while mass closes exactly. This confirms that the graph limiter accounts for all incident paths.

Optional modules​

On the CPU engine, HydroPol2D-Python runs the regular grid's optional modules on mesh cells, each through the grid's own equations. The tests run every module on the grid and on a mesh made of the grid's own square cells, and compare:

ModuleCompared on the square mesh
Human instabilityFinal and maximum index, index maps; the mesh cell velocity against the grid's on random fields
SnowSWE maps, depth and infiltration, legacy and layered soil
ReservoirsRelease, storage and every internal-boundary series
Urban drainageNode heads and storage, pipe and inlet discharge, outfall volume, substep count
Water qualityPollutant mass, export and concentration; the edge wash-off against the grid's on random fields
Green infrastructureStorage, capture, overflow, exfiltration and underdrain per facility, the three GI maps, legacy and layered soil
Detention pondsStage, storage, lateral inflow and device flows, with and without groundwater, legacy and layered soil

Each pair agrees to 1e-10 or tighter, and every mesh run closes its water balance to 1e-9 m³. The comparisons use gentle flow, where the two surface solvers agree to round-off; Limitations lists what remains open.

Interpretation​

These results establish that the tested numerical pathways behave conservatively in their controlled cases. They do not validate field-scale flood predictions, mesh-generation choices for a specific watershed, GPU execution, or India production performance. Those require dedicated mesh QA, runtime benchmarking, and comparison with observations or a defensible reference.

The executable model-side record is maintained in the repository under Validation/Voronoi/README.md and Validation/Voronoi/VALIDATION_RESULTS.md.