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
asmodel.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
andmax_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
tomin_upstream_level
. #1788 - Only allow flow under gravity in TabulatedRatingCurve. #1795
- Use
dtype_backend="pyarrow"
for Pandas DataFrames. #1781
Fixed
All changes
What's Changed
- Use install-ci on CI by @visr in #1656
- Update release process a bit by @visr in #1657
- Update basin.qmd by @Fati-Mon in #1662
- Remove
SmoothInterpolation
as a dependency by @SouthEndMusic in #1649 - Delwaq pixi run install-ci by @visr in #1664
- Listen to concentration by @SouthEndMusic in #1660
- test
libribasim.get_value_ptr
with all names by @SouthEndMusic in #1665 - Refactor build pipeline by @Manangka in #1645
- Ruff: apply all fixes by @visr in #1667
- Add technical documentation for allocation by @Jingru923 in #1579
- Fix development tools by @deltamarnix in #1670
get_value_ptr("basin.subgrid_level")
now return non-nan values by @Jingru923 in #1671- Update pre-commit hooks by @github-actions in #1673
- Update pixi lock file by @github-actions in #1692
- Pin older Delwaq build by @evetion in #1694
- Add
Makie
extension to Ribasim core by @SouthEndMusic in #1675 - Write output table with solver stats per saveat by @SouthEndMusic in #1677
- Fix links in Python README.md files by @visr in #1696
- Use
BackTracking
in non-linear interations by @SouthEndMusic in #1697 - Make more python functions private by @SouthEndMusic in #1702
- Plot labels + clean up running instructions in examples notebook by @SouthEndMusic in #1699
- Enforce aspect ratio bound and limit figure size in docs by @SouthEndMusic in #1706
- Update pixi lockfile by @github-actions in #1708
- Update GitHub action for updating lockfiles by @visr in #1701
- Use pixi to fix julia package permissions on Windows by @evetion in #1710
- Update figures in README and docs homepage by @SouthEndMusic in #1711
- [chore] Make mypy happy again by @evetion in #1714
- Add "add icon" step to windows pipeline by @Jingru923 in #1712
- Save QGIS styles in geopackage and remove them from QGIS plugin by @evetion in #1713
- Use a fixed relaxation factor of 0.1 by @visr in #1715
- Add Delwaq coupling guide by @evetion in #1619
- Regression tests for ODE solver and integration tests for production model is in place by @Jingru923 in #1695
- Make node_id globally unique (again) by @evetion in #1717
- no more Zip bomb from built binaries by @Jingru923 in #1722
- Duplicate edges by @Jingru923 in #1719
- fix regression test after global uniq id by @Jingru923 in #1728
- Use targets for windows specific pipeline by @evetion in #1731
- Support transient user demand return factor by @Jingru923 in #1727
- Interpolation documentation by @SouthEndMusic in #1720
- Symbolic Jacobian sparsity by @visr in #1606
- Make edge_id user configurable by @evetion in #1737
- Document dependency use by @SouthEndMusic in #1738
- Add CNAME file for docs deployment by @evetion in #1742
- clarify priority in user demand node by @Jingru923 in #1746
- Use relaxed square root for ManningResistance by @SouthEndMusic in #1750
- Use ribasim.org domain name by @visr in #1736
- Load qml styles in QGIS by @evetion in #1748
- Move from ReTestItems to TestItemRunner by @visr in #1758
- Remove TimerOutputs by @visr in #1749
- refactor
get_influx
for performance by @SouthEndMusic in #1753 - Validate geometry types in Python. by @evetion in #1760
- Remove
build
package from our environment. by @deltamarnix in #1766 - Initial qgis test plan by @deltamarnix in #1691
- Update water balance error definition by @SouthEndMusic in #1767
- Give error when priorities parameter is missing and allocation is active by @Jingru923 in #1745
- Add relationships between tables by @evetion in #1756
- Give no bottleneck warning if no bottleneck basins were found by @SouthEndMusic in #1770
- Error when the toml or database can't be found. by @evetion in #1773
- Enable Docker for QGIS tests (once more) by @evetion in #1774
- Re-enable
BackTracking
by @SouthEndMusic in #1761 - Enable migrations from older database schemas. by @evetion in #1764
- Remove osx64 from pixi, take 2 by @visr in #1777
- Add ge=0 constraint on node_id in NodeSchema by @visr in #1775
- Use Julia 1.10.5 and split up OrdinaryDiffEq packages by @visr in #1776
- Refactor
get_area_and_level
for performance by @SouthEndMusic in #1785 - Update pre-commit hooks by @github-actions in #1782
- Rename Outlet's
min_crest_level
tomin_upstream_level
by @visr in #1788 - Update pixi lockfile by @github-actions in #1790
- Quick start by @Jingru923 in #1787
- Resolve technical debt
SparseConnectivityTracer
by @SouthEndMusic in #1794 - Add
min_upstream_level
andmax_downstream_level
to Pump and Outlet by @visr in #1792 - Python edge validation by @Jingru923 in #1765
- Update reduction factors of resistance nodes by @SouthEndMusic in #1796
- update
FindFirstFunctions
by @SouthEndMusic in #1798 - Fix
min_crest_level
migration by @visr in #1801 - Merge and rewrite download with other chapter by @Jingru923 in #1793
- Autogenerate the validation tables for Python by @Jingru923 in #1797
- Fix the images in the quick start guide documentation by @Jingru923 in #1805
- Bump peter-evans/create-pull-request from 6 to 7 by @dependabot in #1809
- Add
max_downstream_level
and gravity flow to TabulatedRatingCurve by @visr in #1795 - Validate Pump
min_upstream_level
by @visr in #1802 - Fix geopandas CRS warning by @visr in #1810
- Update used ids on reading an existing model. by @evetion in #1818
- Update Julia manifest by @github-actions in #1817
- Fix Delwaq artifact path by @evetion in #1821
- Update changelog by @visr in #1822
- Fix bench by @Jingru923 in #1816
- Migrate min_crest_level from v0 as well by @visr in #1823
- cumulative flow states by @SouthEndMusic in #1819
- Error messages for invalid NodeID by @Jingru923 in #1826
- Run quick start in docs by @visr in #1811
- Add closing DB to style by @visr in #1831
- Don't log NaN errors and limit output to top 5 by @visr in #1836
- Save all results via
SavingCallback
by @SouthEndMusic in #1829 - Add explanation of water balance error by @SouthEndMusic in #1828
- Default to finite difference calculation of the Jacobian by @visr in #1835
- Add missing concentration tables in QGIS. by @evetion in #1839
- Reference TKI and NHI in docs by @visr in #1840
- Fix internal link to component overview by @visr in #1842
- Add default UserDemand boundary concentrations. by @evetion in #1843
- Use pyarrow dtype_backend by @visr in #1781
- CompatHelper: bump compat for DiffEqCallbacks to 4 for package core, (keep existing compat) by @github-actions in #1848
- Require basic results for delwaq test by @visr in #1847
- Update pre-commit hooks by @github-actions in #1855
- Remove support for resetting cumulatives from BMI by @visr in #1852
- Update Julia manifest by @github-actions in #1860
- Update pixi lockfile by @github-actions in #1861
- Set pixi-version to v0.30.0 by @visr in #1870
- Add more solvers by @visr in #1868
- Don't write
use_validation
to TOML by @visr in #1867 - Empty default point by @visr in #1872
- Update pixi lockfile by @github-actions in #1873
- Allow Polygon geometry for Basin / Area. by @evetion in #1875
- Go back to latest Pixi release by @visr in #1876
- Decrease relative tolerance from 1e-5 to 1e-7 by @visr in #1874
- Release 2024.11.0 by @visr in #1880
- Allow overwriting a model that is open in QGIS by @visr in #1881
- Also run pixi install ci on core tests to set Julia version correctly. by @evetion in #1890
Full Changelog: v2024.10.0...v2024.11.0