Learn R Programming

airGR (version 1.7.8)

CreateCalibOptions: Creation of the CalibOptions object required but the Calibration* functions

Description

Creation of the CalibOptions object required by the Calibration* functions.

Usage

CreateCalibOptions(FUN_MOD, FUN_CALIB = Calibration_Michel,
                   FUN_TRANSFO = NULL,
                   IsHyst = FALSE, IsIntStore = FALSE, IsSD = FALSE,
                   FixedParam = NULL,
                   SearchRanges = NULL, StartParamList = NULL,
                   StartParamDistrib = NULL)

Value

[list] object of class CalibOptions containing the data required to evaluate the model outputs; it can include the following:

$FixedParam [numeric] vector giving the values to allocate to non-optimised parameter values
$SearchRanges [numeric] matrix giving the ranges of raw parameters
$StartParamList [numeric] matrix of parameter sets used for grid-screening calibration procedure
$StartParamDistrib[numeric] matrix of parameter values used for grid-screening calibration procedure

Arguments

FUN_MOD

[function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)

FUN_CALIB

(optional) [function] calibration algorithm function (e.g. Calibration_Michel), default = Calibration_Michel

FUN_TRANSFO

(optional) [function] model parameters transformation function, if the FUN_MOD used is native in the package, FUN_TRANSFO is automatically defined

IsHyst

[boolean] boolean indicating if the hysteresis version of CemaNeige is used. See details

IsIntStore

[boolean] boolean indicating if the interception store is used with GR5H. See RunModel_GR5H

IsSD

[boolean] boolean indicating if the semi-distributed lag model is used. See details

FixedParam

(optional) [numeric] vector giving the values set for the non-optimised parameter values (n values, one per parameter)
Example:

NANA3.34...NA

SearchRanges

((optional) [numeric] matrix giving the maximal ranges of real parameters (dimensions: one column per parameter; 2 rows, 1st row = minima, 2nd row = maxima)
Example:

[X1][X2][X3][...][Xi]
[1,]0-10...0.0
[2,]3000+1100...3.0

StartParamList

(optional) [numeric] matrix of parameter sets used for grid-screening calibration procedure (dimensions: one column per parameter; number of rows = number of parameter sets to be tested). Each parameter set, i.e. each row, will be tested
Example:

[X1][X2][X3][...][Xi]
[set1]800-0.725...1.0
[set2]1000-0.522...1.1
[...]...............
[set n]200-0.317...1.0

StartParamDistrib

(optional) [numeric] matrix of parameter values used for grid-screening calibration procedure (dimensions: one column per parameter; number of rows corresponding to the number of parameter values you want to test). Each combination of values will be tested
Example:

[X1][X2][X3][...][Xi]
[value1]800-0.725...1.0
[value2]1000NA50...1.2
[value3]1200NANA...1.6

Author

Laurent Coron, Olivier Delaigue, Guillaume Thirel, David Dorchies

Details

Users wanting to use FUN_MOD, FUN_CALIB or FUN_TRANSFO functions that are not included in the package must create their own CalibOptions object accordingly.

## --- CemaNeige version

If IsHyst = FALSE, the original CemaNeige version from Valéry et al. (2014) is used.
If IsHyst = TRUE, the CemaNeige version from Riboust et al. (2019) is used. Compared to the original version, this version of CemaNeige needs two more parameters and it includes a representation of the hysteretic relationship between the Snow Cover Area (SCA) and the Snow Water Equivalent (SWE) in the catchment. The hysteresis included in airGR is the Modified Linear hysteresis (LH*); it is represented on panel b) of Fig. 3 in Riboust et al. (2019). Riboust et al. (2019) advise to use the LH* version of CemaNeige with parameters calibrated using an objective function combining 75 % of KGE calculated on discharge simulated from a rainfall-runoff model compared to observed discharge and 5 % of KGE calculated on SCA on 5 CemaNeige elevation bands compared to satellite (e.g. MODIS) SCA (see Eq. (18), Table 3 and Fig. 6). Riboust et al. (2019)'s tests were realized with GR4J as the chosen rainfall-runoff model.

## --- Semi-distributed mode

If InputsModel parameter has been created for using a semi-distributed (SD) model (See CreateInputsModel), the parameter IsSD should be set to TRUE.

See Also

Calibration, RunModel

Examples

Run this code
library(airGR)

## loading catchment data
data(L0123001)

## preparation of InputsModel object
InputsModel <- CreateInputsModel(FUN_MOD = RunModel_GR4J, DatesR = BasinObs$DatesR,
                                 Precip = BasinObs$P, PotEvap = BasinObs$E)

## calibration period selection
Ind_Run <- seq(which(format(BasinObs$DatesR, format = "%Y-%m-%d")=="1990-01-01"),
               which(format(BasinObs$DatesR, format = "%Y-%m-%d")=="1999-12-31"))

## preparation of RunOptions object
RunOptions <- CreateRunOptions(FUN_MOD = RunModel_GR4J,
                               InputsModel = InputsModel, IndPeriod_Run = Ind_Run)

## calibration criterion: preparation of the InputsCrit object
InputsCrit <- CreateInputsCrit(FUN_CRIT = ErrorCrit_NSE, InputsModel = InputsModel,
                               RunOptions = RunOptions, Obs = BasinObs$Qmm[Ind_Run])

## preparation of CalibOptions object
CalibOptions <- CreateCalibOptions(FUN_MOD = RunModel_GR4J, FUN_CALIB = Calibration_Michel)

## calibration
OutputsCalib <- Calibration(InputsModel = InputsModel, RunOptions = RunOptions,
                            InputsCrit = InputsCrit, CalibOptions = CalibOptions,
                            FUN_MOD = RunModel_GR4J,
                            FUN_CALIB = Calibration_Michel)

## simulation
Param <- OutputsCalib$ParamFinalR
OutputsModel <- RunModel(InputsModel = InputsModel, RunOptions = RunOptions,
                         Param = Param, FUN = RunModel_GR4J)

## results preview
plot(OutputsModel, Qobs = BasinObs$Qmm[Ind_Run])

## efficiency criterion: Nash-Sutcliffe Efficiency
InputsCrit  <- CreateInputsCrit(FUN_CRIT = ErrorCrit_NSE, InputsModel = InputsModel,
                                RunOptions = RunOptions, Obs = BasinObs$Qmm[Ind_Run])
OutputsCrit <- ErrorCrit_NSE(InputsCrit = InputsCrit, OutputsModel = OutputsModel)

## efficiency criterion: Kling-Gupta Efficiency
InputsCrit  <- CreateInputsCrit(FUN_CRIT = ErrorCrit_KGE, InputsModel = InputsModel,
                                RunOptions = RunOptions, Obs = BasinObs$Qmm[Ind_Run])
OutputsCrit <- ErrorCrit_KGE(InputsCrit = InputsCrit, OutputsModel = OutputsModel)

Run the code above in your browser using DataLab