Tip

For an interactive online version click here: Binder badge

Upgrade your model to the latest Wflow.jl version#

HydroMT-Wflow provides a dedicated CLI command to upgrade your Wflow.jl model to the latest version: hydromt_wflow upgrade.

For SBM models, the main difference between Wflow version 0.8.1 and earlier versus version 1.0.0 and later is that the TOML file structure was updated with new sections and standard names for internal variable references. For example lateral.river.q_av is now *river_water__volume_flow_rate*.

For sediment models, apart from the TOML changes, estimation of some parameters has been moved outside of the Wflow.jl code and into HydroMT-Wflow, allowing easier adjustment and calibration.

The upgrade command copies your model to a new output directory and applies all necessary upgrade steps automatically. Let’s see how to use it.

Upgrading a Wflow SBM model#

For a basic SBM upgrade, no configuration file is needed. The upgrade command detects the model version and applies all necessary steps:

hydromt_wflow upgrade <v0_model_dir> -o <v1_model_dir> -v

For a detailed overview of the upgrade cli options, run:

hydromt_wflow upgrade --help

Let’s first look at the original TOML file before upgrading:

[1]:
from pathlib import Path
import tempfile

v0_upgrade_dir = Path("./data/wflow_upgrade")
v1_upgrade_dir = Path(tempfile.mkdtemp(prefix="wflow_upgrade_"))

toml_v0x = v0_upgrade_dir / "sbm" / "wflow_sbm.toml"
print(toml_v0x.read_text())
casename = "wflow_sbm"
calendar = "proleptic_gregorian"
starttime = "2010-02-02T00:00:00"
endtime = "2010-02-10T00:00:00"
time_units = "days since 1900-01-01 00:00:00"
timestepsecs = 86400
dir_output = "run_default"


[state]
path_input = "instate/instates.nc"
path_output = "outstate/outstates.nc"

[input]
path_forcing = "inmaps.nc"
path_static = "staticmaps.nc"
gauges = "wflow_gauges"
ldd = "wflow_ldd"
river_location = "wflow_river"
subcatchment = "wflow_subcatch"
forcing = [
    "vertical.precipitation",
    "vertical.temperature",
    "vertical.potential_evaporation",
]
cyclic = ["vertical.leaf_area_index"]
gauges_grdc = "wflow_gauges_grdc"
reservoirlocs = "wflow_reservoirlocs"

[model]
type = "sbm"
masswasting = true
snow = true
reinit = true
reservoirs = true
lakes = true
glacier = true
land_routing = "kinematic-wave"
river_routing = "kinematic-wave"
kin_wave_iteration = true
kw_river_tstep = 900
kw_land_tstep = 3600
thicknesslayers = [100, 300, 800]

[state.vertical]
satwaterdepth = "satwaterdepth"
snow = "snow"
tsoil = "tsoil"
ustorelayerdepth = "ustorelayerdepth"
snowwater = "snowwater"
canopystorage = "canopystorage"
glacierstore = "glacierstore"

[input.vertical]
alpha_h1 = "alpha_h1"
altitude = "wflow_dem"
cf_soil = "cf_soil"
cfmax = "Cfmax"
e_r = "EoverR"
f = "f"
infiltcappath = "InfiltCapPath"
infiltcapsoil = "InfiltCapSoil"
kext = "Kext"
kv_0 = "KsatVer"
leaf_area_index = "LAI"
m = "M_"
maxleakage = "MaxLeakage"
pathfrac = "PathFrac"
potential_evaporation = "pet"
precipitation = "precip"
rootdistpar = "rootdistpar"
rootingdepth = "RootingDepth"
soilminthickness = "SoilMinThickness"
soilthickness = "SoilThickness"
specific_leaf = "Sl"
storage_wood = "Swood"
temperature = "temp"
tt = "TT"
tti = "TTI"
ttm = "TTM"
water_holding_capacity = "WHC"
waterfrac = "WaterFrac"
theta_s = "thetaS"
theta_r = "thetaR"
glacierstore = "wflow_glacierstore"
glacierfrac = "wflow_glacierfrac"
g_cfmax = "G_Cfmax"
g_ttm = "G_TTM"
g_sifrac = "G_SIfrac"

[input.vertical.c]
netcdf.variable.name = "c"
scale = [2.0, 1.5]
offset = [0.0, 0.0]
layer = [1, 2]

[state.lateral.river]
q = "q_river"
h = "h_river"
h_av = "h_av_river"

[state.lateral.subsurface]
ssf = "ssf"

[state.lateral.land]
q = "q_land"
h = "h_land"
h_av = "h_av_land"

[input.lateral.river]
length = "wflow_riverlength"
n = "N_River"
slope = "RiverSlope"
width = "wflow_riverwidth"
bankfull_depth = "RiverDepth"

[input.lateral.subsurface.ksathorfrac]
value = 100

[input.lateral.land]
n = "N"
slope = "Slope"

[state.lateral.river.reservoir]
volume = "volume_reservoir"

[state.lateral.river.lake]
waterlevel = "waterlevel_lake"

[input.lateral.river.reservoir]
area = "ResSimpleArea"
areas = "wflow_reservoirareas"
demand = "ResDemand"
locs = "wflow_reservoirlocs"
maxrelease = "ResMaxRelease"
maxvolume = "ResMaxVolume"
targetfullfrac = "ResTargetFullFrac"
targetminfrac = "ResTargetMinFrac"

[input.lateral.river.lake]
area = "LakeArea"
areas = "wflow_lakeareas"
b = "Lake_b"
e = "Lake_e"
locs = "wflow_lakelocs"
outflowfunc = "LakeOutflowFunc"
storfunc = "LakeStorFunc"
threshold = "LakeThreshold"
linkedlakelocs = "LinkedLakeLocs"
waterlevel = "LakeAvgLevel"

[output]
path = "output.nc"

[output.lateral.river]
q_av = "q_river"

[output.lateral.land]
h = "h_land"

[netcdf]
path = "output_scalar.nc"

[[netcdf.variable]]
name = "Q"
map = "gauges"
parameter = "lateral.river.q"

[[netcdf.variable]]
name = "lake-volume"
map = "lateral.river.lake.locs"
parameter = "lateral.river.lake.storage"

[[netcdf.variable]]
name = "temp_coord"
location = "temp_bycoord"
coordinate.x = 11.9594
coordinate.y = 45.8925
parameter = "vertical.temperature"

