Skip to contents

Brooks-Corey Water Retention Curve

Usage

get_bc_hydraulic_head(theta, theta_r, theta_s, h_d, lambda)

Arguments

theta

volumetric water content

theta_r

residual water content

theta_s

saturated water content

h_d

air entry pressure (units of length)

lambda

curve shape, dimensionless

Details

See: Pan, T., Hou, S., Liu, Y., & Tan, Q. (2019). Comparison of three models fitting the soil water retention curves in a degraded alpine meadow region. Scientific Reports, 9(1), 18407.

Examples

# example code
library(units)
#> udunits database from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/units/share/udunits/udunits2.xml

sand_rawls <- get_rawls_soil(soil_name = "Sandy loam")
theta <- seq(0.15, sand_rawls$porosity, length.out = 100)
theta_r <- sand_rawls$theta_r
theta_s <- sand_rawls$porosity
h_d <- set_units(sand_rawls$bubbling_pressure_arithmetic_cm, "cm") # should have units of length
lambda <- sand_rawls$pore_size_distrib_arithmetic
hydraulic_head <- get_bc_hydraulic_head(theta, theta_r, theta_s, h_d, lambda)

library(tidyr)
rel_theta <- data.frame(rel_theta = seq(0.01, 1, length.out = 100))
df <- crossing(rawls_soils, rel_theta)
df$theta <- df$rel_theta * (df$porosity - df$theta_r) + df$theta_r
df$hydraulic_head <- get_bc_hydraulic_head(
  theta = theta,
  theta_r = df$theta_r,
  theta_s = df$porosity,
  h_d = set_units(df$bubbling_pressure_arithmetic_cm, "cm"),
  lambda = df$pore_size_distrib_arithmetic)
df$hydraulic_head_cm <- as.numeric(df$hydraulic_head)

library(ggplot2)
ggplot(df) +
  geom_line(aes(theta, hydraulic_head_cm, color = texture_class, linetype = texture_class)) +
  ylim(c(-1000, 0)) +
  scale_linetype_manual(values = rep(c("solid","dashed","dotted"),4))
#> Warning: Removed 346 rows containing missing values (`geom_line()`).