SoilHyP (version 0.1.3)

fitSHP: Fit soil hydraulic properties

Description

Estimate parameter for soil water retention (SWC) and/or unsaturated hydraulic conductivity function (Ku) using Shuffled Complex Evolution (SCE) optimisation. Parameter can be estimated for van Genuchten-Mualem (vg or vgm) or Peters-Durner-Iden (PDI) parameterisation of the soil hydraulic properties.

Usage

fitSHP(obs = list(th = NULL, K = NULL), suc = list(th = NULL, K =
  NULL), par = NULL, lower = NULL, upper = NULL, FUN.shp = "vg",
  modality = "uni", par.shp = NULL, fit = "both",
  weighting = "var", log = c("alfa", "n", "ks"),
  control = list(ncomplex = 15, reltol = 1e-07, tolsteps = 7),
  suc.negativ = FALSE, integral = FALSE, L = NULL, log_Ku = TRUE,
  print.info = TRUE)

Arguments

obs

list with named observations (th for water content and K for unsaturated hydraulic conductivity data)

suc

list of named suctions corresponding to th and/or K

par

a numeric vector of initial parameter values (sea also SCEoptim). If missing default values are set.

lower

lower bounds on the parameters. Should be the same length as par and as upper, or length 1 if a bound applies to all parameters. If missing default values are set.

upper

upper bounds on the parameters. Should be the same length as par and as lower, or length 1 if a bound applies to all parameters. If missing default values are set.

FUN.shp

Funktion for soil hydraulic properties (vG, PDI or bc) (see SWC or Ku)

modality

pore size distribution ('uni' or 'bi')

par.shp

fixed parameter value named in list or vector

fit

fit parameter for 'SWC', 'Ku' or 'both' simultaneous.

weighting

weighting between SWC and Ku. Used if fit == both ('var', 'norm' or '2step').

log

names of parameter in list or vector which should be logarithmized during optimization

control

a list of options as in optim(), see SCEoptim

suc.negativ

set TRUE if suction/pressure heads are negative and FALSE if positive

integral

th as point value vs. suc(h) (FALSE) or th as mean water content over the column divided by the height (L) vs. suc(h) (TRUE) (see details).

L

sample height [cm]. Only needed for integral == TRUE

log_Ku

logarithmize Ku in the objective function and for weighting (TRUE).

print.info

print information about default values for par, lower, and upper if missing or fitting accuracy (TRUE or FALSE)

Value

"fitSHP" class

Details

References

Peters, A., & Durner, W. (2008). Simplified evaporation method for determining soil hydraulic properties. Journal of Hydrology, 356(1), 147-162.

Peters and Durner (2015). SHYPFIT 2.0 User<U+2019>s Manual

Peters, A., Iden, S. C., & Durner, W. (2015). Revisiting the simplified evaporation method: Identification of hydraulic functions considering vapor, film and corner flow. Journal of Hydrology, 527, 531-542.

See Also

SCEoptim, SWC, Ku

Examples

Run this code
# NOT RUN {
data('dataSHP')
# -------------------------------------------------------------------
# fit Soil Hydraulic Properties (SHP)
# -------------------------------------------------------------------
ans <- fitSHP(obs         = list(th = dataSHP$th, K = dataSHP$Ku),
             suc          = list(th = dataSHP$suc, K = dataSHP$suc),
             FUN.shp      = 'vg',
             modality     = 'uni',
             par.shp      =  NULL,
             fit          = 'both',
             weighting    = 'var',
             log          = c('alfa', 'n', 'ks'),
             control      = list(ncomplex = 15, reltol = 1e-07,tolsteps = 7),
             suc.negativ  = TRUE,
             integral     = FALSE,
             L            = 0,
             print.info   = TRUE
)
ans$par
plot(ans)
# --------------------------------------------------------------------
# bimodal van Genuchten-Mualem
ans <- fitSHP(obs         = list(th = dataSHP$th, K = dataSHP$Ku),
             suc          = list(th = dataSHP$suc, K = dataSHP$suc),
             FUN.shp      = 'vg',
             modality     = 'bi',
             par.shp      =  c(),
             fit          = 'both',
             weighting    = 'var',
             log          = c('alfa', 'n', 'ks', 'alfa2', 'n2'),
             suc.negativ  = TRUE,
             integral     = FALSE,
             L            = 0,
             print.info   = TRUE,
             control      = list(ncomplex = 15, reltol = 1e-07,tolsteps = 7)
)
ans$par
plot(ans)
# }

Run the code above in your browser using DataCamp Workspace