composite calibration/evaluation criterion air · 5 20 flow [mm/d] observed simulated log scale 0.2...

1
Latest developments of the airGR rainfall-runoff modelling R-package: composite calibration/evaluation criterion and improved snow model to take into account satellite products Olivier Delaigue 1 , Guillaume Thirel 1 , Philippe Riboust 1,2 1 IRSTEA – Hydrology Research Group (HYCAR) – Antony, France 2 Conseil G´ en´ eral des Hauts-de-Seine – Nanterre, France a i r GR is a family of lumped hydrological models designed for flow simulation at various time steps. The models are freely available in an R package called airGR (Coron et al., 2017, 2019). The models can easily be implemented on a set of catchments with limited data requirements. GR hydrological models I Designed with the objective to be as efficient as possible for flow simulation at various time steps (from hourly to interannual) I Warranted complexity structures and limited data requirements I Can be applied on a wide range of conditions, including snowy catchments (CemaNeige snow routine included) Main components of the airGR package Plot diagnostics example (GR4J with CemaNeige) Pot. evaporation computation (from temp.-based formula) Optimization algorithm Calibration/Validation testing procedure Criteria for model calibration and evaluation Outputs Time series of simulated flows and internal state variables Efficiency criteria Plot diagnostics for simulation Inputs Precipitation and temperature time series Streamflow time series Catchment size and latitude Hypsometric curve (for snow module) Hydrological models GR4H (hourly) GR4J, GR5J, GR6J (daily) GR2M (monthly) GR1A (annual) Snow model CemaNeige 70 20 precip. [mm/d] solid liquid 01/1990 01/1991 01/1992 01/1993 01/1994 01/1995 01/1996 01/1997 01/1998 01/1999 -10 0 10 20 temp. [°C] mean layers 01/1990 01/1991 01/1992 01/1993 01/1994 01/1995 01/1996 01/1997 01/1998 01/1999 0 400 800 1200 snow pack [mm] mean layers 01/1990 01/1991 01/1992 01/1993 01/1994 01/1995 01/1996 01/1997 01/1998 01/1999 0 5 10 15 20 25 flow [mm/d] 01/1990 01/1991 01/1992 01/1993 01/1994 01/1995 01/1996 01/1997 01/1998 01/1999 observed simulated 150 0 Jan May Sep 0 150 30-days rolling mean precip. & flow regime [mm/month] 0 0.4 0.8 non-exceedance prob. [-] 0.2 1 5 20 flow [mm/d] observed simulated log scale 0.2 1 5 20 0.2 1 5 20 observed flow [mm/d] simulated flow [mm/d] log scale New features since EGU 2018 – airGR 1.0.5.12 vs airGR 1.2.13.16 I It is now possible to use a composite criterion to calibrate a GR model It can combine different: . error criteria (NSE, KGE, KGE’) . variables (flow, snow cover area [SCA], snow water equivalent [SWE]) . variable transformations (raw, square root, logarithm, inverse, sorted) . weights for the different variables I A version of CemaNeige including a SWE-SCA Linear Hysteresis allows to use satellite SCA for calibration (Riboust et al., 2019) . A new vignette explains how to use it Validation performance criteria distributions on SCA and flow using CemaNeige with or without the Linear Hysteresis ●● ●● ●● ●● ●● ●● Q SCA 0.0 0.5 1.0 Hyst noHyst Hyst noHyst Criterion Using a composite criterion for calibration of the Linear Hysteresis CemaNeige I Variables needed (note the need for the SCA data) ## DatesR P T E Qls Qmm SCA1 SCA2 SCA3 SCA4 SCA5 ## 1 2000-02-25 0 0.7 0.5 19046 0.721 0.228 0.678 0.865 0.935 NA ## 2 2000-02-27 0 0.1 0.4 18218 0.690 0.127 0.562 0.806 0.913 0.959 ## 3 2000-02-28 0 -1.0 0.3 18855 0.714 0.158 0.604 0.844 0.932 0.946 I Data preparation ## preparation of the InputsModel object inMod <- CreateInputsModel(FUN_MOD = "RunModel_CemaNeigeGR4J", DatesR = basinObs$DatesR, Precip = basinObs$P, PotEvap = basinObs$E, TempMean = basinObs$T, ZInputs = median(basinInfo$HypsoData), HypsoData = basinInfo$HypsoData, NLayers = 5) I Calibration options preparation (note the need for the new IsHyst argument) ## calibration period selection IndCal <- seq(which(format(basinObs$DatesR, format = "%Y-%m-%d") == "2000-09-01"), which(format(basinObs$DatesR, format = "%Y-%m-%d") == "2005-08-31")) ## preparation of the CalibOptions object optCal <- CreateCalibOptions(FUN_MOD = "RunModel_CemaNeigeGR4J", FUN_CALIB = Calibration_Michel, IsHyst = TRUE) ## preparation of the RunOptions object for the calibration period optRun <- CreateRunOptions(FUN_MOD = "RunModel_CemaNeigeGR4J", InputsModel = inMod, IndPeriod_Run = IndCal, IsHyst = TRUE) I Composite criterion preparation ## efficiency criteria: 75 % KGE'(Q) + 5 % KGE'(SCA) on each of the 5 layers inCrit <- CreateInputsCrit(FUN_CRIT = rep("ErrorCrit_KGE2", 6), InputsModel = inMod, RunOptions = optRun, Obs = basinObs[IndCal, c("Qmm", "SCA1", "SCA2", "SCA3", "SCA4", "SCA5")], VarObs = list("Q", "SCA", "SCA", "SCA", "SCA", "SCA"), Weights = list(0.75, 0.05, 0.05, 0.05, 0.05, 0.05)) I Model calibration ## calibration (GR4J with CemaNeige) outCal <- Calibration(InputsModel = inMod, RunOptions = optRun, InputsCrit = inCrit, CalibOptions = optCal, FUN_MOD = "RunModel_CemaNeigeGR4J", FUN_CALIB = Calibration_Michel) Grid-Screening in progress (0% 20% 40% 60% 80% 100%) Screening completed (6561 runs) Param = 432.681, -0.020, 83.096, 2.384, 0.002, 3.787, 15.000, 0.850 Crit. Composite = 0.8139 Steepest-descent local search in progress Calibration completed (107 iterations, 8248 runs) Param = 419.893, 0.517, 275.687, 1.345, 0.632, 3.864, 16.911, 0.472 Crit. Composite = 0.8995 Formula: sum(0.75 * KGE’[Q], 0.05 * KGE’[SCA], 0.05 * KGE’[SCA], 0.05 * KGE’[SCA], 0.05 * KGE’[SCA], 0.05 * KGE’[SCA]) airGR websites: get started with the packages or discover advanced uses I High degree of customization with airGR: . https://hydrogr.github.io/airGR/ I Simple features to learn hydrology with airGRteaching (Delaigue et al., 2018, 2019): . https://hydrogr.github.io/airGRteaching/ airGRmaps interface (G´ enot & Delaigue, 2019) to get parameter values of GR4J, GR5J or GR6J all over France Future developments I airGRmaps: parameter maps on France for GR4J, GR5J & GR6J models for ungauged bassins (Poncelet et al., submitted) available soon through a Shiny interface I airGRtools: different useful tools like event detection, statistics computations (Base Flow Index, Standardized Streamflow Index), etc. Download the airGR packages on the Comprehensive R Archive Network I airGR: https://CRAN.R-project.org/package=airGR/ I airGRteaching: https://CRAN.R-project.org/package=airGRteaching/ References I Coron L., Delaigue, O., Thirel, G., Perrin C. & Michel C. (2019). airGR: Suite of GR Hydrological Models for Precipitation-Runoff Modelling. R package version 1.2.13.16. URL: https://CRAN.R-project.org/package=airGR. I Coron, L., Thirel, G., Delaigue, O., Perrin, C. & Andr´ eassian, V. (2017). The suite of lumped GR hydrological models in an R package. Environmental Modelling & Software, 94, 166–171. DOI: 10.1016/j.envsoft.2017.05.002. I Delaigue, O., Coron, L. & Brigode, P. (2019). airGRteaching: Teaching Hydrological Modelling with the GR Rainfall-Runoff Models (‘Shiny’ Interface Included). R package version 0.2.6.14. URL: https://CRAN.R-project.org/package=airGRteaching. I Delaigue O., Thirel G., Coron L. & Brigode P. (2018). airGR and airGRteaching: Two Open-Source Tools for Rainfall-Runoff Modeling and Teaching Hydrology. In: HIC 2018. 13th International Conference on Hydroinformatics. EPiC Series in Engineering, 541–548. EasyChair. DOI: 10.29007/qsqj. I Poncelet, C., Andr´ eassian, V., & Oudin, L. (submitted). Regionalization of Hydrological Models by Group Calibration. Water Resources Research. I Riboust, P., Thirel, G., Le Moine, N. & Ribstein, P. (2019). Revisiting a simple degree-day model for integrating satellite data: implementation of SWE-SCA hystereses. Journal of Hydrology and Hydrodynamics, 1, 67, 70–81. DOI: 10.2478/johh-2018-0004. National Research Institute of Science and Technology for Environment and Agriculture HYDRO Olivier Delaigue <[email protected]> EGU General Assembly 2019 - 7-12 April 2019 - Vienna (Austria) - EGU2019-4219 | HS2.2.4 airGR Development Team <[email protected]>

