TUWmodel {TUWmodel} | R Documentation |
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.
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)
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) |
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.
TUWmodel
gives a vector of simulated runoff as q
[mm/timestep], and the following vector/matrices:
qzones
simulated runoff for each zone [mm/timestep];
q0
surface runoff [mm/timestep];
q1
subsurface runoff [mm/timestep];
q2
baseflow [mm/timestep];
rain
liquid precipitation [mm/timestep];
snow
solid precipitation [mm/timestep];
melt
snowmelt [mm/timestep];
moist
soil moisture [mm];
swe
snow water equivalent [mm];
eta
actual evapo-transpiration [mm/timestep];
suz
upper storage zone [mm];
slz
lower storage zone [mm];
## 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")