OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
NodeCoupling.hpp
Go to the documentation of this file.
1
21#ifndef OPENSWMM_ENGINE_2D_NODE_COUPLING_HPP
22#define OPENSWMM_ENGINE_2D_NODE_COUPLING_HPP
23
24#include "../data/MeshData.hpp"
25#include "../data/SurfaceStateData.hpp"
26#include "../data/SolverOptions2D.hpp"
27
28// Forward declaration — avoid pulling in full SimulationContext
29namespace openswmm {
30struct SimulationContext;
31}
32
33namespace openswmm::twoD {
34
42 double cd;
43 double area;
46};
47
58std::vector<CouplingPoint> buildCouplingPoints(const MeshData& mesh,
59 const SimulationContext& ctx);
60
79void computeCouplingExchange(const std::vector<CouplingPoint>& cps,
80 const MeshData& mesh,
81 SurfaceStateData& state,
83 const SolverOptions2D& opts,
84 double dt);
85
98void updateOutfallBoundaries(const std::vector<CouplingPoint>& cps,
99 const MeshData& mesh,
100 const SurfaceStateData& state,
101 SimulationContext& ctx);
102
115void transferOutfallDischarges(const std::vector<CouplingPoint>& cps,
116 const MeshData& mesh,
117 SurfaceStateData& state,
118 const SimulationContext& ctx,
119 double dt);
120
121} // namespace openswmm::twoD
122
123#endif // OPENSWMM_ENGINE_2D_NODE_COUPLING_HPP
Definition NodeCoupling.cpp:15
void computeCouplingExchange(const std::vector< CouplingPoint > &cps, const MeshData &mesh, SurfaceStateData &state, SimulationContext &ctx, const SolverOptions2D &opts, double dt)
Compute exchange flows at all coupling points and inject into forcing API.
Definition NodeCoupling.cpp:99
void updateOutfallBoundaries(const std::vector< CouplingPoint > &cps, const MeshData &mesh, const SurfaceStateData &state, SimulationContext &ctx)
Update outfall boundary depths from 2D surface heads.
Definition NodeCoupling.cpp:264
void transferOutfallDischarges(const std::vector< CouplingPoint > &cps, const MeshData &mesh, SurfaceStateData &state, const SimulationContext &ctx, double)
Transfer outfall discharges into 2D coupling cells.
Definition NodeCoupling.cpp:318
std::vector< CouplingPoint > buildCouplingPoints(const MeshData &mesh, const SimulationContext &ctx)
Build the list of coupling points from mesh coupling maps.
Definition NodeCoupling.cpp:40
Definition NodeCoupling.cpp:15
Central, reentrant simulation context.
Definition SimulationContext.hpp:274
Descriptor for a single coupling point between 2D and 1D.
Definition NodeCoupling.hpp:38
double area
Effective exchange area (m²)
Definition NodeCoupling.hpp:43
bool is_outfall
True if the SWMM node is an outfall.
Definition NodeCoupling.hpp:44
bool has_flap_gate
True if outfall has a flap gate.
Definition NodeCoupling.hpp:45
int vertex_idx
Vertex index (-1 if triangle-centroid coupling)
Definition NodeCoupling.hpp:40
int cell_idx
Triangle index in the 2D mesh.
Definition NodeCoupling.hpp:39
int node_idx
SWMM node index.
Definition NodeCoupling.hpp:41
double cd
Discharge coefficient.
Definition NodeCoupling.hpp:42
SoA storage for 2D triangular mesh geometry and topology.
Definition MeshData.hpp:34
Configuration for the 2D surface routing CVODE solver.
Definition SolverOptions2D.hpp:76
SoA storage for 2D surface routing state variables.
Definition SurfaceStateData.hpp:32