Upload: others

Post on 12-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: composite calibration/evaluation criterion air · 5 20 flow [mm/d] observed simulated log scale 0.2 1 5 20 0.2 1 5 observed flow [mm/d] simulated flow [mm/d] log scale New features

Latest developments of the airGR rainfall-runoff modelling R-package:composite calibration/evaluation criterion

and improved snow model to take into account satellite products

Olivier Delaigue1, Guillaume Thirel1, Philippe Riboust1,2

1 IRSTEA – Hydrology Research Group (HYCAR) – Antony, France2 Conseil General des Hauts-de-Seine – Nanterre, France

airGR is a family of lumped hydrological models designed for flow simulation at various time steps. The models are freely available in an R package called airGR(Coron et al., 2017, 2019). The models can easily be implemented on a set of catchments with limited data requirements.

GR hydrological models

I Designed with the objective to be as efficient as possible for flow simulation at various timesteps (from hourly to interannual)

I Warranted complexity structures and limited data requirements

I Can be applied on a wide range of conditions, including snowy catchments (CemaNeigesnow routine included)

Main components of the airGR package Plot diagnostics example (GR4J with CemaNeige)

Pot. evaporation computation (from temp.-based formula)

Optimization algorithm

Calibration/Validation testing procedure

Criteria for model calibration and evaluation