[csv]
path = "output.csv"

[[csv.column]]
header = "Q-max"
parameter = "lateral.river.q_av"
reducer = "maximum"

[[csv.column]]
header = "res-volume"
index = 1
parameter = "lateral.river.reservoir.volume"

[[csv.column]]
header = "temp_bycoord"
coordinate.x = 11.95
coordinate.y = 45.9
parameter = "vertical.temperature"

[[csv.column]]
header = "temp_byindex"
index.x = 11
index.y = 6
parameter = "vertical.temperature"

[[csv.column]]
header = "Q"
map = "gauges_grdc"
parameter = "lateral.river.q_av"

[[csv.column]]
header = "lake-volume"
map = "lateral.river.lake.locs"
parameter = "lateral.river.lake.storage"

[[csv.column]]
header = "res-outflow"
map = "reservoirlocs"
parameter = "lateral.river.reservoir.outflow"

[[csv.column]]
header = "P"
map = "subcatchment"
parameter = "vertical.precipitation"
reducer = "mean"

Now let’s run the upgrade. If the config filename differs from the default (wflow_sbm.toml), you can specify it via a config file passed with -i. Here we use wflow_sbm_v0x.toml as the config filename:

[2]:
from hydromt_wflow import cli
cli.upgrade(
    args=[
        str(v0_upgrade_dir / "sbm"),
        "-o", str(v1_upgrade_dir / "sbm"),
        "-v",
    ],
    standalone_mode=False
)
2026-07-30 09:43:13,194 - hydromt - log - INFO - HydroMT version: 1.4.0
2026-07-30 09:43:13,196 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - WARNING - No 'wflow_version' found in config and no v1.0-only keys detected. Assuming pre-v1.0 model with v0.8 schema. Please check the config and update the version if needed.
2026-07-30 09:43:13,197 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config to Wflow v1 format
2026-07-30 09:43:13,198 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config general, time and model sections
2026-07-30 09:43:13,198 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config state section
2026-07-30 09:43:13,199 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config input section
2026-07-30 09:43:13,199 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config output sections
2026-07-30 09:43:13,201 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Wrote upgraded v1.0 config to /tmp/wflow_upgrade_7esxbbj9/sbm/wflow_sbm.toml.
2026-07-30 09:43:13,202 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Upgrading config from v0.x to v1.0 format.
2026-07-30 09:43:13,204 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Wrote upgraded v1.1 config to /tmp/wflow_upgrade_7esxbbj9/sbm/wflow_sbm.toml.
2026-07-30 09:43:13,223 - hydromt.model.model - model - INFO - Initializing wflow_sbm model from hydromt_wflow (v1.0.3.dev0).
2026-07-30 09:43:13,224 - 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-07-30 09:43:13,258 - hydromt.hydromt_wflow.components.config - config - INFO - Reading model config file from /tmp/wflow_upgrade_7esxbbj9/sbm/wflow_sbm.toml.
2026-07-30 09:43:13,260 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Supported Wflow.jl version v1.1.
2026-07-30 09:43:14,097 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Reservoirs/lakes found in the grid, converting to Wflow v1 format.
2026-07-30 09:43:14,197 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Renaming lake_*.csv files to reservoir_*.csv files.
2026-07-30 09:43:14,198 - hydromt.hydromt_wflow.components.tables - tables - INFO - Reading model table files.
2026-07-30 09:43:14,199 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Write model data to /tmp/wflow_upgrade_7esxbbj9/sbm
2026-07-30 09:43:14,199 - hydromt.model.components.grid - grid - INFO - wflow_sbm.staticmaps: Writing grid data to /tmp/wflow_upgrade_7esxbbj9/sbm/staticmaps.nc.
2026-07-30 09:43:14,282 - hydromt.model.components.spatial - spatial - INFO - wflow_sbm.staticmaps: Writing region to /tmp/wflow_upgrade_7esxbbj9/sbm/staticgeoms/region.geojson.
2026-07-30 09:43:14,296 - hydromt.model.components.geoms - geoms - INFO - wflow_sbm.geoms: Writing geoms to /tmp/wflow_upgrade_7esxbbj9/sbm/staticgeoms/region.geojson.
2026-07-30 09:43:14,300 - hydromt.hydromt_wflow.components.forcing - forcing - WARNING - Write forcing skipped: dataset is empty (no variables or data).
2026-07-30 09:43:14,300 - hydromt.model.components.tables - tables - INFO - wflow_sbm.tables: No tables found, skip writing.
2026-07-30 09:43:14,301 - hydromt.hydromt_wflow.components.states - states - WARNING - CRS not found in states data, setting to model CRS.
2026-07-30 09:43:14,306 - hydromt.model.components.grid - grid - INFO - wflow_sbm.states: No grid data found, skip writing.
2026-07-30 09:43:14,306 - hydromt.hydromt_wflow.components.config - config - INFO - Writing model config to /tmp/wflow_upgrade_7esxbbj9/sbm/wflow_sbm.toml.
2026-07-30 09:43:14,310 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Model upgraded to Wflow.jl v1.1. model_root=PosixPath('/tmp/wflow_upgrade_7esxbbj9/sbm')

And let’s see the results. Here is what our old TOML file looked like:

[3]:
toml_v0x = v0_upgrade_dir / "sbm" / "wflow_sbm.toml"
print(toml_v0x.read_text())
casename = "wflow_sbm"
calendar = "proleptic_gregorian"
starttime = "2010-02-02T00:00:00"
endtime = "2010-02-10T00:00:00"
time_units = "days since 1900-01-01 00:00:00"
timestepsecs = 86400
dir_output = "run_default"


[state]
path_input = "instate/instates.nc"
path_output = "outstate/outstates.nc"

[input]
path_forcing = "inmaps.nc"
path_static = "staticmaps.nc"
gauges = "wflow_gauges"
ldd = "wflow_ldd"
river_location = "wflow_river"
subcatchment = "wflow_subcatch"
forcing = [
    "vertical.precipitation",
    "vertical.temperature",
    "vertical.potential_evaporation",
]
cyclic = ["vertical.leaf_area_index"]
gauges_grdc = "wflow_gauges_grdc"
reservoirlocs = "wflow_reservoirlocs"

