Skip to contents

Principe de J2000

The J2000 hydrological model was developed at Friedrich Schiller University in Jena (Germany) to address the challenges of the Water Framework Directive (Krause et al., 2006), and has been co-developed at INRAE Riverly since 2011. J2000 is a fully distributed model based on an irregular grid divided into hydrological response units (HRUs) (Flügel, 1995) (Kumar et al., 2013), obtained by cross-referencing layers of geographic information describing the relief (DTM), geology, pedology, and land use . The various hydrological processes are simulated in individual modules that are interconnected with each other. J2000 represents the main hydrological processes in a simplified manner, while maintaining a link with the physics of the phenomena, according to a “process-oriented” approach that retains the following processes:

  • the division of precipitation between rain and snow
  • the interception of precipitation by vegetation
  • evapotranspiration
  • snowmelt and snow accumulation processes
  • soil infiltration
  • surface runoff
  • groundwater recharge and routing in the hydrographic network
Schema showing a diagram on how J2000 models is working

Descriptive diagram of hydrological processes represented in J2000

The climate variables used as inputs for the model are temperature T, precipitation, and reference evapotranspiration. Since SAFRAN data is provided on an 8x8 km² grid, which is much larger than the average size of HRUs, only data from the nearest SAFRAN cell was taken into account.

Running T-NET with J2000 data

Data requirement in the shapefile

Some columns are needed in the hydrographic network shapefile in order to use correctly the TnetRUI package. A shapefile columns can be check using the TNETutils_checkShapefile() function. For J2000 hydrological modelisation, all needed columns are detailed in the following table:

Column name Explanation Fonction
gid_new ID of the segment
ID_ND_INI ID of the initial node
ID_ND_FIN ID of the final node
RG_PCT_VEG Percentage of the left bank of the segment covered by vegetation (0 - 100)
RD_PCT_VEG Percentage of the right bank of the segment covered by vegetation (0 - 100)
RG_H_MOY Mean height of the vegetation on the left bank (m)
RD_H_MOY Mean height of the vegetation on the right bank (m)
Xcentr X coordinates of the segment (WGS84) TNETshape_computePosition
Ycentr Y coordinates of the segment (WGS84) TNETshape_computePosition
phi_deg Orientation of the segment (angle with the north in degres) TNETshape_computePosition
Longueur_m Length of the segments (in km) st_length
ID_M_1 ID of the n°1 SAFRAN mesh crossed by the segment TNETshape_getSafran
ID_M_2 ID of the n°2 SAFRAN mesh crossed by the segment TNETshape_getSafran
ID_M_3 ID of the n°3 SAFRAN mesh crossed by the segment TNETshape_getSafran
ID_M_4 ID of the n°4 SAFRAN mesh crossed by the segment TNETshape_getSafran
ID_M_5 ID of the n°5 SAFRAN mesh crossed by the segment TNETshape_getSafran
ID_M_6 ID of the n°6 SAFRAN mesh crossed by the segment TNETshape_getSafran
ID_M_7 ID of the n°7 SAFRAN mesh crossed by the segment TNETshape_getSafran
ID_M_8 ID of the n°8 SAFRAN mesh crossed by the segment TNETshape_getSafran
Rap_M_1 Aspect ratio of the segment in the n°1 SAFRAN mesh TNETshape_getSafran
Rap_M_2 Aspect ratio of the segment in the n°2 SAFRAN mesh TNETshape_getSafran
Rap_M_3 Aspect ratio of the segment in the n°3 SAFRAN mesh TNETshape_getSafran
Rap_M_4 Aspect ratio of the segment in the n°4 SAFRAN mesh TNETshape_getSafran
Rap_M_5 Aspect ratio of the segment in the n°5 SAFRAN mesh TNETshape_getSafran
Rap_M_6 Aspect ratio of the segment in the n°6 SAFRAN mesh TNETshape_getSafran
Rap_M_7 Aspect ratio of the segment in the n°7 SAFRAN mesh TNETshape_getSafran
Rap_M_8 Aspect ratio of the segment in the n°8 SAFRAN mesh TNETshape_getSafran
J2000 J2000 reach linked to the segment
P_J2000 Is the segment the most downstream segment of the J2000 linked reach ? (1 if yes - 0 if not)
RppAr_v Ratio of the total drain area use to dispatch discharge data from J2000 reach TNETshape_computeCoefQcalc
RppA_BV Ratio of the sub-watershed drain area use to dispatch lateral discharge data from J2000 reach TNETshape_computeCoefQcalc

Functions arrangement

