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

Orifice-equation exchange between 2D surface and SWMM nodes. More...

#include <unordered_map>
#include "../data/MeshData.hpp"
#include "../data/SurfaceStateData.hpp"
#include "../data/SolverOptions2D.hpp"
Include dependency graph for NodeCoupling.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  openswmm::twoD::CouplingPoint
 Descriptor for a single coupling point between 2D and 1D. More...
 

Namespaces

namespace  openswmm
 
namespace  openswmm::twoD
 

Functions

std::vector< CouplingPointopenswmm::twoD::buildCouplingPoints (const MeshData &mesh, const SimulationContext &ctx)
 Build the list of coupling points from mesh coupling maps.
 
void openswmm::twoD::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.
 
double openswmm::twoD::computeNodeCouplingQ (const CouplingPoint &cp, const MeshData &mesh, const SurfaceStateData &state, const NodeData &nodes, const SolverOptions2D &opts) noexcept
 Live node-coupling orifice flux for ONE non-outfall coupling point.
 
void openswmm::twoD::scatterCouplingToYdot (const MeshData &mesh, const SurfaceStateData &state, const CouplingPoint &cp, double Q, double *ydot) noexcept
 Scatter a signed volumetric exchange Q (m³/s) directly onto the cell derivatives ydot[] of the 2D volume ODE (for the live-RHS path).
 
void openswmm::twoD::updateOutfallBoundaries (const std::vector< CouplingPoint > &cps, const MeshData &mesh, const SurfaceStateData &state, SimulationContext &ctx, const SolverOptions2D &opts)
 Update outfall boundary depths from 2D surface heads.
 
int openswmm::twoD::transferOutfallDischarges (const std::vector< CouplingPoint > &cps, const MeshData &mesh, SurfaceStateData &state, const SimulationContext &ctx, const SolverOptions2D &opts, double dt, std::unordered_map< int, double > &applied_q)
 Transfer outfall discharges into 2D coupling cells.
 

Detailed Description

Orifice-equation exchange between 2D surface and SWMM nodes.

Handles:

  • Bidirectional orifice exchange at junction coupling points
  • Uncapped node surcharge spill and return flow
  • Outfall boundary feedback (dynamic tailwater from 2D)
  • Flap gate backflow prevention at outfalls
  • Ponding suppression for 2D-coupled nodes
  • Mass-conservative injection via the forcing API
See also
TWO_DIMENSIONAL_SURFACE_ROUTING_IMPLEMENTATION_STRATEGY.md §6, §13, §14
Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
License\n MIT License