Outputs • Time series of simulated flows and internal

state variables • Efficiency criteria • Plot diagnostics for simulation

Inputs • Precipitation and temperature time series • Streamflow time series • Catchment size and latitude • Hypsometric curve (for snow module)

Hydrological models • GR4H (hourly) • GR4J, GR5J, GR6J (daily) • GR2M (monthly) • GR1A (annual)

Snow model • CemaNeige

7020

prec

ip. [

mm

/d]

solidliquid

01/1990 01/1991 01/1992 01/1993 01/1994 01/1995 01/1996 01/1997 01/1998 01/1999

−10

010

20

tem

p. [°

C]

meanlayers

01/1990 01/1991 01/1992 01/1993 01/1994 01/1995 01/1996 01/1997 01/1998 01/1999

040

080

012

00

snow

pac

k [m

m] mean

layers

01/1990 01/1991 01/1992 01/1993 01/1994 01/1995 01/1996 01/1997 01/1998 01/1999

05

1015

2025

flow

[mm

/d]

01/1990 01/1991 01/1992 01/1993 01/1994 01/1995 01/1996 01/1997 01/1998 01/1999

observedsimulated

150

0

Jan May Sep

015

0

30−days rolling mean

prec

ip. &

flow

reg

ime

[mm

/mon

th]

