Releases: Deltares/Ribasim
v2024.8.0
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
- Remove dutch_waterways model by @SouthEndMusic in #1403
- testmodelrun: Actually exit with an error code if it fails by @Hofer-Julian in #1405
- Use pixi task cache by @Jingru923 in #1407
- Bump prefix-dev/setup-pixi from 0.5.2 to 0.6.0 by @dependabot in #1408
- docs: Move from
subprocess.call
tosubprocess.run
by @Hofer-Julian in #1410 - only release if branch stars with v20 by @Jingru923 in #1411
- Use the same network for allocation as for the physical layer by @SouthEndMusic in #1399
- Use a Rust binary to expose Ribasim CLI by @Hofer-Julian in #1415
- Add tstops for more timeseries by @SouthEndMusic in #1418
- update the doc for CI by @Jingru923 in #1421
- Build change follow-ups by @visr in #1420
- Negative storage check by @SouthEndMusic in #1425
- Require pandera 0.18 by @visr in #1426
- FlowBoundary is flow direction constraining by @visr in #1424
- Use mean input in allocation by @SouthEndMusic in #1427
- Don't run allocation if not active during BMI runs by @SouthEndMusic in #1437
- Precalculate resistance neighbors by @visr in #1436
- Update vertical fluxes all at once by @visr in #1433
- Tighten edge validation by @visr in #1434
- Switch to TimeZones release 1.15 by @visr in #1432
- Make LevelDemand min_level and max_level optional by @visr in #1430
- Precalculate Basin neighbors by @visr in #1438
- Avoid unconstrained sections in allocation networks by @SouthEndMusic in #1429
- Update pixi lock file by @github-actions in #1443
- Update julia from 1.10.0 to 1.10.3 by @visr in #1445
- Update pixi lock file by @github-actions in #1450
- Re-enable validation in Ribasim python by @Jingru923 in #1446
- Bump julia-actions/cache from 1 to 2 by @dependabot in #1454
- Rename QGIS plugin to Ribasim by @visr in #1453
- Add waterquality (substance/concentration) tables by @evetion in #1267
- Remove Julia API reference by @visr in #1451
- Let Aqua check for persistent tasks by @visr in #1452
- Pre-calculate flow neighbor IDs for Pump, Outlet, UserDemand, FractionalFlow, TabulatedRatingCurve by @visr in #1448
- Redo the "stop explicitly requiring
--environment=dev
when running pixi install tasks" with new pixi release by @Jingru923 in #1455 - Show convergence bottleneck nodes to users by @SouthEndMusic in #1440
- CompatHelper: bump compat for DataInterpolations to 5 for package core, (keep existing compat) by @github-actions in #1458
- Increase performance by reducing lookups by @SouthEndMusic in #1457
- release Ribasim version 2024.8.0 by @Jingru923 in #1462
Full Changelog: v2024.7.0...v2024.8.0
v2024.7.0
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
- Support specifying coordinate reference system (CRS) of geometries by @Hofer-Julian in #1339
- Support conditions on linear combinations of variables for
DiscreteControl
by @SouthEndMusic in #1371 - Discrete control with discrete callback by @SouthEndMusic in #1393
What's Changed
- Add results to xugrid by @visr in #1369
- Split vertical fluxes on basin by @SouthEndMusic in #1300
- Add remaining water balance terms to basin.arrow by @visr in #1367
- Write full Node table once by @visr in #1312
- Stop printing warnings when you can't read from database file by @Hofer-Julian in #1332
- Expose proper vertical flux data by @SouthEndMusic in #1337
- Split collecting subnetwork demand into internal sources and main network phases by @SouthEndMusic in #1235
- Fix allocation arrow bug by @SouthEndMusic in #1347
- Simplify sparsity.jl by @SouthEndMusic in #1349
- Disallow LevelBoundary next to ManningResistance by @SouthEndMusic in #1352
- Fix node ID bug in allocation by @SouthEndMusic in #1330
- Fix allocation flow output by @SouthEndMusic in #1355
- Don't add the endtime to basin.arrow results by @visr in #1359
- Add
Model.to_crs
method in order to reproject by @Hofer-Julian in #1360 - Guide documentation for cascade polder basins by @Jingru923 in #1258
- Sort only Edge fid so edge_id becomes more stable by @visr in #1363
- Add error starttime > endtime by @SouthEndMusic in #1379
- Run allocation first after BMI stop by @visr in #1390
Full Changelog: v2024.6.1...v2024.7.0
v2024.6.1
What's Changed
Full Changelog: v2024.6.0...v2024.6.1
v2024.6.0
What's Changed
- Parallelize generate testmodels by @Hofer-Julian in #1309
- Error early on non globally unique node IDs by @visr in #1311
- Set the Node fid back to the node_id by @visr in #1316
- Use 32 bit signed integer on the Python side as well by @visr in #1315
- Minimal pixi default environment by @Hofer-Julian in #1322
- Add
model.to_xugrid()
by @visr in #1314 - Bump version number for release by @visr in #1323
Full Changelog: v2024.5.0...v2024.6.0
v2024.5.0
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
- Ribasim Python: Add-API by @Hofer-Julian in #1110
- Initialize spatial table as GeoDataFrame by @Huite in #1242
- Enable read method again with the new add API by @evetion in #1243
- Infer edge type in add API by @Hofer-Julian in #1275
Changed
- Use 32 bit signed integer for all IDs and priorities by @visr in #1252
- QGIS: don't crash on unknown layers in database by @visr in #1265
- Improve Model repr and make more API private by @visr in #1270
- Sort Node and Edge tables by @visr in #1272
- Refactor function UserDemand in read.jl by @SouthEndMusic in #1268
- Add
model.node_table()
, take two by @visr in #1279 - Assert no timezone for naive datetimes. by @Huite in #1286
- Test Ribasim Python with multi environment feature by @Hofer-Julian in #1285
- Examples: bring necessary symbols into scope by @Hofer-Julian in #1287
- activate subnetwork plotting by @SouthEndMusic in #1291
- Plot listen edges by @SouthEndMusic in #1288
- Stop pinning Python version for default environment by @Hofer-Julian in #1290
- change int to string for PID listen_node_type by @Jingru923 in #1293
- Don't save states on callbacks by @visr in #1281
- Fix variable name in Python tests by @Hofer-Julian in #1294
- Add FlowDemand node type by @SouthEndMusic in #1188
- Treat
UserDemand
return flow as a source by @SouthEndMusic in #1226 - Update version numbers by @Hofer-Julian in #1303
- Add support for indexing into TableModel, except Edge by @Huite in #1304
Full Changelog: v2024.4.0...v2024.5.1
v2024.4.0
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
inDiscreteControl / 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
, removeexplode_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
v2024.3.0
For allocation we added a new LevelDemand node, and we now support a 'Basin / area' table to put polygons. The flow results now represent a mean flow from the timestamp until the next.
There were a number of breaking changes. See the associated pull request for upgrade information. Some were aimed at making the configuration options simpler. To navigate these changes better it helps to know what Ribasim version a model is made for, so we add ribasim_version
as a required TOML key. The output files are also tagged with the version of the CLI that produced them. Adding extra columns with a meta_
prefix is still possible, but the prefix is no longer applied automatically to prevent accidental usage when a column name is not correct.
Breaking
- Introduce consistent naming of subnetworks and allocation networks by @SouthEndMusic in #1130
- Make
results.compression
a Boolean by @visr in #1147 - Support only fixed
saveat
intervals, set default at daily by @visr in #1155 - Add
node_id
column to Node table by @Hofer-Julian in #1149 - Remove
adaptive
solver config option by @visr in #1170 - Rename
User
toUserDemand
by @visr in #1175 - Write
ribasim_version
to TOML and warn in core if it is different by @visr in #1181 - Don't auto add
meta_
prefix, error. by @visr in #1186 - Disable the alternative object functions by @Jingru923 in #1193
Changed
- Use equality constraint in allocation flow conservation by @Jingru923 in #1083
- Reduce binary size by leaving out artifacts by @visr in #1176
- Mean output flows by @SouthEndMusic in #1159
Added
- Water supply/demand by basins in allocation (new node type
LevelDemand
) by @SouthEndMusic in #1082 - Add
ribasim_version
metadata to Arrow results by @visr in #1145 - Basin allocation output by @SouthEndMusic in #1148
- Relax PID validation by @SouthEndMusic in #1194
- Add realized user demand for BMI by @SouthEndMusic in #1190
- Add optional 'Basin / area' spatial table by @visr in #1200
Full Changelog: v2024.2.0...v2024.3.0
All changes
What's Changed
- Set mypypath dynamically by @deltamarnix in #1116
- change leq to eq constrain in flow conservation by @Jingru923 in #1083
- Avoid lookup of node type from Node metadata by @SouthEndMusic in #1120
- Don't add
Basin / static
if there are no flows by @visr in #1135 - Introduce consistent naming of subnetworks and allocation networks by @SouthEndMusic in #1130
- Update Julia manifest by @github-actions in #1138
- Water supply/demand by basins in allocation (new node type
LevelDemand
) by @SouthEndMusic in #1082 - Allow no allocation model by @visr in #1134
- Update pixi lock file by @github-actions in #1139
- Install QGIS plugins on
pixi run install
by @visr in #1140 - Rename AllocationTarget to TargetLevel by @visr in #1141
- Add quarto on all platforms by @visr in #1142
- Update Edge Schema docs by @Hofer-Julian in #1146
- Add
ribasim_version
metadata to Arrow results by @visr in #1145 - Make results.compression a Boolean by @visr in #1147
- Run a model without compression by @visr in #1150
- Basin allocation output by @SouthEndMusic in #1148
- Support only fixed saving intervals, set default at daily by @visr in #1155
- Lock Julia patch version by @visr in #1167
- Add
node_id
column toNode
table by @Hofer-Julian in #1149 - Fix docs: use node_type instead of type by @visr in #1171
- CompatHelper: bump compat for DiffEqCallbacks to 3 for package core, (keep existing compat) by @github-actions in #1173
- Remove
adaptive
solver config option by @visr in #1170 - Rename TargetLevel again: LevelDemand by @visr in #1172
- Rename User to UserDemand by @visr in #1175
- Reduce binary size by leaving out artifacts by @visr in #1176
- Update codegen pixi task by @Hofer-Julian in #1180
- Remove dependency
types-requests
by @Hofer-Julian in #1179 - Write
ribasim_version
to TOML and warn in core if it is different by @visr in #1181 - test is_flow_constraining by @SouthEndMusic in #1182
- Change the default objective_type to linear_absolute by @visr in #1184
- docs: Fix node tables by @Hofer-Julian in #1185
- Don't auto add
meta_
prefix, error. by @visr in #1186 - Fix broken hyperlinks by @visr in #1187
- Mean output flows by @SouthEndMusic in #1159
- Disable the alternative object functions by @Jingru923 in #1193
- Relax PID validation by @SouthEndMusic in #1194
- add realized user demand and expose via BMI by @SouthEndMusic in #1190
- Use only explicit imports by @visr in #1198
- Clarify documentation on truth state ordering by @visr in #1197
- Fix ruff warnings by @visr in #1201
- Add optional 'Basin / area' spatial table by @visr in #1200
v2024.2.0
Added
- Allow missing 'Basin / time' data by @Huite in #1028
- Also allow Missing in basin.static by @Huite in #1079
- Support main allocation network by @SouthEndMusic in #1006
- Save allocation flows by @SouthEndMusic in #1012
- Add max_flow_rate to LinearResistance by @visr in #1100
Changed
- Move version from YYYY.0M.MICRO to YYYY.MINOR.MICRO by @Hofer-Julian in #1089
Full Changelog: v2024.01.1...v2024.2.0
All changes
What's Changed
- Simplify release process docs by @Hofer-Julian in #1001
- Update allocation docs with main network by @SouthEndMusic in #1011
- CompatHelper: bump compat for Dictionaries to 0.4 for package core, (keep existing compat) by @github-actions in #1013
- Fold docs/Project.toml into root/Project.toml by @visr in #1014
- Remove using S for storage (use u) by @SouthEndMusic in #1003
- Update pre-commit hooks by @github-actions in #1024
- Keep only the root and core project by @visr in #1021
- Validate allocation input by @Jingru923 in #972
- Stop running CompatHelper on root project again by @visr in #1063
- Move release script to Python and run it with pixi by @Hofer-Julian in #1029
- Allow missing 'Basin / time' data by @Huite in #1028
- Merge main allocation network feature branch by @SouthEndMusic in #1006
- Remove confusing sentence for PidControl by @visr in #1009
- Improve docs home page by @gijsber in #1002
- Update pixi lock file and fix mypy issues by @visr in #1065
- Bump prefix-dev/setup-pixi from 0.4.3 to 0.5.1 by @dependabot in #1068
- Bump peter-evans/create-pull-request from 5 to 6 by @dependabot in #1069
- Fix doc anchor in docs by @Hofer-Julian in #1072
- Save allocation flows by @SouthEndMusic in #1012
- Start updating versions/lock-files on different dates by @Hofer-Julian in #1075
- Also allow Missing in basin.static by @Huite in #1079
- Testmodels: run one year instead of ten by @Huite in #1080
- Bump codecov/codecov-action from 3 to 4 by @dependabot in #1070
- Switch components over to the same calver version number by @visr in #1086
- Remove docker from QGIS tests by @deltamarnix in #943
- Introduce flat demand vector and expose via BMI by @SouthEndMusic in #1081
- Move version from YYYY.0M.MICRO to YYYY.MINOR.MICRO by @Hofer-Julian in #1089
- Validate the equality of timestamps in a test by @deltamarnix in #1095
- Remove
update_timestep
in Ribasim Python by @Hofer-Julian in #1099 - Reorganize code among files in core by @visr in #1101
- Follow up to #1099 by @Hofer-Julian in #1102
- Generate python code for schemas directly from Julia by @deltamarnix in #1096
- Correct precipitation equation by @visr in #1088
- Add roundtrip test for model files by @visr in #1007
- Add max_flow_rate to LinearResistance by @visr in #1100
- Bump pre-commit/action from 3.0.0 to 3.0.1 by @dependabot in #1106
- Bump prefix-dev/setup-pixi from 0.4.1 to 0.5.1 by @dependabot in #1107
- Bump codecov/codecov-action from 3 to 4 by @dependabot in #1108
- Use token argument to all codecov-actions by @visr in #1109
- Add mypy-ribasim-qgis to github actions by @deltamarnix in #1078
- Make node ID unique to the node type by @visr in #1113
- Go back to the old FeatureFormSuppress to support older QGIS by @visr in #1115
v2024.01.1
This version allows for coupling to MODFLOW 6 with the latest imod-coupler release.
Furthermore it contains many improvements and bugfixes.
We recommend using Ribasim Python with Pandas 2.1.4.
Breaking change
- Always require 'Basin / state' as an initial condition by @visr in #977
- Use flow_rate rather than discharge in TabulatedRatingCurve by @visr in #992
Added
- Add update_subgrid_level to BMI functions by @Huite in #986
- Support
ribasim --version
to get the version number by @Hofer-Julian in #997
Fixed
- Fix and change table sorting in Python by @visr in #903
- Always write fid index of Node and Edge tables by @visr in #995
Full Changelog: v2024.01.0...v2024.01.1
All changes
What's Changed
- No more warning in Ribasim Python when plotting model without edges by @Jingru923 in #940
- Update our depdendencies by @visr in #942
- Adapt download links by @Hofer-Julian in #949
- Launch debug julia by @Huite in #953
- [ci] Fix intermittent QGIS test failures. by @evetion in #939
- Set initial level after parameter creation by @Huite in #955
- Reflect current release process in docs by @Hofer-Julian in #948
- Fix and change table sorting in Python by @visr in #903
- Pixi: use latest QGIS release by @visr in #958
- Docs additions for output, logging, and metadata by @Huite in #961
- Remove coupling docs by @Hofer-Julian in #963
- Add pixi task to update registry by @visr in #962
- Fix looped subnetwork by @SouthEndMusic in #965
- Bump prefix-dev/setup-pixi from 0.4.1 to 0.4.3 by @dependabot in #974
- Pin number of processes used in Python tests to 4 by @Hofer-Julian in #975
- Disable qgis tests by @Hofer-Julian in #976
- Refactor
sort_keys
implementation by @evetion in #970 - Always require 'Basin / state' as an initial condition by @visr in #977
- Add cron job to auto-update pixi lock file by @Hofer-Julian in #978
- Update pixi lock file by @github-actions in #979
- Auto update Julia manifest by @Hofer-Julian in #980
- Julia manifest update the root environment by @visr in #981
- Add update_subgrid_level to BMI functions by @Huite in #986
- Pin pandas to less noisy 2.1.4 by @visr in #988
- Not part of bmi/xmi: add the method to python api by @Huite in #990
- Use flow_rate rather than discharge in TabulatedRatingCurve by @visr in #992
- Add two_basin model to ribasim-testsmodels by @Huite in #994
- Always write fid index of Node and Edge tables by @visr in #995
- Update version numbers by @Hofer-Julian in #996
- Allow compiled binaries to get version by @Hofer-Julian in #997
v2024.01.0
Added
- Add flow cost (#886)
- Don't require consecutive Node IDs (#885)
- Add validation rules in docs (#896)
- Allocation fractional flow constraints (#854)
- Allocation example (#901)
- Remove QGIS checkboxes in dataset widget (#919)
- Add Linux builds (#930)
- Add log file to results (#911)
- Test models doc (#936)
Fixed
- Re-enable edge validation (#888)
New Contributors
- @Jingru923 made their first contribution in #936
Full Changelog: v2023.12.0...v2024.01.0
All changes
What's Changed
- Switch to different TimeZones branch by @visr in #880
- CompatHelper: bump compat for TimeZones to 1 for package core, (keep existing compat) by @github-actions in #882
- CompatHelper: bump compat for TimeZones to 1 for package create_binaries, (keep existing compat) by @github-actions in #883
- Bump actions/setup-python from 4 to 5 by @dependabot in #884
- Only add flow edges to flow_dict by @visr in #881
- Install julia via pixi by @deltamarnix in #878
- Test Ribasim Python with Python 3.12 by @Hofer-Julian in #891
- Add flow cost by @SouthEndMusic in #886
- Don't require consecutive Node IDs by @visr in #885
- Pin datamodel-code-generator to 0.24 by @visr in #897
- Validation rules in docs by @SouthEndMusic in #896
- Re-enable edge validation by @visr in #888
- Update PackageCompiler to 2.1.6 by @visr in #900
- CompatHelper: add new compat entry for MarkdownTables at version 1 for package docs, (keep existing compat) by @github-actions in #906
- CompatHelper: add new compat entry for DataFrames at version 1 for package docs, (keep existing compat) by @github-actions in #907
- CompatHelper: add new compat entry for IJulia at version 1 for package docs, (keep existing compat) by @github-actions in #908
- Allocation fractional flow constraints by @SouthEndMusic in #854
- Allocation example by @SouthEndMusic in #901
- Fix validation doc page rendering by @Hofer-Julian in #910
- Update pre-commit hooks by @github-actions in #917
- Remove QGIS checkboxes in dataset widget by @deltamarnix in #919
- Move export QUARTO_PYTHON to env_setup by @deltamarnix in #913
- Update julia to 1.10 release by @visr in #926
- Make tests succeed on Linux by @deltamarnix in #930
- Cleanup top-level directory by @Hofer-Julian in #929
- Ignore juliaup folder now that it's been moved by @deltamarnix in #931
- Logger writes to both Terminal and File by @deltamarnix in #911
- replace setuptools with hatchling by @deltamarnix in #933
- [fix] Apply meta renaming to spatial tables. by @evetion in #938
- Test models doc by @Jingru923 in #936