![]() |
OpenSWMM Engine
6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
|
G-steps 2 and 13 — the four production soil-characteristic laws and the closure-A quasi-steady recharge q₀(hᵤ, h_g).
More...
#include "SubsurfaceData.hpp"Go to the source code of this file.
Classes | |
| struct | openswmm::twoD::soil::Params |
Namespaces | |
| namespace | openswmm |
| namespace | openswmm::twoD |
| namespace | openswmm::twoD::soil |
Functions | |
| double | openswmm::twoD::soil::effectiveSaturation (const Params &p, double psi) noexcept |
Effective saturation at suction head psi (m, ≥ 0). Se ∈ (0, 1]. | |
| double | openswmm::twoD::soil::waterContent (const Params &p, double psi) noexcept |
| Water content θ(ψ) = θ_r + Se·(θ_s − θ_r). | |
| double | openswmm::twoD::soil::relativeConductivity (const Params &p, double psi) noexcept |
Relative conductivity Kr(ψ) ∈ (0, 1]. | |
| double | openswmm::twoD::soil::conductivity (const Params &p, double psi) noexcept |
Unsaturated conductivity K(ψ) = Ks·Kr(ψ) (m/s). | |
| double | openswmm::twoD::soil::suctionAtSaturation (const Params &p, double Se) noexcept |
| double | openswmm::twoD::soil::diffusivity (const Params &p, double psi) noexcept |
| double | openswmm::twoD::soil::equilibriumStorage (const Params &p, double L) noexcept |
| double | openswmm::twoD::soil::rechargeQ0 (const Params &p, double L, double hu) noexcept |
| double | openswmm::twoD::soil::enslavedStorage (const Params &p, double L) noexcept |
| double | openswmm::twoD::soil::alphaL (const Params &p, double L) noexcept |
| double | openswmm::twoD::soil::feddesStress (double psi, double psi_w) noexcept |
G-steps 2 and 13 — the four production soil-characteristic laws and the closure-A quasi-steady recharge q₀(hᵤ, h_g).
Each law supplies effective saturation Se(ψ), water content θ(ψ) and relative conductivity Kr(ψ), with suction head ψ ≥ 0 measured upward from the water table (so ψ = 0 at the table and ψ = L at the surface):
| Law | Kr(ψ) |
|---|---|
| Gardner (1958) | e^(−αψ) |
| Russo (1988) | [(1 + ½αψ)·e^(−½αψ)]² |
| Brooks–Corey (1964) | 1 for ψ ≤ ψ_b, else (ψ_b/ψ)^(2+3λ) |
| van Genuchten (1980) | Se^L·[1 − (1 − Se^(1/m))^m]², Se = [1+(αψ)^n]^(−m) |
For Gardner, Qu & Duffy's eq. 22 is used verbatim:
That expression is algebraically identical to
— a relaxation of the column's stored water toward its hydrostatic equilibrium, at a conductivity-set rate. The equivalence is a genuine identity, not an approximation, and it is worth stating because it makes the sign convention obvious (hᵤ < hᵤ* ⇒ q₀ > 0, downward recharge; hᵤ > hᵤ* ⇒ capillary rise) and because it is the form that generalises.
The other three laws use that generalised form, with hᵤ*(L) the hydrostatic-equilibrium storage ∫₀ᴸ θ(ψ) dψ of that law (closed form for Brooks–Corey, Gauss–Legendre for van Genuchten and Russo) and C(L) the same conductivity/length scale evaluated with the law's own Kr.
q₀ = 0 at hydrostatic storage) and the correct sign, but their relaxation rate is a modelling choice this file makes explicit rather than a published closed form. Plan step 18's closure-ladder benchmark and step 4's HYDRUS-1D comparison are what license them; until those run, prefer Gardner or Russo for anything quantitative, and prefer closure B (the σ column, which integrates the real Richards flux and needs none of this) where the answer matters. Recorded for the migration guide.