diff --git a/DESCRIPTION b/DESCRIPTION index 1fcb69b375d87d1330a0b957e722f85dbfdf0a2f..a9f6ef5658fce1ab1865c1be850c47482000eff9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Package: airGR Type: Package Title: Suite of GR Hydrological Models for Precipitation-Runoff Modelling -Version: 1.2.13.4 -Date: 2019-04-01 +Version: 1.2.13.5 +Date: 2019-04-02 Authors@R: c( person("Laurent", "Coron", role = c("aut", "trl"), comment = c(ORCID = "0000-0002-1503-6204")), person("Olivier", "Delaigue", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-7668-8468"), email = "airGR@irstea.fr"), diff --git a/NEWS.rmd b/NEWS.rmd index 3794f1d6a1fc9fad4fa3550e3d239627df9b965d..115862c0ba306d9f024d5cdd156cbd78164617d9 100644 --- a/NEWS.rmd +++ b/NEWS.rmd @@ -13,7 +13,7 @@ output: -### 1.2.13.4 Release Notes (2019-04-01) +### 1.2.13.5 Release Notes (2019-04-02) diff --git a/airGR.Rproj b/airGR.Rproj index 21a4da087e1c026c953a49de88caea1247cd1f1b..b1ded457422a5fb84fd0f19adb554b7b06a2a6a5 100644 --- a/airGR.Rproj +++ b/airGR.Rproj @@ -9,7 +9,7 @@ UseSpacesForTab: Yes NumSpacesForTab: 2 Encoding: UTF-8 -RnwWeave: Sweave +RnwWeave: knitr LaTeX: pdfLaTeX BuildType: Package diff --git a/vignettes/V04_cemaneige_hysteresis.Rmd b/vignettes/V04_cemaneige_hysteresis.Rmd index 432382bca81e02b52252214baac1ed86c1fc9f1b..f8403c28d4bac8826d48c87e911ccdf91ec6dfd0 100644 --- a/vignettes/V04_cemaneige_hysteresis.Rmd +++ b/vignettes/V04_cemaneige_hysteresis.Rmd @@ -1,5 +1,5 @@ --- -title: "Using satellite snow data for calibrating an improved version of CemaNeige" +title: "Using satellite snow cover area data for calibrating and improving CemaNeige" bibliography: V00_airgr_ref.bib output: rmarkdown::html_vignette vignette: > @@ -9,7 +9,7 @@ vignette: > --- -```{r, echo=FALSE} +```{r, warning=FALSE, include=FALSE} library(airGR) ``` @@ -18,16 +18,16 @@ library(airGR) ## Scope -Rainfall-runoff models that include a snow accumulation and melt module are still often calibrated using only discharge observations. +Rainfall-runoff models that include a snow accumulation and melt module are still often calibrated using only discharge observations. This can result in poor snow modeling as the swnow module parameters can distorted in order to allow skilful discharge simulation. -After the work of @riboust_revisiting_2019, we propose now in **airGR** an improved version of the degree-day CemaNeige snow and accumulation module. This new version is based on a more accurate representation of the relationship that exists at the basin scale between the Snow Water Equivalent (SWE) and the Snow Cover Area (SCA). To do so, a linear SWE-SCA hysteresis, which represents the fact that snow accumulation is rather homogeneous and snow melt is more heterogeneous, was implemented. +After the work of @riboust_revisiting_2019, we propose now in **airGR** an improved version of the degree-day CemaNeige snow and accumulation module. This new version is based on a more accurate representation of the relationship that exists at the basin scale between the Snow Water Equivalent (SWE) and the Snow Cover Area (SCA). To do so, a linear SWE-SCA hysteresis, which represents the fact that snow accumulation is rather homogeneous on the basin and snow melt is more heterogeneous, was implemented. -This new CemaNeige version presents two more parameters to calibrate. It also presents the advantage of allowing using satellite snow data to constrain the calibration in addition to discharge. -@riboust_revisiting_2019 show that while the simulated discharge is not significantly improved, the snow simulation is much improved. In addition, they show that the model is more robust (i.e. transferable) in terms of discharge, which has many implications for climate change impact studies. +This new CemaNeige version has two more parameters to calibrate. It also presents the advantage of allowing using satellite snow data to constrain the calibration in addition to discharge. +@riboust_revisiting_2019 show that while the simulated discharge is not significantly improved, the snow simulation is much improved. In addition, they show that the model is more robust (i.e. transferable in time) in terms of discharge, which has many implications for climate change impact studies. The configuration that was identified as optimal by @riboust_revisiting_2019 includes a CemaNeige module run on 5 elevation bands and an objective function determine by a composite function of KGE' calculated on discharge (75 % weight) and KGE' calculated on each elevation band (5 % for each). -In this page, we show how to use and calibrate this new CameNeige version. +In this page, we show how to use and calibrate this new CemaNeige version. ## Data preparation @@ -46,7 +46,7 @@ summary(BasinObs) We assume that the R global environment contains data and functions from the [Get Started](V01_get_started.html) vignette. -The calibration period has been defined from 2000-09-01 to 2005-08-31, and the validation period from 2005-09-01 to 2010-07-31. +The calibration period has been defined from 2000-09-01 to 2005-08-31, and the validation period from 2005-09-01 to 2010-07-31. CemaNeige will be used in coupling with GR4J in this vignette. ```{r, warning=FALSE} @@ -59,12 +59,12 @@ InputsModel <- CreateInputsModel(FUN_MOD = RunModel_CemaNeigeGR4J, ## ---- calibration step -## short calibration period selection (< 6 months) +## calibration period selection Ind_Cal <- seq(which(format(BasinObs$DatesR, format = "%Y-%m-%d") == "2000-09-01"), which(format(BasinObs$DatesR, format = "%Y-%m-%d") == "2005-08-31")) -# ---- validation step +## ---- validation step ## validation period selection Ind_Val <- seq(which(format(BasinObs$DatesR, format = "%Y-%m-%d") == "2005-09-01"), @@ -75,7 +75,7 @@ Ind_Val <- seq(which(format(BasinObs$DatesR, format = "%Y-%m-%d") == "2005-09-01 # Calibration and evaluation of the new CemaNeige module -In order to use the hysteresis, a new argument (`IsHyst`) is added in the `CreateRunOptions()` and `CreateCalibOptions()` functions and has to be set to `TRUE`. +In order to use the Linear Hysteresis, a new argument (`IsHyst`) is added in the `CreateRunOptions()` and `CreateCalibOptions()` functions and has to be set to `TRUE`. ```{r, warning=FALSE} ## preparation of the RunOptions object for the calibration period @@ -94,7 +94,7 @@ CalibOptions <- CreateCalibOptions(FUN_MOD = RunModel_CemaNeigeGR4J, IsHyst = TRUE) ``` -In order to calibrate and assess the model performance, we will follow the recommendations of @riboust_revisiting_2019. This is now possible in **airGR** with the added functionality that permits calculated composite criteria by combining different metrics. +In order to calibrate and assess the model performance, we will follow the recommendations of @riboust_revisiting_2019. This is now possible in **airGR** with the added functionality that permits calculating composite criteria by combining different metrics. ```{r, warning=FALSE} @@ -133,7 +133,7 @@ OutputsCalib <- Calibration(InputsModel = InputsModel, RunOptions = RunOptions_C ``` -Now we can run it on the calibration periods and assess it. +Now we can run it on the calibration period and assess it. ```{r, warning=FALSE, message=FALSE} ## run on the calibration period @@ -152,9 +152,9 @@ Find below the performance of the model over the calibration period. str(OutputsCrit_Cal, max.level = 2) ``` -Now we can run it on the validation periods and assess it. +Now we can run the model on the validation period and assess it. -```{r, warning=FALSE} +```{r, warning=FALSE, message=FALSE} ## run on the validation period OutputsModel_Val <- RunModel_CemaNeigeGR4J(InputsModel = InputsModel, RunOptions = RunOptions_Val, @@ -174,7 +174,7 @@ str(OutputsCrit_Val, max.level = 2) # Comparison with the performance of the initial CemaNeige version -Here we use the same InputsModel object and calibration and validation periods. However, we have to redefine the way we run the model (`RunOptions` argument), calibrate and assess it (`InputsCrit` argument). The objective function is only based on KGE'(Q). +Here we use the same InputsModel object and calibration and validation periods. However, we have to redefine the way we run the model (`RunOptions` argument), calibrate and assess it (`InputsCrit` argument). The objective function is only based on KGE'(Q). Note how we set the `IsHyst` argument to `FALSE` in the `CreateRunOptions()` and the `CreateCalibOptions()` functions. ```{r, warning=FALSE} ## preparation of RunOptions object @@ -199,7 +199,7 @@ CalibOptions_NoHyst <- CreateCalibOptions(FUN_MOD = RunModel_CemaNeigeGR4J, IsHyst = FALSE) ``` -We can now calibrate it. +We can now calibrate the model. ```{r, warning=FALSE} ## calibration @@ -238,8 +238,8 @@ str(OutputsCrit_Cal_NoHyst, max.level = 2) str(OutputsCrit_Val_NoHyst, max.level = 2) ``` -We can see below that the performance of the initial model is similar to the new one over the calibration period in terms of discharge, but also that the new version calibrated using SCA provides better performance in terms of snow. -However, over the validation period, we see that the discharge simulated by the new version brings better performance (in addition to improved SCA also). This shows the interests of the combined use of an hysteresis and of SCA data for calibration in CemaNeige. +We can see above that the performance of the initial model is slightly better than the new one over the calibration period in terms of discharge, but also that the new version calibrated using SCA provides better performance in terms of snow. +However, over the validation period, we see that the discharge simulated by the new version brings better performance (in addition to improved SCA also). This shows the interests of the combined use of a linear hysteresis and of SCA data for calibration in CemaNeige.