Calculates the soil water capacity C(h) = −dθ/dh at given matric potential values using the analytical derivative of the Van Genuchten (1980) model with the Mualem 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: absolute value is used internally.
Value
The input data as a tibble with an additional column .C
containing soil water capacity in units of 1/cm (or 1/m, matching
the units of h and alpha). At h = 0, .C is 0.
Details
The soil water capacity is the slope of the soil water retention curve: $$C(h) = -\frac{d\theta}{dh} = \frac{(\theta_s - \theta_r) \cdot m \cdot n \cdot \alpha^n \cdot |h|^{n-1}} {(1 + (\alpha |h|)^n)^{m+1}}$$
C(h) is zero at saturation (h = 0) and at very high suction (h → ∞), and reaches a maximum at the inflection point of the retention curve.
C(h) is needed for computing soil water diffusivity D(h) = K(h)/C(h) and appears in the Richards equation for unsaturated flow.
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
See also
swrc_van_genuchten() for θ(h), soil_water_diffusivity() for
D(h) = K(h)/C(h), hydraulic_conductivity() for K(h).
Examples
library(tibble)
soil <- tibble(h = c(0, 10, 100, 1000, 15000))
soil_water_capacity(soil, theta_r = 0.05, theta_s = 0.45,
alpha = 0.02, n = 1.5, h = h)
#> # A tibble: 5 × 2
#> h .C
#> <dbl> <dbl>
#> 1 0 0
#> 2 10 0.00160
#> 3 100 0.000945
#> 4 1000 0.0000441
#> 5 15000 0.000000770
# Pipeline with swrc_van_genuchten()
soil |>
swrc_van_genuchten(theta_r = 0.05, theta_s = 0.45,
alpha = 0.02, n = 1.5, h = h) |>
soil_water_capacity(theta_r = 0.05, theta_s = 0.45,
alpha = 0.02, n = 1.5, h = h)
#> # A tibble: 5 × 3
#> h .theta .C
#> <dbl> <dbl> <dbl>
#> 1 0 0.45 0
#> 2 10 0.439 0.00160
#> 3 100 0.306 0.000945
#> 4 1000 0.139 0.0000441
#> 5 15000 0.0731 0.000000770
