soilhypfit_evaporative_length: Evaporative Characteristic Length

evaporative-lengthR Documentation

Evaporative Characteristic Length

Description

The functions lc and lt compute the characteristic length L_c of stage-I evaporation from a soil and its “target” (expected) value L_t, used to constrain estimates of nonlinear parameters of the Van Genuchten-Mualem (VGM) model for water retention curves and hydraulic conductivity functions.

Usage

lc(alpha, n, tau, k0, e0, c0 = NULL, c3 = NULL, c4 = NULL)

lt(n, tau, e0, c0, c1, c2, c3, c4)

Arguments

alpha

parameter α (inverse air entry pressure) of the VGM model, see wc_model and hc_model. For consistency with other quantities, the unit of α should be 1/meter [m^-1].

n

parameter n (shape parameter) of the VGM model, see wc_model and hc_model.

tau

parameter τ (tortuosity parameter) of the VGM model, see hc_model.

k0

saturated hydraulic conductivity K_0, see hc_model. If k0 is missing or equal to NA in calls of lc then k0 is approximated by the same relation as used for lt, see Details. For consistency with other quantities, the unit of K_0 should be meter/day [m d^-1].

e0

a numeric scalar with the stage-I rate of evaporation E_0 from a soil, see Details and soilhypfitIntro. For consistency with other quantities, the unit of E_0 should be meter/day [m d^-1].

c0, c1, c2, c3, c4

numeric constants to approximate the parameter α and the saturated hydraulic conductivity K_0 when computing L_t, see Details and control_fit_wrc_hcc. For consistency with other quantities, the following units should be used for the constants:

  • c1: m^-1,

  • c3: m d^-1.

The remaining constants are dimensionless.

Details

The characteristic length of stage-I evaporation L_c (Lehmann et al., 2008, 2020) is defined by

L_c(ν, K_0, E_0) = 1 / (α * n) * ((2n-1)/(n-1))^((2n-1)/n) / (1 / ((1 + E_0/K_eff)))

where \mbvec\nuT= (\alpha, n, \tau) are the nonlinear parameters of the VGM model, K_0 is the saturated hydraulic conductivity, E_0 the stage-I evaporation rate and K_eff = 4 * K_VGM(h_crit; ν) is the effective hydraulic conductivity at the critical pressure

h_crit = 1/α * ((n-1)/n)^((1-2n)/n),

see hc_model for the definition of K_VGM(h; K_0, ν).

The quantity L_t is the expected value (“target”) of L_c for given shape (n) and tortuosity (τ) parameters. To evaluate L_t, the parameters α and K_0 are approximated by the following relations

hatα = g_α(n; c_0, c_1, c_2) = c_1 * (n - c_0) / (1 + c_2 * (n - c_0)),

hat K_0 = g_{K_0}(n; c_0, c_3, c_4) = c_3 * (n - c_0)^c_4.

The default values for c_0 to c_4 (see argument approximation_alpha_k0 of control_fit_wrc_hcc) were estimated with data on African desert regions of the database ROSETTA3 (Zhang and Schaap, 2017), see Lehmann et al. (2020) for details.

Value

A numeric scalar with the characteristic evaporative length (lc) or its expected value (lt).

Author(s)

Andreas Papritz papritz@retired.ethz.ch.

References

Lehmann, P., Assouline, S., Or, D. (2008) Characteristic lengths affecting evaporative drying of porous media. Physical Review E, 77, 056309, doi: 10.1103/PhysRevE.77.056309.

Lehmann, P., Bickel, S., Wei, Z., Or, D. (2020) Physical Constraints for Improved Soil Hydraulic Parameter Estimation by Pedotransfer Functions. Water Resources Research 56, e2019WR025963, doi: 10.1029/2019WR025963.

