Wflow Sediment

With the hydromt_wflow plugin, you can easily work with wflow sediment models. This plugin helps you preparing or updating several components of a wflow sediment model such as topography information, landuse or soil. The main interactions are available from the HydroMT Command Line Interface and allow you to configure HydroMT in order to build or update or clip wflow sediment models.

When building or updating a model from command line a model region; a model setup configuration (.ini file) with model components and options and, optionally, a data sources (.yml) file should be prepared.

Note that the order in which the components are listed in the ini file is important:

  • setup_basemaps should always be run first to determine the model domain

  • setup_rivers should be run right after setup_basemaps as it influences several other setup components (lakes, reservoirs, riverbedsed, floodplains, gauges)

For python users all WflowSediment attributes and methods are available, see WflowSediment model class

WflowSediment model components

An overview of the available WflowSedimentModel setup components is provided in the table below. When using hydromt from the command line only the setup components are exposed. Click on a specific method see its documentation.

setup_config

Update config with a dictionary

setup_basemaps

This component sets the region of interest and res (resolution in degrees) of the model.

setup_rivers

This component sets the all river parameter maps.

setup_lakes

This component generates maps of lake areas and outlets as well as parameters with average lake area, depth a discharge values.

setup_reservoirs

This component generates maps of lake areas and outlets as well as parameters with average reservoir area, demand, min and max target storage capacities and discharge capacity values.

setup_lulcmaps

This component derives several wflow maps are derived based on landuse- landcover (LULC) data.

setup_laimaps

This component sets leaf area index (LAI) climatology maps per month.

setup_canopymaps

Setup sediments based canopy height maps.

setup_soilmaps

Setup sediments based soil parameter maps.

setup_riverbedsed

Setup sediments based river bed characteristics maps.

setup_gauges

This components sets the default gauge map based on basin outlets and additional gauge maps based on gauges_fn data.

setup_areamap

Setup area map from vector data to save wflow outputs for specific area.

setup_constant_pars

Setup constant parameter maps.

WflowSediment datamodel

The following table provides an overview of which WflowSedimentModel attribute contains which WflowSediment in- and output files. The files are read and written with the associated read- and write- methods, i.e. read_config() and write_config() for the config attribute.

WflowSedimentModel data

WflowSedimentModel attribute

Wflow sediment files

config

wflow_sediment.toml

staticmaps

staticmaps.nc

staticgeoms

geometries from the staticgeoms folder (basins.geojson, rivers.geojson etc.)

forcing

inmaps.nc

states

instates.nc

results

output.nc, output_scalar.nc, output.csv

WflowSediment configuration

This HydroMT plugin provides an implementation for the wflow_sediment model in order to build, update or clip from command line. Specific details on the HydroMT CLI methods can be found in https://deltares.github.io/hydromt/latest/user_guide/cli.html

Configuration file

Settings to build or update a wflow model are managed in a configuration file. In this file, every option from each model component can be changed by the user in its corresponding section.

Below is an example of ini file that can be used to build a complete wflow_sediment model .ini file. Each section corresponds to a model component with the same name.

[global]
data_libs        = []               # add optional paths to data yml files

[setup_config]                      # options parsed to wflow ini file <section>.<option>
starttime = 2010-01-01T00:00:00
endtime = 2010-03-31T00:00:00
timestepsecs = 86400

[setup_basemaps]
hydrography_fn   = merit_hydro      # source hydrography data {merit_hydro, merit_hydro_1k}
basin_index_fn   = merit_hydro_index # source of basin index corresponding to hydrography_fn
upscale_method   = ihu              # upscaling method for flow direction data, by default 'ihu'

[setup_rivers]
hydrography_fn   = merit_hydro      # source hydrography data, should correspond to hydrography_fn in setup_basemaps
river_geom_fn    = rivers_lin2019_v1 # river source data with river width and bankfull discharge
river_upa        = 30               # minimum upstream area threshold for the river map [km2]
rivdph_method    = powlaw           # method to estimate depth {'powlaw', 'manning', 'gvf'}
min_rivdph       = 1                # minimum river depth [m]
min_rivwth       = 30               # minimum river width [m]
slope_len        = 2000             # length over which tp calculate river slope [m]
smooth_len       = 5000             # length over which to smooth river depth and river width [m]

[setup_reservoirs]
reservoirs_fn    = hydro_reservoirs # source for reservoirs based on GRAND: {hydro_reservoirs}; None to skip
min_area         = 1.0              # minimum lake area to consider [km2]
priority_jrc     = True             # if True then JRC data from hydroengine is used to calculate some reservoir attributes instead of the GRanD and HydroLAKES db.   

[setup_lakes]
lakes_fn         = hydro_lakes      # source for lakes based on hydroLAKES: {hydro_lakes}; None to skip
min_area         = 1.0              # minimum reservoir area to consider [km2]

