Skip to content

v1.0.0

Choose a tag to compare

@LuukBlom LuukBlom released this 18 Dec 15:23
· 70 commits to main since this release
e3290b9

What's Changed

v1.0.0 (18 December 2025)

Overview

Version 1.0.0 is a major release that introduces full support for Wflow.jl 1.0.0 and drops support for all earlier Wflow.jl versions.
This is also the release in which the hydromt-core dependency is upgraded to version 1, aligning hydromt_wflow with the new hydromt architecture and APIs.
An explicit upgrade path is provided via the upgrade_to_v1_wflow function to help users migrate existing models.
For more information, see the migration guide

Architecture and Model Structure

The internal model structure has been refactored around hydromt-core v1 concepts.
The model root is now managed by a ModelRoot class, and configuration, static maps, forcing, states, geometries, and outputs are implemented as ModelComponent classes with a uniform data access pattern.
Component and method names were harmonized with Wflow.jl conventions, including renaming grid to staticmaps and standardizing static map, state, and geometry names.

Configuration and Setup Changes

TOML configuration handling was redesigned to match Wflow.jl 1.0.0.
Configuration options are now added incrementally by setup methods rather than generated from a full template.
Several setup methods were renamed or split for clarity, and clipping a model is now handled through a single clip method.
Users can explicitly control variable names in static maps and selected geometries, enabling multiple variants of the same parameter within one model.

Lakes, Reservoirs, and Rivers

Lakes and reservoirs are now handled through a unified reservoir framework.
Reservoirs can be added or overwritten, and a combined reservoir geometry is generated by default.
River setup logic was split into generic and model-specific parts, improving reuse and maintainability.
Sediment-related workflows were updated to prepare only sediment-relevant variables.

Compatibility, Fixes, and Cleanup

The minimum supported Python version was raised to 3.11.
Legacy functionality tied to older Wflow versions and deprecated dependencies was removed, including pcraster support and model-level get/set/read/write methods.
Numerous bug fixes and behavioral improvements were included, particularly around upgrading models, reservoir handling, forcing generation, and geometry processing.