0 0.4 0.8

non−exceedance prob. [−]

0.2

15

20

flow

[m

m/d

] observedsimulated

log scale

0.2 1 5 20

0.2

15

20

observed flow [mm/d]

sim

ulat

ed fl

ow [m

m/d

]

log scale

New features since EGU 2018 – airGR 1.0.5.12 vs airGR 1.2.13.16

I It is now possible to use a composite criterion to calibrate a GR modelIt can combine different:. error criteria (NSE, KGE, KGE’). variables (flow, snow cover area [SCA], snow water equivalent [SWE]). variable transformations (raw, square root, logarithm, inverse, sorted). weights for the different variables

I A version of CemaNeige including a SWE-SCA Linear Hysteresis allows to use satellite SCAfor calibration (Riboust et al., 2019). A new vignette explains how to use it

Validation performance criteria distributions on SCA and flow using CemaNeige with or without the Linear Hysteresis

● ● ●● ●● ● ●●● ●● ●● ●●● ●● ● ●●●

● ● ●●● ●●●●● ●● ●● ● ● ●●

●● ● ●● ●● ● ●● ● ●●

●● ●●● ●●● ●● ● ● ●● ●●●

QS

CA

0.0 0.5 1.0

Hyst

noHyst

Hyst

noHyst

Criterion

Using a composite criterion for calibration of the Linear Hysteresis CemaNeige

I Variables needed (note the need for the SCA data)

## DatesR P T E Qls Qmm SCA1 SCA2 SCA3 SCA4 SCA5

## 1 2000-02-25 0 0.7 0.5 19046 0.721 0.228 0.678 0.865 0.935 NA

## 2 2000-02-27 0 0.1 0.4 18218 0.690 0.127 0.562 0.806 0.913 0.959

## 3 2000-02-28 0 -1.0 0.3 18855 0.714 0.158 0.604 0.844 0.932 0.946

## preparation of the InputsModel object

inMod <- CreateInputsModel(FUN_MOD = "RunModel_CemaNeigeGR4J",

DatesR = basinObs$DatesR, Precip = basinObs$P,

PotEvap = basinObs$E, TempMean = basinObs$T,

ZInputs = median(basinInfo$HypsoData),

HypsoData = basinInfo$HypsoData, NLayers = 5)

## calibration period selection

IndCal <- seq(which(format(basinObs$DatesR, format = "%Y-%m-%d") == "2000-09-01"),

which(format(basinObs$DatesR, format = "%Y-%m-%d") == "2005-08-31"))

## preparation of the CalibOptions object

optCal <- CreateCalibOptions(FUN_MOD = "RunModel_CemaNeigeGR4J",

FUN_CALIB = Calibration_Michel, IsHyst = TRUE)

## preparation of the RunOptions object for the calibration period

optRun <- CreateRunOptions(FUN_MOD = "RunModel_CemaNeigeGR4J", InputsModel = inMod,

IndPeriod_Run = IndCal, IsHyst = TRUE)

## efficiency criteria: 75 % KGE'(Q) + 5 % KGE'(SCA) on each of the 5 layers

inCrit <- CreateInputsCrit(FUN_CRIT = rep("ErrorCrit_KGE2", 6),

InputsModel = inMod, RunOptions = optRun,

Obs = basinObs[IndCal, c("Qmm", "SCA1", "SCA2",

"SCA3", "SCA4", "SCA5")],

VarObs = list("Q", "SCA", "SCA", "SCA", "SCA", "SCA"),

Weights = list(0.75, 0.05, 0.05, 0.05, 0.05, 0.05))

## calibration (GR4J with CemaNeige)

outCal <- Calibration(InputsModel = inMod, RunOptions = optRun,

InputsCrit = inCrit, CalibOptions = optCal,

FUN_MOD = "RunModel_CemaNeigeGR4J",

FUN_CALIB = Calibration_Michel)

Grid-Screening in progress (0% 20% 40% 60% 80% 100%)

Screening completed (6561 runs)

Param = 432.681, -0.020, 83.096, 2.384, 0.002, 3.787, 15.000, 0.850