[setup_riverbedsed]
bedsed_mapping_fn = None             # path to a mapping csv file from streamorder to river bed particles characteristics

[setup_lulcmaps]
lulc_fn          = globcover        # source for lulc maps: {globcover, vito, corine}

[setup_laimaps]
lai_fn           = modis_lai        # source for LAI: {modis_lai}

[setup_canopymaps]
canopy_fn        = simard           # source for vegetation canopy height: {simard}

[setup_soilmaps]
soil_fn          = soilgrids        # source for soilmaps: {soilgrids}
usleK_method     = renard           # method to compute the USLE K factor: {renard, epic}

[setup_hydrodem]                 # adds hydrologically conditioned elevation FloodplainZ

[setup_gauges]
gauges_fn        = grdc             # If not None add gaugemap. Either a path or known gauges_fn: {grdc}
snap_to_river    = True             # If True snaps gauges from source to river
derive_subcatch  = False            # if True derive subcatch map based on gauges.

[setup_constant_pars]               # constant parameters values
c_Bagnold = 0.0000175
eros_expo = 1.5
eros_ov = 0.9
eros_spl_EUROSEM = 2.0
exp_Bagnold = 1.4
ResTrapEff = 1.0

Selecting data

Data sources in HydroMT are provided in one of several yaml libraries. These libraries contain required information on the different data sources so that HydroMT can process them for the different models. There are three ways for the user to select which data libraries to use:

  • If no yaml file is selected, HydroMT will use the data stored in the hydromt-artifacts which contains an extract of global data for a small region around the Piave river in Northern Italy.

  • Another options for Deltares users is to select the deltares-data library (requires access to the Deltares P-drive). In the command lines examples below, this is done by adding either -dd or –deltares-data to the build / update command line.

  • Finally, the user can prepare its own yaml libary (or libraries) (see HydroMT documentation to check the guidelines). These user libraries can be added either in the command line using the -d option and path/to/yaml or in the ini file with the data_libs option in the [global] sections.

Building a model

This plugin allows to build a complete model from available data. Once the configuration and data libraries are set, you can build a model by using:

activate hydromt-wflow
hydromt build wflow_sediment path/to/built_model "{'basin': [x, y]}" -i wflow_sediment_build.ini -d data_sources.yml -vvv

The recommended region options for a proper implementation of the wflow_sediment model are:

  • basin

  • subbasin

Updating a model

This plugin allows to update any components from a wflow_sediment model. To do so, list the components to update in a configuration file, if needed edit your data library with new data sources required for the update and use the command:

activate hydromt-wflow
hydromt update wflow_sediment path/to/model_to_update -o path/to/updated_model -i wflow_sediment_update.ini -d data_sources.yml -vvv

Clipping a model

This plugin allows to clip the following parts of an existing model for a smaller region from command line:

  • staticmaps

  • forcing

To clip a smaller model from an existing one use:

activate hydromt-wflow
hydromt clip wflow_sediment path/to/model_to_clip path/to/clipped_model "{'basin' [1001]}" -vvv

As for building, the recommended region options for a proper implementation of the clipped model are:

  • basin

  • subbasin

Extending a wflow model with a wflow_sediment model

If you already have a wflow model and you want to extend it in order to include sediment as well, then you do not need to build the wflow_sediment from scratch. You can instead update the wflow model with the additional components needed by wflow_sediment. These components are available in a template .ini file and shown below. The corresponding command line would be:

activate hydromt-wflow
hydromt update wflow_sediment path/to/wflow_model_to_extend -i wflow_extend_sediment.ini -d data_sources.yml -vvv
[global]
data_libs        = []               # add optional paths to data yml files

[setup_config]
# model.dolake = True               # uncomment if there are lakes in the wflow model
# model.doreservoir = True          # uncomment if there are reservoirs in the wflow model

[setup_riverbedsed]
bedsed_mapping_fn   = None             # path to a mapping csv file from streamorder to river bed particles characteristics

[setup_lulcmaps]
lulc_fn          = globcover        # source for lulc maps: {globcover, vito, corine}

[setup_canopymaps]
canopy_fn        = simard           # source for vegetation canopy height: {simard}

[setup_soilmaps]
soil_fn          = soilgrids        # source for soilmaps: {soilgrids}
usleK_method     = renard           # method to compute the USLE K factor: {renard, epic}

[setup_gauges]
gauges_fn        = grdc             # If not None add gaugemap. Either a path or known gauges_fn: {grdc}
snap_to_river    = True             # If True snaps gauges from source to river
derive_subcatch  = False            # if True derive subcatch map based on gauges.

[setup_constant_pars]               # constant parameters values
c_Bagnold = 0.0000175
eros_expo = 1.5
eros_ov = 0.9
eros_spl_EUROSEM = 2.0
exp_Bagnold = 1.4
ResTrapEff = 1.0