expuh {hydromad} R Documentation

## Exponential components transfer function models

### Description

A unit hydrograph (linear transfer function) defined as a system of exponentially receding components. Each component is defined by its time constant and fractional volume, and if there are multiple (up to 3) such components they may be in a parallel and/or series configuration.

### Usage

```expuh.sim(U, delay = 0,
tau_s = 0, tau_q = 0, tau_3 = 0,
v_s = 1, v_q = NA, v_3 = 0,
series = 0, loss = 0,
Xs_0 = 0, Xq_0 = 0, X3_0 = 0,
pars = NULL,
return_components = FALSE,
na.action = na.pass,

ssg.expuh(theta)
normalise.expuh(theta)

```

### Arguments

 `U` input time series. `delay` lag (dead time) between input and response, in time steps. `tau_s, tau_q, tau_3` time constants (τ) for the exponential components. `v_s, v_q, v_3` fractional volumes (v) for the exponential components. `series` defines the configuration of exponential components, as being in parallel and/or series (for second or third order models). See Details. `loss` a constant loss (or gain, if negative) term subtracted from the slow (`s`) component. `Xs_0, Xq_0, X3_0` initial values of the exponential components. `pars` the parameters as a named vector. If this is given, it will over-ride the named parmameter arguments. `return_components` whether to return all component time series. `na.action` function to remove missing values, e.g. `na.omit`. `epsilon` values smaller than this in the output will be set to zero. `theta` the parameters as a named vector.

### Details

The `expuh` model is a transfer function translating an input time series U into an output series X. It describes a configuration of exponentially decaying components, each defined by a recession rate α and peak response β. However, in hydrology these parameters are more easily interpreted in terms of time constants τ (number of time steps to reduce to a fraction 1/e, 37%) and fractional volumes v. These are directly related as:

τ = -1 / \log(α)

v = β / (1 - α)

If there are two components in parallel, these are conventionally called slow (s) and quick (q) flow components. The total simulated flow X is the sum of these; X[t] = X_s[t] + X_q[t], and:

X_s[t] = α_s X_s[t-1] + β_s U[t]

X_q[t] = α_q X_q[t-1] + β_q U[t]

Two components might also be arranged in series rather than parallel, in which case:

X_s[t] = α_s X_s[t-1] + β_s U[t]

X[t] = α_q X[t-1] + β_q X_s[t]

This configuration is specified by the argument `series = 1`. The default `series = 0` specifies all components to be in parallel.

In the case of three components, with corresponding time constants τ_s, τ_q and tau_3 (```tau_s, tau_q, tau_3```), there are four possible types of configuration:

`series = 0`

all 3 components in parallel, i.e. independent flows: X = s + q + 3. In this case `v_q` defaults to `1 - v_s - v_3` in order to ensure that the total volume is 1.

`series = 1`

one component in parallel with two in series: the `q` component is in series with the `3` component, and the `s` component is in parallel: X = (q * 3) + s. In this case `v_q` defaults to 1.

`series = 2`

two components in parallel with one in series: the `s` and `q` components are in parallel and the `3` component is in series: X = 3 * (s + q). In this case `v_q` defaults to `1 - v_s` in order to ensure that the total volume of the parallel component is 1. The total volume will be 1 if `v_3` is also 1.

`series = 3`

all 3 components in series: X = s * q * 3. In this case `v_q` defaults to 1. The total volume will be 1 if `v_s` and `v_3` are also 1.

### Value

the model output as a `ts` object, with the same dimensions and time window as the input `U`. If `return_components = TRUE`, it will have multiple columns named `Xs`, `Xq` and, if relevant, `X3`.

### Author(s)

Felix Andrews felix@nfrac.org

### References

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: 275-300.

`expuh.sriv.fit` `armax`

### Examples

```data(HydroTestData)
mod1 <- hydromad(HydroTestData, routing = "expuh",
tau_s = 30, tau_q = 5, v_s = 0.5)
flowcomps <- predict(mod1, return_components = TRUE)
xyplot(cbind(`Slow component` = flowcomps[,"Xs"],
`Total flow` = flowcomps[,1] + flowcomps[,2]),
superpose = TRUE) +
layer(panel.refline(h = 0))

U  <- ts(c(1, rep(0, 30)))
xyplot(cbind("tau_s = 10" = expuh.sim(U, tau_s = 10),
"& tau_q = 1" = expuh.sim(U, tau_s = 10, tau_q = 1, v_s = 0.5),
"&& v_s = 0.9" = expuh.sim(U, tau_s = 10, tau_q = 1, v_s = 0.9)),
superpose = TRUE)
```
[Package hydromad version 0.9-18 Index]