Added

  • config component WflowConfigComponent: represents the Wflow configuration TOML file.
  • staticmaps component WflowStaticMapsComponent: represents Wflow static and cyclic data (used to be grid).
  • forcing component WflowForcingComponent: represents Wflow input forcing data.
  • states component WflowStatesComponent: represents Wflow input states data.
  • geoms component WflowGeomsComponent: represents Wflow staticgeoms data.
  • output_grid WflowOutputGridComponent, output_scalar WflowOutputScalarComponent and output_csv WflowOutputCsvComponent components: represent Wflow outputs (used to be results).
  • write_geoms: added function arguments to_wgs84 to convert the geometry to WGS84 before writing it to file. PR #432
  • Reservoirs can now overwrite or be added to existing ones in the model. PR #515
  • Create a combined staticgeom for all reservoirs "reservoirs.geojson". PR #515
  • upgrade_to_v1_wflow: convert models for Wflow.jl version < 1.0.0 to Wflow.jl version 1. PR #364
  • Allow users to choose the names of each variables in staticmaps.nc files or the same of some of the staticgeoms (eg lakes, reservoirs). PR #364
  • setup_areamap: if the map is linked to a Wflow variable, the TOML file can now be updated to link the new created map to the right Wflow.jl variable. PR #364
  • Support more lake/reservoir output variables in the upgrade to v1 function. (#661)
  • Revised version 1.0 of the landuse parameter mapping tables. (#670)

Changed

  • Increased minimum python version to 3.11 according to https://scientific-python.org/specs/spec-0000/
  • Model root is now a ModelRoot class. To access the root path, use wflow.root.path.
  • Model components like config, forcing are now ModelComponent classes.
    To access the inherent data objects (dictionary, xarray.Dataset etc.) of the components, the data property is now used.
    Eg wflow.config.data, wflow.staticmaps.data
  • The names of some of the model components have changed: grid to staticmaps.
  • setup_config: the method now explicitly uses a dictionary with the options to add/update.
  • utils.read_csv_results has been renamed to utils.read_csv_output.
  • Reverted the use of TOMLkit dependency
  • Renamed WflowModel to WflowSbmModel. This also affects the cli command hydromt <build/update> wflow, which now becomes hydromt <build/update> wflow_sbm.
  • Split WflowModel into WflowBaseModel containing all generic parts of all wflow models, like components and some setup functions, and WflowSbmModel, containing the specific parts for the wflow_sbm concept.
  • WflowSedimentModel and WflowSbmModel both inherit from WflowBaseModel and extend it for their specific use cases.
  • The old WflowModel.setup_rivers has been split into three parts: WflowBaseModel.setup_rivers, WflowSbmModel.setup_rivers and WflowSbmModel.setup_river_roughness. Where the first contains the generic river setup logic, the second Sbm-specific implementations, and the third contains manning roughness implementations.
  • Clipping a model is now done by calling a single clip method. This function can be called with the hydromt update cli command.
  • upgrade_to_v1_wflow: Function now also updates any input variables that link to netcdf.variable.name to netcdf_variable_name.
  • Existing forcing file is now overwritten if the model is in w+ mode (build with --fo).(#598)
  • Update values used in example yamls to new defaults used in Wflow.jl (#589)
  • Improve behavior of merge_reservoirs, to merge values based on their ID rather than all non-missing pixels. (#597)
  • Rename standard names to no longer use "instantaneous" in the name (#601)
  • setup_reservoirs has been renamed to setup_reservoirs_simple_control for sbm. The default output geom is meta_reservoirs_simple_control.geojson. PR #515
  • setup_lakes has been renamed to setup_reservoirs_no_control for sbm. Arguments of the functions have been updated as well. The default output geom is meta_reservoirs_no_control.geojson. PR #515
  • setup_lakes has been renamed to setup_natural_reservoirs for sediment. Arguments of the functions have been updated as well. The default output geom is meta_natural_reservoirs.geojson. PR #515
  • workflows.waterbodies has been renamed to workflows.reservoirs. PR #515
  • Support for Wflow.jl >= 1.0.0 kernel. The main implication is for the generation of the TOML file. Consequently support for Wflow.jl < 1.0.0 has been dropped (see below). PR #364
  • All default names in staticmaps.nc and states have been redefined and harmonized. PR #422
  • Some of the geoms names have changed: gauges to outlets and subcatch to subcatchment. PR #422
  • Wflow._config is no longer a dictionary but a tomlkit.TOMLDocument to ensure structure of existing toml files are preserved upon write.
    Due to this change we discourage users from modifying the config structure by hand, and instead rely on Wflow.set_config to avoid issues. (#387)
  • setup_constant_pars: add the constant value to the TOML rather than creating an extra map in staticmaps.nc. The values should then be linked to the Wflow.jl variable name. PR #364
  • setup_lulcmaps and equivalents: parameters to prepare from the mapping table are now linked to Wflow.jl variable names (dictionary and not list) to allow for renaming. PR #364
  • setup_output_config_timeseries, setup_outlets, setup_gauges: the option to save parameters to netcdf scalar file as been renamed from netcdf to netcdf_scalar to better match the TOML file structure. PR #364
  • Changed name of g_tt parameter to g_ttm, to align with the changes in Deltares/Wflow.jl#512
  • setup_soilmaps [sediment]: add small and large aggregates to soil composition (additional to clay/silt/sand). Composition is now in fraction and not percentage. PR #331
  • setup_soilmaps [sediment]: additional parameters are prepared by the method (e.g. soil mean diameter, Govers transport capacity parameters). PR #331
  • setup_constant_pars [sediment]: added additional default values for sediment density and particle diameters. PR #331
  • setup_riverbedsed [sediment]: added option to derive Kodatie transport capacity parameters based on streamorder mapping. PR #331
  • setup_rivers, setup_lakes, setup_reservoirs [sediment]: only create wflow sediment variables and not a mix of sbm and sediment ones. PR #364
  • Grid data is masked to subcatchment on set_grid now instead of on write_grid (#349)
  • Signature of the standalone set_config and get_config functions, config is now first argument
  • TOML file options are added on the fly by each setup method rather than starting from a complete template.
  • The default landuse mapping tables are now the revised version (1.0). The previous version is still available as variant version 0.8. (#670)
  • vegetation_crop_factor: values for cells without vegetation in the mapping tables are now nodata values. After mapping and resampling, nodata values are filled with 1. (#670)
  • When using setup_reservoirs_simple_control, the tables for reservoir accuracy and reservoir timeseries are written to the [model's root]/validation. (#631)
  • setup_lulcmaps and equivalents: Parameters for lulc_vars are directly linked to the names in the columns of the mapping table. (#623)
  • Renamed basin_highres to meta_basins_highres. (#635)

Fixed

  • Updated installation guide (#376)
  • upgrade_to_v1_wflow: fixed bug for [model] options that kept the same name in Wflow v1. (e.g. type, river_routing, land_routing). PR #487
  • setup_floodplains: states were not correctly added to the model config. PR #486
  • setup_1d_model_connection: improve clipping and snapping of 1D river with wflow basins/river. PR #416
  • Fix wflow build config example in the docs. PR #486
  • Fix crop_factor and water_frac values for grassland in CORINE. PR #523
  • included floodplain_water_flow__manning_n_parameter in naming script (#529)
  • Fixed cyclic data layer not having coordinates after setting the data in the WflowStaticMapsComponent.
  • Deriving river if dem was not upscaled in setup_basemaps (#638).
  • fixed setup_precip_forcing producing an empty netcdf file (#649).
  • Fixed conversion of reservoir variables in cyclic / forcing sections in upgrade_to_v1_wflow (#661).
  • Use -1 instead of NaN when merging lakes and reservoirs parameters (#661).
  • Convert reservoir location map in netcdf_scalar and csv output (#661).
  • Fixed issue with reading reservoir hq rating curve tables (#662).

Deprecated

  • setup_soilmaps: drop possibility to derive parameters based on soil texture as InfiltCapSoil parameter is no longer supported in Wflow.jl 1.0.0 (duplicate of ksat_vertical). PR #334
  • Support for building/updating models for Wflow.jl version < 1.0.0. We encourage you to upgrade your model to the new version using upgrade_to_v1_wflow or use an older release of hydromt_wflow if you do not want to upgrade your model. PR #364

Removed

  • Dropped support for pcraster and removed deprecated pcrm module. PR #408
  • Reverted use of tomlkit (#529)
  • get_*, set_*, read_*, and write_* functions on the model have been removed. Their equivalent on the corresponding component should be used instead. (#613)

Full Changelog: v0.8.0...v1.0.0