All function relative to J2000 hydrological function are regrouped in the TnetJ2K group. The functions are the following:

  • TnetJ2K_readfiles() will read output file from J2000 computation. It has to be used two times: one to read the ReachLoop.dat file (to extract discharge data) and another one to read HRUloop.dat file (to extract underground flow data).

  • TnetJ2K_computeQ() will dispatch discharge and underground data from J2000 river network to Topage river network using specific discharge hypothesis.

  • TnetJ2K_computeQlatSout() will compute undergroud lateral discharge on every Topage river segment using J2000 underground flow and river depth and width.

  • TnetJ2K_computeTg() will compute underground water temperature usin the moving average of air temperature on 365 days.

Schema showing a diagram of all function in TnetJ2K functions set and how they interact between them

A diagram showing how to run a T-NET computation with J2000 hydrological modelisation

Data format

TnetRUI functions using J2000 modelisation will need the following files created by J2000:

An exemple of each file are distributed with TnetRUI package in order run the Ardière exemple can be found in the DataTnetRUI repository and are detailed in the following sections.

All data will be downloaded when using TNETutils_openExempleData() for the first time.

ReachLoop.dat file

The ReachLoop.dat file contain all the modelisation data on each J2000 reach.

For TnetRUI, the needed parameter is Runoff that contain the discharde data of all reach. This file can easely be read by TNET_readJ2K() in order to be put in a NetCDF file.

Here a part of the ReachLoop.dat file shared in the DataTnetRUI repository:

#> @context
#> jams.components.core.SpatialContext  ReachLoop   7
#> @ancestors
#> jams.components.core.TemporalContext TimeLoop    1673
#> @filters
#> @attributes
#> ID   Runoff  inRG1   outRG1  
#> @types
#> JAMSLong JAMSDouble  JAMSDouble  JAMSDouble  
#> @data
#> TimeLoop 2017-01-01 00:00
#> @start
#> 23400    3003937.368852  0.000000    2711460.730610  
#> 23600    2212143.834318  0.000000    1983943.980064  
#> 23200    6068979.622878  0.000000    5318955.416990  
#> 23800    1129869.329902  0.000000    931463.727352   
#> 23000    7752881.392078  0.000000    6626987.555175  
#> 24000    3446009.844058  0.000000    2702001.425618  
#> 22800    14581802.569821 0.000000    11809501.061738 
#> @end
#> TimeLoop 2017-01-02 00:00
#> @start
#> 23400    2958862.099614  0.000000    2702130.408796  
#> 23600    2185745.260217  0.000000    1974226.089462  
#> 23200    5967217.492028  0.000000    5309667.140031  
#> 23800    1106553.787048  0.000000    922588.402148   
#> 23000    7609000.752317  0.000000    6612787.221729  
#> 24000    3367977.562572  0.000000    2696880.171869  
#> 22800    14259914.190175 0.000000    11837642.572676 
#> @end
#> TimeLoop 2017-01-03 00:00
#> @start
#> ...
#> @end
#> TimeLoop 2021-07-31 00:00
#> @start
#> 23400    1155602.073093  0.000000    1025231.775009  
#> 23600    857173.447102   0.000000    855773.739958   
#> 23200    2253475.611039  0.000000    1943714.773857  
#> 23800    161374.326843   0.000000    158310.835242   
#> 23000    2538240.951849  0.000000    2146527.479091  
#> 24000    986053.656758   0.000000    830658.402173   
#> 22800    6322102.798173  0.000000    5006434.922922  
#> @end

reach.par file

The reach.par file contain the different parameter of each reachs used by J2000.

For TnetRUI, it is used to create the topology of the J2000 hydrological network (with the to-reach column) in order to add all underground lateral discharge.

Here is the reach.par file shared in the DataTnetRUI repository:

#> # reach.par created at Tue    21 May 2024     09:10:15    r.reach.par called by HRU-delin                
#> ID   to-reach    length  slope   sinuosity   rough   width   TA
#> 0    0   0   0   1   0   0   0
#> 999999   999999  99999   90999999    9999    9999    9999    9999
#> n/a  n/a m   %   n/a n/a m   n/a
#> 22800    22400   3750    1.28    1.0 15  7.46300347115294    1
#> 23000    22800   824 2.3058  1.1 15  5.52089991769009    1
#> 23200    23000   2071    1.8349  1.12    15  4.88029255743067    1
#> 23400    23200   3777    3.9979  1.28    15  3.43751025216991    1
#> 23600    23200   1263    5.8591  1.14    15  2.87766303715962    1
#> 23800    23000   1035    4.2512  1.22    15  2.14837018065897    1
#> 24000    22800   3744    4.2201  1.12    15  3.78998031743936    1

