Skip to content

Releases: Deltares/Ribasim

v2025.1.0

17 Jan 20:25
e2b86cd
Compare
Choose a tag to compare

The first release of 2025 makes the Ribasim core more robust and stable, and speeds up
initialization for large models. The biggest new feature is the experimental support for
calculating tracers in Ribasim directly, which will hopefully make it easier to track where
the water resources are heading.

Added

Removed

  • Drop Python 3.10 support. #2012

Changed

  • Allocation: optimize per source. #1927
  • The Edge table no longer supports subnetwork_id; this is automatically inferred. #1956

Fixed

  • ManningResistance is more stable around Δh=0. #1896
  • Fixes to Delwaq model generation. #1903 #1917 #1948
  • Add step limiter to avoid negative flows or too large flows. #1911 #1912
  • Fix README.md in builds. #1935 #1938
  • Speed up initialization. #1977
  • Automatically name index in Python. #1974
  • Table sorting related fixes. #2003
All changes

What's Changed

  • Remove database from struct Toml by @visr in #1882
  • Revert to old tolerances for level control. by @evetion in #1893
  • Use hatch build rather than python -m build by @visr in #1891
  • Add pixi command to generate delwaq input for a given model by @evetion in #1895
  • Document parsing Delwaq results. by @evetion in #1845
  • Save all results via saving callback (follow up) by @SouthEndMusic in #1896
  • Add explanation of water balance error options by @SouthEndMusic in #1899
  • Update compat requirements for stdlibs by @visr in #1898
  • Fix duplicate boundaries in Delwaq generation. by @evetion in #1903
  • Calculate tracer concentrations internally by @evetion in #1849
  • Minor edits of comments by @visr in #1908
  • Add step_limiter! to avoid negative flows or too large flows by @SouthEndMusic in #1911
  • Introduce experimental config section and use it for concentrations. by @evetion in #1909
  • Update interpolation type parameters by @SouthEndMusic in #1913
  • Switch to Julia 1.11.1 by @visr in #1914
  • Added DVC, teamcity-messages and Julia TC integration by @evetion in #1915
  • [WQ] Drop duplicate boundaries instead of making them unique. by @evetion in #1917
  • Finetune step_limiter! by @SouthEndMusic in #1912
  • Add forgotten contact.qmd. by @evetion in #1924
  • Update pre-commit hooks by @github-actions in #1923
  • Update Julia manifest by @github-actions in #1925
  • Update pixi lockfile by @github-actions in #1926
  • Callstack visualization by @SouthEndMusic in #1922
  • Some small tweaks to the callstack plots. by @evetion in #1928
  • Return nothing from mutating BMI functions by @visr in #1931
  • Use FlatVector for generating concentration table by @SouthEndMusic in #1933
  • Fix README.md in builds by @visr in #1935
  • Add some basic concentration tests. by @evetion in #1934
  • CompatHelper: bump compat for StructArrays to 0.7 for package core, (keep existing compat) by @github-actions in #1939
  • Bump codecov/codecov-action from 4 to 5 by @dependabot in #1940
  • Fix test_version during release process and simplify versions in README.md by @visr in #1938
  • Remove isolated nodes from Delwaq network. by @evetion in #1948
  • Refactor of concentration code by @SouthEndMusic in #1929
  • Fix description of FlowBoundary in docs by @SouthEndMusic in #1950
  • Avoid curl_easy_setopt error logs by @Manangka in #1641
  • Allocation: optimize per source by @SouthEndMusic in #1927
  • Get rid of Base.RefValue fields by @SouthEndMusic in #1954
  • Edits to tutorial text by @visr in #1951
  • Exclude fewer Ruff rules by @visr in #1955
  • Add allocation training model by @SouthEndMusic in #1958
  • Get rid of specifying sources in allocation by edges by @SouthEndMusic in #1956
  • Not so auto update by @visr in #1959
  • Remove unused outstate config option by @visr in #1967
  • Put level as the first column in basin.arrow by @visr in #1971
  • Automatically name index by @visr in #1974
  • Speed up initialization by @visr in #1977
  • Add Basin / subgrid_time table by @visr in #1975
  • Bump schema version to 3 by @visr in #1979
  • Add generated, performant snake_case for NodeID. by @evetion in #1982
  • Don't update concentrations if not opting in to feature by @visr in #1980
  • Update pre-commit hooks by @github-actions in #1983
  • Update pixi lockfile by @github-actions in #1984
  • Update Julia manifest by @github-actions in #1985
  • Update Julia manifest by @github-actions in #1990
  • Update pre-commit hooks by @github-actions in #1989
  • Fix for OteraEngine v1 by @visr in #1991
  • Update pixi lockfile by @github-actions in #1992
  • Remove Z coordinate on constructing Node by @visr in #1986
  • refactor: change to depends-on by @tdejager in #1993
  • Update pixi lockfile by @github-actions in #1995
  • Sorting things out by @visr in #2003
  • CompatHelper: bump compat for Makie in [weakdeps] to 0.22 for package core, (keep existing compat) by @github-actions in #2005
  • Switch artefact to a signed one. by @evetion in #2007
  • Use interpolations to update forcing in Basin by @visr in #2006
  • Make nightly release by @evetion in #2008
  • Drop Python 3.10 support by @visr in #2012
  • Remove prerequisites from tutorial by @visr in #2009
  • Fix minio upload of binaries by @evetion in #2014
  • Prepare release v2025.1.0 by @visr in #2013

