IHACRES.CWI.model {hydromad}  R Documentation 
The Catchment Wetness Index (CWI) effective rainfall model for IHACRES. This is the classic model of Jakeman and Hornberger (1993), with the extensions to ephemeral catchments of Ye et al. (1997).
cwi.sim(DATA, tw, f = 0, scale, l = 0, p = 1, t_ref = hydromad.getOption("cwi")$t_ref, s_0 = 0, return_state = FALSE)
DATA 
a

tw 
drying rate at reference temperature (tw). This is a time constant, the number of time steps to reduce to a fraction 1/e \approx 37\%. See definition below. 
f 
temperature dependence of drying rate. See definition below.
The case of 
scale 
mass balance term (c in the literature).
If this parameter is set to 
l 
moisture threshold for producing flow (in units of s).
This can be used together with 
p 
power on soil moisture (above the threshold 
t_ref 
reference temperature in units of 
s_0 
starting value for soil moisture index s. 
return_state 
to return state variables as well as the effective rainfall. 
The IHACRES model with an antecedent precipitation index was introduced by Jakeman et al. (1990), based on the BedfordOuse model of Whitehead et al. (1979). This slightly more physicsbased version with a Catchment Wetness Index (CWI) was developed by Jakeman and Hornberger (1993). It is a metrictype model, where rainfall effectiveness is proportional to a simple antecedent moisture index, and the output is scaled to enforce mass balance.
The effective rainfall at each time step is proportional to rainfall, scaled by a soil moisture index s:
U[t] = c * s[t] * P[t]
Or, if the parameters l
and p
for ephemeral rivers
are used (after Ye et al., 1997):
U[t] = (c * (s[t]  l))^p * P[t]
The soil moisture index s is calculated by a filter applied to the rainfall, where the drying rate is defined by a time constant tw[t]:
s[t] = (1  1 / tw[t]) * s[t1] + P[t]
If f = 0
then the drying time constant is equal to the value of tw
.
Otherwise the drying rate varies over time according to the input data E
:
tw[t] = tw * \exp( 0.062 * f * E[t])
Note that the drying rate and effective rainfall are bounded below by 0, a step omitted in the equations above.
cwi.sim
returns the modelled time series of effective rainfall,
or if return_state = TRUE
, a multivariate time series with named
columns U
(effective rainfall), s
(index of soil
moisture, s) and w
(the recession rate of s, i.e.
(1  1 / tw[t]).
Felix Andrews felix@nfrac.org
Jakeman, A. J., and G. M. Hornberger (1993), How much complexity is warranted in a rainfallrunoff model?, Water Resources Research, 29: 26372649.
Jakeman, A.J., I.G. Littlewood, and P.G. Whitehead (1990), Computation of the instantaneous unit hydrograph and identifiable component flows with application to two small upland catchments, Journal of Hydrology, 117: 275300.
Ye, W., B.C. Bates, N.R. Viney, M. Sivapalan and A.J. Jakeman (1997), Performance of conceptual rainfallrunoff models in lowyielding ephemeral catchments, Water Resources Research, 33: 15316.
hydromad(sma = "cwi")
to work with models as objects (recommended).
## view default parameter ranges: str(hydromad.options("cwi")) data(Canning) x < cwi.sim(Canning[1:1000,], tw = 162, f = 2, l = 300, t_ref = 0, scale = 0.000284, return_state = TRUE) xyplot(x) data(HydroTestData) mod0 < hydromad(HydroTestData, sma = "cwi", routing = "expuh") mod0 ## simulate with some arbitrary parameter values mod1 < update(mod0, tw = 32, f = 2, scale = 0.01, tau_s = 10) ## plot results with state variables testQ < predict(mod1, return_state = TRUE) xyplot(cbind(HydroTestData[,1:2], cwi = testQ)) ## show effect of increase/decrease in each parameter parRanges < list(tw = c(0, 100), f = c(0, 8)) parsims < mapply(val = parRanges, nm = names(parRanges), FUN = function(val, nm) { lopar < min(val) hipar < max(val) names(lopar) < names(hipar) < nm fitted(runlist(decrease = update(mod1, newpars = lopar), increase = update(mod1, newpars = hipar))) }, SIMPLIFY = FALSE) xyplot.list(parsims, superpose = TRUE, layout = c(1,NA), main = "Simple parameter perturbation example") + layer(panel.lines(fitted(mod1), col = "grey", lwd = 2))