Zhang, Y. , Schaap, M. G. 2017. Weighted recalibration of the Rosetta pedotransfer model with improved estimates of hydraulic parameter distributions and summary statistics (Rosetta3). Journal of Hydrology, 547, 39-53, doi: 10.1016/j.jhydrol.2017.01.004.

See Also

soilhypfitIntro for a description of the models and a brief summary of the parameter estimation approach;

fit_wrc_hcc for (constrained) estimation of parameters of models for soil water retention and hydraulic conductivity data;

control_fit_wrc_hcc for options to control fit_wrc_hcc;

soilhypfitmethods for common S3 methods for class fit_wrc_hcc;

vcov for computing (co-)variances of the estimated nonlinear parameters;

prfloglik_sample for profile loglikelihood computations;

wc_model and hc_model for currently implemented models for soil water retention curves and hydraulic conductivity functions;

Examples


# use of \donttest{} because execution time exceeds 5 seconds

# estimate parameters of 4 samples of the Swiss forest soil dataset
# that have water retention (theta, all samples), saturated hydraulic conductivity
# (ksat) and optionally unsaturated hydraulic conductivity data
# (ku, samples "CH2_4" and "CH3_1")

data(swissforestsoils)

# select subset of data
sfs_subset <- droplevels(
  subset(
    swissforestsoils,
    layer_id %in% c("CH2_3", "CH2_4", "CH2_6", "CH3_1")
  ))

# extract ksat measurements
ksat <- sfs_subset[!duplicated(sfs_subset$layer_id), "ksat", drop = FALSE]
rownames(ksat) <- levels(sfs_subset$layer_id)
colnames(ksat) <- "k0"

# define number of cores for parallel computations
if(interactive()) ncpu <- parallel::detectCores() - 1L else ncpu <- 1L


# unconstrained estimation (global optimisation algorithm NLOPT_GN_MLSL)
# k0 fixed at measured ksat values
rsfs_uglob <- fit_wrc_hcc(
  wrc_formula = theta ~ head | layer_id,
  hcc_formula = ku ~ head | layer_id,
  data = sfs_subset,
  param = ksat,
  fit_param = default_fit_param(k0 = FALSE),
  control = control_fit_wrc_hcc(
    settings = "uglobal", pcmp = control_pcmp(ncores = ncpu)))
summary(rsfs_uglob)
coef(rsfs_uglob, lc = TRUE, gof = TRUE)


# constrained estimation by restricting ratio Lc/Lt to [0.5, 2]
# (global constrained optimisation algorithm NLOPT_GN_MLSL)
# k0 fixed at measured ksat values
rsfs_cglob <- update(
  rsfs_uglob,
  control = control_fit_wrc_hcc(
    settings = "cglobal", nloptr = control_nloptr(ranseed = 1),
    pcmp = control_pcmp(ncores = ncpu)))
summary(rsfs_cglob)
coef(rsfs_cglob, lc = TRUE, gof = TRUE)

# get initial parameter values from rsfs_cglob
ini_param <- cbind(
  coef(rsfs_cglob)[, c("alpha", "n")],
  ksat
)
# constrained estimation by restricting ratio Lc/Lt to [0.5, 2]
# (local constrained optimisation algorithm NLOPT_LD_CCSAQ)
# k0 fixed at measured ksat values
rsfs_cloc <- update(
  rsfs_uglob,
  param = ini_param,
  control = control_fit_wrc_hcc(
    settings = "clocal", nloptr = control_nloptr(ranseed = 1),
    pcmp = control_pcmp(ncores = ncpu)))
summary(rsfs_cloc)
coef(rsfs_cloc, lc = TRUE, gof = TRUE)

op <- par(mfrow = c(4, 2))
plot(rsfs_uglob, y = rsfs_cglob)
on.exit(par(op))

op <- par(mfrow = c(4, 2))
plot(rsfs_uglob, y = rsfs_cloc)
on.exit(par(op))


soilhypfit documentation built on Aug. 31, 2022, 5:09 p.m.