![]() |
OpenSWMM Engine
6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
|
T7.1 — species / age / enthalpy carried by the two-zone groundwater kernel (GW transport plan §3.4). More...
#include <cmath>#include <cstddef>#include <string>#include <string_view>#include <vector>Go to the source code of this file.
Classes | |
| struct | openswmm::twoD::SubsurfaceTransportState |
| Species mass in both aquifer zones, and where mass crossed a boundary. More... | |
Namespaces | |
| namespace | openswmm |
| namespace | openswmm::twoD |
T7.1 — species / age / enthalpy carried by the two-zone groundwater kernel (GW transport plan §3.4).
The subsurface twin of SurfaceTransportState, and deliberately the same shape so the two read alike and the seam between them is one concentration:
conc × m³; the age row holds age-volume and the temperature row temperature-volume (°C·m³, signed). A report divides by the SI water volume.[s * n_cells + c], so a species sweep walks contiguous cells.TransportPolicy — pollutants, MSX, __WATER_AGE__, __TEMPERATURE__ last — never re-derived here (GW plan §3.4: "do not re-derive np/nm/na/nt a fourth time").Two bulk stores, one per zone. sat_mass rides the saturated water h_g·θ_s·A; unsat_mass rides the column store h_u·A, whatever closure produced it. Explicit LAYERED transport instead owns species-major layer_mass on the accepted SIGMA column; unsat_mass is then only its derived sum. Default BULK retains the existing well-mixed unsaturated approximation.
The temperature row remains a liquid-water temperature-volume, exactly as on the surface. The separate ground thermal columns own soil-matrix plus porewater energy, conduction and thermal boundaries; accepted water transfers carry sensible energy between those stores without putting solid heat into layer_mass.