Generate the daily streamflow output at the basin outlet using
the VIC model runoff outputs by the routing model developed by Lohman et al
(1996, 1998). The model is usually used in two steps: firstly, generate the
unit hydrographs (UH) of each gridcell for the outlet of the basin or the
situation of a hydrological station (for comparing the simulations with
observations) of the VIC model (use Lohmann_UH
);
and secondly, generate the streamflow using the UH inputed
by the VIC model runoff and baseflow outputs of each gridcell (use
`Lohmann_conv()`).
Lohmann_UH(dir_file, soil_params, stn_x, stn_y, fract = NULL, veloc = 1.5,
diffu = 800, uh_box = NULL, arcinfo = TRUE)Lohmann_conv(runoff_table, uh, out_monthly = TRUE)
Flow direction raster file of the basin (should be in ArcGIS style ASCII format). This describes the flow direction from a gridcell to its downstream neighboring gridcells. Details see the works of Wu et al. (2012).
Soil parameter of the VIC model (a input of
vic
).
X coordinate of the site to generate streamflow that Usually are the basin outlet or hydrologial stations.
Y coordinate of the site to generate streamflow.
Path of fraction file, determining the fraction of the area
of the gridcells that actually in the basin. Must be a ArcGIS style ASCII
raster file that entirely
corresponding to dir_file
. If not provided, those fractions would
be set to 1 (presume that all the gridcells of the routing model are
entirely located in the basin.
velocity kinematic wave [m/s] of the river channel. Must be
the file path of a ArcGIS style ASCII raster file that entirely
corresponding to dir_file
,
or a single value for all gridcells. Default 1.5.
Diffusion parameter [m^2/s] of the river channel. Must be the
file path of a ArcGIS style ASCII raster file that entirely corresponding
to dir_file
, or a single value for all gridcells. Default 800.
Unit hydrograph describe the runoff from generated in the gridcell to the river channel pass throught the gridcell. If not assigned, a default unit hydrograph would be used.
If the flow direction file using the direction code of ArcGIS or not (See details). Default TRUE.
Output table of the VIC model that containing variables: `OUT_RUNOFF` and `OUT_BASEFLOW` in daily scale.
Output of the function Lohmann_UH
that containing the unit
hydrograph informations of the basin.
If is TRUE, it would also output the streamflow series at monthly scale, else only outputs at daily scale.
The daiy routing results (Streamflow series) of the VIC model.
The streamflow routing of VIC model usually need two steps:
Step I build the unit hydrograph data of the basin, which needs information
of river channel networks of the basin (parameter direc_file
),
coordinates of the gridcells of the VIC model (soil_param
), location
of the pour point (parameter stn_x
and stn_y
, usually is the
location of hydrological station providing streamflow observations for
comparing), and some other information (wave velocity, diffusion, and the
unit hydrograph of runoff from land to river channel of each gridcell, i.e.
uh_box
). This uses the function Lohmann_UH()
:
uh <- Lohmann_UH(direc_file, soil_params, stn_x, stn_y)
Step II generate the streamflow by using the unit hydrograph data of step I
and the runoff data output by the VIC model, using
the function Lohmann_conv()
:
rf <- Lohmann_conv(runoff_table, uh)
Where rf
are the routed streamflow series.
The finer raster of routing model than VIC gridcells is supported. For example, the routing model can be run at 0.125 degree spatial scale when the VIC model is run at 0.25 degree scale.
The flow direction raster file should be a ASCII file in ArcGIS style like that:
ncols 5 nrows 4 xllcorner -121.125 yllcorner 48.125 cellsize 0.125 NODATA_value -1 -1 2 4 4 -1 1 1 2 16 8 1 128 1 0 16 -1 64 128 64 -1
The raster values are the direction codes. The fraction file, wave velocity file and diffusion file should also in this form and the rasters should be entirely corresponding to direc file (number of rows and columns, size of gridcell, coordinates should be the same).
Direction code determines that the river channel would flow from a gridcell to which one of the 8 gridcells surround the center gridcell. Direction codes of ArcGis style:
32 | 64 | 128 |
16 | 0 | 1 |
Direction codes of not ArcGIS:
8 | 1 | 2 |
7 | 0 | 3 |
The fraction file (fract
) determines the fraction of the gridcells
that located in the realistic basin. The inner gridcells that entirely located in
the basin should be with the value 1, while for the outer gridcells, with
the boundary pass through, would have a part of runoff that flow into the
neighbouring basin and therefore those part of the runoff would not be
calculated in the streamflow routing. For the cases with large number of
gridcells, those effects could be ignore and could not provide the fraction
file.
An example of the fraction file:
ncols 5 nrows 4 xllcorner -121.125 yllcorner 48.125 cellsize 0.125 NODATA_value -1 0.000 0.147 0.231 0.173 0.000 0.320 1.000 1.000 0.916 0.053 0.213 0.978 1.000 0.738 0.169 0.000 0.213 0.084 0.049 0.000
runoff_table
should be a output table of function vic
that containing two variables: OUT_RUNOFF
and OUT_BASEFLOW
.
Thus the parameter output_info
of vic
can be set as:
out_info <- list( runoff_table = list( timescale = 'day', aggpar = 1, outvars = c('OUT_RUNOFF', 'OUT_BASEFLOW'), aggtypes = c('sum', 'sum') ) )res <- vic(forcing, soil, veg, output_info = out_info)
And then run the streamflow routing as:
sf <- Lohmann_conv(res$runoff_table, uh)
Lohmann D, Nolte-Holube R, Raschke E, 1996. A large-scale horizontal routing model to be coupled to land surface parametrization schemes. Tellus A, 48(5): 708-721.
Lohmann D, Raschke E, Nijssen B, et al., 1998. Regional scale hydrology: I. Formulation of the VIC-2L model coupled to a routing model. Hydrological Sciences Journal, 43(1): 131-141.
Wu H, Kimball JS, Li H, Huang M, Leung LR, and Adler RF, 2012. A new global river network database for macroscale hydrologic modeling.Water Resources Research, 48, W09701.
# NOT RUN {
# Paths of the samples of the flow direction file and fraction file
direc_file <- system.file("extdata", "direc_STEHE.asc", package = "VICmodel")
fract_file <- system.file("extdata", "fract_STEHE.asc", package = "VICmodel")
# Generate the unit hydrograph data of each gridcells.
uh <- Lohmann_UH(direc_file, STEHE$soil, stn_x = -120.7, stn_y = 48.31,
fract = fract_file)
# Streamflow routing using the VIC output
sf <- Lohmann_conv(STEHE$runoff_table_daily, uh)
# Draw the output hydrograph
plot(sf$daily, type = 'l')
obs <- STEHE$streamflow_obs
plot(obs, type = 'l')
lines(sf$monthly, col = 'blue')
# }
Run the code above in your browser using DataLab