The example below is inspired by the semi-distributed model developed in the ClimAware project (Theobald et al. 2014).

Semi-distributive network description

The model is distributed according to the gauging stations described in Dorchies et al. (2014).

List of nodes

seine_nodes <- read.table(
  file = system.file("seine_data", "network_gauging_stations.txt", package = "seinebasin"),
  sep = ";", header = TRUE, fileEncoding = "UTF-8", quote = "\"", stringsAsFactors = FALSE
)
seine_nodes
##      id_sgl id_hydro lambert2.x lambert2.y     area
## 1  TRANN_01            766626.1    2369152  1557.06
## 2  GURGY_02 H2221010   689713.0    2320549  3819.77
## 3  BRIEN_03 H2482010   695313.0    2332549  2979.77
## 4  STDIZ_04 H5071010   791113.0    2407349  2347.53
## 5  PARIS_05 H5920010   602213.0    2427449 43824.66
## 6  BAR-S_06 H0400010   751913.0    2348349  2340.37
## 7  CHAUM_07            716518.4    2241747   216.50
## 8  CUSSY_08 H2172310   726013.0    2275149   247.99
## 9  STGER_09            718512.9    2266649   402.74
## 10 GUILL_10 H2322020   731013.0    2282349   488.71
## 11 AISY-_11 H2452020   742413.0    2298149  1349.51
## 12 CHABL_12 H2342010   709613.0    2314149  1116.27
## 13 NOGEN_13            685912.9    2389349  9182.39
## 14 EPISY_14 H3621010   633413.0    2371049  3916.71
## 15 MONTE_15            645112.9    2376849 21199.39
## 16 ALFOR_16 H4340020   606013.0    2420349 30784.71
## 17 NOISI_17 H5841010   620913.0    2428949 12547.72
## 18 MONTR_18 H5752020   638013.0    2431849  1184.81
## 19 LOUVE_19 H5083050   791613.0    2393949   461.74
## 20 LASSI_20 H1362010   759513.0    2385549   876.53
## 21 CHALO_21 H5201010   747713.0    2441349  6291.55
## 22 MERY-_22 H0810010   714913.0    2390949  3899.62
## 23 COURL_23 H2721010   660813.0    2370449 10687.35
## 24 ARCIS_24 H1501010   733313.0    2394749  3594.60
## 25 VITRY_25 H5172010   768513.0    2418849  2109.14
##                          description  id_aval distance_aval
## 1                   L'Aube à Trannes ARCIS_24         68100
## 2                    L'Yonne à Gurgy COURL_23         83612
## 3  L'Armançon à Brienon-sur-Armançon COURL_23         84653
## 4            La Marne à Saint-Dizier CHALO_21         85570
## 5                   La Seine à Paris                     NA
## 6           La Seine à Bar-sur-Seine MERY-_22         79766
## 7                 L'Yonne à Chaumard GURGY_02        153074
## 8       Le Cousin à Cussy-les-Forges GURGY_02         91378
## 9               La Cure à St-Germain GURGY_02         94152
## 10               Le Serein à Guillon CHABL_12         66026
## 11    L'Armançon à Aisy-sur-Armançon BRIEN_03        102428
## 12               Le Serein à Chablis COURL_23        111781
## 13       La Seine à Nogent-sur-Seine MONTE_15         63215
## 14                  Le Loing à Épisy ALFOR_16         89196
## 15              La Seine à Montereau ALFOR_16         94475
## 16            La Seine à Alfortville PARIS_05          9263
## 17                La Marne à Noisiel PARIS_05         39384
## 18           Le Grand Morin à Montry NOISI_17         37915
## 19             La Blaise à Louvemont CHALO_21         86165
## 20             La Voire à Lassicourt ARCIS_24         43618
## 21      La Marne à Châlons-sur-Marne NOISI_17        237937
## 22         La Seine à Méry-sur-Seine NOGEN_13         49933
## 23       L'Yonne à Courlon-sur-Yonne MONTE_15         26159
## 24           L'Aube à Arcis-sur-Aube NOGEN_13         70926
## 25      La Saulx à Vitry-en-Perthois CHALO_21         38047