[model]
type = "sbm"
masswasting = true
snow = true
reinit = true
reservoirs = true
lakes = true
glacier = true
land_routing = "kinematic-wave"
river_routing = "kinematic-wave"
kin_wave_iteration = true
kw_river_tstep = 900
kw_land_tstep = 3600
thicknesslayers = [100, 300, 800]

[state.vertical]
satwaterdepth = "satwaterdepth"
snow = "snow"
tsoil = "tsoil"
ustorelayerdepth = "ustorelayerdepth"
snowwater = "snowwater"
canopystorage = "canopystorage"
glacierstore = "glacierstore"

[input.vertical]
alpha_h1 = "alpha_h1"
altitude = "wflow_dem"
cf_soil = "cf_soil"
cfmax = "Cfmax"
e_r = "EoverR"
f = "f"
infiltcappath = "InfiltCapPath"
infiltcapsoil = "InfiltCapSoil"
kext = "Kext"
kv_0 = "KsatVer"
leaf_area_index = "LAI"
m = "M_"
maxleakage = "MaxLeakage"
pathfrac = "PathFrac"
potential_evaporation = "pet"
precipitation = "precip"
rootdistpar = "rootdistpar"
rootingdepth = "RootingDepth"
soilminthickness = "SoilMinThickness"
soilthickness = "SoilThickness"
specific_leaf = "Sl"
storage_wood = "Swood"
temperature = "temp"
tt = "TT"
tti = "TTI"
ttm = "TTM"
water_holding_capacity = "WHC"
waterfrac = "WaterFrac"
theta_s = "thetaS"
theta_r = "thetaR"
glacierstore = "wflow_glacierstore"
glacierfrac = "wflow_glacierfrac"
g_cfmax = "G_Cfmax"
g_ttm = "G_TTM"
g_sifrac = "G_SIfrac"

[input.vertical.c]
netcdf.variable.name = "c"
scale = [2.0, 1.5]
offset = [0.0, 0.0]
layer = [1, 2]

[state.lateral.river]
q = "q_river"
h = "h_river"
h_av = "h_av_river"

[state.lateral.subsurface]
ssf = "ssf"

[state.lateral.land]
q = "q_land"
h = "h_land"
h_av = "h_av_land"

[input.lateral.river]
length = "wflow_riverlength"
n = "N_River"
slope = "RiverSlope"
width = "wflow_riverwidth"
bankfull_depth = "RiverDepth"

[input.lateral.subsurface.ksathorfrac]
value = 100

[input.lateral.land]
n = "N"
slope = "Slope"

[state.lateral.river.reservoir]
volume = "volume_reservoir"

[state.lateral.river.lake]
waterlevel = "waterlevel_lake"

[input.lateral.river.reservoir]
area = "ResSimpleArea"
areas = "wflow_reservoirareas"
demand = "ResDemand"
locs = "wflow_reservoirlocs"
maxrelease = "ResMaxRelease"
maxvolume = "ResMaxVolume"
targetfullfrac = "ResTargetFullFrac"
targetminfrac = "ResTargetMinFrac"

[input.lateral.river.lake]
area = "LakeArea"
areas = "wflow_lakeareas"
b = "Lake_b"
e = "Lake_e"
locs = "wflow_lakelocs"
outflowfunc = "LakeOutflowFunc"
storfunc = "LakeStorFunc"
threshold = "LakeThreshold"
linkedlakelocs = "LinkedLakeLocs"
waterlevel = "LakeAvgLevel"

[output]
path = "output.nc"

[output.lateral.river]
q_av = "q_river"

[output.lateral.land]
h = "h_land"

[netcdf]
path = "output_scalar.nc"

[[netcdf.variable]]
name = "Q"
map = "gauges"
parameter = "lateral.river.q"

[[netcdf.variable]]
name = "lake-volume"
map = "lateral.river.lake.locs"
parameter = "lateral.river.lake.storage"

[[netcdf.variable]]
name = "temp_coord"
location = "temp_bycoord"
coordinate.x = 11.9594
coordinate.y = 45.8925
parameter = "vertical.temperature"

[csv]
path = "output.csv"

[[csv.column]]
header = "Q-max"
parameter = "lateral.river.q_av"
reducer = "maximum"

[[csv.column]]
header = "res-volume"
index = 1
parameter = "lateral.river.reservoir.volume"

[[csv.column]]
header = "temp_bycoord"
coordinate.x = 11.95
coordinate.y = 45.9
parameter = "vertical.temperature"

[[csv.column]]
header = "temp_byindex"
index.x = 11
index.y = 6
parameter = "vertical.temperature"

[[csv.column]]
header = "Q"
map = "gauges_grdc"
parameter = "lateral.river.q_av"

[[csv.column]]
header = "lake-volume"
map = "lateral.river.lake.locs"
parameter = "lateral.river.lake.storage"

[[csv.column]]
header = "res-outflow"
map = "reservoirlocs"
parameter = "lateral.river.reservoir.outflow"

[[csv.column]]
header = "P"
map = "subcatchment"
parameter = "vertical.precipitation"
reducer = "mean"

And here is the same TOML in version 1 format:

[4]:
toml_v1 = v1_upgrade_dir / "sbm" / "wflow_sbm.toml"
print(toml_v1.read_text())
wflow_version = "1.1"
dir_output = "run_default"

[time]
calendar = "proleptic_gregorian"
starttime = "2010-02-02T00:00:00"
endtime = "2010-02-10T00:00:00"
time_units = "days since 1900-01-01 00:00:00"
timestepsecs = 86400

[model]
type = "sbm"
snow_gravitational_transport__flag = true
snow__flag = true
cold_start__flag = true
reservoir__flag = true
glacier__flag = true
land_routing = "kinematic_wave"
river_routing = "kinematic_wave"
kinematic_wave__adaptive_time_step_flag = true
river_kinematic_wave__time_step = 900
land_kinematic_wave__time_step = 3600
soil_layer__thickness = [
    100,
    300,
    800,
]

[state]
path_input = "instate/instates.nc"
path_output = "outstate/outstates.nc"

