RunModel_CemaNeigeGR6J {airGR} | R Documentation

## Run with the CemaNeigeGR6J hydrological model

### Description

Function which performs a single run for the CemaNeige-GR6J daily lumped model.

### Usage

    RunModel_CemaNeigeGR6J(InputsModel, RunOptions, Param)

### Arguments

`InputsModel` | [object of class InputsModel] see `CreateInputsModel` for details
`RunOptions` | [object of class RunOptions] see `CreateRunOptions` for details

`Param`

[numeric] vector of 8 (or 10 parameters if `IsHyst = TRUE`, see `CreateRunOptions` for details)

GR6J X1 | production store capacity [mm]
GR6J X2 | intercatchment exchange coefficient [mm/d]
GR6J X3 | routing store capacity [mm]
GR6J X4 | unit hydrograph time constant [d]
GR6J X5 | intercatchment exchange threshold [-]
GR6J X6 | coefficient for emptying exponential store [mm]
CemaNeige X1 | weighting coefficient for snow pack thermal state [-]
CemaNeige X2 | degree-day melt coefficient [mm/°C/d]
CemaNeige X3 | (optional) accumulation threshold [mm] (needed if `IsHyst = TRUE`)
CemaNeige X4 | (optional) percentage (between 0 and 1) of annual snowfall defining the melt threshold [-] (needed if `IsHyst = TRUE`)

### Details

The choice of the CemaNeige version is explained in `CreateRunOptions`.
For further details on the model, see the references section.
For further details on the argument structures and initialisation options, see `CreateRunOptions`.

### Value

[list] list containing the function outputs organised as follows:

$DatesR | [POSIXlt] series of dates
$PotEvap | [numeric] series of input potential evapotranspiration [mm/d]
$Precip | [numeric] series of input total precipitation [mm/d]
$Prod | [numeric] series of production store level [mm]
$Pn | [numeric] series of net rainfall [mm/d]
$Ps | [numeric] series of the part of Ps filling the production store [mm/d]
$AE | [numeric] series of actual evapotranspiration [mm/d]
$Perc | [numeric] series of percolation (PERC) [mm/d]
$PR | [numeric] series of PR=PN-PS+PERC [mm/d]
$Q9 | [numeric] series of UH1 outflow (Q9) [mm/d]
$Q1 | [numeric] series of UH2 outflow (Q1) [mm/d]
$Rout | [numeric] series of routing store level [mm]
$Exch | [numeric] series of potential semi-exchange between catchments [mm/d]
$AExch1 | [numeric] series of actual exchange between catchments for branch 1 [mm/d]
$AExch2 | [numeric] series of actual exchange between catchments for branch 2 [mm/d]
$AExch | [numeric] series of actual exchange between catchments (1+2) [mm/d]
$QR | [numeric] series of routing store outflow (QR) [mm/d]
$QRExp | [numeric] series of exponential store outflow (QRExp) [mm/d]
$Exp | [numeric] series of exponential store level (negative) [mm]
$QD | [numeric] series of direct flow from UH2 after exchange (QD) [mm/d]
$Qsim | [numeric] series of Qsim [mm/d]
$CemaNeigeLayers | [list] list of CemaNeige outputs (1 list per layer)
$CemaNeigeLayers[[iLayer]]$Pliq | [numeric] series of liquid precip. [mm/d]
$CemaNeigeLayers[[iLayer]]$Psol | [numeric] series of solid precip. [mm/d]
$CemaNeigeLayers[[iLayer]]$SnowPack | [numeric] series of snow pack [mm]
$CemaNeigeLayers[[iLayer]]$ThermalState | [numeric] series of snow pack thermal state [°C]
$CemaNeigeLayers[[iLayer]]$Gratio | [numeric] series of Gratio [0-1]
$CemaNeigeLayers[[iLayer]]$PotMelt | [numeric] series of potential snow melt [mm/d]
$CemaNeigeLayers[[iLayer]]$Melt | [numeric] series of actual snow melt [mm/d]
$CemaNeigeLayers[[iLayer]]$PliqAndMelt | [numeric] series of liquid precip. + actual snow melt [mm/d]
$CemaNeigeLayers[[iLayer]]$Temp | [numeric] series of air temperature [°C]
$CemaNeigeLayers[[iLayer]]$Gthreshold | [numeric] series of melt threshold [mm]
$CemaNeigeLayers[[iLayer]]$Glocalmax | [numeric] series of local melt threshold for hysteresis [mm]
$StateEnd | [numeric] states at the end of the run:
| store & unit hydrographs levels [mm], CemaNeige states [mm & °C],
| see `CreateIniStates` for more details

