run.dtm: Run Dynamic TOPMODEL against hydrometric data and a catchment...

Description Usage Arguments Details Value Note Author(s) References See Also Examples

Description

Run Dynamic TOPMODEL against hydrometric data and a catchment discretisation

Usage

1
2
3
4
run.dtm(groups, weights, rain, routing, upstream_inputs = NULL, qobs = NULL,
  qt0 = 1e-04, pe = NULL, dt = NULL, ntt = 2, ichan = 1,
  Wsurf = weights, Wover = weights, i.out = ichan[1], dqds = NULL,
  sim.start = NA, sim.end = NA, disp.par = get.disp.par(), ...)

Arguments

groups

Data frame of areal group definitions along with their hydrological parameters (see Metcalfe et al., 2015)

weights

If the discretisation has n groups, this holds the n x n flux distribution (weighting) matrix defining downslope

rain

A time series of rainfall data in m/hr. One column per gauge if multiple gauges used.

routing

data.frame Channel routing table comprises a two-column data.frame or matrix. Its first column should be average flow distance to the outlet in m, the second the proportions of the catchment channel network within each distance category. Can be generated by make.routing.table

upstream_inputs

xts A list of any upstream hydrographs in addition to hillslope runoff feeding into the river network

qobs

Optional time series of observation data

qt0

Initial specific discharge (m/hr)

pe

Time series of potential evapotranspiration, at the same time step as rainfall data

dt

Time step (hours). Defaults to the interval used by the rainfall data

ntt

Number of inner time steps used in subsurface routing algorithm

ichan

Integer index of the "channel" group. Defaults to 1

Wsurf

matrix Surface routing matrix. Defines routing of overland flow downslope between units. By default identical to subsurface routing matrix by default, but can be altered to reflect modified connectivity of certain areas with the hillslope

Wover

matrix Optional surface overflow routing matrix. Defines routing of overland flow from a unit that has run out of surface excess storage capacity. Identical to surface routing matrix by default. Can be altered to reflect an overflow channel for a runoff storage area, for example.

i.out

For multi-channel systems, the index of the outlet reach

dqds

Function to supply a custom flux-storage relationship as the kinematic wave celerity. If not supplied then exponential relationship used.

sim.start

Optional start time for simulation in any format that can be coerced into a POSIXct instance. Defaults to start of rainfall data

sim.end

Optional end time of simulation in any format that can be coerced into a POSIXct instance. Defaults to end of rainfall data

disp.par

List of graphical routing parameters. A set of defaults are retrieved by calling disp.par()

...

Any further arguments will be treated as graphical parameters as documented in get.disp.par

Details

The grouping (HRU) table may be generated by the discretise method and includes each indexed channel as separate group. See Metcalfe et al. (2015) for descriptions of the parameters maintained in this table.

Evapotranspiration input can be generated using the approx.pe.ts method

Value

qsim: time series of specific discharges (m/hr) at the specified time interval. can be converted to absolute discharges by multiplying by catch.area

catch.area: the catchment area in m^2, calculated from the areas in the groups table

data.in: a list comprising the parameters supplied to the call

datetime sim.start Start of simulation

sim.end datetime End time of simulation

fluxes: a list comprising, for each response unit the specific base flows qbf, specific upslope inputs qin, drainage fluxes quz, and any overland flow qof, all in m/hr

storages: a list comprising, for each response unit, root zone and unsaturated storage, total storage deficit and surface storages (all m)

Note

If rain, pe or observation data differ in time period, use aggregate_xts to coerce the relevant series to the desired time interval

Author(s)

Peter Metcalfe

References

Metcalfe, P., Beven, K., & Freer, J. (2015). Dynamic TOPMODEL: a new implementation in R and its sensitivity to time and space steps. Environmental Modelling & Software, 72, 155-172.

See Also

aggregate_xts

discretise

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
## Not run: 
require(dynatopmodel)
data(brompton)

# Examine the November 2012 event that flooded the village (see Metcalfe et al., 2017)
sel <- "2012-11-23 12:00::2012-12-01"
# Precalculated discretisation
disc <- brompton$disc
groups <- disc$groups
rain <- brompton$rain[sel]
# to 15 minute intervals
rain <- disaggregate_xts(rain, dt = 15/60)
# Reduce PE, seems a bit on high side and resulted in a weighting factor for the rainfall
pe <- brompton$pe[sel]/2
qobs <- brompton$qobs[sel]

# Here we apply the same parameter values to all groups.
# we could also consider a discontinuity at the depth of subsurface drains (~1m)
# or in areas more remote from the channel that do not contribute fast subsurface
# flow via field drainage
groups <- disc$groups
groups$m <- 0.0044
# Simulate impermeable clay soils
groups$td <-  33
groups$ln_t0 <- 1.15
groups$srz_max <- 0.1
qobs <- brompton$qobs[sel]
qt0 <- as.numeric(qobs[1,])
# initial root zone storage - almost full due to previous event
groups$srz0 <- 0.98
# Quite slow channel flow, which might be expected with the shallow and reedy
# low bedslope reaches with very rough banks comprising the major channel
groups$vchan <- 400
groups$vof <- 50
# Rain is supplied at hourly intervals: convert to 15 minutes
rain <- disaggregate_xts(rain, dt = 15/60)
weights <- disc$weights
# Output goes to a new window
graphics.off()
x11()

# Initial discharge from the observations
qt0 <- as.numeric(qobs[1,])

# Run the model across the November 2012 storm event
# using a 15 minute interval
run <- run.dtm(groups=groups,
               weights=weights,
               rain=rain,
               pe=pe,
               qobs=qobs,
               qt0=qt0,
               routing=brompton$routing,
               graphics.show=TRUE, max.q=2.4)

## End(Not run)

dynatopmodel documentation built on May 1, 2019, 7:32 p.m.