current version 2.3 - 2nd December 2024
version | date | comment |
---|---|---|
1.0 | 07/Oct/2016 | Original code |
1.1 | 08/Feb/2023 | DischargePointInit and DischargePointExport added |
1.2 | 12/Feb/2023 | routing parameters are no more stored in stream network. No more need of HydroNetwork module |
1.3 | 25/Jan/2024 | module name changed from SurfaceRouting to DischargeRouting |
1.4 | 26/Jan/2024 | module adjusted to cope with new module Diversions |
1.5 | 10/Apr/2024 | observed reservoir downstream discharge read from file |
1.6 | 11/Apr/2024 | observed diverted discharge read from file |
1.7 | 18/Apr/2024 | discharge routing parameters assigned for different subbasins |
1.8 | 08/May/2024 | Qin written to output instead of Qout, to fix the bug of zero discharge in outlet cell |
1.9 | 06/Jun/2024 | log message bug fixed when diversion is outside channel |
2.0 | 14/Jun/2024 | back to Qout written to output file. Qout is defined in last downstream cell |
2.1 | 03/Jul/2024 | Diverted discharge from diversions included in Qlateral of Muskingum |
2.2 | 04/Sep/2024 | pools variable moved to Reservoirs module |
2.3 | 02/Dec/2024 | excess of water retained in snow added to Qlateral of Muskingum |
license: GNU GPL http://www.gnu.org/licenses/
Route discharge in river network.
River network includes different elements:
The user sets the elements to simulate and their properties with a configuration file like in the following example
export-channel-grid = 0
masks-number = 2 # number of masks to assign channel parameters (at least 1 for the base-mask must exist)
[reservoirs]
file = ./conf/reservoirs.ini
dt = 10 # if dt = 0 reservoirs are not solved
dt-out = 3600 #optional, default = 0
[diversions]
file = ./conf/diversions.ini
dt = 0 # 0 = suppresses diversion simulation. otherwise dt is set equals to discharge routing dt
dt-out = 3600
[discharge-in]
scalar = 0.0
[discharge-out]
scalar = 0.0
[discharge-lat]
scalar = 0.0
[base-mask]
channel-initiation-method = area #area, ask, curvature
channel-initiation-threshold = 4000000 # ask 600000 m^2 area 3500000
hillslope-width = 200 # cross section width (m)
hillslope-alpha = 45. # slope of trapezoidal section side bank (degree)
hillslope-ks = 2 #Strickler roughness coefficient m^1/3 s^-1
[mask1]
file = ./data/subbasin1.asc
format = esri-ascii
epsg = 32633
channel-initiation-method = area #area, ask, curvature
channel-initiation-threshold = 400000 # ask 600000 m^2 area 3500000
hillslope-width = 200 # cross section width (m)
hillslope-alpha = 45. # slope of trapezoidal section side bank (degree)
hillslope-ks = 3 #Strickler roughness coefficient m^1/3 s^-1
Table Start
Title: channel properties
Id: base-mask
#threshold indicates the basin area below which values of parameters are applied
Columns: [count] [threshold] [width] [alpha] [ks]
Units: [-] [m^2] [m] [deg] [m^1/3s^-1]
1 5000000 5 45 20
2 10000000 7 45 25
3 15000000 10 45 30
4 20000000 20 45 35
5 30000000 25 45 40
6 100000000 35 45 45
7 500000000 50 45 45
8 1000000000 65 45 45
9 2000000000 80 45 45
Table End
Table Start
Title: channel properties
Id: mask1
#threshold indicates the basin area below which values of parameters are applied
Columns: [count] [threshold] [width] [alpha] [ks]
Units: [-] [m^2] [m] [deg] [m^1/3s^-1]
1 5000000 5 45 15
2 10000000 9 45 20
3 15000000 20 45 25
4 20000000 25 45 30
5 30000000 30 45 35
6 100000000 35 45 40
7 500000000 40 45 40
8 2000000000 45 45 45
Table End
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(grid_real), | public | :: | Pin |
inlet discharge at time t-1 (previous) |
|||
type(grid_real), | public | :: | Plat |
lateral discharge at time t-1 (previous) |
|||
type(grid_real), | public | :: | Pout |
outlet discharge at time t-1 (previous) |
|||
type(grid_real), | public | :: | Qin |
inlet discharge at time t (current) |
|||
type(grid_real), | public | :: | Qout |
outlet discharge at time t (current) |
|||
integer(kind=short), | public | :: | dtDischargeRouting | ||||
integer(kind=short), | public | :: | dtOutReservoirs | ||||
type(grid_real), | public | :: | topWidth |
channel top width (m) |
|||
type(grid_real), | public | :: | waterDepth |
water depth from thalweg (m) |
|||
integer(kind=short), | private, | parameter | :: | INSTANTANEOUS | = | 3 | |
integer(kind=short), | private, | parameter | :: | MC | = | 4 | |
integer(kind=short), | private, | parameter | :: | MCT | = | 1 | |
integer(kind=short), | private, | parameter | :: | MISSING_DEF_INT | = | -9999 | |
real(kind=float), | private, | parameter | :: | MISSING_DEF_REAL | = | -9999.9 | |
integer(kind=short), | private, | parameter | :: | MUSKINGUM | = | 2 | |
integer(kind=short), | private, | parameter | :: | SLOPES | = | 0 | |
type(grid_real), | private | :: | bankSlope |
river bank slope (degree) |
|||
type(grid_integer), | private | :: | channel | ||||
type(TableCollection), | private | :: | channelParameters | ||||
type(grid_integer), | private | :: | dams |
location of reservoirs in raster map |
|||
type(grid_integer), | private | :: | divChannels |
location of diversions in raster map |
|||
integer(kind=short), | private | :: | fileUnitPointDischarge | ||||
type(grid_real), | private | :: | manning |
Manning roughness (s / m^1/3) |
|||
type(grid_real), | private | :: | sectionWidth |
river section width (m) |
|||
type(ObservationalNetwork), | private | :: | sites | ||||
type(ObservationalNetwork), | private | :: | sitesDischarge | ||||
type(DateTime), | private | :: | timeDiversionsExport | ||||
type(DateTime), | private | :: | timePointExport | ||||
type(DateTime), | private | :: | timePoolsExport |
Initialize export of point site data
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | pointfile |
file containing coordinate of points |
||
character(len=*), | intent(in) | :: | path_out |
path of output folder |
||
type(DateTime), | intent(in) | :: | time |
start time |
route discharge in surface network
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=short), | intent(in) | :: | dt |
time step [s] |
||
type(DateTime), | intent(in) | :: | time | |||
type(grid_integer), | intent(in) | :: | flowdir |
flow direction |
||
type(grid_real), | intent(in) | :: | runoff |
net rainfall [m/s] |
||
integer(kind=short), | intent(in) | :: | dtrk |
time step for reservoirs |
||
type(grid_real), | intent(in) | :: | riverToGroundwater |
discharge from river to groundwater (m3/s) |
||
type(grid_real), | intent(in) | :: | groundwaterToRiver |
discharge from groundwater to river (m3/s) |
||
type(grid_real), | intent(inout) | :: | storage |
volume stored on channel cell |
Initialize surface routing
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | fileini |
name of configuration file |
||
type(DateTime), | intent(in) | :: | time | |||
character(len=*), | intent(in) | :: | path_out |
path of output folder |
||
type(grid_integer), | intent(in) | :: | flowdirection | |||
type(grid_integer), | intent(in) | :: | domain | |||
type(grid_real), | intent(out) | :: | storage | |||
type(grid_real), | intent(out) | :: | netRainfall | |||
integer(kind=short), | intent(out) | :: | dtrk |
Export of point site data
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(DateTime), | intent(in) | :: | time |