New Contributors

Full Changelog: v2024.11.0...v2025.1.0

v2024.11.0

08 Oct 20:44
e09eeb5
Compare
Choose a tag to compare

This major new release contains many improvements. A new formulation allows much smaller water balance errors, which is combined with several performance improvements. Ribasim Python does more validation that was previously only done in the core. The Ribasim QGIS plugin now sets the relations between tables for easier model inspection. Adding min_upstream_level and max_downstream_level to Pump and Outlet means DiscreteControl is often no longer needed.

The most significant breaking change is making the node_id and edge_id the index of the Node and Edge table; these need to be globally unique.

Starting from this release Ribasim is labeled as beta software. Since development is currently mainly driven by applications in the Dutch water system, we expect that addition work needs to be done for general use outside the Netherlands.

For coupled simulation with MODFLOW and/or MetaSWAP, this release is part of the iMOD Coupler, specifically release v2024.4.0

Added

  • Support discrete control based on an external concentration condition. #1660
  • Add results/solver_stats.arrow with solver statistics over time. #1677
  • Add icon to ribasim.exe on Windows. #1712
  • Save QGIS styling in the model database. #1713
  • Add Delwaq coupling guide. #1619
  • Solver speedup due to backtracking relaxation. #1761
  • Reject adding a duplicate edge in Python. #1719
  • Support transient UserDemand return factor. #1727
  • Document the interpolation of input data. #1720
  • Automate Jacobian sparsity detection. #1606
  • Support specifying the edge_id as model.edge.add(a, b, edge_id=5). #1737
  • Use https://ribasim.org/ to host our documentation. #1736
  • Validate geometry types in Python. #1760
  • Add relationships between tables in QGIS. #1755
  • Support migrating from older Ribasim versions in Python. #1764
  • Add quick start guide to docs. #1787
  • Add min_upstream_level and max_downstream_level to Pump and Outlet. #1792
  • Add max_downstream_level to TabulatedRatingCurve. #1795
  • Validate edge connections in Python. #1765
  • Add low storage reduction factor to ManningResistance. #1796

Changed

  • Refactor of the core to ensure smaller water balance errors. #1819
  • Make node_id globally unique. #1717
  • Make the Node ID the index of the Node table, and Edge ID for Edge. #1737
  • Make more Python functions private. #1702
  • Put the contents of the CLI zips in a folder. #1722
  • Changed water balance error definition. #1767
  • Disallow missing priority parameter when using allocation. #1745
  • Rename Outlet's min_crest_level to min_upstream_level. #1788
  • Only allow flow under gravity in TabulatedRatingCurve. #1795
  • Use dtype_backend="pyarrow" for Pandas DataFrames. #1781

Fixed

  • Remove oscillations in ManningResistance. #1750
  • Fix GeoPandas CRS warning. #1810
All changes

What's Changed

Read more

v2024.10.0

23 Jul 17:25
2bc9f2d
Compare
Choose a tag to compare

For this release we said goodbye to the problematic FractionalFlow node, but welcome the ContinuousControl as a long requested feature.