Crit. Composite = 0.8139

Steepest-descent local search in progress

Calibration completed (107 iterations, 8248 runs)

Param = 419.893, 0.517, 275.687, 1.345, 0.632, 3.864, 16.911, 0.472

Crit. Composite = 0.8995

Formula: sum(0.75 * KGE’[Q], 0.05 * KGE’[SCA], 0.05 * KGE’[SCA],

0.05 * KGE’[SCA], 0.05 * KGE’[SCA], 0.05 * KGE’[SCA])

1

I Data preparation

## DatesR P T E Qls Qmm SCA1 SCA2 SCA3 SCA4 SCA5

## 1 2000-02-25 0 0.7 0.5 19046 0.721 0.228 0.678 0.865 0.935 NA

## 2 2000-02-27 0 0.1 0.4 18218 0.690 0.127 0.562 0.806 0.913 0.959

## 3 2000-02-28 0 -1.0 0.3 18855 0.714 0.158 0.604 0.844 0.932 0.946

## preparation of the InputsModel object

inMod <- CreateInputsModel(FUN_MOD = "RunModel_CemaNeigeGR4J",

DatesR = basinObs$DatesR, Precip = basinObs$P,

PotEvap = basinObs$E, TempMean = basinObs$T,

ZInputs = median(basinInfo$HypsoData),

HypsoData = basinInfo$HypsoData, NLayers = 5)

## calibration period selection

IndCal <- seq(which(format(basinObs$DatesR, format = "%Y-%m-%d") == "2000-09-01"),

which(format(basinObs$DatesR, format = "%Y-%m-%d") == "2005-08-31"))

## preparation of the CalibOptions object

optCal <- CreateCalibOptions(FUN_MOD = "RunModel_CemaNeigeGR4J",

FUN_CALIB = Calibration_Michel, IsHyst = TRUE)

## preparation of the RunOptions object for the calibration period

optRun <- CreateRunOptions(FUN_MOD = "RunModel_CemaNeigeGR4J", InputsModel = inMod,

IndPeriod_Run = IndCal, IsHyst = TRUE)

## efficiency criteria: 75 % KGE'(Q) + 5 % KGE'(SCA) on each of the 5 layers

inCrit <- CreateInputsCrit(FUN_CRIT = rep("ErrorCrit_KGE2", 6),

InputsModel = inMod, RunOptions = optRun,

Obs = basinObs[IndCal, c("Qmm", "SCA1", "SCA2",

"SCA3", "SCA4", "SCA5")],

VarObs = list("Q", "SCA", "SCA", "SCA", "SCA", "SCA"),

Weights = list(0.75, 0.05, 0.05, 0.05, 0.05, 0.05))

## calibration (GR4J with CemaNeige)

outCal <- Calibration(InputsModel = inMod, RunOptions = optRun,

InputsCrit = inCrit, CalibOptions = optCal,

FUN_MOD = "RunModel_CemaNeigeGR4J",

FUN_CALIB = Calibration_Michel)

Grid-Screening in progress (0% 20% 40% 60% 80% 100%)

Screening completed (6561 runs)

Param = 432.681, -0.020, 83.096, 2.384, 0.002, 3.787, 15.000, 0.850

Crit. Composite = 0.8139

Steepest-descent local search in progress

Calibration completed (107 iterations, 8248 runs)

Param = 419.893, 0.517, 275.687, 1.345, 0.632, 3.864, 16.911, 0.472

Crit. Composite = 0.8995

Formula: sum(0.75 * KGE’[Q], 0.05 * KGE’[SCA], 0.05 * KGE’[SCA],

0.05 * KGE’[SCA], 0.05 * KGE’[SCA], 0.05 * KGE’[SCA])

1

I Calibration options preparation (note the need for the new IsHyst argument)

## DatesR P T E Qls Qmm SCA1 SCA2 SCA3 SCA4 SCA5

## 1 2000-02-25 0 0.7 0.5 19046 0.721 0.228 0.678 0.865 0.935 NA

