
Compute the Van Genuchten soil water retention curve
Source:R/van_genuchten.R
swrc_van_genuchten.RdCalculates volumetric soil water content at given matric potential values
using the Van Genuchten (1980) model with the Mualem (1976) constraint
(m = 1 - 1/n).
Arguments
- data
A data frame or tibble. Passed as the first argument so the function is compatible with
|>and%>%pipes.- theta_r
Residual water content (m³/m³). Either a bare column name from
dataor a scalar numeric value.- theta_s
Saturated water content (m³/m³). Either a bare column name from
dataor a scalar numeric value.- alpha
Van Genuchten shape parameter (1/cm or 1/m, matching units of
h). Either a bare column name or a scalar numeric value. Must be strictly positive.- n
Van Genuchten shape parameter (dimensionless). Must be > 1 for the Mualem model. Either a bare column name or a scalar numeric value.
- h
Matric potential / pressure head (cm or m, must match units of
alpha). Either a bare column name or a scalar numeric value. Sign convention: positive values are treated as suction (absolute value is used internally).
Value
The input data as a tibble with an additional column .theta
containing the computed volumetric water content (m³/m³).
Details
The model is: $$\theta(h) = \theta_r + \frac{\theta_s - \theta_r}{(1 + (\alpha |h|)^n)^m}$$
where m = 1 - 1/n.
References
Van Genuchten, M. Th. (1980). A closed-form equation for predicting the hydraulic conductivity of unsaturated soils. Soil Science Society of America Journal, 44(5), 892–898. https://doi.org/10.2136/sssaj1980.03615995004400050002x
Examples
library(tibble)
soil <- tibble(
h = c(0, 10, 100, 1000, 15000),
alpha = 0.02,
n = 1.5
)
# Using bare column names for alpha and n, scalars for theta_r / theta_s
swrc_van_genuchten(soil, theta_r = 0.05, theta_s = 0.45, alpha = alpha,
n = n, h = h)
#> # A tibble: 5 × 4
#> h alpha n .theta
#> <dbl> <dbl> <dbl> <dbl>
#> 1 0 0.02 1.5 0.45
#> 2 10 0.02 1.5 0.439
#> 3 100 0.02 1.5 0.306
#> 4 1000 0.02 1.5 0.139
#> 5 15000 0.02 1.5 0.0731
# All scalar values
swrc_van_genuchten(soil, theta_r = 0.05, theta_s = 0.45, alpha = 0.02,
n = 1.5, h = h)
#> # A tibble: 5 × 4
#> h alpha n .theta
#> <dbl> <dbl> <dbl> <dbl>
#> 1 0 0.02 1.5 0.45
#> 2 10 0.02 1.5 0.439
#> 3 100 0.02 1.5 0.306
#> 4 1000 0.02 1.5 0.139
#> 5 15000 0.02 1.5 0.0731