[state.variables]
vegetation_canopy_water__depth = "canopystorage"
soil_water_saturated_zone__depth = "satwaterdepth"
soil_layer_water_unsaturated_zone__depth = "ustorelayerdepth"
soil_surface__temperature = "tsoil"
snowpack_dry_snow__leq_depth = "snow"
snowpack_liquid_water__depth = "snowwater"
glacier_ice__leq_depth = "glacierstore"
land_surface_water__instantaneous_volume_flow_rate = "q_land"
land_surface_water__depth = "h_land"
river_water__instantaneous_volume_flow_rate = "q_river"
river_water__depth = "h_river"
reservoir_water_surface__elevation = "reservoir_water_level"
subsurface_water__instantaneous_volume_flow_rate = "ssf"

[input]
path_forcing = "inmaps.nc"
path_static = "staticmaps.nc"
gauges = "wflow_gauges"
basin__local_drain_direction = "wflow_ldd"
river_location__mask = "wflow_river"
subbasin_location__count = "wflow_subcatch"
gauges_grdc = "wflow_gauges_grdc"
reservoir_area__count = "reservoir_area_id"
reservoir_location__count = "reservoir_outlet_id"
reservoir_lower_location__count = "reservoir_lower_id"

[input.forcing]
atmosphere_water__precipitation_volume_flux = "precip"
atmosphere_air__temperature = "temp"
land_surface_water__potential_evaporation_volume_flux = "pet"

[input.cyclic]
vegetation__leaf_area_index = "LAI"

[input.static]
snowpack__degree_day_coefficient = "Cfmax"
atmosphere_air__snowfall_temperature_threshold = "TT"
atmosphere_air__snowfall_temperature_interval = "TTI"
snowpack__melting_temperature_threshold = "TTM"
snowpack__liquid_water_holding_capacity = "WHC"
glacier_surface__area_fraction = "wflow_glacierfrac"
glacier_ice__initial_leq_depth = "wflow_glacierstore"
glacier_ice__melting_temperature_threshold = "G_TTM"
glacier_ice__degree_day_coefficient = "G_Cfmax"
glacier_firn_accumulation__snowpack_dry_snow_leq_depth_fraction = "G_SIfrac"
vegetation_canopy_water__mean_evaporation_to_mean_precipitation_ratio = "EoverR"
vegetation_canopy__light_extinction_coefficient = "Kext"
vegetation_root__depth = "RootingDepth"
vegetation__specific_leaf_storage = "Sl"
vegetation_wood_water__storage_capacity = "Swood"
vegetation_root__feddes_critical_pressure_head_h1_reduction_coefficient = "alpha_h1"
soil_surface_water__infiltration_reduction_parameter = "cf_soil"
soil_surface_water__vertical_saturated_hydraulic_conductivity = "KsatVer"
soil_water__vertical_saturated_hydraulic_conductivity_scale_parameter = "f"
compacted_soil_surface_water__infiltration_capacity = "InfiltCapPath"
soil_water__residual_volume_fraction = "thetaR"
soil_water__saturated_volume_fraction = "thetaS"
soil_water_saturated_zone_bottom__max_leakage_volume_flux = "MaxLeakage"
compacted_soil__area_fraction = "PathFrac"
soil_wet_root__sigmoid_function_shape_parameter = "rootdistpar"
soil__thickness = "SoilThickness"
land_water_covered__area_fraction = "WaterFrac"
land_surface_water_flow__manning_n_parameter = "N"
land_surface__elevation = "wflow_dem"
land_surface__slope = "Slope"
river_bank_water__depth = "RiverDepth"
river__length = "wflow_riverlength"
river_water_flow__manning_n_parameter = "N_River"
river__slope = "RiverSlope"
river__width = "wflow_riverwidth"
reservoir_water_surface__initial_elevation = "reservoir_initial_depth"
reservoir_water_flow_threshold_level__elevation = "reservoir_outflow_threshold"
reservoir_water__rating_curve_coefficient = "reservoir_b"
reservoir_water__rating_curve_exponent = "reservoir_e"
reservoir_water__rating_curve_type_count = "reservoir_rating_curve"
reservoir_water__storage_curve_type_count = "reservoir_storage_curve"
reservoir_surface__area = "reservoir_area"
reservoir_water_demand__required_downstream_volume_flow_rate = "reservoir_demand"
reservoir_water_release_below_spillway__max_volume_flow_rate = "reservoir_max_release"
reservoir_water__max_volume = "reservoir_max_volume"
reservoir_water__target_full_volume_fraction = "reservoir_target_full_fraction"
reservoir_water__target_min_volume_fraction = "reservoir_target_min_fraction"

[input.static.soil_layer_water__brooks_corey_exponent]
scale = [
    2.0,
    1.5,
]
offset = [
    0.0,
    0.0,
]
layer = [
    1,
    2,
]
netcdf_variable_name = "c"

[input.static.subsurface_water__horizontal_to_vertical_saturated_hydraulic_conductivity_ratio]
value = 100

[output.netcdf_grid]
path = "output.nc"
compressionlevel = 1

[output.netcdf_grid.variables]
river_water__volume_flow_rate = "q_river"
land_surface_water__depth = "h_land"

[output.netcdf_scalar]
path = "output_scalar.nc"

[[output.netcdf_scalar.variable]]
name = "Q"
map = "gauges"
parameter = "river_water__instantaneous_volume_flow_rate"

[[output.netcdf_scalar.variable]]
name = "lake-volume"
map = "reservoir_location__count"
parameter = "reservoir_water__volume"

[[output.netcdf_scalar.variable]]
name = "temp_coord"
location = "temp_bycoord"
parameter = "atmosphere_air__temperature"

[output.netcdf_scalar.variable.coordinate]
x = 11.9594
y = 45.8925

[output.csv]
path = "output.csv"

[[output.csv.column]]
header = "Q-max"
parameter = "river_water__volume_flow_rate"
reducer = "maximum"

[[output.csv.column]]
header = "res-volume"
index = 1
parameter = "reservoir_water__volume"

[[output.csv.column]]
header = "temp_bycoord"
parameter = "atmosphere_air__temperature"

[output.csv.column.coordinate]
x = 11.95
y = 45.9

[[output.csv.column]]
header = "temp_byindex"
parameter = "atmosphere_air__temperature"

[output.csv.column.index]
x = 11
y = 6

[[output.csv.column]]
header = "Q"
map = "gauges_grdc"
parameter = "river_water__volume_flow_rate"

[[output.csv.column]]
header = "lake-volume"
map = "reservoir_location__count"
parameter = "reservoir_water__volume"

