OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
InertialEdges.hpp File Reference

Unique interior-edge structure for the local-inertial momentum DOFs. More...

#include <cstdint>
#include <vector>
Include dependency graph for InertialEdges.hpp:
This graph shows which files directly or indirectly include this file:

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
 

Detailed Description

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).

Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
License\n Apache-2.0