#> Loading required package: airGR
#> Attaching package: 'airGRiwrm'
#> The following objects are masked from 'package:airGR':
#>     Calibration, CreateCalibOptions, CreateInputsCrit,
#>     CreateInputsModel, CreateRunOptions, RunModel

This vignette aims at showing an example of flow naturalization by modeling (Terrier et al. 2020).

By using the model calibrated with influenced flows on the Marne River, it is now possible to model naturalized flows by dropping the connections to the Marne reservoir from the model. Please note that this is not the only way to remove the influence of reservoirs.

Set the data

We first load the naturalized data and influenced flow calibrated parameters (for GR4J, see vignette("V05_Open-loop_influenced_flow_calibration", package = "airGRiwrm")):

# Input data for the model
# Calibration in influenced flows

We must remove the lag parameter in the STDIZ_04 station because there is no longer upstream node on it since we remove the only upstream element for this station, a reservoir uptake:

Param6 <- Param5
Param6$STDIZ_04 <- Param6$STDIZ_04[-1]

We remove extra items from a complete configuration to keep only the Marne system:

selectedNodes <- c("STDIZ_04", "LOUVE_19", "VITRY_25", "CHALO_21", "MONTR_18", "NOISI_17")
griwrm4 <- griwrm[griwrm$id %in% selectedNodes,]
griwrm4[griwrm4$id == "NOISI_17", c("down", "length")] = NA # Downstream station instead of PARIS_05

We can now generate the new GRiwrmInputsModel object:

InputsModel4 <- CreateInputsModel(griwrm4,
                                  Precip[, selectedNodes],
                                  PotEvap[, selectedNodes])
#> CreateInputsModel.GRiwrm: Treating sub-basin STDIZ_04...
#> CreateInputsModel.GRiwrm: Treating sub-basin MONTR_18...
#> CreateInputsModel.GRiwrm: Treating sub-basin LOUVE_19...
#> CreateInputsModel.GRiwrm: Treating sub-basin VITRY_25...
#> CreateInputsModel.GRiwrm: Treating sub-basin CHALO_21...
#> CreateInputsModel.GRiwrm: Treating sub-basin NOISI_17...

GriwmRunOptions object

We first define the run period:

IndPeriod_Run <- seq(366, length(DatesR)) # Until the end of the time series

We define the (optional but recommended) warm up period as a one-year period before the run period:

IndPeriod_WarmUp <- seq(1, IndPeriod_Run[1] - 1)
RunOptions <- CreateRunOptions(
  IndPeriod_WarmUp = IndPeriod_WarmUp,
  IndPeriod_Run = IndPeriod_Run

Run model with Michel calibration

We keep the optimized parameter values obtained in vignette("V05_Open-loop_influenced_flow_calibration", package = "airGRiwrm") and run the model:

OutputsModels4 <- RunModel(
  RunOptions = RunOptions,
  Param = Param6
#> RunModel.GRiwrmInputsModel: Treating sub-basin STDIZ_04...
#> RunModel.GRiwrmInputsModel: Treating sub-basin MONTR_18...
#> RunModel.GRiwrmInputsModel: Treating sub-basin LOUVE_19...
#> RunModel.GRiwrmInputsModel: Treating sub-basin VITRY_25...
#> RunModel.GRiwrmInputsModel: Treating sub-basin CHALO_21...
#> RunModel.GRiwrmInputsModel: Treating sub-basin NOISI_17...

Compare simulated naturalized flow with the ones given by EPTB SGL

We can finally compare the simulated naturalized flow with the ones given by Hydratec (2011):

plot(OutputsModels4, Qobs = Qnat[IndPeriod_Run,])


Hydratec. 2011. “Actualisation de La Base de Données Des Débits Journaliers ‘Naturalisés’ - Phase 2.” 26895 - LME/TL.
Terrier, Morgane, Charles Perrin, Alban de Lavenne, Vazken Andréassian, Julien Lerat, and Jai Vaze. 2020. “Streamflow Naturalization Methods: A Review.” Hydrological Sciences Journal, November, 1–25.