Skip to contents

Calculates volumetric soil water content at given matric potential values using the Van Genuchten (1980) model with the Mualem (1976) constraint (m = 1 - 1/n).

Usage

swrc_van_genuchten(data, theta_r, theta_s, alpha, n, h)

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 data or a scalar numeric value.

theta_s

Saturated water content (m³/m³). Either a bare column name from data or 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