[[output.csv.column]]
header = "res-outflow"
map = "reservoir_location__count"
parameter = "reservoir_water__outgoing_volume_flow_rate"

[[output.csv.column]]
header = "P"
map = "subbasin_location__count"
parameter = "atmosphere_water__precipitation_volume_flux"
reducer = "mean"

The lakes and reservoirs have been merged into one structure and the new staticmaps file has been generated. Here are all the available variables:

[5]:
import xarray as xr

staticmaps = xr.open_dataset(v1_upgrade_dir / "sbm" / "staticmaps.nc")
print(list(staticmaps.data_vars.keys()))
['x_out', 'y_out', 'idx_out', 'wflow_ldd', 'wflow_subcatch', 'wflow_uparea', 'subare', 'dem_subgrid', 'wflow_streamorder', 'wflow_dem', 'Slope', 'wflow_river', 'wflow_riverlength', 'RiverSlope', 'N_River', 'wflow_riverwidth', 'RiverDepth', 'wflow_reservoirareas', 'wflow_reservoirlocs', 'ResMaxVolume', 'ResSimpleArea', 'ResDemand', 'ResMaxRelease', 'ResTargetFullFrac', 'ResTargetMinFrac', 'wflow_lakeareas', 'wflow_lakelocs', 'LakeArea', 'LakeAvgLevel', 'LakeAvgOut', 'Lake_b', 'Lake_e', 'LakeStorFunc', 'LakeOutflowFunc', 'LakeThreshold', 'LinkedLakeLocs', 'wflow_glacierareas', 'wflow_glacierstore', 'wflow_glacierfrac', 'wflow_landuse', 'Kext', 'N', 'PathFrac', 'RootingDepth', 'Sl', 'Swood', 'WaterFrac', 'kc', 'alpha_h1', 'h1', 'h2', 'h3_high', 'h3_low', 'h4', 'LAI', 'thetaS', 'thetaR', 'SoilThickness', 'SoilMinThickness', 'c', 'KsatVer', 'KsatVer_0.0cm', 'KsatVer_5.0cm', 'KsatVer_15.0cm', 'KsatVer_30.0cm', 'KsatVer_60.0cm', 'KsatVer_100.0cm', 'KsatVer_200.0cm', 'M_original_', 'M_', 'f_', 'M_original', 'M', 'f', 'wflow_soil', 'wflow_gauges', 'wflow_gauges_grdc', 'KsatHorFrac', 'Cfmax', 'cf_soil', 'EoverR', 'InfiltCapPath', 'InfiltCapSoil', 'MaxLeakage', 'rootdistpar', 'TT', 'TTI', 'TTM', 'WHC', 'G_Cfmax', 'G_SIfrac', 'G_TT']

Upgrading a Wflow Sediment model#

For sediment models, you may need to pass upgrade options (e.g. which soil dataset to use). Create a simplified YAML config file:

[6]:
fn_config = v0_upgrade_dir / "wflow_upgrade_sediment.yml"
print(fn_config.read_text())
config_filename: wflow_sediment.toml

0.8_1.0:
  soil_fn: soilgrids

This config sets version-specific options for the upgrade. On the command line:

hydromt_wflow upgrade "./data/wflow_upgrade/sediment" -o "./data/wflow_upgrade/sediment_v1" --model-type wflow_sediment -i wflow_upgrade_sediment.yml -d artifact_data -v

Let’s run the upgrade:

