Setting up a riverine model

To build a riverine flood model with q (discharge) and p (precipitation), but no h (waterlevel) boundary conditions, the model region can either be defined by a bounding or the interbasin within a bounding box.

In the second example below the region is based on the interbasin is based on all cells within the bounding box draining into a stream with a minimal upstream area of 20 km2. The delineation is based on gridded flow direction data set in the setup_region method.

At the upstream end of each river a discharge source point can be defined with the setup_river_inflow method and at the downstream end an outflow boundary with the setup_river_outflow method.

As DEMs typically to not have an accurate representation of the river underwater bathymetry, this can be ‘burned’ into the DEM using the setup_river_bathymetry method. Note that this method requires setup_river_hydrography to be executed first.

A typical workflow to setup a riverine model schematization is provided in the sfincs_riverine.ini and shown below. Each section corresponds to one of the model Setup components and the [global] section can be used to pass additional arguments to the SfincsModel. initialization.

hydromt build sfincs /path/to/model_root "{'bbox': [xmin, ymin, xmax, ymax]}" -i sfincs_riverine.ini -vv
hydromt build sfincs /path/to/model_root "{'interbasin': [xmin, ymin, xmax, ymax], 'uparea': 20}" -i sfincs_riverine.ini -vv
[setup_config]
tref = 20210101 000000
tstart = 20210101 000000
tstop = 20210102 000000
alpha = 0.5
zsini = 0.0
dtmaxout = 86400

[setup_region]                  # method to determine (hydrological) model region
hydrography_fn = merit_hydro
basin_index_fn = merit_hydro_index

[setup_topobathy]
topobathy_fn = merit_hydro       # topobathy basemaps ['elevtn']

[setup_river_hydrography]       # required for setup_river_bathymetry & used by setup_river_inflow & setup_river_outflow if no hydrography_fn passed to those methods
hydrography_fn = merit_hydro    # hydrography maps ['flwdir', 'uparea']

[setup_river_bathymetry]
river_geom_fn = data/rivers_lin2019_v1.geojson  # river geometry with columns ['qbankfull', 'rivwth']
river_upa = 25                   # Mimimum upstream area threshold of rivers [km2]
river_len = 1000                 # minimum length inside river domain [m] 
rivdph_method=gvf                # gradual varying flow method
rivwth_method=geom               # with based on values from river_geom_fn
min_rivwth=50.0                  # minimum river width
min_rivdph=1.0                   # minimum river depth

[setup_river_inflow]
river_upa = 25                   # Mimimum upstream area threshold of rivers [km2]
river_len = 1000                 # minimum length inside river domain [m]

[setup_river_outflow]
river_upa = 10                   # Mimimum upstream area threshold of rivers [km2]
river_len = 1000                 # minimum length inside river domain [m] 
outflow_width = 2500             # The width [m] of the outflow boundary

[setup_cn_infiltration]
cn_fn = gcn250                  # curve number source
antecedent_runoff_conditions = avg # for gcn250: {'dry', 'avg', 'wet'}

[setup_manning_roughness]
lulc_fn = vito                  # land-use land-cover source
map_fn = None                   # mapping file. read from hydromt/data/lulc/{lulc_fn}_mapping.csv if None

[setup_gauges]
gauges_fn = data/riverine_gauges.csv   # observation point locations
crs = 4326                      # epsg-code for gauges (only used if not in gauges_fn metadata, e.g. when csv file)

[setup_q_forcing]
geodataset_fn = None                #  discharge point timeseries dataset
timeseries_fn = data/discharge_input_sfincs.csv   # timeseries data at discharge gauges (e.g.: from setup_river_inflow)