Create the GRiwrm object which lists the nodes and describes the network diagram. It’s a dataframe of class GRiwrm and GRiwrm with specific column names:

  • id: the identifier of the node in the network.
  • down: the identifier of the next hydrological node downstream.
  • length: hydraulic distance to the next hydrological downstream node.
  • model: Name of the hydrological model used (E.g. “RunModel_GR4J”). NA for other type of node.
  • area: Area of the sub-catchment (km2). Used for hydrological model such as GR models. NA if not used.

GRiwrm function helps to rename the columns of the dataframe and assign the variable classes.

seine_nodes$id_aval[seine_nodes$id_aval == ""] <- NA
seine_nodes$distance_aval <- as.double(seine_nodes$distance_aval) / 1000
seine_nodes$model <- "RunModel_GR4J"
# Generate the GRiwrm object
griwrm <- CreateGRiwrm(seine_nodes, list(id = "id_sgl", down = "id_aval", length = "distance_aval"))
griwrm
##          id     down  length         model     area
## 1  TRANN_01 ARCIS_24  68.100 RunModel_GR4J  1557.06
## 2  GURGY_02 COURL_23  83.612 RunModel_GR4J  3819.77
## 3  BRIEN_03 COURL_23  84.653 RunModel_GR4J  2979.77
## 4  STDIZ_04 CHALO_21  85.570 RunModel_GR4J  2347.53
## 5  PARIS_05     <NA>      NA RunModel_GR4J 43824.66
## 6  BAR-S_06 MERY-_22  79.766 RunModel_GR4J  2340.37
## 7  CHAUM_07 GURGY_02 153.074 RunModel_GR4J   216.50
## 8  CUSSY_08 GURGY_02  91.378 RunModel_GR4J   247.99
## 9  STGER_09 GURGY_02  94.152 RunModel_GR4J   402.74
## 10 GUILL_10 CHABL_12  66.026 RunModel_GR4J   488.71
## 11 AISY-_11 BRIEN_03 102.428 RunModel_GR4J  1349.51
## 12 CHABL_12 COURL_23 111.781 RunModel_GR4J  1116.27
## 13 NOGEN_13 MONTE_15  63.215 RunModel_GR4J  9182.39
## 14 EPISY_14 ALFOR_16  89.196 RunModel_GR4J  3916.71
## 15 MONTE_15 ALFOR_16  94.475 RunModel_GR4J 21199.39
## 16 ALFOR_16 PARIS_05   9.263 RunModel_GR4J 30784.71
## 17 NOISI_17 PARIS_05  39.384 RunModel_GR4J 12547.72
## 18 MONTR_18 NOISI_17  37.915 RunModel_GR4J  1184.81
## 19 LOUVE_19 CHALO_21  86.165 RunModel_GR4J   461.74
## 20 LASSI_20 ARCIS_24  43.618 RunModel_GR4J   876.53
## 21 CHALO_21 NOISI_17 237.937 RunModel_GR4J  6291.55
## 22 MERY-_22 NOGEN_13  49.933 RunModel_GR4J  3899.62
## 23 COURL_23 MONTE_15  26.159 RunModel_GR4J 10687.35
## 24 ARCIS_24 NOGEN_13  70.926 RunModel_GR4J  3594.60
## 25 VITRY_25 CHALO_21  38.047 RunModel_GR4J  2109.14

The diagram of the network structure is represented below with in blue the upstream nodes with a GR4J model and in green the intermediate nodes with an SD (GR4J + LAG) model.

plot(griwrm)
## NULL

Observation time series

The daily mean precipitation and potential evaporation at the scale of the intermediate sub-basins are extracted from the SAFRAN reanalysis (Vidal et al. 2010).

The daily naturalised flow is provided by Hydratec (2011).

These data are embedded in a the R package ‘seinebasin’ which is not publicly available.

