Build a Wflow Sediment model#
This notebook demonstrates how to prepare a Wflow Sediment model using the command line interace (CLI).
All lines in this notebook which start with ! are executed from the command line. Within the notebook environment the logging messages are shown after completion. You can also copy these lines and paste these in your shell to get more direct feedback.
HydroMT CLI build interface#
Lets first check if the Wflow sediment model is recognized by HydroMT
[1]:
# this should return "wflow_sbm, wflow_sediment"
# as well as the generic HydroMT model "model"
!hydromt --models
Model plugins:
- model (hydromt 1.3.0)
- example_model (hydromt 1.3.0)
- wflow_sbm (hydromt_wflow 1.0.1)
- wflow_sediment (hydromt_wflow 1.0.1)
Using the HydroMT build API we can setup a complete model from scratch. Let’s get an overview of all the available options:
[2]:
!hydromt build --help
Usage: hydromt build [OPTIONS] MODEL MODEL_ROOT
Build models from scratch.
Example usage: --------------
To build a wflow model: hydromt build wflow_sbm /path/to/model_root -i
/path/to/wflow_config.yml -d deltares_data -d /path/to/data_catalog.yml -v
To build a sfincs model: hydromt build sfincs /path/to/model_root -i
/path/to/sfincs_config.yml -d /path/to/data_catalog.yml -v
Options:
-i, --config PATH Path to hydroMT configuration file, for the model
specific implementation. [required]
-d, --data TEXT Path to local yaml data catalog file OR name of
predefined data catalog.
--dd, --deltares-data Flag: Shortcut to add the "deltares_data" catalog
--fo, --force-overwrite Flag: If provided overwrite existing model files
--cache Flag: If provided cache tiled rasterdatasets
-v, --verbose Increase verbosity.
-q, --quiet Decrease verbosity.
--help Show this message and exit.
Model setup configuration#
The HydroMT configuration file (YAML) contains the model setup configuration and determines which methods are used to prepare the different components of a Wflow Sediment model and in which order and optionally sets non-default arguments for each method. This configuration is passed to HydroMT using -i <path_to_config_file>. We have prepared several example files which are available in the model repository examples folder and
from the docs (building a model).
Each header (added as a list item in steps) (e.g. setup_basemaps:) corresponds to a model method. All model methods are explained in the docs (model methods).
We will load the default wflow sediment build configuration yaml file for inspection:
[3]:
fn_config = "wflow_sediment_build.yml"
with open(fn_config, "r") as f:
txt = f.read()
print(txt)
steps:
- setup_config: # options parsed to wflow toml file <section>.<option>
data:
time.starttime: "2010-02-02T00:00:00"
time.endtime: "2010-02-10T00:00:00"
time.timestepsecs: 86400
output.netcdf_grid.path: output.nc
output.netcdf_grid.compressionlevel: 1
output.netcdf_grid.variables.soil_erosion__mass_flow_rate: soil_loss
output.netcdf_grid.variables.river_water_sediment__suspended_mass_concentration: suspended_solids
- 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'
res: 0.00833 # build the model at a 30 arc sec (~1km) resolution
region:
subbasin: [12.2051, 45.8331]
strord: 4
bounds: [11.70, 45.35, 12.95, 46.70]
- setup_rivers:
hydrography_fn: merit_hydro # source hydrography data, should correspond to hydrography_fn in setup_basemaps
river_geom_fn: hydro_rivers_lin # river source data with river width and bankfull discharge
river_upa: 30 # minimum upstream area threshold for the river map [km2]
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 shape and attributes
min_area: 1.0 # minimum lake area to consider [km2]
trapping_default: 1.0 # default trapping efficiency for reservoirs [0-1]
- setup_natural_reservoirs:
reservoirs_fn: hydro_lakes # source for lakes based on hydroLAKES: {hydro_lakes}
min_area: 1.0 # minimum reservoir area to consider [km2]
- setup_riverbedsed:
- setup_lulcmaps:
lulc_fn: globcover_2009 # source for lulc maps: {globcover, vito, corine}
lulc_mapping_fn: globcover_mapping_default # default mapping for lulc classes
- setup_canopymaps:
canopy_fn: simard # source for vegetation canopy height: {simard}
- setup_soilmaps:
soil_fn: soilgrids # source for soilmaps: {soilgrids}
usle_k_method: renard # method to compute the USLE K factor: {renard, epic}
add_aggregates: True # if True add small and large aggregates to soil composition
- setup_outlets:
river_only: True
- 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
river_water_sediment__bagnold_transport_capacity_coefficient: 0.0000175
river_water_sediment__bagnold_transport_capacity_exponent: 1.4
soil_erosion__answers_overland_flow_factor: 0.9
soil_erosion__eurosem_exponent: 2.0
sediment__particle_density: 2650
clay__mean_diameter: 2
silt__mean_diameter: 10
"sediment_small_aggregates__mean_diameter": 30
sand__mean_diameter: 200
"sediment_large_aggregates__mean_diameter": 500
gravel__mean_diameter: 2000
Setup Wflow Sediment model from scratch#
[4]:
# NOTE: copy this line (without !) to your shell for more direct feedback
# NOTE: the region argument has been removed since hydromt v1.0.0 and can now only be configured from the configuration file under the setup_basemap header
!hydromt build wflow_sediment "./wflow_test_sediment" -i wflow_sediment_build.yml -d artifact_data --fo -v
2026-01-14 10:30:55,597 - hydromt - log - INFO - HydroMT version: 1.3.0
2026-01-14 10:30:55,738 - hydromt.data_catalog.data_catalog - data_catalog - INFO - Reading data catalog artifact_data latest
2026-01-14 10:30:55,738 - hydromt.data_catalog.data_catalog - data_catalog - INFO - Parsing data catalog from /home/runner/.hydromt/artifact_data/v1.0.0/data_catalog.yml
2026-01-14 10:30:56,364 - hydromt.model.model - model - INFO - Initializing wflow_sediment model from hydromt_wflow (v1.0.1).
2026-01-14 10:30:56,364 - hydromt.data_catalog.data_catalog - data_catalog - INFO - Parsing data catalog from /home/runner/work/hydromt_wflow/hydromt_wflow/hydromt_wflow/data/parameters_data.yml
2026-01-14 10:30:56,379 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Supported Wflow.jl version v1+
2026-01-14 10:30:56,379 - hydromt.hydromt_wflow.components.config - config - INFO - Reading default config file from /home/runner/work/hydromt_wflow/hydromt_wflow/hydromt_wflow/data/wflow_sediment/wflow_sediment.toml.
2026-01-14 10:30:56,380 - hydromt - log - INFO - HydroMT version: 1.3.0
2026-01-14 10:30:56,380 - hydromt.model.model - model - INFO - build: setup_config
2026-01-14 10:30:56,380 - hydromt.model.model - model - INFO - setup_config.data={'time.starttime': '2010-02-02T00:00:00', 'time.endtime': '2010-02-10T00:00:00', 'time.timestepsecs': 86400, 'output.netcdf_grid.path': 'output.nc', 'output.netcdf_grid.compressionlevel': 1, 'output.netcdf_grid.variables.soil_erosion__mass_flow_rate': 'soil_loss', 'output.netcdf_grid.variables.river_water_sediment__suspended_mass_concentration': 'suspended_solids'}
2026-01-14 10:30:56,380 - hydromt.model.model - model - INFO - build: setup_basemaps
2026-01-14 10:30:56,380 - hydromt.model.model - model - INFO - setup_basemaps.basin_index_fn=merit_hydro_index
2026-01-14 10:30:56,380 - hydromt.model.model - model - INFO - setup_basemaps.res=0.00833
2026-01-14 10:30:56,380 - hydromt.model.model - model - INFO - setup_basemaps.upscale_method=ihu
2026-01-14 10:30:56,380 - hydromt.model.model - model - INFO - setup_basemaps.output_names={'basin__local_drain_direction': 'local_drain_direction', 'subbasin_location__count': 'subcatchment', 'land_surface__slope': 'land_slope'}
2026-01-14 10:30:56,380 - hydromt.model.model - model - INFO - setup_basemaps.hydrography_fn=merit_hydro
2026-01-14 10:30:56,380 - hydromt.model.model - model - INFO - setup_basemaps.region={'subbasin': [12.2051, 45.8331], 'strord': 4, 'bounds': [11.7, 45.35, 12.95, 46.7]}
2026-01-14 10:30:56,380 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Preparing base hydrography basemaps.
2026-01-14 10:30:56,381 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading merit_hydro RasterDataset data from /home/runner/.hydromt/artifact_data/latest/merit_hydro/{variable}.tif
2026-01-14 10:30:56,471 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading merit_hydro_index GeoDataFrame data from /home/runner/.hydromt/artifact_data/latest/merit_hydro_index.gpkg
2026-01-14 10:30:58,936 - hydromt.model.processes.basin_mask - basin_mask - INFO - subbasin bbox: [11.7750, 45.8042, 12.7450, 46.6900]
2026-01-14 10:30:58,992 - hydromt.hydromt_wflow.workflows.basemaps - basemaps - INFO - (Sub)basin at original resolution has 664756 cells.
2026-01-14 10:30:59,119 - hydromt.hydromt_wflow.workflows.basemaps - basemaps - INFO - Upscale flow direction data: 10x, ihu method.
2026-01-14 10:31:09,560 - hydromt.hydromt_wflow.workflows.basemaps - basemaps - INFO - Derive stream order.
2026-01-14 10:31:09,707 - hydromt.hydromt_wflow.workflows.basemaps - basemaps - INFO - Map shape: (106, 116); active cells: 6637.
2026-01-14 10:31:09,707 - hydromt.hydromt_wflow.workflows.basemaps - basemaps - INFO - Outlet coordinates (1/1): (12.20750,45.83583).
2026-01-14 10:31:09,725 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Adding basin shape to staticgeoms.
2026-01-14 10:31:09,737 - hydromt.hydromt_wflow.workflows.basemaps - basemaps - INFO - Derive elevation and slope.
2026-01-14 10:31:09,869 - hydromt.model.model - model - INFO - build: setup_rivers
2026-01-14 10:31:09,869 - hydromt.model.model - model - INFO - setup_rivers.river_geom_fn=hydro_rivers_lin
2026-01-14 10:31:09,869 - hydromt.model.model - model - INFO - setup_rivers.river_upa=30
2026-01-14 10:31:09,869 - hydromt.model.model - model - INFO - setup_rivers.slope_len=2000
2026-01-14 10:31:09,870 - hydromt.model.model - model - INFO - setup_rivers.min_rivlen_ratio=0.0
2026-01-14 10:31:09,870 - hydromt.model.model - model - INFO - setup_rivers.min_rivwth=30
2026-01-14 10:31:09,870 - hydromt.model.model - model - INFO - setup_rivers.smooth_len=5000
2026-01-14 10:31:09,870 - hydromt.model.model - model - INFO - setup_rivers.output_names={'river_location__mask': 'river_mask', 'river__length': 'river_length', 'river__width': 'river_width', 'river__slope': 'river_slope'}
2026-01-14 10:31:09,870 - hydromt.model.model - model - INFO - setup_rivers.hydrography_fn=merit_hydro
2026-01-14 10:31:09,870 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Preparing river maps.
2026-01-14 10:31:09,872 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading merit_hydro RasterDataset data from /home/runner/.hydromt/artifact_data/latest/merit_hydro/{variable}.tif
2026-01-14 10:31:09,943 - hydromt.hydromt_wflow.workflows.river - river - INFO - Set river mask (min uparea: 30 km2) and prepare flow dirs.
2026-01-14 10:31:10,084 - hydromt.hydromt_wflow.workflows.river - river - INFO - Derive river length.
2026-01-14 10:31:13,030 - hydromt.hydromt_wflow.workflows.river - river - INFO - Derive river slope.
2026-01-14 10:31:13,550 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading hydro_rivers_lin GeoDataFrame data from /home/runner/.hydromt/artifact_data/latest/rivers_lin2019_v1.gpkg
2026-01-14 10:31:13,704 - hydromt.hydromt_wflow.workflows.river - river - INFO - Derive ['rivwth'] from shapefile.
2026-01-14 10:31:13,749 - hydromt.hydromt_wflow.workflows.river - river - INFO - Valid for 381/655 river cells (max dist: 392 m).
2026-01-14 10:31:15,984 - hydromt.model.model - model - INFO - build: setup_reservoirs
2026-01-14 10:31:15,984 - hydromt.model.model - model - INFO - setup_reservoirs.overwrite_existing=False
2026-01-14 10:31:15,985 - hydromt.model.model - model - INFO - setup_reservoirs.duplicate_id=error
2026-01-14 10:31:15,985 - hydromt.model.model - model - INFO - setup_reservoirs.min_area=1.0
2026-01-14 10:31:15,985 - hydromt.model.model - model - INFO - setup_reservoirs.trapping_default=1.0
2026-01-14 10:31:15,985 - hydromt.model.model - model - INFO - setup_reservoirs.output_names={'reservoir_area__count': 'reservoir_area_id', 'reservoir_location__count': 'reservoir_outlet_id', 'reservoir_surface__area': 'reservoir_area', 'reservoir_water_sediment__bedload_trapping_efficiency': 'reservoir_trapping_efficiency'}
2026-01-14 10:31:15,985 - hydromt.model.model - model - INFO - setup_reservoirs.geom_name=meta_reservoirs
2026-01-14 10:31:15,985 - hydromt.model.model - model - INFO - setup_reservoirs.reservoirs_fn=hydro_reservoirs
2026-01-14 10:31:15,985 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Preparing reservoir maps.
2026-01-14 10:31:15,985 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading hydro_reservoirs GeoDataFrame data from /home/runner/.hydromt/artifact_data/latest/hydro_reservoirs.gpkg
2026-01-14 10:31:16,002 - hydromt.hydromt_wflow.workflows.reservoirs - reservoirs - INFO - 0 reservoir(s) of sufficient size found within region.
2026-01-14 10:31:16,002 - hydromt.model.model - model - INFO - build: setup_natural_reservoirs
2026-01-14 10:31:16,002 - hydromt.model.model - model - INFO - setup_natural_reservoirs.overwrite_existing=False
2026-01-14 10:31:16,002 - hydromt.model.model - model - INFO - setup_natural_reservoirs.duplicate_id=error
2026-01-14 10:31:16,002 - hydromt.model.model - model - INFO - setup_natural_reservoirs.min_area=1.0
2026-01-14 10:31:16,002 - hydromt.model.model - model - INFO - setup_natural_reservoirs.output_names={'reservoir_area__count': 'reservoir_area_id', 'reservoir_location__count': 'reservoir_outlet_id', 'reservoir_surface__area': 'reservoir_area', 'reservoir_water_sediment__bedload_trapping_efficiency': 'reservoir_trapping_efficiency'}
2026-01-14 10:31:16,002 - hydromt.model.model - model - INFO - setup_natural_reservoirs.geom_name=meta_natural_reservoirs
2026-01-14 10:31:16,002 - hydromt.model.model - model - INFO - setup_natural_reservoirs.reservoirs_fn=hydro_lakes
2026-01-14 10:31:16,002 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Preparing reservoir maps.
2026-01-14 10:31:16,003 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading hydro_lakes GeoDataFrame data from /home/runner/.hydromt/artifact_data/latest/hydro_lakes.gpkg
2026-01-14 10:31:16,012 - hydromt.hydromt_wflow.workflows.reservoirs - reservoirs - INFO - 1 reservoir(s) of sufficient size found within region.
2026-01-14 10:31:16,153 - hydromt.model.model - model - INFO - build: setup_riverbedsed
2026-01-14 10:31:16,153 - hydromt.model.model - model - INFO - setup_riverbedsed.bedsed_mapping_fn=None
2026-01-14 10:31:16,153 - hydromt.model.model - model - INFO - setup_riverbedsed.strord_name=meta_streamorder
2026-01-14 10:31:16,153 - hydromt.model.model - model - INFO - setup_riverbedsed.output_names={'river_bottom_and_bank_sediment__median_diameter': 'river_bed_sediment_d50', 'river_bottom_and_bank_clay__mass_fraction': 'river_bed_clay_fraction', 'river_bottom_and_bank_silt__mass_fraction': 'river_bed_silt_fraction', 'river_bottom_and_bank_sand__mass_fraction': 'river_bed_sand_fraction', 'river_bottom_and_bank_gravel__mass_fraction': 'river_bed_gravel_fraction', 'river_water_sediment__kodatie_transport_capacity_a_coefficient': 'river_kodatie_a', 'river_water_sediment__kodatie_transport_capacity_b_coefficient': 'river_kodatie_b', 'river_water_sediment__kodatie_transport_capacity_c_coefficient': 'river_kodatie_c', 'river_water_sediment__kodatie_transport_capacity_d_coefficient': 'river_kodatie_d'}
2026-01-14 10:31:16,153 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Preparing riverbedsed parameter maps.
2026-01-14 10:31:16,153 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading riverbedsed_mapping_default DataFrame data from /home/runner/work/hydromt_wflow/hydromt_wflow/hydromt_wflow/data/wflow_sediment/riverbedsed_mapping.csv
2026-01-14 10:31:16,159 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_sediment_d50 using average resampling (nodata=-999.0).
2026-01-14 10:31:16,163 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_clay_fraction using average resampling (nodata=-999.0).
2026-01-14 10:31:16,167 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_silt_fraction using average resampling (nodata=-999.0).
2026-01-14 10:31:16,171 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_sand_fraction using average resampling (nodata=-999.0).
2026-01-14 10:31:16,176 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_gravel_fraction using average resampling (nodata=-999.0).
2026-01-14 10:31:16,180 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_a using average resampling (nodata=nan).
2026-01-14 10:31:16,184 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_b using average resampling (nodata=nan).
2026-01-14 10:31:16,188 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_c using average resampling (nodata=nan).
2026-01-14 10:31:16,192 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_d using average resampling (nodata=nan).
2026-01-14 10:31:16,212 - hydromt.model.model - model - INFO - build: setup_lulcmaps
2026-01-14 10:31:16,212 - hydromt.model.model - model - INFO - setup_lulcmaps.lulc_mapping_fn=globcover_mapping_default
2026-01-14 10:31:16,212 - hydromt.model.model - model - INFO - setup_lulcmaps.planted_forest_fn=None
2026-01-14 10:31:16,212 - hydromt.model.model - model - INFO - setup_lulcmaps.lulc_vars=['landuse', 'soil_compacted_fraction', 'erosion_usle_c', 'land_water_fraction']
2026-01-14 10:31:16,212 - hydromt.model.model - model - INFO - setup_lulcmaps.planted_forest_c=0.0881
2026-01-14 10:31:16,212 - hydromt.model.model - model - INFO - setup_lulcmaps.orchard_name=Orchard
2026-01-14 10:31:16,212 - hydromt.model.model - model - INFO - setup_lulcmaps.orchard_c=0.2188
2026-01-14 10:31:16,212 - hydromt.model.model - model - INFO - setup_lulcmaps.output_names_suffix=None
2026-01-14 10:31:16,212 - hydromt.model.model - model - INFO - setup_lulcmaps.lulc_fn=globcover_2009
2026-01-14 10:31:16,212 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Preparing LULC parameter maps.
2026-01-14 10:31:16,214 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading globcover_2009 RasterDataset data from /home/runner/.hydromt/artifact_data/latest/globcover.tif
2026-01-14 10:31:16,223 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading globcover_mapping_default DataFrame data from /home/runner/work/hydromt_wflow/hydromt_wflow/hydromt_wflow/data/lulc/v1.0/globcover_mapping.csv
2026-01-14 10:31:16,230 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving landuse using mode resampling (nodata=230).
2026-01-14 10:31:16,289 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving soil_compacted_fraction using average resampling (nodata=-999.0).
2026-01-14 10:31:16,307 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving erosion_usle_c using average resampling (nodata=-999.0).
2026-01-14 10:31:16,325 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving land_water_fraction using average resampling (nodata=-999.0).
2026-01-14 10:31:16,351 - hydromt.model.model - model - INFO - build: setup_canopymaps
2026-01-14 10:31:16,351 - hydromt.model.model - model - INFO - setup_canopymaps.output_name=vegetation_height
2026-01-14 10:31:16,351 - hydromt.model.model - model - INFO - setup_canopymaps.canopy_fn=simard
2026-01-14 10:31:16,351 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Preparing canopy height map.
2026-01-14 10:31:16,352 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading simard RasterDataset data from /home/runner/.hydromt/artifact_data/latest/simard.tif
2026-01-14 10:31:16,396 - hydromt.model.model - model - INFO - build: setup_soilmaps
2026-01-14 10:31:16,396 - hydromt.model.model - model - INFO - setup_soilmaps.soil_fn=soilgrids
2026-01-14 10:31:16,396 - hydromt.model.model - model - INFO - setup_soilmaps.usle_k_method=renard
2026-01-14 10:31:16,396 - hydromt.model.model - model - INFO - setup_soilmaps.add_aggregates=True
2026-01-14 10:31:16,396 - hydromt.model.model - model - INFO - setup_soilmaps.output_names={'soil_clay__mass_fraction': 'soil_clay_fraction', 'soil_silt__mass_fraction': 'soil_silt_fraction', 'soil_sand__mass_fraction': 'soil_sand_fraction', 'soil_small_aggregates__mass_fraction': 'soil_sagg_fraction', 'soil_large_aggregates__mass_fraction': 'soil_lagg_fraction', 'soil_erosion__rainfall_soil_detachability_factor': 'erosion_soil_detachability', 'soil_erosion__usle_k_factor': 'erosion_usle_k', 'land_surface_sediment__median_diameter': 'soil_sediment_d50', 'land_surface_water_sediment__govers_transport_capacity_coefficient': 'land_govers_c', 'land_surface_water_sediment__govers_transport_capacity_exponent': 'land_govers_n'}
2026-01-14 10:31:16,397 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Preparing soil parameter maps.
2026-01-14 10:31:16,398 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading soilgrids RasterDataset data from /home/runner/.hydromt/artifact_data/latest/soilgrids/{variable}.tif
2026-01-14 10:31:17,226 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for erosion_soil_detachability
2026-01-14 10:31:17,245 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for usle_k
2026-01-14 10:31:17,276 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_sediment_d50
2026-01-14 10:31:17,311 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for land_govers_c
2026-01-14 10:31:17,346 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for land_govers_n
2026-01-14 10:31:17,361 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_clay_fraction
2026-01-14 10:31:17,376 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_silt_fraction
2026-01-14 10:31:17,393 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_sagg_fraction
2026-01-14 10:31:17,414 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_sand_fraction
2026-01-14 10:31:17,455 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_lagg_fraction
2026-01-14 10:31:17,476 - hydromt.model.model - model - INFO - build: setup_outlets
2026-01-14 10:31:17,476 - hydromt.model.model - model - INFO - setup_outlets.river_only=True
2026-01-14 10:31:17,476 - hydromt.model.model - model - INFO - setup_outlets.toml_output=csv
2026-01-14 10:31:17,476 - hydromt.model.model - model - INFO - setup_outlets.gauge_toml_header=['suspended_solids']
2026-01-14 10:31:17,476 - hydromt.model.model - model - INFO - setup_outlets.gauge_toml_param=['river_water_sediment__suspended_mass_concentration']
2026-01-14 10:31:17,476 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Gauges locations set based on river outlets.
2026-01-14 10:31:17,487 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Gauges map based on catchment river outlets added.
2026-01-14 10:31:17,487 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Adding ['river_water_sediment__suspended_mass_concentration'] to csv section of toml.
2026-01-14 10:31:17,487 - hydromt.model.model - model - INFO - build: setup_gauges
2026-01-14 10:31:17,487 - hydromt.model.model - model - INFO - setup_gauges.index_col=None
2026-01-14 10:31:17,487 - hydromt.model.model - model - INFO - setup_gauges.snap_to_river=True
2026-01-14 10:31:17,487 - hydromt.model.model - model - INFO - setup_gauges.mask=None
2026-01-14 10:31:17,487 - hydromt.model.model - model - INFO - setup_gauges.snap_uparea=False
2026-01-14 10:31:17,487 - hydromt.model.model - model - INFO - setup_gauges.max_dist=10000.0
2026-01-14 10:31:17,488 - hydromt.model.model - model - INFO - setup_gauges.wdw=3
2026-01-14 10:31:17,488 - hydromt.model.model - model - INFO - setup_gauges.rel_error=0.05
2026-01-14 10:31:17,488 - hydromt.model.model - model - INFO - setup_gauges.abs_error=50.0
2026-01-14 10:31:17,488 - hydromt.model.model - model - INFO - setup_gauges.fillna=False
2026-01-14 10:31:17,488 - hydromt.model.model - model - INFO - setup_gauges.derive_subcatch=False
2026-01-14 10:31:17,488 - hydromt.model.model - model - INFO - setup_gauges.basename=None
2026-01-14 10:31:17,488 - hydromt.model.model - model - INFO - setup_gauges.toml_output=csv
2026-01-14 10:31:17,488 - hydromt.model.model - model - INFO - setup_gauges.gauge_toml_header=['river_q', 'suspended_solids']
2026-01-14 10:31:17,488 - hydromt.model.model - model - INFO - setup_gauges.gauge_toml_param=['river_water__volume_flow_rate', 'river_water_sediment__suspended_mass_concentration']
2026-01-14 10:31:17,488 - hydromt.model.model - model - INFO - setup_gauges.gauges_fn=grdc
2026-01-14 10:31:17,488 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading grdc GeoDataFrame data from /home/runner/.hydromt/artifact_data/latest/grdc.csv
2026-01-14 10:31:17,494 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - 3 grdc gauge locations found within domain
2026-01-14 10:31:17,780 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Adding ['river_water__volume_flow_rate', 'river_water_sediment__suspended_mass_concentration'] to csv section of toml.
2026-01-14 10:31:17,780 - hydromt.model.model - model - INFO - build: setup_constant_pars
2026-01-14 10:31:17,780 - hydromt.model.model - model - INFO - setup_constant_pars.river_water_sediment__bagnold_transport_capacity_coefficient=1.75e-05
2026-01-14 10:31:17,781 - hydromt.model.model - model - INFO - setup_constant_pars.river_water_sediment__bagnold_transport_capacity_exponent=1.4
2026-01-14 10:31:17,781 - hydromt.model.model - model - INFO - setup_constant_pars.soil_erosion__answers_overland_flow_factor=0.9
2026-01-14 10:31:17,781 - hydromt.model.model - model - INFO - setup_constant_pars.soil_erosion__eurosem_exponent=2.0
2026-01-14 10:31:17,781 - hydromt.model.model - model - INFO - setup_constant_pars.sediment__particle_density=2650
2026-01-14 10:31:17,781 - hydromt.model.model - model - INFO - setup_constant_pars.clay__mean_diameter=2
2026-01-14 10:31:17,781 - hydromt.model.model - model - INFO - setup_constant_pars.silt__mean_diameter=10
2026-01-14 10:31:17,781 - hydromt.model.model - model - INFO - setup_constant_pars.sediment_small_aggregates__mean_diameter=30
2026-01-14 10:31:17,781 - hydromt.model.model - model - INFO - setup_constant_pars.sand__mean_diameter=200
2026-01-14 10:31:17,781 - hydromt.model.model - model - INFO - setup_constant_pars.sediment_large_aggregates__mean_diameter=500
2026-01-14 10:31:17,781 - hydromt.model.model - model - INFO - setup_constant_pars.gravel__mean_diameter=2000
2026-01-14 10:31:17,781 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Write model data to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_sediment
2026-01-14 10:31:17,790 - hydromt.model.components.grid - grid - INFO - wflow_sediment.staticmaps: Writing grid data to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_sediment/staticmaps.nc.
2026-01-14 10:31:17,867 - hydromt.model.components.spatial - spatial - INFO - wflow_sediment.staticmaps: Writing region to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_sediment/staticgeoms/region.geojson.
2026-01-14 10:31:17,882 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_sediment/staticgeoms/meta_basins_highres.geojson.
2026-01-14 10:31:17,892 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_sediment/staticgeoms/basins.geojson.
2026-01-14 10:31:17,895 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_sediment/staticgeoms/rivers.geojson.
2026-01-14 10:31:17,898 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_sediment/staticgeoms/meta_natural_reservoirs.geojson.
2026-01-14 10:31:17,901 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_sediment/staticgeoms/reservoirs.geojson.
2026-01-14 10:31:17,902 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_sediment/staticgeoms/outlets.geojson.
2026-01-14 10:31:17,904 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_sediment/staticgeoms/gauges_grdc.geojson.
2026-01-14 10:31:17,906 - hydromt.model.components.tables - tables - INFO - wflow_sediment.tables: No tables found, skip writing.
2026-01-14 10:31:17,907 - hydromt.model.components.grid - grid - INFO - wflow_sediment.states: No grid data found, skip writing.
2026-01-14 10:31:17,907 - hydromt.hydromt_wflow.components.config - config - INFO - Writing model config to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_sediment/wflow_sediment.toml.
The example above means the following: run hydromt build with:
wflow_sediment: i.e. build a wflow sediment model./wflow_test_sediment: output model folder-i wflow_sediment_build.yml: model setup configuration file-d artifact_data: use pre-defined artifact_data catalog.-v: give some extra verbosity (1 * v) to display feedback on screen. Now INFO messages are provided.
Next we check which files have been created. The model root should contain two netcdf (.nc) files, one for the staticmaps and one for the forcing data, a wflow run configuration (.toml) file. These files are sufficient to run the wflow sediment model. In addition several geometry (.geojson) files are saved in the staticgeoms folder. Finally, the setup process is logged in the hydromt.log file.
[5]:
import os
root = "wflow_test_sediment"
for path, _, files in os.walk(root):
print(path)
for name in files:
if name.endswith(".xml"):
continue
print(f" - {name}")
wflow_test_sediment
- hydromt_data.yml
- staticmaps.nc
- hydromt.log
- wflow_sediment.toml
wflow_test_sediment/staticgeoms
- region.geojson
- basins.geojson
- meta_basins_highres.geojson
- gauges_grdc.geojson
- outlets.geojson
- rivers.geojson
- meta_natural_reservoirs.geojson
- reservoirs.geojson
Visualize and/or inspect model schematization#
You can (copy and) adapt the following example notebooks in order to visualize your Wflow Sediment model:
The wflow plot example notebook contains scripts to visualize your model
The wflow nc to raster files example notebook contains scripts to write the nc model files to a netcdf which can be used to inspect (and modify) the model layers in e.g. QGIS.
Add Wflow Sediment layers to an existing Wflow model#
If you already have a hydrological 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 the template wflow_extend_sediment.yml:
[6]:
fn_config = "wflow_extend_sediment.yml"
with open(fn_config, "r") as f:
txt = f.read()
print(txt)
steps:
- config.read: # read a template config file for wflow sediment to be able to extend from a sbm model
filename: data/wflow_sediment.toml
- setup_config: # options parsed to wflow toml file <section>.<option>
data:
time.starttime: 2010-01-01T00:00:00
time.endtime: 2010-03-31T00:00:00
time.timestepsecs: 86400
output.netcdf_grid.path: output.nc
output.netcdf_grid.compressionlevel: 1
output.netcdf_grid.variables.soil_erosion__mass_flow_rate: soil_loss
output.netcdf_grid.variables.river_water_sediment__suspended_mass_concentration: suspended_solids
- setup_riverbedsed:
bedsed_mapping_fn: # path to a mapping csv file from streamorder to river bed particles characteristics if any, else default is used
# If you do have reservoirs, you can re-run setup_natural_reservoirs and setup_reservoirs to add it
- setup_reservoirs:
reservoirs_fn: hydro_reservoirs # source for reservoirs shape and attributes
min_area: 1.0 # minimum lake area to consider [km2]
trapping_default: 1.0 # default trapping efficiency for reservoirs [0-1]
- setup_natural_reservoirs:
reservoirs_fn: hydro_lakes # source for uncontrolled reservoirs (e.g. lakes) based on hydroLAKES: {hydro_lakes}
min_area: 10.0 # minimum reservoir area to consider [km2]
- setup_lulcmaps:
lulc_fn: globcover_2009 # source for lulc maps: {globcover, vito, corine}
lulc_mapping_fn: globcover_mapping_default # default mapping for lulc classes
- setup_canopymaps:
canopy_fn: simard # source for vegetation canopy height: {simard}
- setup_soilmaps:
soil_fn: soilgrids # source for soilmaps: {soilgrids}
usle_k_method: renard # method to compute the USLE K factor: {renard, epic}
add_aggregates: True # if True add small and large aggregates to soil composition
- setup_outlets:
river_only: True
- 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
river_water_sediment__bagnold_transport_capacity_coefficient: 0.0000175
river_water_sediment__bagnold_transport_capacity_exponent: 1.4
soil_erosion__answers_overland_flow_factor: 0.9
soil_erosion__eurosem_exponent: 2.0
sediment__particle_density: 2650
clay__mean_diameter: 2
silt__mean_diameter: 10
"sediment_small_aggregates__mean_diameter": 30
sand__mean_diameter: 200
"sediment_large_aggregates__mean_diameter": 500
gravel__mean_diameter: 2000
"reservoir_water_sediment__bedload_trapping_efficiency": 1.0
Note that because we are starting from a sbm model, we start here with a read_config step in order to get a default wflow_sediment.toml that contains the minimum config options of the sediment model including variables names of the already present maps (eg slope, river mask…). You may have to modify this template if the staticmaps name do not correspond to the names in your own wflow sbm model.
Let’s update the hydrological Wflow model available from our example for the Piave subbasin:
[7]:
# NOTE: copy this line (without !) to your shell for more direct feedback
!hydromt update wflow_sediment "wflow_piave_subbasin" -o "./wflow_test_extend_sediment" -i wflow_extend_sediment.yml -d artifact_data --fo -v
2026-01-14 10:31:20,515 - hydromt - log - INFO - HydroMT version: 1.3.0
2026-01-14 10:31:20,654 - hydromt.data_catalog.data_catalog - data_catalog - INFO - Reading data catalog artifact_data latest
2026-01-14 10:31:20,654 - hydromt.data_catalog.data_catalog - data_catalog - INFO - Parsing data catalog from /home/runner/.hydromt/artifact_data/v1.0.0/data_catalog.yml
2026-01-14 10:31:21,291 - hydromt.model.model - model - INFO - Initializing wflow_sediment model from hydromt_wflow (v1.0.1).
2026-01-14 10:31:21,291 - hydromt.data_catalog.data_catalog - data_catalog - INFO - Parsing data catalog from /home/runner/work/hydromt_wflow/hydromt_wflow/hydromt_wflow/data/parameters_data.yml
2026-01-14 10:31:21,306 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Supported Wflow.jl version v1+
2026-01-14 10:31:21,306 - hydromt.hydromt_wflow.components.config - config - WARNING - No config was found at /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_piave_subbasin/wflow_sediment.toml. It wil be initialized as empty dict
2026-01-14 10:31:21,306 - hydromt - log - INFO - HydroMT version: 1.3.0
2026-01-14 10:31:21,307 - hydromt.hydromt_wflow.components.config - config - WARNING - No config was found at /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_piave_subbasin/wflow_sediment.toml. It wil be initialized as empty dict
2026-01-14 10:31:22,092 - hydromt.hydromt_wflow.components.tables - tables - INFO - Reading model table files.
2026-01-14 10:31:22,093 - hydromt - log - INFO - HydroMT version: 1.3.0
2026-01-14 10:31:22,094 - hydromt.model.model - model - INFO - update: config.read
2026-01-14 10:31:22,094 - hydromt.model.model - model - INFO - config.read.filename=/home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/data/wflow_sediment.toml
2026-01-14 10:31:22,094 - hydromt.hydromt_wflow.components.config - config - INFO - Reading user defined config file from /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/data/wflow_sediment.toml.
2026-01-14 10:31:22,095 - hydromt.model.model - model - INFO - update: setup_config
2026-01-14 10:31:22,095 - hydromt.model.model - model - INFO - setup_config.data={'time.starttime': datetime.datetime(2010, 1, 1, 0, 0), 'time.endtime': datetime.datetime(2010, 3, 31, 0, 0), 'time.timestepsecs': 86400, 'output.netcdf_grid.path': 'output.nc', 'output.netcdf_grid.compressionlevel': 1, 'output.netcdf_grid.variables.soil_erosion__mass_flow_rate': 'soil_loss', 'output.netcdf_grid.variables.river_water_sediment__suspended_mass_concentration': 'suspended_solids'}
2026-01-14 10:31:22,095 - hydromt.model.model - model - INFO - update: setup_riverbedsed
2026-01-14 10:31:22,095 - hydromt.model.model - model - INFO - setup_riverbedsed.bedsed_mapping_fn=None
2026-01-14 10:31:22,095 - hydromt.model.model - model - INFO - setup_riverbedsed.strord_name=meta_streamorder
2026-01-14 10:31:22,095 - hydromt.model.model - model - INFO - setup_riverbedsed.output_names={'river_bottom_and_bank_sediment__median_diameter': 'river_bed_sediment_d50', 'river_bottom_and_bank_clay__mass_fraction': 'river_bed_clay_fraction', 'river_bottom_and_bank_silt__mass_fraction': 'river_bed_silt_fraction', 'river_bottom_and_bank_sand__mass_fraction': 'river_bed_sand_fraction', 'river_bottom_and_bank_gravel__mass_fraction': 'river_bed_gravel_fraction', 'river_water_sediment__kodatie_transport_capacity_a_coefficient': 'river_kodatie_a', 'river_water_sediment__kodatie_transport_capacity_b_coefficient': 'river_kodatie_b', 'river_water_sediment__kodatie_transport_capacity_c_coefficient': 'river_kodatie_c', 'river_water_sediment__kodatie_transport_capacity_d_coefficient': 'river_kodatie_d'}
2026-01-14 10:31:22,095 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Preparing riverbedsed parameter maps.
2026-01-14 10:31:22,095 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading riverbedsed_mapping_default DataFrame data from /home/runner/work/hydromt_wflow/hydromt_wflow/hydromt_wflow/data/wflow_sediment/riverbedsed_mapping.csv
2026-01-14 10:31:22,103 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_sediment_d50 using average resampling (nodata=-999.0).
2026-01-14 10:31:22,107 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_clay_fraction using average resampling (nodata=-999.0).
2026-01-14 10:31:22,111 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_silt_fraction using average resampling (nodata=-999.0).
2026-01-14 10:31:22,115 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_sand_fraction using average resampling (nodata=-999.0).
2026-01-14 10:31:22,119 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_gravel_fraction using average resampling (nodata=-999.0).
2026-01-14 10:31:22,123 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_a using average resampling (nodata=nan).
2026-01-14 10:31:22,128 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_b using average resampling (nodata=nan).
2026-01-14 10:31:22,132 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_c using average resampling (nodata=nan).
2026-01-14 10:31:22,136 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_d using average resampling (nodata=nan).
2026-01-14 10:31:22,162 - hydromt.model.model - model - INFO - update: setup_reservoirs
2026-01-14 10:31:22,162 - hydromt.model.model - model - INFO - setup_reservoirs.overwrite_existing=False
2026-01-14 10:31:22,162 - hydromt.model.model - model - INFO - setup_reservoirs.duplicate_id=error
2026-01-14 10:31:22,162 - hydromt.model.model - model - INFO - setup_reservoirs.min_area=1.0
2026-01-14 10:31:22,162 - hydromt.model.model - model - INFO - setup_reservoirs.trapping_default=1.0
2026-01-14 10:31:22,162 - hydromt.model.model - model - INFO - setup_reservoirs.output_names={'reservoir_area__count': 'reservoir_area_id', 'reservoir_location__count': 'reservoir_outlet_id', 'reservoir_surface__area': 'reservoir_area', 'reservoir_water_sediment__bedload_trapping_efficiency': 'reservoir_trapping_efficiency'}
2026-01-14 10:31:22,162 - hydromt.model.model - model - INFO - setup_reservoirs.geom_name=meta_reservoirs
2026-01-14 10:31:22,162 - hydromt.model.model - model - INFO - setup_reservoirs.reservoirs_fn=hydro_reservoirs
2026-01-14 10:31:22,162 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Preparing reservoir maps.
2026-01-14 10:31:22,162 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading hydro_reservoirs GeoDataFrame data from /home/runner/.hydromt/artifact_data/latest/hydro_reservoirs.gpkg
2026-01-14 10:31:22,186 - hydromt.hydromt_wflow.workflows.reservoirs - reservoirs - INFO - 0 reservoir(s) of sufficient size found within region.
2026-01-14 10:31:22,186 - hydromt.model.model - model - INFO - update: setup_natural_reservoirs
2026-01-14 10:31:22,186 - hydromt.model.model - model - INFO - setup_natural_reservoirs.overwrite_existing=False
2026-01-14 10:31:22,186 - hydromt.model.model - model - INFO - setup_natural_reservoirs.duplicate_id=error
2026-01-14 10:31:22,186 - hydromt.model.model - model - INFO - setup_natural_reservoirs.min_area=10.0
2026-01-14 10:31:22,186 - hydromt.model.model - model - INFO - setup_natural_reservoirs.output_names={'reservoir_area__count': 'reservoir_area_id', 'reservoir_location__count': 'reservoir_outlet_id', 'reservoir_surface__area': 'reservoir_area', 'reservoir_water_sediment__bedload_trapping_efficiency': 'reservoir_trapping_efficiency'}
2026-01-14 10:31:22,186 - hydromt.model.model - model - INFO - setup_natural_reservoirs.geom_name=meta_natural_reservoirs
2026-01-14 10:31:22,186 - hydromt.model.model - model - INFO - setup_natural_reservoirs.reservoirs_fn=hydro_lakes
2026-01-14 10:31:22,186 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Preparing reservoir maps.
2026-01-14 10:31:22,187 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading hydro_lakes GeoDataFrame data from /home/runner/.hydromt/artifact_data/latest/hydro_lakes.gpkg
2026-01-14 10:31:22,198 - hydromt.hydromt_wflow.workflows.reservoirs - reservoirs - INFO - 0 reservoir(s) of sufficient size found within region.
2026-01-14 10:31:22,198 - hydromt.model.model - model - INFO - update: setup_lulcmaps
2026-01-14 10:31:22,198 - hydromt.model.model - model - INFO - setup_lulcmaps.lulc_mapping_fn=globcover_mapping_default
2026-01-14 10:31:22,198 - hydromt.model.model - model - INFO - setup_lulcmaps.planted_forest_fn=None
2026-01-14 10:31:22,198 - hydromt.model.model - model - INFO - setup_lulcmaps.lulc_vars=['landuse', 'soil_compacted_fraction', 'erosion_usle_c', 'land_water_fraction']
2026-01-14 10:31:22,198 - hydromt.model.model - model - INFO - setup_lulcmaps.planted_forest_c=0.0881
2026-01-14 10:31:22,198 - hydromt.model.model - model - INFO - setup_lulcmaps.orchard_name=Orchard
2026-01-14 10:31:22,198 - hydromt.model.model - model - INFO - setup_lulcmaps.orchard_c=0.2188
2026-01-14 10:31:22,198 - hydromt.model.model - model - INFO - setup_lulcmaps.output_names_suffix=None
2026-01-14 10:31:22,198 - hydromt.model.model - model - INFO - setup_lulcmaps.lulc_fn=globcover_2009
2026-01-14 10:31:22,198 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Preparing LULC parameter maps.
2026-01-14 10:31:22,200 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading globcover_2009 RasterDataset data from /home/runner/.hydromt/artifact_data/latest/globcover.tif
2026-01-14 10:31:22,229 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading globcover_mapping_default DataFrame data from /home/runner/work/hydromt_wflow/hydromt_wflow/hydromt_wflow/data/lulc/v1.0/globcover_mapping.csv
2026-01-14 10:31:22,238 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving landuse using mode resampling (nodata=230).
2026-01-14 10:31:22,279 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving soil_compacted_fraction using average resampling (nodata=-999.0).
2026-01-14 10:31:22,298 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving erosion_usle_c using average resampling (nodata=-999.0).
2026-01-14 10:31:22,317 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving land_water_fraction using average resampling (nodata=-999.0).
2026-01-14 10:31:22,336 - hydromt.hydromt_wflow.components.staticmaps - staticmaps - INFO - Replacing grid map: meta_landuse
2026-01-14 10:31:22,339 - hydromt.hydromt_wflow.components.staticmaps - staticmaps - INFO - Replacing grid map: soil_compacted_fraction
2026-01-14 10:31:22,343 - hydromt.hydromt_wflow.components.staticmaps - staticmaps - INFO - Replacing grid map: land_water_fraction
2026-01-14 10:31:22,346 - hydromt.model.model - model - INFO - update: setup_canopymaps
2026-01-14 10:31:22,346 - hydromt.model.model - model - INFO - setup_canopymaps.output_name=vegetation_height
2026-01-14 10:31:22,346 - hydromt.model.model - model - INFO - setup_canopymaps.canopy_fn=simard
2026-01-14 10:31:22,346 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Preparing canopy height map.
2026-01-14 10:31:22,348 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading simard RasterDataset data from /home/runner/.hydromt/artifact_data/latest/simard.tif
2026-01-14 10:31:22,398 - hydromt.model.model - model - INFO - update: setup_soilmaps
2026-01-14 10:31:22,399 - hydromt.model.model - model - INFO - setup_soilmaps.soil_fn=soilgrids
2026-01-14 10:31:22,399 - hydromt.model.model - model - INFO - setup_soilmaps.usle_k_method=renard
2026-01-14 10:31:22,399 - hydromt.model.model - model - INFO - setup_soilmaps.add_aggregates=True
2026-01-14 10:31:22,399 - hydromt.model.model - model - INFO - setup_soilmaps.output_names={'soil_clay__mass_fraction': 'soil_clay_fraction', 'soil_silt__mass_fraction': 'soil_silt_fraction', 'soil_sand__mass_fraction': 'soil_sand_fraction', 'soil_small_aggregates__mass_fraction': 'soil_sagg_fraction', 'soil_large_aggregates__mass_fraction': 'soil_lagg_fraction', 'soil_erosion__rainfall_soil_detachability_factor': 'erosion_soil_detachability', 'soil_erosion__usle_k_factor': 'erosion_usle_k', 'land_surface_sediment__median_diameter': 'soil_sediment_d50', 'land_surface_water_sediment__govers_transport_capacity_coefficient': 'land_govers_c', 'land_surface_water_sediment__govers_transport_capacity_exponent': 'land_govers_n'}
2026-01-14 10:31:22,399 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Preparing soil parameter maps.
2026-01-14 10:31:22,401 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading soilgrids RasterDataset data from /home/runner/.hydromt/artifact_data/latest/soilgrids/{variable}.tif
2026-01-14 10:31:23,277 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for erosion_soil_detachability
2026-01-14 10:31:23,298 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for usle_k
2026-01-14 10:31:23,332 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_sediment_d50
2026-01-14 10:31:23,371 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for land_govers_c
2026-01-14 10:31:23,408 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for land_govers_n
2026-01-14 10:31:23,422 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_clay_fraction
2026-01-14 10:31:23,436 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_silt_fraction
2026-01-14 10:31:23,453 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_sagg_fraction
2026-01-14 10:31:23,471 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_sand_fraction
2026-01-14 10:31:23,510 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_lagg_fraction
2026-01-14 10:31:23,537 - hydromt.model.model - model - INFO - update: setup_outlets
2026-01-14 10:31:23,537 - hydromt.model.model - model - INFO - setup_outlets.river_only=True
2026-01-14 10:31:23,537 - hydromt.model.model - model - INFO - setup_outlets.toml_output=csv
2026-01-14 10:31:23,537 - hydromt.model.model - model - INFO - setup_outlets.gauge_toml_header=['suspended_solids']
2026-01-14 10:31:23,537 - hydromt.model.model - model - INFO - setup_outlets.gauge_toml_param=['river_water_sediment__suspended_mass_concentration']
2026-01-14 10:31:23,537 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Gauges locations set based on river outlets.
2026-01-14 10:31:24,140 - hydromt.hydromt_wflow.components.staticmaps - staticmaps - INFO - Replacing grid map: outlets
2026-01-14 10:31:24,148 - hydromt.model.components.geoms - geoms - WARNING - Replacing geom: outlets
2026-01-14 10:31:24,152 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Gauges map based on catchment river outlets added.
2026-01-14 10:31:24,152 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Adding ['river_water_sediment__suspended_mass_concentration'] to csv section of toml.
2026-01-14 10:31:24,152 - hydromt.model.model - model - INFO - update: setup_gauges
2026-01-14 10:31:24,152 - hydromt.model.model - model - INFO - setup_gauges.index_col=None
2026-01-14 10:31:24,152 - hydromt.model.model - model - INFO - setup_gauges.snap_to_river=True
2026-01-14 10:31:24,152 - hydromt.model.model - model - INFO - setup_gauges.mask=None
2026-01-14 10:31:24,152 - hydromt.model.model - model - INFO - setup_gauges.snap_uparea=False
2026-01-14 10:31:24,152 - hydromt.model.model - model - INFO - setup_gauges.max_dist=10000.0
2026-01-14 10:31:24,152 - hydromt.model.model - model - INFO - setup_gauges.wdw=3
2026-01-14 10:31:24,152 - hydromt.model.model - model - INFO - setup_gauges.rel_error=0.05
2026-01-14 10:31:24,152 - hydromt.model.model - model - INFO - setup_gauges.abs_error=50.0
2026-01-14 10:31:24,152 - hydromt.model.model - model - INFO - setup_gauges.fillna=False
2026-01-14 10:31:24,152 - hydromt.model.model - model - INFO - setup_gauges.derive_subcatch=False
2026-01-14 10:31:24,152 - hydromt.model.model - model - INFO - setup_gauges.basename=None
2026-01-14 10:31:24,152 - hydromt.model.model - model - INFO - setup_gauges.toml_output=csv
2026-01-14 10:31:24,152 - hydromt.model.model - model - INFO - setup_gauges.gauge_toml_header=['river_q', 'suspended_solids']
2026-01-14 10:31:24,153 - hydromt.model.model - model - INFO - setup_gauges.gauge_toml_param=['river_water__volume_flow_rate', 'river_water_sediment__suspended_mass_concentration']
2026-01-14 10:31:24,153 - hydromt.model.model - model - INFO - setup_gauges.gauges_fn=grdc
2026-01-14 10:31:24,153 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading grdc GeoDataFrame data from /home/runner/.hydromt/artifact_data/latest/grdc.csv
2026-01-14 10:31:24,160 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - 3 grdc gauge locations found within domain
2026-01-14 10:31:24,860 - hydromt.hydromt_wflow.components.staticmaps - staticmaps - INFO - Replacing grid map: gauges_grdc
2026-01-14 10:31:24,871 - hydromt.model.components.geoms - geoms - WARNING - Replacing geom: gauges_grdc
2026-01-14 10:31:24,874 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Adding ['river_water__volume_flow_rate', 'river_water_sediment__suspended_mass_concentration'] to csv section of toml.
2026-01-14 10:31:24,874 - hydromt.model.model - model - INFO - update: setup_constant_pars
2026-01-14 10:31:24,874 - hydromt.model.model - model - INFO - setup_constant_pars.river_water_sediment__bagnold_transport_capacity_coefficient=1.75e-05
2026-01-14 10:31:24,875 - hydromt.model.model - model - INFO - setup_constant_pars.river_water_sediment__bagnold_transport_capacity_exponent=1.4
2026-01-14 10:31:24,875 - hydromt.model.model - model - INFO - setup_constant_pars.soil_erosion__answers_overland_flow_factor=0.9
2026-01-14 10:31:24,875 - hydromt.model.model - model - INFO - setup_constant_pars.soil_erosion__eurosem_exponent=2.0
2026-01-14 10:31:24,875 - hydromt.model.model - model - INFO - setup_constant_pars.sediment__particle_density=2650
2026-01-14 10:31:24,875 - hydromt.model.model - model - INFO - setup_constant_pars.clay__mean_diameter=2
2026-01-14 10:31:24,875 - hydromt.model.model - model - INFO - setup_constant_pars.silt__mean_diameter=10
2026-01-14 10:31:24,875 - hydromt.model.model - model - INFO - setup_constant_pars.sediment_small_aggregates__mean_diameter=30
2026-01-14 10:31:24,875 - hydromt.model.model - model - INFO - setup_constant_pars.sand__mean_diameter=200
2026-01-14 10:31:24,875 - hydromt.model.model - model - INFO - setup_constant_pars.sediment_large_aggregates__mean_diameter=500
2026-01-14 10:31:24,875 - hydromt.model.model - model - INFO - setup_constant_pars.gravel__mean_diameter=2000
2026-01-14 10:31:24,875 - hydromt.model.model - model - INFO - setup_constant_pars.reservoir_water_sediment__bedload_trapping_efficiency=1.0
2026-01-14 10:31:24,875 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Write model data to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment
2026-01-14 10:31:24,882 - hydromt.model.components.grid - grid - INFO - wflow_sediment.staticmaps: Writing grid data to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment/staticmaps.nc.
2026-01-14 10:31:24,964 - hydromt.model.components.spatial - spatial - INFO - wflow_sediment.staticmaps: Writing region to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment/staticgeoms/region.geojson.
2026-01-14 10:31:24,988 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment/staticgeoms/region.geojson.
2026-01-14 10:31:24,990 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment/staticgeoms/basins.geojson.
2026-01-14 10:31:24,991 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment/staticgeoms/meta_basins_highres.geojson.
2026-01-14 10:31:25,002 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment/staticgeoms/gauges_grdc.geojson.
2026-01-14 10:31:25,004 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment/staticgeoms/outlets.geojson.
2026-01-14 10:31:25,006 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment/staticgeoms/glaciers.geojson.
2026-01-14 10:31:25,027 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment/staticgeoms/rivers.geojson.
2026-01-14 10:31:25,030 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment/staticgeoms/meta_reservoirs_no_control.geojson.
2026-01-14 10:31:25,032 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment/staticgeoms/reservoirs.geojson.
2026-01-14 10:31:25,035 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment/staticgeoms/meta_reservoirs_simple_control.geojson.
2026-01-14 10:31:25,038 - hydromt.model.components.tables - tables - INFO - wflow_sediment.tables: No tables found, skip writing.
2026-01-14 10:31:25,038 - hydromt.model.components.grid - grid - INFO - wflow_sediment.states: Writing grid data to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment/instate/instates.nc.
2026-01-14 10:31:25,059 - hydromt.hydromt_wflow.components.config - config - INFO - Writing model config to /home/runner/work/hydromt_wflow/hydromt_wflow/docs/_examples/wflow_test_extend_sediment/wflow_sediment.toml.
The example above means the following: run hydromt update with:
wflow_sediment: i.e. update a wflow_sediment model (in our case a wflow model but with wflow_sediment components)wflow_piave_subbasin: hydrological wflow model folder-o "./wflow_test_extend_sediment": output combined wflow hydrology+sediment models-i wflow_extend_sediment.yml: setup configuration file containing wflow sediment specific components-d artifact_data: use the pre-defined artifact_data catalog-v: give some extra verbosity (1 * v) to display feedback on screen. Now INFO messages are provided.