(refer to the provided references or to the package source code for further details on these model outputs)

### Author(s)

Laurent Coron, Audrey Valéry, Claude Michel, Charles Perrin, Raji Pushpalatha, Nicolas Le Moine, Vazken Andréassian, Olivier Delaigue

### References

Pushpalatha, R., C. Perrin, N. Le Moine, T. Mathevet and V. Andréassian (2011). A downward structural sensitivity analysis of hydrological models to improve low-flow simulation. Journal of Hydrology, 411(1-2), 66-76. doi:10.1016/j.jhydrol.2011.09.034.
Riboust, P., G. Thirel, N. Le Moine and P. Ribstein (2019). Revisiting a simple degree-day model for integrating satellite data: implementation of SWE-SCA hystereses. Journal of Hydrology and Hydromechanics. doi:10.2478/johh-2018-0004, 67, 1, 70–81.
Valéry, A., V. Andréassian and C. Perrin (2014). "As simple as possible but not simpler": what is useful in a temperature-based snow-accounting routine? Part 1 - Comparison of six snow accounting routines on 380 catchments. Journal of Hydrology. doi:10.1016/j.jhydrol.2014.04.059.
Valéry, A., V. Andréassian and C. Perrin (2014). * "As simple as possible but not simpler": What is useful in a temperature-based snow-accounting routine? Part 2 - Sensitivity analysis of the Cemaneige snow accounting routine on 380 catchments. Journal of Hydrology. doi:10.1016/j.jhydrol.2014.04.058.

### See Also

`RunModel_CemaNeige`, `RunModel_CemaNeigeGR4J`, `RunModel_CemaNeigeGR5J`, `RunModel_GR6J`, `CreateInputsModel`, `CreateRunOptions`.

### Examples

    library(airGR)

    ## loading catchment data
    data(L0123002)

    ## preparation of the InputsModel object
    InputsModel <- CreateInputsModel(FUN_MOD = RunModel_CemaNeigeGR6J, DatesR = BasinObs$DatesR,
                                     Precip = BasinObs$P, PotEvap = BasinObs$E, TempMean = BasinObs$T,
                                     ZInputs = median(BasinInfo$HypsoData),
                                     HypsoData = BasinInfo$HypsoData, NLayers = 5)

    ## run 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"))

    ## ---- original version of CemaNeige

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

    ## simulation
    Param <- c(X1 = 116.482, X2 = 0.500, X3 = 72.733, X4 = 1.224, X5 = 0.278, X6 = 30.333,
               CNX1 = 0.977, CNX2 = 2.776)
    OutputsModel <- RunModel_CemaNeigeGR6J(InputsModel = InputsModel,
                                           RunOptions = RunOptions, Param = Param)

    ## 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)

    ## ---- version of CemaNeige with the Linear Hysteresis

    ## preparation of the RunOptions object
    RunOptions <- CreateRunOptions(FUN_MOD = RunModel_CemaNeigeGR6J, InputsModel = InputsModel,
                                   IndPeriod_Run = Ind_Run, IsHyst = TRUE)

    ## simulation
    Param <- c(X1 = 116.482, X2 = 0.500, X3 = 72.733, X4 = 1.224, X5 = 0.278, X6 = 30.333,
               CNX1 = 0.977, CNX2 = 2.774, CNX3 = 100, CNX4 = 0.4)
    OutputsModel <- RunModel_CemaNeigeGR6J(InputsModel = InputsModel,
                                           RunOptions = RunOptions, Param = Param)

    ## 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)

[Package airGR version 1.3.2.23 Index]