## 2 2000-02-27 0 0.1 0.4 18218 0.690 0.127 0.562 0.806 0.913 0.959

## 3 2000-02-28 0 -1.0 0.3 18855 0.714 0.158 0.604 0.844 0.932 0.946

## preparation of the InputsModel object

inMod <- CreateInputsModel(FUN_MOD = "RunModel_CemaNeigeGR4J",

DatesR = basinObs$DatesR, Precip = basinObs$P,

PotEvap = basinObs$E, TempMean = basinObs$T,

ZInputs = median(basinInfo$HypsoData),

HypsoData = basinInfo$HypsoData, NLayers = 5)

## calibration period selection

IndCal <- seq(which(format(basinObs$DatesR, format = "%Y-%m-%d") == "2000-09-01"),

which(format(basinObs$DatesR, format = "%Y-%m-%d") == "2005-08-31"))

## preparation of the CalibOptions object

optCal <- CreateCalibOptions(FUN_MOD = "RunModel_CemaNeigeGR4J",

FUN_CALIB = Calibration_Michel, IsHyst = TRUE)

## preparation of the RunOptions object for the calibration period

optRun <- CreateRunOptions(FUN_MOD = "RunModel_CemaNeigeGR4J", InputsModel = inMod,

IndPeriod_Run = IndCal, IsHyst = TRUE)

## efficiency criteria: 75 % KGE'(Q) + 5 % KGE'(SCA) on each of the 5 layers

inCrit <- CreateInputsCrit(FUN_CRIT = rep("ErrorCrit_KGE2", 6),

InputsModel = inMod, RunOptions = optRun,

Obs = basinObs[IndCal, c("Qmm", "SCA1", "SCA2",

"SCA3", "SCA4", "SCA5")],

VarObs = list("Q", "SCA", "SCA", "SCA", "SCA", "SCA"),

Weights = list(0.75, 0.05, 0.05, 0.05, 0.05, 0.05))

## calibration (GR4J with CemaNeige)

outCal <- Calibration(InputsModel = inMod, RunOptions = optRun,

InputsCrit = inCrit, CalibOptions = optCal,

FUN_MOD = "RunModel_CemaNeigeGR4J",

FUN_CALIB = Calibration_Michel)

Grid-Screening in progress (0% 20% 40% 60% 80% 100%)

Screening completed (6561 runs)

Param = 432.681, -0.020, 83.096, 2.384, 0.002, 3.787, 15.000, 0.850

Crit. Composite = 0.8139

Steepest-descent local search in progress

Calibration completed (107 iterations, 8248 runs)

Param = 419.893, 0.517, 275.687, 1.345, 0.632, 3.864, 16.911, 0.472

Crit. Composite = 0.8995

Formula: sum(0.75 * KGE’[Q], 0.05 * KGE’[SCA], 0.05 * KGE’[SCA],

0.05 * KGE’[SCA], 0.05 * KGE’[SCA], 0.05 * KGE’[SCA])

1

I Composite criterion preparation

## DatesR P T E Qls Qmm SCA1 SCA2 SCA3 SCA4 SCA5

## 1 2000-02-25 0 0.7 0.5 19046 0.721 0.228 0.678 0.865 0.935 NA

## 2 2000-02-27 0 0.1 0.4 18218 0.690 0.127 0.562 0.806 0.913 0.959

## 3 2000-02-28 0 -1.0 0.3 18855 0.714 0.158 0.604 0.844 0.932 0.946

## preparation of the InputsModel object

inMod <- CreateInputsModel(FUN_MOD = "RunModel_CemaNeigeGR4J",

DatesR = basinObs$DatesR, Precip = basinObs$P,

PotEvap = basinObs$E, TempMean = basinObs$T,

ZInputs = median(basinInfo$HypsoData),

HypsoData = basinInfo$HypsoData, NLayers = 5)

## calibration period selection

IndCal <- seq(which(format(basinObs$DatesR, format = "%Y-%m-%d") == "2000-09-01"),

which(format(basinObs$DatesR, format = "%Y-%m-%d") == "2005-08-31"))