[7]:
cli.upgrade(args=[
    str(v0_upgrade_dir / "sediment"),
    "-o", str(v1_upgrade_dir / "sediment"),
    "--model-type", "wflow_sediment",
    "-i", str(fn_config),
    "-d", "artifact_data",
    "-v",
], standalone_mode=False)
2026-07-30 09:43:14,362 - hydromt - log - INFO - HydroMT version: 1.4.0
2026-07-30 09:43:14,362 - hydromt - log - INFO - HydroMT version: 1.4.0
2026-07-30 09:43:14,365 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - WARNING - No 'wflow_version' found in config and no v1.0-only keys detected. Assuming pre-v1.0 model with v0.8 schema. Please check the config and update the version if needed.
2026-07-30 09:43:14,365 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - WARNING - No 'wflow_version' found in config and no v1.0-only keys detected. Assuming pre-v1.0 model with v0.8 schema. Please check the config and update the version if needed.
2026-07-30 09:43:14,366 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config to Wflow v1 format
2026-07-30 09:43:14,366 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config to Wflow v1 format
2026-07-30 09:43:14,367 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config general, time and model sections
2026-07-30 09:43:14,367 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config general, time and model sections
2026-07-30 09:43:14,368 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config state section
2026-07-30 09:43:14,368 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config state section
2026-07-30 09:43:14,369 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config input section
2026-07-30 09:43:14,369 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config input section
2026-07-30 09:43:14,370 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config output sections
2026-07-30 09:43:14,370 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Converting config output sections
2026-07-30 09:43:14,372 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Wrote upgraded v1.0 config to /tmp/wflow_upgrade_7esxbbj9/sediment/wflow_sediment.toml.
2026-07-30 09:43:14,372 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Wrote upgraded v1.0 config to /tmp/wflow_upgrade_7esxbbj9/sediment/wflow_sediment.toml.
2026-07-30 09:43:14,373 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Upgrading config from v0.x to v1.0 format.
2026-07-30 09:43:14,373 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Upgrading config from v0.x to v1.0 format.
2026-07-30 09:43:14,375 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Wrote upgraded v1.1 config to /tmp/wflow_upgrade_7esxbbj9/sediment/wflow_sediment.toml.
2026-07-30 09:43:14,375 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Wrote upgraded v1.1 config to /tmp/wflow_upgrade_7esxbbj9/sediment/wflow_sediment.toml.
2026-07-30 09:43:14,419 - hydromt.data_catalog.data_catalog - data_catalog - INFO - Reading data catalog artifact_data latest
2026-07-30 09:43:14,419 - hydromt.data_catalog.data_catalog - data_catalog - INFO - Reading data catalog artifact_data latest
2026-07-30 09:43:14,420 - hydromt.data_catalog.data_catalog - data_catalog - INFO - Parsing data catalog from /home/runner/.hydromt/artifact_data/v1.0.0/data_catalog.yml
2026-07-30 09:43:14,420 - hydromt.data_catalog.data_catalog - data_catalog - INFO - Parsing data catalog from /home/runner/.hydromt/artifact_data/v1.0.0/data_catalog.yml
2026-07-30 09:43:15,051 - hydromt.model.model - model - INFO - Initializing wflow_sediment model from hydromt_wflow (v1.0.3.dev0).
2026-07-30 09:43:15,051 - hydromt.model.model - model - INFO - Initializing wflow_sediment model from hydromt_wflow (v1.0.3.dev0).
2026-07-30 09:43:15,053 - 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-07-30 09:43:15,053 - 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-07-30 09:43:15,072 - hydromt.hydromt_wflow.components.config - config - INFO - Reading model config file from /tmp/wflow_upgrade_7esxbbj9/sediment/wflow_sediment.toml.
2026-07-30 09:43:15,072 - hydromt.hydromt_wflow.components.config - config - INFO - Reading model config file from /tmp/wflow_upgrade_7esxbbj9/sediment/wflow_sediment.toml.
2026-07-30 09:43:15,074 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Supported Wflow.jl version v1.1.
2026-07-30 09:43:15,074 - hydromt.hydromt_wflow.wflow_base - wflow_base - INFO - Supported Wflow.jl version v1.1.
2026-07-30 09:43:15,074 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Preparing soil parameter maps.
2026-07-30 09:43:15,074 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Preparing soil parameter maps.
2026-07-30 09:43:15,267 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading soilgrids RasterDataset data from /home/runner/.hydromt/artifact_data/latest/soilgrids/{variable}.tif
2026-07-30 09:43:15,267 - hydromt.data_catalog.sources.data_source - data_source - INFO - Reading soilgrids RasterDataset data from /home/runner/.hydromt/artifact_data/latest/soilgrids/{variable}.tif
2026-07-30 09:43:15,890 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for erosion_soil_detachability
2026-07-30 09:43:15,890 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for erosion_soil_detachability
2026-07-30 09:43:15,895 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for usle_k
2026-07-30 09:43:15,895 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for usle_k
2026-07-30 09:43:15,900 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_sediment_d50
2026-07-30 09:43:15,900 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_sediment_d50
2026-07-30 09:43:15,904 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for land_govers_c
2026-07-30 09:43:15,904 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for land_govers_c
2026-07-30 09:43:15,910 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for land_govers_n
2026-07-30 09:43:15,910 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for land_govers_n
2026-07-30 09:43:15,915 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_clay_fraction
2026-07-30 09:43:15,915 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_clay_fraction
2026-07-30 09:43:15,919 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_silt_fraction
2026-07-30 09:43:15,919 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_silt_fraction
2026-07-30 09:43:15,924 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_sagg_fraction
2026-07-30 09:43:15,924 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_sagg_fraction
2026-07-30 09:43:15,930 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_sand_fraction
2026-07-30 09:43:15,930 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_sand_fraction
2026-07-30 09:43:15,935 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_lagg_fraction
2026-07-30 09:43:15,935 - hydromt.hydromt_wflow.workflows.soilgrids - soilgrids - INFO - Interpolate NAN values for soil_lagg_fraction
2026-07-30 09:43:15,962 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Preparing riverbedsed parameter maps.
2026-07-30 09:43:15,962 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Preparing riverbedsed parameter maps.
2026-07-30 09:43:15,963 - 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-07-30 09:43:15,963 - 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-07-30 09:43:15,973 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_sediment_d50 using average resampling (nodata=-999.0).
2026-07-30 09:43:15,973 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_sediment_d50 using average resampling (nodata=-999.0).
2026-07-30 09:43:15,979 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_clay_fraction using average resampling (nodata=-999.0).
2026-07-30 09:43:15,979 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_clay_fraction using average resampling (nodata=-999.0).
2026-07-30 09:43:15,984 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_silt_fraction using average resampling (nodata=-999.0).
2026-07-30 09:43:15,984 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_silt_fraction using average resampling (nodata=-999.0).
2026-07-30 09:43:15,990 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_sand_fraction using average resampling (nodata=-999.0).
2026-07-30 09:43:15,990 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_sand_fraction using average resampling (nodata=-999.0).
2026-07-30 09:43:15,996 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_gravel_fraction using average resampling (nodata=-999.0).
2026-07-30 09:43:15,996 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_bed_gravel_fraction using average resampling (nodata=-999.0).
2026-07-30 09:43:16,002 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_a using average resampling (nodata=nan).
2026-07-30 09:43:16,002 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_a using average resampling (nodata=nan).
2026-07-30 09:43:16,008 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_b using average resampling (nodata=nan).
2026-07-30 09:43:16,008 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_b using average resampling (nodata=nan).
2026-07-30 09:43:16,013 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_c using average resampling (nodata=nan).
2026-07-30 09:43:16,013 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_c using average resampling (nodata=nan).
2026-07-30 09:43:16,019 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_d using average resampling (nodata=nan).
2026-07-30 09:43:16,019 - hydromt.hydromt_wflow.workflows.landuse - landuse - INFO - Deriving river_kodatie_d using average resampling (nodata=nan).
2026-07-30 09:43:16,048 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Reservoirs/lakes found in the grid, converting to Wflow v1 format.
2026-07-30 09:43:16,048 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Reservoirs/lakes found in the grid, converting to Wflow v1 format.
2026-07-30 09:43:16,072 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Write model data to /tmp/wflow_upgrade_7esxbbj9/sediment
2026-07-30 09:43:16,072 - hydromt.hydromt_wflow.wflow_sediment - wflow_sediment - INFO - Write model data to /tmp/wflow_upgrade_7esxbbj9/sediment
2026-07-30 09:43:16,078 - hydromt.model.components.grid - grid - INFO - wflow_sediment.staticmaps: Writing grid data to /tmp/wflow_upgrade_7esxbbj9/sediment/staticmaps.nc.
2026-07-30 09:43:16,078 - hydromt.model.components.grid - grid - INFO - wflow_sediment.staticmaps: Writing grid data to /tmp/wflow_upgrade_7esxbbj9/sediment/staticmaps.nc.
2026-07-30 09:43:16,146 - hydromt.model.components.spatial - spatial - INFO - wflow_sediment.staticmaps: Writing region to /tmp/wflow_upgrade_7esxbbj9/sediment/staticgeoms/region.geojson.
2026-07-30 09:43:16,146 - hydromt.model.components.spatial - spatial - INFO - wflow_sediment.staticmaps: Writing region to /tmp/wflow_upgrade_7esxbbj9/sediment/staticgeoms/region.geojson.
2026-07-30 09:43:16,160 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /tmp/wflow_upgrade_7esxbbj9/sediment/staticgeoms/region.geojson.
2026-07-30 09:43:16,160 - hydromt.model.components.geoms - geoms - INFO - wflow_sediment.geoms: Writing geoms to /tmp/wflow_upgrade_7esxbbj9/sediment/staticgeoms/region.geojson.
2026-07-30 09:43:16,164 - hydromt.hydromt_wflow.components.tables - tables - INFO - Reading model table files.
2026-07-30 09:43:16,164 - hydromt.hydromt_wflow.components.tables - tables - INFO - Reading model table files.
2026-07-30 09:43:16,165 - hydromt.model.components.tables - tables - INFO - wflow_sediment.tables: No tables found, skip writing.
2026-07-30 09:43:16,165 - hydromt.model.components.tables - tables - INFO - wflow_sediment.tables: No tables found, skip writing.
2026-07-30 09:43:16,166 - hydromt.hydromt_wflow.components.states - states - WARNING - CRS not found in states data, setting to model CRS.
2026-07-30 09:43:16,166 - hydromt.hydromt_wflow.components.states - states - WARNING - CRS not found in states data, setting to model CRS.
2026-07-30 09:43:16,171 - hydromt.model.components.grid - grid - INFO - wflow_sediment.states: No grid data found, skip writing.
2026-07-30 09:43:16,171 - hydromt.model.components.grid - grid - INFO - wflow_sediment.states: No grid data found, skip writing.
2026-07-30 09:43:16,173 - hydromt.hydromt_wflow.components.config - config - INFO - Writing model config to /tmp/wflow_upgrade_7esxbbj9/sediment/wflow_sediment.toml.
2026-07-30 09:43:16,173 - hydromt.hydromt_wflow.components.config - config - INFO - Writing model config to /tmp/wflow_upgrade_7esxbbj9/sediment/wflow_sediment.toml.
2026-07-30 09:43:16,176 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Model upgraded to Wflow.jl v1.1. model_root=PosixPath('/tmp/wflow_upgrade_7esxbbj9/sediment')
2026-07-30 09:43:16,176 - hydromt.hydromt_wflow.version_upgrade - version_upgrade - INFO - Model upgraded to Wflow.jl v1.1. model_root=PosixPath('/tmp/wflow_upgrade_7esxbbj9/sediment')

