![]() |
OpenSWMM Engine
6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
|
G-steps 3, 6-12, 16 — the two-zone groundwater kernel: saturated FV update, lateral Darcy, closure dispatch, node exchange, Dunne transfer, ET, and the LTS tier hooks the surface marcher calls. More...
#include "SigmaColumn.hpp"#include "../solver/GwRechargeBackend.hpp"#include "../../transport/components/ReactionModule/ReactionIntegrator.hpp"#include "SurfaceExchange.hpp"#include "../gw/GwSourceForcing.hpp"#include "../gw/GwBoundaryForcing.hpp"#include "SubsurfaceData.hpp"#include "SubsurfaceTransportState.hpp"#include "../coupling/RuntimeCoupling.hpp"#include <algorithm>#include "../heat/GroundHeat.hpp"#include <string>#include <vector>Go to the source code of this file.
Classes | |
| struct | openswmm::twoD::RowLayoutLite |
| class | openswmm::twoD::SubsurfaceSolver |
| The two-zone kernel. Owned by SurfaceRouter2D; driven by the marcher's tier hooks. More... | |
| struct | openswmm::twoD::SubsurfaceSolver::NodeWaterBudget |
| struct | openswmm::twoD::SubsurfaceSolver::PendingLidBed |
| struct | openswmm::twoD::SubsurfaceSolver::LidBedDiagnostic |
| struct | openswmm::twoD::NodeData |
| Structure-of-Arrays storage for all nodes. More... | |
Namespaces | |
| namespace | openswmm |
| namespace | openswmm::detail |
| namespace | openswmm::twoD |
G-steps 3, 6-12, 16 — the two-zone groundwater kernel: saturated FV update, lateral Darcy, closure dispatch, node exchange, Dunne transfer, ET, and the LTS tier hooks the surface marcher calls.
The subsurface does not get a loop of its own. ExplicitInertialSolver calls four hooks, mirroring what it already does for the surface:
| Hook | When | What |
|---|---|---|
assignTiers | every syncAndRebuild | Δt_g / Δt_u per cell → tier lists |
fireGwFaces(tier, dt) | face phase of a due tier | lateral Darcy → ±ΔV side accumulators |
fireGwCells(tier, dt) | cell phase of a due tier | gather, closure, node/deep/ET/Dunne |
settle() | before any re-tier | flush every accumulator |
G-A — a GW cell's tier comes only from min(Δt_g, Δt_u). The surface's pin-to-tier-0 rule for coupling cells is deliberately NOT applied here: a GW cell with node exchange or infiltration keeps its own tier and the exchange accumulates until it fires. Only the surface twin is ever pinned.
G-B — every new flux channel books ±Δ into a side accumulator at the producer's cadence and is gathered by the owner at its own firing, exactly like facc_L_/facc_R_. Cross-tier conservation is inherited, not re-proved.
[0, z_s]. Saturated storage change must equal external saturated exchanges plus actual bottom transfer, compression surplus and residual support from that same sweep.θ_s − θ_bot. SIGMA's final consistency equation uses saturated storage θ_s·h_g and the actual bottom flux including handover; it never treats the predictor or a floored storage derivative as completed water.