| Type: | Package |
| Title: | Lumped/Semi-Distributed Hydrological Model for Education Purposes |
| Version: | 1.1-1 |
| Date: | 2020-02-25 |
| Depends: | R (≥ 3.0.0), stats |
| Description: | The model, developed at the Vienna University of Technology, is a lumped conceptual rainfall-runoff model, following the structure of the HBV model. The model can also be run in a semi-distributed fashion and with dual representation of soil layer. The model runs on a daily or shorter time step and consists of a snow routine, a soil moisture routine and a flow routing routine. See Parajka, J., R. Merz, G. Bloeschl (2007) <doi:10.1002/hyp.6253> Uncertainty and multiple objective calibration in regional water balance modelling: case study in 320 Austrian catchments, Hydrological Processes, 21, 435-446. |
| NeedsCompilation: | yes |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| Packaged: | 2020-02-25 14:09:34 UTC; alviglio |
| Author: | Alberto Viglione [aut, cre], Juraj Parajka [aut] |
| Maintainer: | Alberto Viglione <alberto.viglione@polito.it> |
| Repository: | CRAN |
| Date/Publication: | 2020-02-26 12:00:10 UTC |
Lumped hydrological model developed at the Vienna University of Technology for education purposes
Description
TUWmodel is a lumped conceptual rainfall-runoff model, following the structure of the HBV model.
The model runs on a daily or shorter timestep and consists of a snow routine, a soil moisture routine and a flow routing routine.
See Parajka, J., R. Merz, G. Bloeschl (2007) Uncertainty and multiple objective calibration in regional water balance modelling: case study in 320 Austrian catchments, Hydrological Processes, 21, 435-446.
Usage
TUWmodel (prec, airt, ep, area=1,
param=c(1.2,1.2,2,-2,0,0.9,100,3.3,0.5,9,105,50,2,10,26.5),
incon=c(50,0,2.5,2.5), itsteps=NULL)
Arguments
prec |
vector/matrix of precipitation input [mm/timestep] ( |
airt |
vector/matrix of air temperatures [degC] |
ep |
vector/matrix of potential evapotranspiration [mm/timestep] |
area |
if more zones, vector of the percentage of area for each zone (or proportional to it, i.e., if the sum is different from 1, it will be rescaled to be 1) |
param |
vector/matrix of parameters (
|
incon |
vector/matrix of initial conditions for the model ( |
itsteps |
length of the output (if NULL all the time series are used) |
Details
More details about the model structure are given in the Appendix of
Parajka, J., R. Merz, G. Bloeschl (2007) Uncertainty and multiple objective calibration in regional water balance modelling: case study in 320 Austrian catchments, Hydrological Processes, 21, 435-446, doi:10.1002/hyp.6253.
An example of using TUWmodel, including R scripts for automatic calibration, can be found in the Supplement of
Ceola, S., et al. (2015) Virtual laboratories: new opportunities for collaborative water science, Hydrology and Earth System Sciences, 19(4), 2101-2117, doi:10.5194/hess-19-2101-2015.
Value
TUWmodel gives a vector of simulated runoff as q [mm/timestep], and the following vector/matrices:
-
qzonessimulated runoff for each zone [mm/timestep]; -
q0surface runoff [mm/timestep]; -
q1subsurface runoff [mm/timestep]; -
q2baseflow [mm/timestep]; -
rainliquid precipitation [mm/timestep]; -
snowsolid precipitation [mm/timestep]; -
meltsnowmelt [mm/timestep]; -
moistsoil moisture [mm]; -
swesnow water equivalent [mm]; -
etaactual evapo-transpiration [mm/timestep]; -
suzupper storage zone [mm]; -
slzlower storage zone [mm];
Examples
## Load the data
data(example_TUWmodel)
## Simulate runoff and plot observed vs simulated series
## Lumped case (weighted means of the inputs)
simLump <- TUWmodel(prec=apply(P_Vils, 1, weighted.mean, w=areas_Vils),
airt=apply(T_Vils, 1, weighted.mean, w=areas_Vils),
ep=apply(PET_Vils, 1, weighted.mean, w=areas_Vils),
area=sum(areas_Vils),
param=c(1.02,1.70,2,0,-0.336,
0.934,121,2.52,
0.473,9.06,142,
50.1,2.38,10,25))
plot(as.Date(names(Q_Vils)), Q_Vils, type="l", xlab="", ylab="Discharges [mm/day]")
lines(as.Date(rownames(T_Vils)), simLump$q, col=2)
legend("topleft", legend=c("Observations","Simulations"), col=c(1,2), lty=1, bty="n")
plot(as.Date(rownames(SWE_Vils)), apply(SWE_Vils, 1, weighted.mean, w=areas_Vils),
type="l", xlab="", ylab="Snow Water Equivalent [mm]")
lines(as.Date(rownames(T_Vils)), simLump$swe, col=2)
## Distribute input case (6 zones)
simDist <- TUWmodel(prec=P_Vils, airt=T_Vils, ep=PET_Vils, area=areas_Vils/sum(areas_Vils),
param=c(1.02,1.70,2,0,-0.336,
0.934,121,2.52,
0.473,9.06,142,
50.1,2.38,10,25))
plot(as.Date(names(Q_Vils)), Q_Vils, type="l", xlab="", ylab="Discharges [mm/day]")
lines(as.Date(rownames(T_Vils)), simDist$q, col=2)
legend("topleft", legend=c("Observations","Simulations"), col=c(1,2), lty=1, bty="n")
plot(as.Date(rownames(SWE_Vils)), apply(SWE_Vils, 1, weighted.mean, w=areas_Vils),
type="l", xlab="", ylab="Snow Water Equivalent [mm]")
lines(as.Date(rownames(T_Vils)), apply(simDist$swe, 1, weighted.mean, w=areas_Vils), col=2)
## Distributed input and parameters case
parametri <- matrix(rep(c(1.02,1.70,2,0,-0.336,
0.934,121,2.52,
0.473,9.06,142,
50.1,2.38,10,25), 6), ncol=6)
parametri[2,] <- c(1.4, 1.7, 1.9, 2.2, 2.4, 3.0)
simDist2 <- TUWmodel(prec=P_Vils,
airt=T_Vils,
ep=PET_Vils,
area=areas_Vils/sum(areas_Vils),
param=parametri)
plot(as.Date(names(Q_Vils)), Q_Vils, type="l", xlab="", ylab="Discharges [mm/day]")
lines(as.Date(rownames(T_Vils)), simDist2$q, col=2)
legend("topleft", legend=c("Observations","Simulations"), col=c(1,2), lty=1, bty="n")
Lumped dual layer hydrological model developed at the Vienna University of Technology for education purposes
Description
TUWmodel_dual is a lumped conceptual rainfall-runoff model with dual representation of soil layer developed at the TUW,
following the structure of the HBV model. The dual soil layer consists of a skin soil layer which represents the layer observed
by satellite soil moisture sensors and a root zone soil storage which is identical with the original TUWmodel concept.
The model runs on a daily or shorter timestep and has similar structure as the original TUWmodel function.
More information about the dual layer concept and its implementation can be found in Parajka, J., V. Naeimi, G. Bloeschl
and J. Komma (2009) Matching ERS scatterometer based soil moisture patterns with simulations of a conceptual dual layer
hydrologic model over Austria, Hydrol. Earth Syst. Sci., 13, 259-271.
Usage
TUWmodel_dual (prec, airt, ep, area=1,
param=c(1.2,1.2,2,-2,0,0.9,100,3.3,0.5,9,105,50,2,10,26.5,1,0.8,10),
incon=c(50,0,2.5,2.5,0), itsteps=NULL)
Arguments
prec |
vector/matrix of precipitation input [mm/timestep] ( |
airt |
vector/matrix of air temperatures [degC] |
ep |
vector/matrix of potential evapotranspiration [mm/timestep] |
area |
if more zones, vector of the percentage of area for each zone (or proportional to it, i.e., if the sum is different from 1, it will be rescaled to be 1) |
param |
vector/matrix of parameters (
|
incon |
vector/matrix of initial conditions for the model ( |
itsteps |
length of the output (if NULL all the time series are used) |
Details
More details about the model structure are given in
Parajka, J., V. Naeimi, G. Bloeschl and J. Komma (2009) Matching ERS scatterometer based soil moisture patterns with simulations of a conceptual dual layer hydrologic model over Austria, Hydrol. Earth Syst. Sci., 13, 259-271.
Value
TUWmodel_dual gives a vector of simulated runoff as q [mm/timestep], and the following vector/matrices:
-
qzonessimulated runoff for each zone [mm/timestep]; -
q0surface runoff [mm/timestep]; -
q1subsurface runoff [mm/timestep]; -
q2baseflow [mm/timestep]; -
rainliquid precipitation [mm/timestep]; -
snowsolid precipitation [mm/timestep]; -
meltsnowmelt [mm/timestep]; -
moistsoil moisture [mm]; -
swesnow water equivalent [mm]; -
etaactual evapo-transpiration [mm/timestep]; -
suzupper storage zone [mm]; -
slzlower storage zone [mm]; -
ssltop soil skin layer storage [mm];
Examples
## Load the data
data(example_TUWmodel)
## Simulate runoff and plot observed vs simulated series
## Lumped case (weighted means of the inputs)
simLump <- TUWmodel_dual(prec=apply(P_Vils, 1, weighted.mean, w=areas_Vils),
airt=apply(T_Vils, 1, weighted.mean, w=areas_Vils),
ep=apply(PET_Vils, 1, weighted.mean, w=areas_Vils),
area=sum(areas_Vils),
param=c(1.02,1.70,2,0,-0.336,
0.934,121,2.52,
0.473,9.06,142,
50.1,2.38,10,25,1,0.8,10))
plot(as.Date(names(Q_Vils)), Q_Vils, type="l", xlab="", ylab="Discharges [mm/day]")
lines(as.Date(rownames(T_Vils)), simLump$q, col=2)
legend("topleft", legend=c("Observations","Simulations"), col=c(1,2), lty=1, bty="n")
plot(as.Date(rownames(SWE_Vils)), apply(SWE_Vils, 1, weighted.mean, w=areas_Vils),
type="l", xlab="", ylab="Snow Water Equivalent [mm]")
lines(as.Date(rownames(T_Vils)), simLump$swe, col=2)
## Distribute input case (6 zones)
simDist <- TUWmodel_dual(prec=P_Vils, airt=T_Vils, ep=PET_Vils, area=areas_Vils/sum(areas_Vils),
param=c(1.02,1.70,2,0,-0.336,
0.934,121,2.52,
0.473,9.06,142,
50.1,2.38,10,25,1,0.8,10))
plot(as.Date(names(Q_Vils)), Q_Vils, type="l", xlab="", ylab="Discharges [mm/day]")
lines(as.Date(rownames(T_Vils)), simDist$q, col=2)
legend("topleft", legend=c("Observations","Simulations"), col=c(1,2), lty=1, bty="n")
plot(as.Date(rownames(SWE_Vils)), apply(SWE_Vils, 1, weighted.mean, w=areas_Vils),
type="l", xlab="", ylab="Snow Water Equivalent [mm]")
lines(as.Date(rownames(T_Vils)), apply(simDist$swe, 1, weighted.mean, w=areas_Vils), col=2)
## Distributed input and parameters case
parametri <- matrix(rep(c(1.02,1.70,2,0,-0.336,
0.934,121,2.52,
0.473,9.06,142,
50.1,2.38,10,25,1,0.8,10), 6), ncol=6)
parametri[2,] <- c(1.4, 1.7, 1.9, 2.2, 2.4, 3.0)
simDist2 <- TUWmodel_dual(prec=P_Vils,
airt=T_Vils,
ep=PET_Vils,
area=areas_Vils/sum(areas_Vils),
param=parametri)
plot(as.Date(names(Q_Vils)), Q_Vils, type="l", xlab="", ylab="Discharges [mm/day]")
lines(as.Date(rownames(T_Vils)), simDist2$q, col=2)
legend("topleft", legend=c("Observations","Simulations"), col=c(1,2), lty=1, bty="n")
Data-sample
Description
Data for examples in the package
Usage
data(example_TUWmodel)
Format
The data are time series for the river Vils at Vils (Laende):
-
Q_Vilsvector of observed daily discharges [mm/day]; -
P_Vilsmatrix of observed daily precipitation [mm/day] for 6 zones; -
T_Vilsmatrix of observed daily temperatures [degC] for 6 zones; -
PET_Vilsmatrix of potential evapotranspiration [mm/day] for 6 zones; -
SWE_Vilsmatrix of observed snow water equivalent [mm] for 6 zones; -
areas_Vilsareas of the 6 zones.
Examples
data(example_TUWmodel)
ls()
t <- as.Date(rownames(P_Vils))
plot(t, apply(P_Vils, 1, weighted.mean, w=areas_Vils),
type="S", xlab="", ylab="Precipitation [mm/day]")
plot(t, apply(PET_Vils, 1, weighted.mean, w=areas_Vils),
type="l", xlab="", ylab="Potential evapotranspiration [mm/day]")
plot(t, T_Vils[,1], type="l", xlab="", ylab="Temperature [degC]")
lines(t, T_Vils[,6], col=3)
plot(t, SWE_Vils[,6], col=3, type="l", xlab="", ylab="Snow water equivalent [mm]")
lines(t, SWE_Vils[,1], col=1)
plot(as.Date(names(Q_Vils)), Q_Vils, type="l", xlab="", ylab="Runoff [mm/day]")