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

Implementation of 2D↔1D node coupling via orifice exchange. More...

#include "NodeCoupling.hpp"
#include "../mesh/VertexReconstruction.hpp"
#include "../../core/SimulationContext.hpp"
#include <cmath>
#include <algorithm>
Include dependency graph for NodeCoupling.cpp:

Namespaces

namespace  openswmm
 
namespace  openswmm::twoD
 

Functions

double openswmm::twoD::computeNodeCouplingQ (const CouplingPoint &cp, const MeshData &mesh, const SurfaceStateData &state, const NodeData &nodes, const SolverOptions2D &opts, const double *provisional_vol_m3=nullptr, double h1d_offset_m=0.0) noexcept
 Live node-coupling orifice flux for ONE non-outfall coupling point.
 
double openswmm::twoD::computeNodeCouplingDQdh1d (const CouplingPoint &cp, const MeshData &mesh, const SurfaceStateData &state, const NodeData &nodes, const SolverOptions2D &opts) noexcept
 Head sensitivity G = −∂Q/∂h_1d ≥ 0 of the coupling orifice at a point (SI: m³/s per m of 1D head, with h_1d in 2D metres).
 
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).
 
std::vector< CouplingPointopenswmm::twoD::buildCouplingPoints (const MeshData &mesh, const SimulationContext &ctx)
 Build the list of coupling points from mesh coupling maps.
 
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::accumulateOutfallDischargeStep (const std::vector< CouplingPoint > &cps, const MeshData &mesh, const SurfaceStateData &state, const SimulationContext &ctx, const SolverOptions2D &opts, double dt, std::vector< double > &accum_m3, std::vector< double > &cell_budget_m3, double *sample_row)
 Per-routing-step outfall discharge accumulation.
 
void openswmm::twoD::injectAccumulatedExchange (const std::vector< CouplingPoint > &cps, const MeshData &mesh, SurfaceStateData &state, const std::vector< double > &accum_m3, double window_dt, double sign, const std::vector< double > *node_conc=nullptr)
 Inject a per-point accumulated exchange volume into the 2D window source field.
 

Detailed Description

Implementation of 2D↔1D node coupling via orifice exchange.

See also
NodeCoupling.hpp