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.
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 mode | Resolved 2D polygons | Neal channel graph | Execution status |
|---|---|---|---|
| Local inertial | yes | yes | CPU validation passed |
| Kinematic | yes | no | CPU smoke validation passed |
| Explicit diffusive | yes | no | CPU smoke validation passed |
| Full momentum | yes | no | CPU 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:
| Module | Compared on the square mesh |
|---|---|
| Human instability | Final and maximum index, index maps; the mesh cell velocity against the grid's on random fields |
| Snow | SWE maps, depth and infiltration, legacy and layered soil |
| Reservoirs | Release, storage and every internal-boundary series |
| Urban drainage | Node heads and storage, pipe and inlet discharge, outfall volume, substep count |
| Water quality | Pollutant mass, export and concentration; the edge wash-off against the grid's on random fields |
| Green infrastructure | Storage, capture, overflow, exfiltration and underdrain per facility, the three GI maps, legacy and layered soil |
| Detention ponds | Stage, 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.