Added

  • Control: Add ContinuousControl node type. #1602
  • Control: Support listening to flow through connector nodes. #1594
  • Validate that TabulatedRatingCurve levels are above Basin bottom. #1607
  • Validate that Outlet crest levels are above Basin bottom. #1607
  • Always show convergence bottlenecks. #1636
  • Docstrings for Ribasim Python. #1643
  • Allocate to UserDemand from directly connected Basin if possible. #1581
  • Add basin_state.arrow results. #1626
  • Also write stacktraces to ribasim.log. #1653

Changed

  • Require QGIS 3.34 (LTR) or newer for Ribasim QGIS plugin.

Fixed

  • Compatibility with latest NumPy, Pandera and PyArrow releases. #1618
  • LevelDemand can now be without min_level or max_level. #1629

Removed

  • Removed unused urban runoff variable from Basin. #1611
  • Removed unneeded static table from Terminal. #1624
  • Removed FractionalFlow node. #1616
All changes

What's Changed

Full Changelog: v2024.9.0...v2024.10.0

v2024.9.0

21 Jun 11:18
414efbe
Compare
Choose a tag to compare

Added

  • Support for concentration state and time for Delwaq coupling.
  • Show exact commit on ribasim --version if it is not a release. #1479

Changed

  • Optimized performance.
  • Documentation has been overhauled to be more user-friendly.
  • Stricter TabulatedRatingCurve validation. #1469
  • Stricter Basin / profile validation. #1486
  • Allocation objective function now gives equal ratios during shortage. #1386

Fixed

  • Don't require unique node IDs. #1513
All changes

What's Changed

Full Changelog: v2024.8.0...v2024.9.0

New Contributors

v2024.8.0

14 May 12:46
ab2630c
Compare
Choose a tag to compare

Highlights

  • Performance improvements have been a focus of this release, giving up to 10x faster runs. #1433, #1436, #1438, #1448, #1457
  • Users of the QGIS plugin need to remove the old version to avoid two copies due to #1453.
  • If the model does not converge and the used algorithm supports it, we log which Basins don't converge. #1440
  • The CLI exe is now always in the root of the zip and makes use of the libribasim shared library. #1415
  • If negative storages unadvertently happen, we now throw an error. #1425
  • There is more validation on the edges. #1434

What's Changed

Full Changelog: v2024.7.0...v2024.8.0

v2024.7.0

18 Apr 07:06
a85a2b6
Compare
Choose a tag to compare

DiscreteControl has been changed. We write all water balance terms to results. And crs is a new required keyword in the TOML file. See the linked pull requests for more information.

Breaking

What's Changed

Full Changelog: v2024.6.1...v2024.7.0

v2024.6.1

26 Mar 16:18
f0d6487
Compare
Choose a tag to compare

What's Changed

  • Remove xugrid return type annotation, bump patch version by @visr in #1326

Full Changelog: v2024.6.0...v2024.6.1

v2024.6.0

26 Mar 13:07
1801024
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2024.5.0...v2024.6.0

v2024.5.0

22 Mar 13:09
f43010b
Compare
Choose a tag to compare

The biggest breaking change of this release is the refactoring of the Ribasim Python API.
You can find its usage in the examples.
The same examples with the old API can be found in this PDF.

Breaking

Changed

Full Changelog: v2024.4.0...v2024.5.1

v2024.4.0

11 Mar 14:28
Compare
Choose a tag to compare

What's Changed

  • Update pixi lock file by @github-actions in #1205
  • Fix precompile script by @visr in #1211
  • Deleted relevant code of alternative object functions in Ribasim python and core by @Jingru923 in #1199
  • Document listen_feature_type in DiscreteControl / condition by @Hofer-Julian in #1214
  • Stop 'Julia auto update' from upgrading Julia version by @visr in #1215
  • Update to HiGHS 1.7.0 by @visr in #1219
  • QGIS plugin updates for node_type, remove explode_and_connect by @visr in #1220
  • Add plotting support for multiple line segment edges by @Huite in #1223
  • Pin pixi version for now in CI by @Hofer-Julian in #1225
  • Add pixi run ribasim-models to run all test models by @visr in #1224

Full Changelog: v2024.3.0...v2024.4.0