![]() |
OpenSWMM Engine
6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
|
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>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< CouplingPoint > | openswmm::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. | |
Implementation of 2D↔1D node coupling via orifice exchange.