HRULoop.dat file

The HRULoop.dat file contain all the modelisation data on each J2000 HRU. It’s on the same format as the ReachLoop.dat file.

For TnetRUI, the needed parameter is RG1OUT that contain the underground lateral discharge data of all HRUs. The data on the HRU are put on the J2000 reachs using the hru.par file. This file can easily be read by TNET_readJ2K() in order to be put in a NetCDF file.

Here a part of the HRULoop.dat file shared in the DataTnetRUI repository:

#> @context
#> jams.components.core.SpatialContext  HRULoop 8
#> @ancestors
#> jams.components.core.TemporalContext TimeLoop    1673
#> @filters
#> @attributes
#> ID   RD1OUT  RD2OUT  RG1OUT  
#> @types
#> JAMSLong JAMSDouble  JAMSDouble  JAMSDouble  
#> @data
#> TimeLoop 2017-01-01 00:00
#> @start
#> 6499 0.000000    221559.382175   2735507.370070  
#> 6481 0.000000    216063.227531   1986288.454040  
#> 6497 0.000000    129619.707132   660978.075657   
#> 6526 0.000000    188598.011283   932668.143001   
#> 6549 0.000000    130005.553740   393240.252756   
#> 6595 0.000000    270340.909474   986967.339838   
#> 6558 0.000000    350905.343766   1756918.877863  
#> 6556 0.000000    469412.149252   2669493.970525  
#> @end
#> TimeLoop 2017-01-02 00:00
#> @start
#> 6499 0.000000    212987.032814   2713057.171269  
#> 6481 0.000000    205690.277614   1974222.851729  
#> 6497 0.000000    124375.244366   654419.817864   
#> 6526 0.000000    178912.592079   922201.898474   
#> 6549 0.000000    124154.159177   389590.737600   
#> 6595 0.000000    256457.597458   975891.758887   
#> 6558 0.000000    333450.998453   1747772.026645  
#> 6556 0.000000    444256.532810   2662293.478898  
#> @end
#> TimeLoop 2017-01-03 00:00
#> @start
#> ...
#> @end
#> TimeLoop 2021-07-31 00:00
#> @start
#> 6499 0.000000    0.000000    1092710.599520  
#> 6481 0.000000    0.000000    852011.687296   
#> 6497 0.000000    0.000000    153443.282084   
#> 6526 0.000000    0.000000    158949.747810   
#> 6549 0.000000    0.000000    83958.900591    
#> 6595 0.000000    0.000000    168203.675595   
#> 6558 0.000000    0.000000    739944.975943   
#> 6556 0.000000    0.000000    2409965.337740  
#> @end

hru.par file

The hru.par file contain the different parameter of each HRU used by J2000.

For TnetRUI, it is used to know the HRU having an output discharge in a reach (with the to-reach column) in order to add underground lateral discharge from the HRUs to the reaches.

Here is the reach.par file shared in the DataTnetRUI repository:

#> # hru.par created Tue     21 May 2024     09:10:22 by HRU-DELIN_BATCH                                                            
#> ID   area    elevation   slope   aspect  x   y   watershed   subbasin    hgeoID  landuseID   soilID  to_poly to_reach    irrigated   irrig_type  irrig_source_reach  irrig_source_hru
#> 0    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
#> 999999   9999999 10000   90  360 9999999 9999999 999999  999999  9999    9999    9999    999999  999999  999999  999999  999999  999999
#> n/a  m2  m   deg deg m   m   n/a n/a n/a n/a n/a n/a n/a n/a n/a n/a n/a
#> 6481 3615000 574 12.642  272 816725  6568050 1009    23600   6   4   4   0.0 23600.0 0   0   0   0
#> 6497 4553125 474 11.043  9   821200  6567125 1009    23200   6   4   4   0.0 23200.0 0   0   0   0
#> 6499 7128125 603 10.655  91  814525  6567525 1009    23400   6   4   4   0.0 23400.0 0   0   0   0
#> 6526 4443750 591 12.125  76  820275  6564375 1009    23800   6   2   4   0.0 23800.0 0   0   0   0
#> 6549 2750000 570 15.132  184 821600  6566075 1009    23000   6   3   4   0.0 23000.0 0   0   0   0
#> 6556 5576875 465 16.206  265 822212.5    6563100 1009    22800   6   3   4   0.0 22800.0 0   0   0   0
#> 6558 5437500 546 15.292  281 818950  6563175 1009    24000   6   4   4   0.0 24000.0 0   0   0   0
#> 6595 5168125 678 14.831  89  817950  6560700 1009    24000   6   2   4   0.0 24000.0 0   0   0   0