## preparation of the CalibOptions object

optCal <- CreateCalibOptions(FUN_MOD = "RunModel_CemaNeigeGR4J",

FUN_CALIB = Calibration_Michel, IsHyst = TRUE)

## preparation of the RunOptions object for the calibration period

optRun <- CreateRunOptions(FUN_MOD = "RunModel_CemaNeigeGR4J", InputsModel = inMod,

IndPeriod_Run = IndCal, IsHyst = TRUE)

## efficiency criteria: 75 % KGE'(Q) + 5 % KGE'(SCA) on each of the 5 layers

inCrit <- CreateInputsCrit(FUN_CRIT = rep("ErrorCrit_KGE2", 6),

InputsModel = inMod, RunOptions = optRun,

Obs = basinObs[IndCal, c("Qmm", "SCA1", "SCA2",

"SCA3", "SCA4", "SCA5")],

VarObs = list("Q", "SCA", "SCA", "SCA", "SCA", "SCA"),

Weights = list(0.75, 0.05, 0.05, 0.05, 0.05, 0.05))

## calibration (GR4J with CemaNeige)

outCal <- Calibration(InputsModel = inMod, RunOptions = optRun,

InputsCrit = inCrit, CalibOptions = optCal,

FUN_MOD = "RunModel_CemaNeigeGR4J",

FUN_CALIB = Calibration_Michel)

Grid-Screening in progress (0% 20% 40% 60% 80% 100%)

Screening completed (6561 runs)

Param = 432.681, -0.020, 83.096, 2.384, 0.002, 3.787, 15.000, 0.850

Crit. Composite = 0.8139

Steepest-descent local search in progress

Calibration completed (107 iterations, 8248 runs)

Param = 419.893, 0.517, 275.687, 1.345, 0.632, 3.864, 16.911, 0.472

Crit. Composite = 0.8995

Formula: sum(0.75 * KGE’[Q], 0.05 * KGE’[SCA], 0.05 * KGE’[SCA],

0.05 * KGE’[SCA], 0.05 * KGE’[SCA], 0.05 * KGE’[SCA])

1

I Model calibration

## DatesR P T E Qls Qmm SCA1 SCA2 SCA3 SCA4 SCA5

## 1 2000-02-25 0 0.7 0.5 19046 0.721 0.228 0.678 0.865 0.935 NA

## 2 2000-02-27 0 0.1 0.4 18218 0.690 0.127 0.562 0.806 0.913 0.959

## 3 2000-02-28 0 -1.0 0.3 18855 0.714 0.158 0.604 0.844 0.932 0.946

## preparation of the InputsModel object

inMod <- CreateInputsModel(FUN_MOD = "RunModel_CemaNeigeGR4J",

DatesR = basinObs$DatesR, Precip = basinObs$P,

PotEvap = basinObs$E, TempMean = basinObs$T,

ZInputs = median(basinInfo$HypsoData),

HypsoData = basinInfo$HypsoData, NLayers = 5)

## calibration period selection

IndCal <- seq(which(format(basinObs$DatesR, format = "%Y-%m-%d") == "2000-09-01"),

which(format(basinObs$DatesR, format = "%Y-%m-%d") == "2005-08-31"))

## preparation of the CalibOptions object

optCal <- CreateCalibOptions(FUN_MOD = "RunModel_CemaNeigeGR4J",

FUN_CALIB = Calibration_Michel, IsHyst = TRUE)

## preparation of the RunOptions object for the calibration period

optRun <- CreateRunOptions(FUN_MOD = "RunModel_CemaNeigeGR4J", InputsModel = inMod,

IndPeriod_Run = IndCal, IsHyst = TRUE)

## efficiency criteria: 75 % KGE'(Q) + 5 % KGE'(SCA) on each of the 5 layers

inCrit <- CreateInputsCrit(FUN_CRIT = rep("ErrorCrit_KGE2", 6),

InputsModel = inMod, RunOptions = optRun,

Obs = basinObs[IndCal, c("Qmm", "SCA1", "SCA2",

"SCA3", "SCA4", "SCA5")],

VarObs = list("Q", "SCA", "SCA", "SCA", "SCA", "SCA"),

Weights = list(0.75, 0.05, 0.05, 0.05, 0.05, 0.05))

