RunModel_CemaNeige {airGR} | R Documentation

## Run with the CemaNeige snow module

### Description

Function which performs a single run for the CemaNeige snow module at the daily or hourly time step.

### Usage

    RunModel_CemaNeige(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 2 (or 4 parameters if `IsHyst = TRUE`, see `CreateRunOptions` for details)

CemaNeige X1 | weighting coefficient for snow pack thermal state [-]
CemaNeige X2 | degree-day melt coefficient [mm/°C/time step]
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 (i.e. with or without hysteresis) 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
$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: 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, Olivier Delaigue

### References

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_CemaNeigeGR4J`, `CreateInputsModel`, `CreateRunOptions`, `CreateIniStates`, `CreateCalibOptions`.

### Examples

    library(airGR)

    ## load of catchment data
    data(L0123002)

    ## preparation of the InputsModel object
    InputsModel <- CreateInputsModel(FUN_MOD = RunModel_CemaNeige, DatesR = BasinObs$DatesR,
                                     Precip = BasinObs$P,TempMean = BasinObs$T,
                                     ZInputs = BasinInfo$HypsoData[51], 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_CemaNeige, InputsModel = InputsModel,
                                   IndPeriod_Run = Ind_Run)

    ## simulation
    Param <- c(CNX1 = 0.962, CNX2 = 2.249)
    OutputsModel <- RunModel_CemaNeige(InputsModel = InputsModel,
                                       RunOptions = RunOptions, Param = Param)

    ## results preview
    plot(OutputsModel)

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

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

    ## simulation
    Param <- c(CNX1 = 0.962, CNX2 = 2.249, CNX3 = 100, CNX4 = 0.4)
    OutputsModel <- RunModel_CemaNeige(InputsModel = InputsModel,
                                       RunOptions = RunOptions, Param = Param)

    ## results preview
    plot(OutputsModel)

[Package airGR version 1.3.2.23 Index]