And let’s see the results. Here is what our old TOML file looked like:

[8]:
toml_v0x = v0_upgrade_dir / "sediment" / "wflow_sediment.toml"
print(toml_v0x.read_text())
casename = "wflow_sediment"
calendar = "proleptic_gregorian"
starttime = "2010-02-01T00:00:00"
endtime = "2010-02-10T00:00:00"
time_units = "days since 1900-01-01 00:00:00"
timestepsecs = 86400
dir_output = "run_default"

[state]
path_input = "instate/instates.nc"
path_output = "outstate/outstates.nc"

[input]
path_forcing = "inmaps.nc"
path_static = "staticmaps.nc"
ldd = "wflow_ldd"
river_location = "wflow_river"
subcatchment = "wflow_subcatch"
forcing = [
    "vertical.h_land",
    "vertical.interception",
    "vertical.precipitation",
    "vertical.q_land",
    "lateral.river.h_riv",
    "lateral.river.q_riv",
]
cyclic = ["vertical.leaf_area_index"]
gauges = "wflow_gauges"
gauges_grdc = "wflow_gauges_grdc"

[model]
type = "sediment"
reinit = true
runrivermodel = true
doreservoir = true
dolake = true
rainerosmethod = "answers"
landtransportmethod = "yalinpart"
rivtransportmethod = "bagnold"

[output]
path = "output.nc"

[csv]
path = "output.csv"
[[csv.column]]
header = "TSS"
map = "gauges"
parameter = "lateral.river.SSconc"

[[csv.column]]
header = "Q"
map = "gauges_grdc"
parameter = "lateral.river.q_riv"

[[csv.column]]
header = "TSS"
map = "gauges_grdc"
parameter = "lateral.river.SSconc"

[input.vertical]
altitude = "wflow_dem"
canopyheight = "CanopyHeight"
erosk = "ErosK"
erosspl = "eros_spl_EUROSEM"
erosov = "eros_ov"
h_land = "lwl"
interception = "int"
kext = "Kext"
leaf_area_index = "LAI"
pathfrac = "PathFrac"
precipitation = "prec"
q_land = "lro"
slope = "Slope"
specific_leaf = "Sl"
storage_wood = "Swood"
usleC = "USLE_C"
usleK = "USLE_K"
pclay = "PercentClay"
psilt = "PercentSilt"
rivcell = "wflow_river"
resareas = "wflow_reservoirareas"
lakeareas = "wflow_lakeareas"

[output.vertical]
soilloss = "soilloss"

[state.lateral.river]
clayload = "clayload"
siltload = "siltload"
sandload = "sandload"
saggload = "saggload"
laggload = "laggload"
gravload = "gravload"
claystore = "claystore"
siltstore = "siltstore"
sandstore = "sandstore"
saggstore = "saggstore"
laggstore = "laggstore"
gravstore = "gravstore"
outclay = "outclay"
outsilt = "outsilt"
outsand = "outsand"
outsagg = "outsagg"
outlagg = "outlagg"
outgrav = "outgrav"

[input.lateral.land]
slope = "Slope"

[input.lateral.river]
h_riv = "rwl"
q_riv = "rro"
cbagnold = "c_Bagnold"
d50 = "D50_River"
d50engelund = "D50_River"
ebagnold = "exp_Bagnold"
fclayriv = "ClayF_River"
fsiltriv = "SiltF_River"
fsandriv = "SandF_River"
fgravriv = "GravelF_River"
length = "wflow_riverlength"
slope = "RiverSlope"
width = "wflow_riverwidth"
resarea = "ResSimpleArea"
restrapeff = "ResTrapEff"
resareas = "wflow_reservoirareas"
reslocs = "wflow_reservoirlocs"
lakearea = "LakeArea"
lakeareas = "wflow_lakeareas"
lakelocs = "wflow_lakelocs"
bankfull_depth = "RiverDepth"