library(seinebasin)
data(QNAT)

Generate the GRIWRM InputsModel object

The GRIWRM InputsModel object is a list of airGR InputsModel. The identifier of the sub-basin is used as key in the list which is ordered from upstream to downstream.

The airGR CreateInputsModel function is extended in order to handle the griwrm object which describe the basin diagram:

InputsModel <- CreateInputsModel(griwrm, DatesR, Precip, PotEvap, Qnat)
## CreateInputsModel.GRiwrm: Treating sub-basin TRANN_01...
## CreateInputsModel.GRiwrm: Treating sub-basin STDIZ_04...
## CreateInputsModel.GRiwrm: Treating sub-basin BAR-S_06...
## CreateInputsModel.GRiwrm: Treating sub-basin CHAUM_07...
## CreateInputsModel.GRiwrm: Treating sub-basin CUSSY_08...
## CreateInputsModel.GRiwrm: Treating sub-basin STGER_09...
## CreateInputsModel.GRiwrm: Treating sub-basin GUILL_10...
## CreateInputsModel.GRiwrm: Treating sub-basin AISY-_11...
## CreateInputsModel.GRiwrm: Treating sub-basin EPISY_14...
## CreateInputsModel.GRiwrm: Treating sub-basin MONTR_18...
## CreateInputsModel.GRiwrm: Treating sub-basin LOUVE_19...
## CreateInputsModel.GRiwrm: Treating sub-basin LASSI_20...
## CreateInputsModel.GRiwrm: Treating sub-basin VITRY_25...
## CreateInputsModel.GRiwrm: Treating sub-basin MERY-_22...
## CreateInputsModel.GRiwrm: Treating sub-basin GURGY_02...
## CreateInputsModel.GRiwrm: Treating sub-basin CHABL_12...
## CreateInputsModel.GRiwrm: Treating sub-basin BRIEN_03...
## CreateInputsModel.GRiwrm: Treating sub-basin ARCIS_24...
## CreateInputsModel.GRiwrm: Treating sub-basin CHALO_21...
## CreateInputsModel.GRiwrm: Treating sub-basin COURL_23...
## CreateInputsModel.GRiwrm: Treating sub-basin NOISI_17...
## CreateInputsModel.GRiwrm: Treating sub-basin NOGEN_13...
## CreateInputsModel.GRiwrm: Treating sub-basin MONTE_15...
## CreateInputsModel.GRiwrm: Treating sub-basin ALFOR_16...
## CreateInputsModel.GRiwrm: Treating sub-basin PARIS_05...

Save data for next vignettes

dir.create("_cache", showWarnings = FALSE)
save(griwrm, InputsModel, file = "_cache/V01.RData")

References

Dorchies, David, Guillaume Thirel, Maxime Jay-Allemand, Mathilde Chauveau, Florine Dehay, Pierre-Yves Bourgin, Charles Perrin, et al. 2014. “Climate Change Impacts on Multi-Objective Reservoir Management: Case Study on the Seine River Basin, France.” International Journal of River Basin Management 12 (3): 265–83. https://doi.org/10.1080/15715124.2013.865636.
Hydratec. 2011. “Actualisation de La Base de Données Des débits Journaliers ‘Naturalisés’ - Phase 2.” 26895 - LME/TL.
Theobald, S., K. Träbing, K. Kehr, V. Aufenanger, M. Flörke, C. Schneider, C. Perrin, et al. 2014. ClimAware: Impacts of Climate Change on Water Resources Management. Regional Strategies and European View. Final Report.” http://irsteadoc.irstea.fr/cemoa/PUB00040932.
Vidal, Jean-Philippe, Eric Martin, Laurent Franchistéguy, Martine Baillon, and Jean-Michel Soubeyroux. 2010. “A 50-Year High-Resolution Atmospheric Reanalysis over France with the Safran System.” International Journal of Climatology 30 (11): 1627–44. https://doi.org/10.1002/joc.2003.