## calibration (GR4J with CemaNeige)

outCal <- Calibration(InputsModel = inMod, RunOptions = optRun,

InputsCrit = inCrit, CalibOptions = optCal,

FUN_MOD = "RunModel_CemaNeigeGR4J",

FUN_CALIB = Calibration_Michel)

Grid-Screening in progress (0% 20% 40% 60% 80% 100%)

Screening completed (6561 runs)

Param = 432.681, -0.020, 83.096, 2.384, 0.002, 3.787, 15.000, 0.850

Crit. Composite = 0.8139

Steepest-descent local search in progress

Calibration completed (107 iterations, 8248 runs)

Param = 419.893, 0.517, 275.687, 1.345, 0.632, 3.864, 16.911, 0.472

Crit. Composite = 0.8995

Formula: sum(0.75 * KGE’[Q], 0.05 * KGE’[SCA], 0.05 * KGE’[SCA],

0.05 * KGE’[SCA], 0.05 * KGE’[SCA], 0.05 * KGE’[SCA])

1airGR websites: get started with the packages or discover advanced uses

I High degree of customization with airGR:. https://hydrogr.github.io/airGR/

I Simple features to learn hydrology with airGRteaching (Delaigue et al., 2018, 2019):. https://hydrogr.github.io/airGRteaching/

airGRmaps interface (Genot & Delaigue, 2019) to get parameter values of GR4J, GR5J or GR6J all over France

Future developments

I airGRmaps: parameter maps on France for GR4J, GR5J & GR6J models for ungaugedbassins (Poncelet et al., submitted) available soon through a Shiny interface

I airGRtools: different useful tools like event detection, statistics computations (Base FlowIndex, Standardized Streamflow Index), etc.

Download the airGR packages on the Comprehensive R Archive Network

I airGR: https://CRAN.R-project.org/package=airGR/

I airGRteaching: https://CRAN.R-project.org/package=airGRteaching/

References

I Coron L., Delaigue, O., Thirel, G., Perrin C. & Michel C. (2019). airGR: Suite of GR Hydrological Models forPrecipitation-Runoff Modelling. R package version 1.2.13.16.URL: https://CRAN.R-project.org/package=airGR.

I Coron, L., Thirel, G., Delaigue, O., Perrin, C. & Andreassian, V. (2017). The suite of lumped GRhydrological models in an R package. Environmental Modelling & Software, 94, 166–171.DOI: 10.1016/j.envsoft.2017.05.002.

I Delaigue, O., Coron, L. & Brigode, P. (2019). airGRteaching: Teaching Hydrological Modelling with the GRRainfall-Runoff Models (‘Shiny’ Interface Included). R package version 0.2.6.14.URL: https://CRAN.R-project.org/package=airGRteaching.

I Delaigue O., Thirel G., Coron L. & Brigode P. (2018). airGR and airGRteaching: Two Open-Source Tools forRainfall-Runoff Modeling and Teaching Hydrology. In: HIC 2018. 13th International Conference onHydroinformatics. EPiC Series in Engineering, 541–548. EasyChair. DOI: 10.29007/qsqj.

I Poncelet, C., Andreassian, V., & Oudin, L. (submitted). Regionalization of Hydrological Models by GroupCalibration. Water Resources Research.

I Riboust, P., Thirel, G., Le Moine, N. & Ribstein, P. (2019). Revisiting a simple degree-day model forintegrating satellite data: implementation of SWE-SCA hystereses. Journal of Hydrology andHydrodynamics, 1, 67, 70–81. DOI: 10.2478/johh-2018-0004.

National Research Instituteof Science and Technology

for Environment and Agriculture HYDRO

Olivier Delaigue <[email protected]> EGU General Assembly 2019 - 7-12 April 2019 - Vienna (Austria) - EGU2019-4219 | HS2.2.4 airGR Development Team <[email protected]>