[output.lateral.river]
SSconc = "SSconc"

And here is the same TOML in version 1 format:

[9]:
toml_v1 = v1_upgrade_dir / "sediment" / "wflow_sediment.toml"
print(toml_v1.read_text())
wflow_version = "1.1"
dir_output = "run_default"

[time]
calendar = "proleptic_gregorian"
starttime = "2010-02-01T00:00:00"
endtime = "2010-02-10T00:00:00"
time_units = "days since 1900-01-01 00:00:00"
timestepsecs = 86400

[model]
type = "sediment"
cold_start__flag = true
run_river_model__flag = true
reservoir__flag = true
rainfall_erosion = "answers"
land_transport = "yalinpart"
river_transport = "bagnold"

[state]
path_input = "instate/instates.nc"
path_output = "outstate/outstates.nc"

[state.variables]
river_water_clay__mass = "clayload"
river_bed_clay__mass = "claystore"
river_water_clay__mass_flow_rate = "outclay"
river_water_gravel__mass = "gravload"
river_bed_gravel__mass = "gravstore"
river_water_gravel__mass_flow_rate = "outgrav"
river_water_large_aggregates__mass = "laggload"
river_bed_large_aggregates__mass = "laggstore"
river_water_large_aggregates__mass_flow_rate = "outlagg"
river_water_small_aggregates__mass = "saggload"
river_bed_small_aggregates__mass = "saggstore"
river_water_small_aggregates__mass_flow_rate = "outsagg"
river_water_sand__mass = "sandload"
river_bed_sand__mass = "sandstore"
river_water_sand__mass_flow_rate = "outsand"
river_water_silt__mass = "siltload"
river_bed_silt__mass = "siltstore"
river_water_silt__mass_flow_rate = "outsilt"

[input]
path_forcing = "inmaps.nc"
path_static = "staticmaps.nc"
basin__local_drain_direction = "wflow_ldd"
river_location__mask = "wflow_river"
subbasin_location__count = "wflow_subcatch"
gauges = "wflow_gauges"
gauges_grdc = "wflow_gauges_grdc"
reservoir_area__count = "reservoir_area_id"
reservoir_location__count = "reservoir_outlet_id"

[input.forcing]
atmosphere_water__precipitation_volume_flux = "prec"
vegetation_canopy_water__interception_volume_flux = "int"
land_surface_water__depth = "lwl"
land_surface_water__volume_flow_rate = "lro"
river_water__depth = "rwl"
river_water__volume_flow_rate = "rro"

[input.cyclic]

[input.static]
land_surface__elevation = "wflow_dem"
land_surface__slope = "Slope"
river__length = "wflow_riverlength"
river__slope = "RiverSlope"
river__width = "wflow_riverwidth"
reservoir_surface__area = "reservoir_area"
reservoir_water_sediment__bedload_trapping_efficiency = "reservoir_trapping_efficiency"
vegetation_canopy__height = "CanopyHeight"
compacted_soil__area_fraction = "PathFrac"
soil_erosion__rainfall_soil_detachability_factor = "erosion_soil_detachability"
soil_erosion__eurosem_exponent = "eros_spl_EUROSEM"
soil_erosion__usle_k_factor = "erosion_usle_k"
soil_erosion__usle_c_factor = "USLE_C"
soil_erosion__answers_overland_flow_factor = "eros_ov"
river_water_sediment__bagnold_transport_capacity_coefficient = "c_Bagnold"
river_water_sediment__bagnold_transport_capacity_exponent = "exp_Bagnold"
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"
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"
soil_clay__mass_fraction = "soil_clay_fraction"
soil_silt__mass_fraction = "soil_silt_fraction"
soil_small_aggregates__mass_fraction = "soil_sagg_fraction"
soil_sand__mass_fraction = "soil_sand_fraction"
soil_large_aggregates__mass_fraction = "soil_lagg_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"

[output.netcdf_grid]
path = "output.nc"
compressionlevel = 1

[output.netcdf_grid.variables]
soil_erosion__mass_flow_rate = "soilloss"
river_water_sediment__suspended_mass_concentration = "SSconc"

[output.csv]
path = "output.csv"

[[output.csv.column]]
header = "TSS"
map = "gauges"
parameter = "river_water_sediment__suspended_mass_concentration"

[[output.csv.column]]
header = "Q"
map = "gauges_grdc"
parameter = "river_water__volume_flow_rate"

[[output.csv.column]]
header = "TSS"
map = "gauges_grdc"
parameter = "river_water_sediment__suspended_mass_concentration"

You can also note that the new staticmaps file was generated. Here are all the available variables:

[10]:
import xarray as xr

staticmaps = xr.open_dataset(v1_upgrade_dir / "sediment" / "staticmaps.nc")
print(list(staticmaps.data_vars.keys()))
['x_out', 'y_out', 'idx_out', 'wflow_ldd', 'wflow_subcatch', 'wflow_uparea', 'subare', 'dem_subgrid', 'wflow_streamorder', 'wflow_dem', 'Slope', 'wflow_river', 'wflow_riverlength', 'RiverSlope', 'N_River', 'wflow_riverwidth', 'RiverDepth', 'wflow_reservoirareas', 'wflow_reservoirlocs', 'ResMaxVolume', 'ResSimpleArea', 'ResDemand', 'ResMaxRelease', 'ResTargetFullFrac', 'ResTargetMinFrac', 'wflow_lakeareas', 'wflow_lakelocs', 'LakeArea', 'LakeAvgLevel', 'LakeAvgOut', 'Lake_b', 'Lake_e', 'LakeStorFunc', 'LakeOutflowFunc', 'LakeThreshold', 'LinkedLakeLocs', 'D50_River', 'ClayF_River', 'SiltF_River', 'SandF_River', 'GravelF_River', 'wflow_landuse', 'Kext', 'PathFrac', 'Sl', 'Swood', 'USLE_C', 'LAI', 'CanopyHeight', 'PercentClay', 'PercentSilt', 'PercentOC', 'ErosK', 'USLE_K', 'wflow_gauges', 'wflow_gauges_grdc', 'c_Bagnold', 'eros_expo', 'eros_ov', 'eros_spl_EUROSEM', 'exp_Bagnold', 'ResTrapEff']