Title: | The Variable Infiltration Capacity (VIC) Hydrological Model |
---|---|
Description: | The Variable Infiltration Capacity (VIC) model is a macroscale hydrologic model that solves full water and energy balances, originally developed by Xu Liang at the University of Washington (UW). The version of VIC source code used is of 5.0.1 on <https://github.com/UW-Hydro/VIC/>, see Hamman et al. (2018). Development and maintenance of the current official version of the VIC model at present is led by the UW Hydro (Computational Hydrology group) in the Department of Civil and Environmental Engineering at UW. VIC is a research model and in its various forms it has been applied to most of the major river basins around the world, as well as globally <http://vic.readthedocs.io/en/master/Documentation/References/>. References: "Liang, X., D. P. Lettenmaier, E. F. Wood, and S. J. Burges (1994), A simple hydrologically based model of land surface water and energy fluxes for general circulation models, J. Geophys. Res., 99(D7), 14415-14428, <doi:10.1029/94JD00483>"; "Hamman, J. J., Nijssen, B., Bohn, T. J., Gergel, D. R., and Mao, Y. (2018), The Variable Infiltration Capacity model version 5 (VIC-5): infrastructure improvements for new applications and reproducibility, Geosci. Model Dev., 11, 3481-3496, <doi:10.5194/gmd-11-3481-2018>". |
Authors: | Ruida Zhong [aut, ctb], Dongdong Kong [aut, cre] , Xiaohong Chen [aut, ctb], Zhaoli Wang [aut, ctb], Chengguang Lai [aut, ctb], Joseph J Hamman [ctb] (Contributor and maintainer of VIC source code), Keith Cherkauer [ctb] |
Maintainer: | Dongdong Kong <[email protected]> |
License: | GPL-3 |
Version: | 0.2.6 |
Built: | 2024-11-20 06:36:56 UTC |
Source: | CRAN |
Calculate several metrics for the evaluating of hydrological modeling accuracy, including the Nash-Sutcliffe coefficient of efficiency (NSE), Logarithmic NSE (log-NSE), relative NSE (rNSE), and relative bias (RB).
NSE(sim, obs) logNSE(sim, obs) rNSE(sim, obs) RB(sim, obs)
NSE(sim, obs) logNSE(sim, obs) rNSE(sim, obs) RB(sim, obs)
sim |
Data series to be evaluated, usually are the simulated streamflow of hydrological model. |
obs |
Data series as benchmark to evaluate |
The Nash-Sutcliffe coefficient of efficiency (NSE) (Nash and Sutcliffe, 1970) is a widely used indicator of the accuracy of model simulations, or other estimation method with reference to a benchmark series (usually the observations), especially the hydrological modeling.
NSE is equal to one minus the normalized mean square error (ratio between the mean square error and the variation of observations):
1 is the perfect value of NSE, and NSE < 0 indicates that the simulation results are unusable.
The conventional NSE is ususlly affected by the accuracy of high values, and would impact the low flow simulation when be taken as the objective function in hydrological model calibration. Therefore, some revised NSE were proposed.
Oudin et al. (2006) proposed the log-NSE to increase the sensitivity to the accuracy of low flow simulations:
Krause et al. (2005) proposed the relative NSE to reduce the impact of the magnitude of data:
Relative bias (RB) is used to quantify the relative systematic bias of the simulation results:
Positive or negative value of RB indicate the positive or negative bias of simulations respectively. Perfect value of RB is 0.
The value of NSE, log-NSE, rNSE and RB.
Krause, P., Boyle, D. P., and Base, F., 2005, Comparison of different efficiency criteria for hydrological model assessment, Advances in Geoscience, 5, 89-97. doi: 10.5194/adgeo-5-89-2005
Nash, J. E., Sutcliffe, J. V., 1970. River flow forecasting through conceptual models part I - A discussion of principles. Journal of Hydrology. 10(3): 282-290. doi:10.1016/0022-1694(70)90255-6
Oudin, L., Andreassian, V., Mathevet, T., Perrin, C., Michel, C., 2006. Dynamic averaging of rainfall-runoff model simulations from complementary model parameterizations. Water Resources Research, 42(7). doi: 10.1029/2005WR004636
[Lohmann_UH()]
, [Lohmann_conv()]
Run the VIC model for each gridcells by providing several meteorological and vegetation (optional) forcing data and land surface parameters (soil, vegetation, snowband (optional), lake (optional)).
## S3 method for class 'vic_output' print(x, ...) vic( forcing, soil, veg, output_info = NULL, veglib = NULL, snowband = NULL, lake = NULL, forcing_veg = NULL, veg_force_types = c("albedo", "LAI", "fcanopy"), parall = FALSE )
## S3 method for class 'vic_output' print(x, ...) vic( forcing, soil, veg, output_info = NULL, veglib = NULL, snowband = NULL, lake = NULL, forcing_veg = NULL, veg_force_types = c("albedo", "LAI", "fcanopy"), parall = FALSE )
x |
Return of |
... |
Other arguments to print. |
forcing |
meteorological forcing data. Must be a list of numeral matrix with the name of one of "PREC", "TEMP", "SW", "LW", "WIND", "VP" and "PRESS". See details. |
soil |
soil parameter data. Must be a data frame or numeral matrix. |
veg |
vegetation parameters. Must be a list containing several matrixs. See details. |
output_info |
A list containing output contents and timescales (optional). See details. |
veglib |
Vegetation library parameters (optional). Would using the library of the NLDAS and GLDAS when not provided. |
snowband |
A data frame or numeral matrix containing snow band parameters (optional). See details. |
lake |
A dataframe or numeric matrix containing lake parameters (optional). |
forcing_veg |
Vegetation forcing data (optional). See details. |
veg_force_types |
Type names of vegetation forcing data. Must be provided when using vegetation forcing data. |
parall |
Determined if run the VIC parallely. If it is TRUE,
|
Function vic
is used to run the VIC model in a "classic" style
(Run the model gridcell by gridcell). Meteorological forcing data,
soil parameters and vegetation parameters are the basic necessary inputs
for the VIC model.
A list containing output tables, time table and model settings.
VIC in R supports multiple "output tables" with different output timescales. For example, you can put soil moisture and soil temperature in a table with monthly timescale and put runoff, baseflow in another table with daily timescale.
You can use print()
to print the summary of the returns.
The returns includes:
output |
One or several "output tables" and each of them containing
several output variables, which is determined by the output_info
parameter. The name of the "table" would also be which output_info
determined. Each "table" containing several numerial matrices corresponding
to the output variables. Each row of the matrices is output data for a
time step while each column is output data for a gridcell. |
timetable |
Containing initiation time, model running time and final (orgnizate outputs) time of the VIC model running. |
global_options |
Global options setted for this model run. |
output_infos |
Output settings determined by the output_info
parameter.
|
Parameter forcing
must be a list containing several numeral matrixs
that containing forcing data. Name of each matrix (similar to key in
dictionary in Python) must be the specific type names including
"PREC", "TEMP", "SW", "LW", "WIND", "VP" and "PRESS", indicating precipitation
[mm]
, air temperature [degree C]
, shortwave radiation [W]
, longwave radiation
[W]
, wind speed [m/s]
, vapor pressure [kPa]
, and atmospheric pressure [kPa]
.
All of those types are necessary to run the VIC model except "LW" and "PRESS".
Each row of the matrixs is corresponding to a time step while each column of
the matrixs is corresponding to a gridcell, which other must be the same as
those in soil parameter.
Longwave radiation (LW) and atmospheric pressure (PRESS) could be estimated via other forcing data when not supplied. Longwave radiation would be estimated using the Konzelmann formula (Konzelmann et al., 1996) while atmospheric pressure would be estimated based on the method of VIC 4.0.6, by assuming the sea level pressure is a constant of 101.3 kPa.
Parameter soil
must be a numeric data frame or matrix that containing
soil parameters. The style of this is the same as the soil parameter file
of the classic VIC, that is, each row restores the parameter of a cell
while each column restores one type of parameter. Detail see
http://vic.readthedocs.io/en/master/Documentation/Drivers/Classic/SoilParam/
in the official VIC documentation webside.
Parameter veg
must be a list containing several numeral matrixs that
Those matrixs restore the vegetation parameters that are corresponding
to each gridcells, and those order must be the same as the soil parameters.
Each row of the matrix restores the parameters of a vegetation type
while each column restores a type of parameter.
Each row should be like:
c(veg_type, area_fract, rootzone_1_depth, rootzone_1_fract, rootzone_2_depth, rootzone_2_fract, ...)
which is similar to the veg param file
of the classic VIC. If the source of LAI, fcanopy or albedo is set
to veg params, it must be follow by a sequence of param value for each
month in a year. The rows of veg
would be similar as:
c(veg_type, area_fract, rootzone_1_depth, rootzone_1_fract, rootzone_2_depth, rootzone_2_fract, LAI_Jan, LAI_Feb, LAI_Mar, ..., LAI_Dec, fcan_Jan, fcan_Feb, fcan_Mar, ..., fcan_Dec, albedo_Jan, albedo_Feb, albedo_Mar, ..., albedo_Dec)
Parameter output_info
is used to determine the output variables,
output timescale (monthly, daily, sub-daily, or each 6 days, etc.),
aggregration of data (mean, sum, max, min, start or end) when output
timescale is larger than input timescale. It should be a list like that:
output_info <- list(timescale = 'timescale', aggpar = aggpar, outvars = c('OUT_TYPE_1', 'OUT_TYPE_2', 'OUT_TYPE_3', ...), aggtypes = c('aggtype_1', 'aggtype_2', 'aggtype_3'))
And a output table (a list containing the output variables in matrix form)
named "output" would be returned. You can obtain the variables use code like
res$output$OUT_...
.
Names of the items in the list (e.g. timescale, outvars) must be those
specified as follows:
timescale |
Output timescale, including 'never', 'step', 'second', 'minute', 'hour', 'day', 'month', 'year', 'date', and 'end'. 'never' means never output, 'step' means use the input timestep, 'date' means output at a specific date, and 'end' means output at the last timestep. |
aggpar |
If 'timescale' is set to those except 'never', 'date' and
'end', it determined the intervals of the timescale to pass before output.
If 'timescale' is 'day' and 'aggpar' is 6, that means data outputs per 6
days.
If 'timescale' is 'date', it should be a Date type and it could be
generated use as.Date('YYYY-mm-dd') . |
outvars |
A sequence of names of output data types. The available data types please see the VIC official documentation website at http://vic.readthedocs.io/en/master/Documentation/OutputVarList/. |
aggtypes |
Optional. A sequence of string determine how to aggregrate the output data when output timescale is larger than input timescale, Including 'avg' (average), 'begin', 'end', 'max', 'min', 'sum', 'default'. Each string in it must be corresponding to those in 'outvars'. If input timescale is daily, while output timescale is monthly, and aggtype is 'begin', it would output the data of the first day of each month. |
If multiple output timescales are used, the outputs could be divided into several lists and take them into a list as input, e.g.:
out_info <- list( wb = list(timescale = 'hour', aggpar = 6, outvars = c('OUT_RUNOFF', 'OUT_BASEFLOW', 'OUT_SOIL_MOIST'), aggtypes = c('sum', 'sum', 'end')), eb = list(timescale = 'day', aggpar = 1, outvars = c('OUT_SWE', 'OUT_SOIL_TEMP'), aggtypes = c('avg', 'min')) )
This would return two output tables named "wb" and "eb" respectively.
Parameter veglib
is a matrix or a numeric dataframe of a vegetation
parameter library. Each row determines a type of vegetation while each
column determines a parameter, including ovetstory (or not), LAI for each
month in a year, etc. If not provided, it would use the default vegetation
library of the NASA Landsurface Data Assimination System (LDAS) (Rodell
et al., 2004), which contains 11 types of vegetation with the vegetation
classification of UMD.
Parameter snowband
is a matrix or a numeric dataframe determines
the elevation band information for each gridcells. Each row determines
the band information of a gridcell while a column determines the values
of the elevation band parameters.
This devide a single gridcell into several parts with dfferent elevation
to run individually, to further consider the sub-gridcell heterogeneity
of elevation and the resulted heterogeneity air temperature in a gridcell
with higher variation of elevation. The information of elevation bands
includes area fraction, mean elevation and fraction of precipitation
falled to the gridcell of each elevation band of the gridcell.
The order of the rows must be coresponding to the gridcells determined
in the soil parameters. Each row should be like:
c(GRID_ID, AFRAC_1, AFRAC_2, ..., AFRAC_n, ELEV_1, ELEV_2, ..., ELEV_n, PFRAC_1, PFRAC_2, ..., PFRAC_n)
GRID_ID
is the id of the grid; AFRAC_i means area fraction of
each elevation band; ELEV_i is their mean elevation; PFRAC_i is there
precipitation fraction. n is the number of elevation bands for each
gridcell and is determined by 'nbands'
in the global options.
This can be set used veg_param('nbands', n)
.
Parameter forcing_veg
must be a list containing several 3D numeral
arrays that containing vegetation forcing data such as LAI, albedo and
fraction of canopy. Different to parameter forcing
, each 3D array
in the list is the vegetation forcing data for a single gridcell, and the
order of the 3D arrays must be corresponding to the order of the gridcells
determined in the soil parameter.
The dimensions of a 3D array are represents: [timestep, vegetation tile, forcing type]
That is, the first dimension determines the data of the timesteps, the
second dimension determines the data for the different vegetation tiles
in this gridcell that determined by the vegetation parameters, while
the third dimension determined the data of different forcing data type
(LAI, albedo or fcanopy), which should be corresponding to the parameter
veg_force_types
.
Hamman, J. J., Nijssen, B., Bohn, T. J., Gergel, D. R., and Mao, Y. (2018), The Variable Infiltration Capacity model version 5 (VIC-5): infrastructure improvements for new applications and reproducibility, Geosci. Model Dev., 11, 3481-3496, doi:10.5194/gmd-11-3481-2018.
Konzelmann, T, Van de Wal, R.S.W., Greuell, W., Bintanja, R., Henneken, E.A.C., Abe-Ouchi, A., 1996. Parameterization of global and longwave incoming radiation for the Greenland Ice Sheet. Global Planet. Change, 9:143-164.
Liang, X., Lettenmaier, D. P., Wood, E. F., and Burges, S. J. (1994), A simple hydrologically based model of land surface water and energy fluxes for general circulation models, J. Geophys. Res., 99(D7), 14415-14428, doi:10.1029/94JD00483.
Liang, X., and Xie, Z., 2001: A new surface runoff parameterization with subgrid-scale soil heterogeneity for land surface models, Advances in Water Resources, 24(9-10), 1173-1193.
Rodell, M., Houser, P.R., Jambor, U., Gottschalck, J., Mitchell, K., Meng, C.-J., Arsenault, K., Cosgrove, B., Radakovich, J., Bosilovich, M., Entin, J.K., Walker, J.P., Lohmann, D., and Toll, D. (2004), The Global Land Data Assimilation System, Bull. Amer. Meteor. Soc., 85(3), 381-394.
# This is a sample data to run VIC. data(STEHE) forcing <- STEHE$forcing soil <- STEHE$soil veg <- STEHE$veg # Set the global options for a 7-days run. vic_params(list( date_start = "1949-01-01", date_end = "1949-01-10", step_per_day = 24, snow_step_per_day = 24, runoff_step_per_day = 24 )) # Run VIC. outputs <- vic(forcing, soil, veg) print(outputs) # Use user defind outputs and snowband parameters. vic_param('nbands', 5) band <- STEHE$snowbands out_info <- list( wb = list(timescale = 'hour', aggpar = 6, outvars = c('OUT_RUNOFF', 'OUT_BASEFLOW', 'OUT_SOIL_MOIST'), aggtypes = c('sum', 'sum', 'end')), eb = list(timescale = 'day', aggpar = 1, outvars = c('OUT_SWE', 'OUT_SOIL_TEMP'), aggtypes = c('avg', 'min')) ) outputs <- vic(forcing, soil, veg, snowband = band, output_info = out_info) print(outputs) # Example of parallelization ## Not run: library(doParallel) registerDoParallel(cores=4) outputs <- vic(forcing, soil, veg, snowband = band, parall = TRUE) stopImplicitCluster() print(outputs) ## End(Not run)
# This is a sample data to run VIC. data(STEHE) forcing <- STEHE$forcing soil <- STEHE$soil veg <- STEHE$veg # Set the global options for a 7-days run. vic_params(list( date_start = "1949-01-01", date_end = "1949-01-10", step_per_day = 24, snow_step_per_day = 24, runoff_step_per_day = 24 )) # Run VIC. outputs <- vic(forcing, soil, veg) print(outputs) # Use user defind outputs and snowband parameters. vic_param('nbands', 5) band <- STEHE$snowbands out_info <- list( wb = list(timescale = 'hour', aggpar = 6, outvars = c('OUT_RUNOFF', 'OUT_BASEFLOW', 'OUT_SOIL_MOIST'), aggtypes = c('sum', 'sum', 'end')), eb = list(timescale = 'day', aggpar = 1, outvars = c('OUT_SWE', 'OUT_SOIL_TEMP'), aggtypes = c('avg', 'min')) ) outputs <- vic(forcing, soil, veg, snowband = band, output_info = out_info) print(outputs) # Example of parallelization ## Not run: library(doParallel) registerDoParallel(cores=4) outputs <- vic(forcing, soil, veg, snowband = band, parall = TRUE) stopImplicitCluster() print(outputs) ## End(Not run)
Sample datasets of the Stehekin for the running of the VIC model provided by UW Hydro
STEHE
STEHE
A list including meteorological forcing data, soil parameters, vegetation parameters, vegetation library, snowband parameters and vegetation forcing data for 16 0.25 degree gridcells. The dataset is provided by the Computational Hydrology group, Department of Civil and Environmental Engineering at the University of Washington.
This is a list containing:
10-day hourly meteorological forcing data from 1949-01-01 to 1949-01-10, including precipitation, air temperature, longwave and shortwave radiation, wind speed, vapor pressure, and air pressure.
soil parameters for 16 gridcells.
vegetation parameters for 16 gridcells.
elevation band (snow band) parameters.
vegetation library.
vegetation forcing data including LAI,
fraction of canopy, and albedo. This is generated by simply temporally
repeat the values of veglib
according to veg
.
Three-year daily runoff outputs of the
VIC model from 1949-01-01 to 1951-12-31. This is as the sample input data
of the streamflow routing model of Lohmann in the form of output table
returned by vic()
, containing two output variable:
OUT_RUNOFF
and OUT_BASEFLOW
.
Observed streamflow series to be the reference to evaluate the streamflow simulation results.
https://github.com/UW-Hydro/VIC_sample_data
This library is originated from Python package hydrate
.
veglib_IGBP
veglib_IGBP
An object of class data.table
(inherits from data.frame
) with 17 rows and 58 columns.
https://github.com/KMarkert/hydrate/blob/master/hydrate/lookups/veg_params.py
https://github.com/KMarkert/hydrate
Get or set global parameters of the VIC model.
vic_params(options) vic_param(par, val = NULL)
vic_params(options) vic_param(par, val = NULL)
options |
List object, see details |
par |
Name of the VIC global parameter. |
val |
Value of the parameter to be set. Will return the current setting value when not provided. |
The global paremteres are as follows:
Integer. Number of moisture layers used by the model. Default = 3.
Integer. Number of thermal solution nodes in the soil column.
Integer. Number of simulation time steps per day. Should be > 4 when full_energy=TRUE or frozen_soil=TRUE.
Integer. Number of time steps per day used to solve the snow model (if step_per_day > 1, this should = step_per_day)
Integer. Number of time steps per day used to solve the runoff model (should be >= step_per_day)
Integer. Year of model simulation starts.
Integer. Month of model simulation starts
Integer. Day of model simulation starts
Integer. Second of model simulation starts (e.g., start_sec = 0 means starting from the beginning of a day; start_sec = 3600 for starting from the beginning of the second hour of a day). Default = 0.
Integer. Number of time steps over which to run model. The number of records must be defined such that the model completes the last day. Either??nrecs or end_year, end_month, and end_day must be specified, but??not both.
Integer. Year of model simulation ends.
Integer. Month of model simulation ends
Integer. Day of model simulation ends
Boolean. Calendar to use. Calendar to use. Must be one of: "standard", "gregorian", "proleptic_gregorian", "noleap", "365_day", "360_day", "julian", "all_leap", "366_day."
Boolean. Units for output time variables. Units for output time variables. Should be one of "days", "hours", "minutes", "seconds". Default = days.
Boolean. Option for computing land surface temperature (soil or snowpack surface). TRUE??= compute (via iteration) the temperature that balances the surface energy budget. FALSE??= set surface temperature equal to air temperature. Default = False.
Boolean. Option for controlling links between the energy balances of the surface and the canopy. TRUE??= iterate between the canopy and surface energy balances until they are consistent. FALSE??= compute the surface and canopy energy balances separately, once per time step.?? Default = FALSE.
Boolean. Option for handling the water/ice phase change
in frozen soils. TRUE = account for water/ice phase change (including
latent heat). FALSE = soil moisture always remains liquid, even when below
0 C; no latent heat effects and ice content is always 0. Default = FALSE.
To activate this option, the user must also set the FS_ACTIVE flag to 1 in
the soil parameters (parameter soil
of vic()
) for each grid cell where
this option is desired. In other words, the user can choose for some grid
cells (e.g. cold areas) to compute ice contents and for others (e.g. warm
areas) to skip the extra computation.
Boolean. Option for computing the soil vertical temperature profile. TRUE = use the approximate method described by Liang et al. (1999) to compute soil temperatures and ground heat flux; this method ignores water/ice phase changes. FALSE = use the finite element method described in Cherkauer and Lettenmaier (1999) to compute soil temperatures and ground heat flux; this method is appropriate for accounting for water/ice phase changes. Default = FALSE (i.e. use Cherkauer and Lettenmaier, 1999) when running FROZEN_SOIL; and TRUE (i.e. use Liang et al. ,1999) in all other cases.
Boolean. If TRUE the model will use an implicit solution for the soil heat flux equation of Cherkauer and Lettenmaier (1999) (quick_flux is FALSE), otherwise uses original explicit solution. When quick_flux is TRUE the implicit solution has no effect. The user can override this option by setting implicit to FALSE in the global parameters. The implicit solution is guaranteed to be stable for all combinations of time step and thermal node spacing; the explicit solution is only stable for some combinations. If the user sets implicit to FALSE, VIC will check the time step, node spacing, and soil thermal properties to confirm stability. If the explicit solution will not be stable, VIC will exit with an error message. Default = TRUE.
Boolean. This option is a hybrid of quick_flux. If TRUE, model will use the method described by Liang et al. (1999) to compute ground heat flux during the surface energy balance iterations, and then will use the method described in Cherkauer and Lettenmaier (1999) for the final solution step. Default = FALSE.
Boolean. If TRUE model will use a no flux bottom boundary with the finite difference soil thermal solution (i.e. quick_flux = FALSE or full_energy = TRUE or frozen_soil = TRUE). Default = FALSE (i.e., use a constant temperature bottom boundary condition).
Boolean. If TRUE the model will exponentially distributes the thermal nodes in the Cherkauer and Lettenmaier (1999) finite difference algorithm, otherwise uses linear distribution. (This is only used if frozen_soil = TRUE). Default = TRUE.
Integer. Options for handling ground flux: 0 = use (flawed) formulas for ground flux, delta H, and fusion as in VIC 4.0.6 and earlier. 1 = use formulas from VIC 4.1.0. This option exists for backwards compatibility with earlier releases and likely will be removed in later releases. Default = 1.
Boolean. Options for handling failures of T iterations to converge. FALSE = if T iteration fails to converge, report an error. TRUE = if T iteration fails to converge, use the previous time step's T value. This option affects the temperatures of canopy air, canopy snow, ground snow pack, ground surface, and soil T nodes. If TFALLBACK is TRUE, VIC will report the total number of instances in which the previous step's T was used, at the end of each grid cell's simulation. In addition, a time series of when these instances occurred (averaged across all veg tile/snow band combinations) can be written to the outputs, using the following output variables: OUT_TFOL_FBFLAG = time series of T fallbacks in canopy snow T solution. OUT_TCAN_FBFLAG = time series of T fallbacks in canopy air T solution. OUT_SNOWT_FBFLAG = time series of T fallbacks in snow pack surface T solution. OUT_SURFT_FBFLAG = time series of T fallbacks in ground surface T solution. OUT_SOILT_FBFLAG = time series of T fallbacks in soil node T solution (one time series per node). Default = TRUE.
Boolean. If TRUE, then??if??the soil moisture in the layer that contains more than half of the roots is above the critical point, then the plant's roots in the drier layers can access the moisture of the wetter layer so that the plant does not experience moisture limitation. If FALSE or all of the soil layer moistures are below the critical point, transpiration in each layer is limited by the layer's soil moisture. Default: TRUE.
Integer. Option to allow spatial heterogeneity in soil temperature. 0 = Assume soil temperature is horizontally constant (only varies with depth). > 0 = Assume soil temperatures at each given depth are distributed horizontally with a uniform (linear) distribution and the value would be the number of frost sub-areas (each having a distinct temperature). In this case, even when the mean temperature is below freezing, some portion of the soil within the grid cell at that depth could potentially be above freezing. This requires specifying a frost slope value as an extra field in the soil parametes, so that the minimum/maximum temperatures can be computed from the mean value. The maximum and minimum temperatures will be set to mean temperature +/- frost_slope. Default = 0.
Boolean. Options for computing snow density. 0 = Use algorithm taken from SNTHRM model.1 = Use traditional VIC algorithm taken from Bras (1990). Default = 0.
Boolean. If TRUE, compute evaporative fluxes due to blowing snow. Default = FALSE.
Boolean. If TRUE, a variable shear stress threshold is used to determine the blowing snow flux. If FALSE, then a fixed threshold is used. See Li and Pomeroy (1997) for details. Default: TRUE.
Boolean. If TRUE, the probability of occurrence of blowing snow is calculated as a function of environmental conditions. If FALSE, then the probability is set to 1. See Lu and Pomeroy (1997) for details. Default: TRUE.
Boolean. If TRUE, the sublimation flux of blowing snow is calculated as a function vapor pressure and wind speed. If FALSE, then additional calculations are made to account for a saltation and suspension layer. See Lu and Pomeroy (1997) for details. Default: FALSE.
Boolean. This option is only used when BLOWING_SIMPLE is set to FALSE. When this option is set to TRUE, the fetch is accounted for in the calculation of the sublimation flux from blowing snow. If FALSE then the fetch is not used. See Lu and Pomeroy (1997) for details. Default: TRUE.
Boolean. If TRUE, multiple wind speed ranges, calculated according to a probability distribution, are used to determine the sublimation flux from blowing snow. If FALSE, then a single wind speed is used. See Lu and Pomeroy (1997) for details. Default: TRUE.
Integer. Options for handling above-treeline
vegetation. 0 = Do not compute treeline or replace vegetation above the
treeline. > 0 means compute the treeline elevation based on average July
temperatures; for those elevation bands with elevations above the treeline
(or the entire grid cell if nbands = 1 when the grid cell elevation is
above the tree line), if they contain vegetation tiles having overstory,
replace that vegetation with the vegetation having id that same as the
value of this parameter in the vegetation library. You must supply VIC with
a July average air temperature in the optional July_Tavg field of the soil
parameters (parameter soil
of vic()
), and set the july_tavg option to
TRUE so that VIC can read the soil parameters correctly. If lakes=TRUE,
compute_treeline must be FALSE. Default = FALSE.
Boolean. If TRUE correct precipitation for gauge undercatch. This option is not supported when using snow/elevation bands. Default = FALSE.
Boolean. Option to allow spatial heterogeneity in snow
water equivalent (yielding partial snow coverage) when the snow pack is
melting. FALSE = Assume snow water equivalent is constant across grid cell.
TRUE = Assume snow water equivalent is distributed horizontally with a
uniform (linear) distribution, so that some portion of the grid cell has 0
snow pack. This requires specifying the max_snow_distrib_slope value as an
extra field in the soil parameters (parameter soil
of vic()
).
max_snow_distrib_slope should be set to twice the desired minimum spatial
average snow pack depth [m]
. I.e., if we define depth_thresh to be the
minimum spatial average snow depth below which coverage < 1.0, then
max_snow_distrib_slope = 2*depth_thresh. Partial snow coverage is only
computed when the snow pack has started melting and the spatial average
snow pack depth <= max_snow_distrib_slope/2. During the accumulation
season, coverage is 1.0. Even after the pack has started melting and depth
<= max_snow_distrib_slope/2, new snowfall resets coverage to 1.0, and the
previous partial coverage is stored. Coverage remains at 1.0 until the new
snow has melted away, at which point the previous partial coverage is
recovered. Default = FALSE.
Integer. Options for aerodynamic resistance in snow-filled canopy. 0??= Multiply by 10 for latent heat, but do NOT multiply by 10 for sensible heat. When no snow in canopy, use surface aero_resist instead of overstory aero_resist. (As in VIC 4.0.6). 1 = Multiply by 10 for both latent and sensible heat. When no snow in canopy, use surface aero_resist instead of overstory aero_resist. 2 = Multiply by 10 for both latent and sensible heat. Always use overstory aero_resist (snow or bare). 3??= Apply stability correction, instead of multiplying by 10, for both latent and sensible heat. Always use overstory aero_resist (snow or bare).?? NOTE: this option exists for backwards compatibility with earlier releases and likely will be removed in later releases.??Default = 2.
Boolean. Options for simulating carbon cycle or not. FALSE??= do not simulate carbon cycle. TRUE??= simulate carbon cycle.??Default = FALSE.
Integer. Determines how canopy resistance is computed. 0??= VIC computes canopy resistance by applying resistance factors to the veg class's minimum canopy resistance listed in the veg library. 1??= VIC computes canopy resistance by applying resistance factors to the canopy resistance corresponding to photosynthetic demand (in the absence of moisture limitation).?? Default = 0.
Boolean. Tells VIC about the contents of the veg library. Options for VEGLIB_PHOTO: FALSE??= veg library does not contain photosynthesis parameters. TRUE = veg library contains photosynthesis parameters. Default = FALSE
Boolean. Options for handling fatal errors. FALSE??= if simulation of a grid cell encounters an error, exit VIC. TRUE??= if simulation of a grid cell encounters an error, move to next grid cell.??Default = TRUE.
Numeric. Height [m]
of wind speed measurement over bare soil
and snow cover. Wind measurement height over vegetation is now read from
the vegetation library for all types, the value in the global options only
controls the wind height over bare soil and over the snow pack when a
vegetation canopy is not defined.
Integer. Number of canopy layers in the model. Default: 3.
Integer. This option describes the form of the baseflow
parameters in the soil parameters (parameter soil
of vic()
): 0 = fields
5-8 of the soil parameters are the standard VIC baseflow parameters; 1 =
fields 5-8 of the soil parameters are the baseflow parameters from Nijssen
et al (2001) Default = 0.
Boolean. If TRUE then VIC will expect an additional column
(July_Tavg) in the soil parameters (parameter soil
of vic()
) to contain
the gridcell's average July temperature. If your soil parameters contains
this optional column, you MUST set this parameter to TRUE so that VIC can
read the soil parameters correctly. NOTE: Supplying July average
temperature is only required if the compute_treeline option is set to TRUE.
Default = FALSE.
Boolean. TRUE = the soil parameters (parameter soil
of
vic()
) contains 3*Nlayer extra columns. For each layer: the organic
fraction, and the bulk density and soil particle density of the organic
matter in the soil layer. FALSE = the soil parameters do not contain any
information about organic soil, and organic fraction should be assumed to
be 0. Default = FALSE.
Integer. Number of defined root zones defined for root distribution.
Boolean. If TRUE the vegetation parameters (parameter
veg
of vic()
) contains the columns for each vegetation type that
defines monthly albedo values for each vegetation type for each grid cell.
Default = FALSE.
Integer. This option tells VIC where to look for ALBEDO
values: 1 = Use the ALBEDO values listed in the vegetation library. 2 = Use
the ALBEDO values listed in the vegetation parameters (parameter veg
of
vic()
). Note: for this to work, vegpar_albedo must be TRUE. 3= Use the
albedo values in the parameter forcing_veg
of vic()
. For this to work,
albedo must be supplied in codeforcing_veg. Default = 1.
Boolean. If TRUE the vegetation parameters (parameter
veg
of vic()
) contains an extra line for each vegetation type that
defines monthly LAI values for each vegetation type for each gridcell.
Default = FALSE.
Boolean. This option tells VIC where to look for LAI values:
1 = Use the LAI values listed in the vegetation library. 2 = Use the LAI
values listed in the vegetation parameters (parameter veg
of vic()
).
Note: for this to work, vegpar_LAI must be TRUE. 3= Use the LAI values in
the parameter forcing_veg
of vic()
. For this to work, albedo must be
supplied in codeforcing_veg. Default = 1.
Boolean. If TRUE the vegetation library contains monthly FCANOPY values for each vegetation type for each grid cell (between the LAI and ALBEDO values). Default = FALSE.
Boolean. If TRUE the vegetation parameters (parameter
veg
of vic()
) contains an extra line for each vegetation type that
defines monthly FCANOPY values for each vegetation type for each grid cell.
Default = FALSE.
Boolean. This option tells VIC where to look for FCANOPY
values: 0 = Set FCANOPY to 1.0 for all veg classes, all times, and all
locations. 1 = Use the FCANOPY values listed in the vegetation library.
Note: for this to work, veglib_fcan must be TRUE. 2 = Use the FCANOPY
values listed in the vegetation parameters (parameter veg
of vic()
).
Note: for this to work, vegpar_fcan must be TRUE. 3= Use the FCANOPY values
in the parameter forcing_veg
of vic()
. For this to work, FCANOPY must
be supplied in codeforcing_veg Default = 0.
Integer. Maximum number of snow elevation bands to use.
Parameter snowband should be provided for the vic()
function when > 1.
Default = 1.
Boolean. Options for if simulate lakes lake parameter or not. Default = FALSE.
Boolean. Options for describing lake profile: FALSE??= VIC computes a parabolic depth-area profile for the lake basin. TRUE??= VIC reads user-specified depth-area profile from the lake parameters. Default = FALSE.
Numeric. Width of grid cells, in decimal degree latitude or longitude. Default = none, but must be set by the user to match the grid cell size if the lake model is running.
No return value. Set global options for VIC model.
Bras, R. F., 1990: Hydrology, an introduction to hydrologic science, Addison-Wesley.
Cherkauer, K. A. and D. P. Lettenmaier, 1999: Hydrologic effects of frozen soils in the upper Mississippi River basin, J. Geophys. Res., 104(D16), 19,599-19,610.
Liang, X., E. F. Wood, and D. P. Lettenmaier, 1999: Modeling ground heat flux in land surface parameterization schemes, J. Geophys. Res., 104(D8), 9581-9600.
Nijssen, B.N., R. Schnur and D.P. Lettenmaier, 2001: Global retrospective estimation of soil moisture using the Variable Infiltration Capacity land surface model, 1980-1993, J. Clim., 14(8), 1790-1808, doi:10.1175/1520-0442(2001)014<1790:GREOSM>2.0.CO;2.
Display version of VIC model and this package.
vic_version()
vic_version()
An R implementation of three-source Xinanjiang model by Renjun Zhao, used for daily streamflow simulation.
XAJ(PREC, EVAP, params, area = dt * 3.6, dt = 24, full.UH = FALSE)
XAJ(PREC, EVAP, params, area = dt * 3.6, dt = 24, full.UH = FALSE)
PREC |
Time series of precipitation (daily) |
EVAP |
Time series of pan evaporation or potential evapotranspiration
(daily), length must equal to |
params |
parameters |
area |
Basin area (km^2). |
dt |
time step (in hour) of the simulation |
full.UH |
Use the unit hydrograph defined by user, rather than the instantaneous unit hydrograph (IUH) of Nash, for routing of surface runoff. Default FALSE. |
This function returns a data frame of some common variables of the XAJ model at each time step, such as evaporation, soil moisture, surface and underground runoff.
E
: Total evaporation (mm)
EU
: Evaporation (mm) of upper soil layer
EL
: Evaporation (mm) of lower soil layer
ED
: Evaporation (mm) of deep soil layer
W
: Total soil moisture (mm)
WU
: Soil moisture (mm) of upper soil layer
WL
: Soil moisture (mm) of lower soil layer
WD
: Soil moisture (mm) of deep soil layer
R
: Total runoff (mm) of each time step
RS
: Surface runoff (mm) of each time step
RI
: Interflow (mm) of each time step
RG
: Underground runoff (mm) of each time step
Q
: Total runoff (m^3/s) at the outlet of the basin
QS
: Surface runoff (m^3/s) at the outlet of the basin
QI
: Interflow runoff (m^3/s) at the outlet of the basin
QG
: Underground runoff (m^3/s) at the outlet of the basin
Zhao and Liu, 1995. The Xinanjiang model, Computer Models of Watershed Hydrology, Water Resources Publication, Highlands Ranch, CO (1995), pp. 215-232
The lumped XAJ model has 13 parameters, including:
If full.UH = FALSE
:
The parameter params
must be a numeric vector looks like:
c(KC, IM, WUM, WLM, WDM, C, B, SM, EX, KI, KG, CI, CG, N, NK)
If full.UH = TRUE
:
when use the instantaneous unit hydrograph of Nash, or looks like:
c(KC, IM, WUM, WLM, WDM, C, B, SM, EX, KI, KG, CI, CG, UH_1, UH_2, ..., UH_n)
UH_1, UH_2, ..., UH_n means the series of the unit hydrograph.
XAJ.param.range
XAJ.param.range
An object of class data.frame
with 15 rows and 4 columns.
KC
: Ratio of potential evap to pan evap
IM
: Fraction of impermeable area
WUM
: Soil moisture capacity of upper layer
WLM
: Soil moisture capacity of lower layer
WDM
: Soil moisture capacity of deep layer
C
: Coefficient of deep evap
B
: Exponent of the soil moisture storage capacity curve
SM
: Areal mean free water capacity of the surface soil layer
EX
: Exponent of the free water capacity curve
KI
: outflow coefficients of the free water storage to interflow
KG
: outflow coefficients of the free water storage to groundwater
CI
: recession constant of the lower interflow storage
CG
: recession constant of groundwater storage.
N
: (optional) number of reservoirs in the instantaneous unit hydrograph
NK
: (optional) common storage coefficient in the instantaneous unit hydrograph
If full.UH = TRUE
: 14~end: is the full unit hydrograph defined by user.