![]() |
OpenSWMM Engine
6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
|
Unique interior-edge structure for the local-inertial momentum DOFs. More...
#include <cstdint>#include <vector>Go to the source code of this file.
Classes | |
| struct | openswmm::twoD::InertialEdges |
| Canonical unique interior-edge layout + per-cell incidence for the local-inertial scheme. More... | |
Namespaces | |
| namespace | openswmm |
| namespace | openswmm::twoD |
Unique interior-edge structure for the local-inertial momentum DOFs.
Phase 2 of docs/IMEX_LOCAL_INERTIAL_IMPLEMENTATION_PLAN.md. The diffusive-wave path stores edges redundantly per cell (MeshData edge arrays are flat [cell*kMaxCellVerts+edge]); the local-inertial scheme instead carries ONE prognostic discharge q per shared interior edge (the conservation invariant: a single antisymmetric flux per edge). This builds that canonical unique-edge enumeration plus a per-cell CSR incidence so the continuity divergence dV_i/dt = −Σ_e sign_i(e)·q_e·ξ_e is a race-free per-cell gather (bit-identical under OpenMP, like the rest of the 2D pipeline).
Orientation: each interior edge is stored once with cL = min(t,nbr), cR = max(t,nbr). q_e > 0 means flow cL→cR. So q_e is OUTFLOW from cL (sign +1) and INFLOW to cR (sign −1).
Boundary edges (nbr < 0) carry NO q DOF here. Non-Wall boundary types are applied as explicit mass sources/sinks on the owning cell via SurfaceFluxCalculator::boundaryEdgeFlux (plan §3: prescribed boundaries stay explicit — no boundary momentum DOF).