![]() |
OpenSWMM Engine
6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
|
Dry-cell active-set (wet-front) mask for the 2D RHS pipeline. More...
#include <cstdint>#include <vector>Go to the source code of this file.
Classes | |
| struct | openswmm::twoD::ActiveSetData |
Namespaces | |
| namespace | openswmm |
| namespace | openswmm::twoD |
Dry-cell active-set (wet-front) mask for the 2D RHS pipeline.
Most urban-flood meshes are dry over most of the simulation, with water confined to a moving front around coupled nodes, outfalls and boundary inflows. The active set restricts the per-RHS-evaluation work (reconstruction, gradients, limiter, edge fluxes, assembly) to the cells that can possibly change state this advance window:
active = wet ∪ sourced ∪ halo(N rings of neighbours)
The CVODE system stays FULL SIZE — inactive components simply get ydot ≡ 0, which is bit-exact: a dry, source-free cell walled off from the front has exactly zero RHS in the unmasked pipeline too, so its finite-difference Jacobian column/row, Krylov components and Nordsieck history are all exactly zero/frozen. No CVodeReInit is needed as the front moves; the mask is rebuilt once per advance.
Safety: the halo gives the front room to move within one window; if any outer-ring cell wets during the advance, the window is discarded and redone with a doubled halo (SurfaceRouter2D). An active→inactive edge is treated as a wall (flux 0) so any mask error is locally conservative, never a leak.