evaporative-length | R Documentation |
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.
lc(alpha, n, tau, k0, e0, c0 = NULL, c3 = NULL, c4 = NULL) lt(n, tau, e0, c0, c1, c2, c3, c4)
alpha |
parameter α (inverse air entry pressure) of the
VGM model, see |
n |
parameter n (shape parameter) of the VGM model, see
|
tau |
parameter τ (tortuosity parameter) of the VGM model,
see |
k0 |
saturated hydraulic conductivity K_0, see
|
e0 |
a numeric scalar with the stage-I rate of evaporation
E_0 from a soil, see Details and
|
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
The remaining constants are dimensionless. |
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.
A numeric scalar with the characteristic evaporative length (lc
) or
its expected value (lt
).
Andreas Papritz papritz@retired.ethz.ch.
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.
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;
# 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))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.