Releases: Deltares/Ribasim
v2024.10.0
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
ormax_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
- change the names of artifacts by @Jingru923 in #1572
- quick fix the name of our executables by @Jingru923 in #1578
- Fix QGIS crash on plugin initialization by @visr in #1580
- Add controllable parameters table by @SouthEndMusic in #1584
- Update Julia manifest by @github-actions in #1598
- Support listening to flows trough conservative connector nodes by discrete control by @SouthEndMusic in #1594
- CompatHelper: bump compat for TranscodingStreams to 0.11 for package core, (keep existing compat) by @github-actions in #1604
- Fix cascading polders image in docs by @visr in #1613
- Stop using local JULIAUP_DEPOT_PATH by @visr in #1614
- Use the latest greatest Python deps by @evetion in #1618
- Use pixi update to update lockfile by @visr in #1622
- Validate level with upstream basin by @Jingru923 in #1607
- Remove urban_runoff from Basin by @visr in #1611
- Remove
Terminal / static
table by @visr in #1624 - Fix DataInterpolations to 0.5.2 by @visr in #1628
- Remove FractionalFlow by @visr in #1616
- Require QGIS 3.34 (LTR); remove activation scripts by @visr in #1627
- Take discontinuities in flow introduced through BMI into account by @SouthEndMusic in #1634
- Fix the failing pipeline by @Manangka in #1640
- Always show convergence bottlenecks by @visr in #1636
- Resolve the SSL error produced when running the build task on windows by @Manangka in #1644
level_demand
can now be without max_level or min_level by @Jingru923 in #1629- Remove unapplied patches by @Manangka in #1646
- QGIS: Update minimal TOML with new required fields by @visr in #1647
- Update install.qmd by @Fati-Mon in #1642
- Update docstrings of Ribasim python API by @SouthEndMusic in #1643
- Add
ContinuousControl
node by @SouthEndMusic in #1602 - Improve subprocess docs by @visr in #1650
- Allocate to UserDemand from directly connected basin if possible by @SouthEndMusic in #1581
- Add
basin_state.arrow
results by @visr in #1626 - Log stacktraces by @visr in #1653
- Prepare release 2024.10.0 by @visr in #1654
Full Changelog: v2024.9.0...v2024.10.0
v2024.9.0
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
- Bump prefix-dev/setup-pixi from 0.6.0 to 0.7.0 by @dependabot in #1459
- Move to DataInterpolations v5 by @visr in #1464
- Fix subgrid_id in output by @visr in #1466
- Support macOS in our cli build by @evetion in #1476
- Add git status to Ribasim CLI wrapper version by @evetion in #1479
- Offline coupling with Delwaq by @evetion in #1137
- Stricter TabulatedRatingCurve validation by @visr in #1469
- Update Julia manifest by @github-actions in #1488
- Add coupling documentation. by @evetion in #1481
- Fix QGIS 'LevelDemand / static' schema by @visr in #1489
- Stronger 'Basin / profile' validation by @visr in #1486
- Update pixi lock file by @github-actions in #1487
- Support
model.to_xugrid(add_allocation = True)
by @visr in #1478 - Allow
missing
as static user demand by @SouthEndMusic in #1493 - Equal ratio allocation objective take 2 by @SouthEndMusic in #1386
- Run allocation at
t = 0
by @SouthEndMusic in #1496 - Fix github release script by @visr in #1492
- Test Integrating discontinuous flow by @SouthEndMusic in #1499
- Bump prefix-dev/setup-pixi from 0.7.0 to 0.8.0 by @dependabot in #1500
- Update Julia manifest by @github-actions in #1516
- Bump prefix-dev/setup-pixi from 0.8.0 to 0.8.1 by @dependabot in #1518
- Fix edge table in netCDF used for Delwaq coupling. by @evetion in #1519
- Allocation refactoring by @Jingru923 in #1503
- Fix a few issues found by JET by @visr in #1510
- corrected the link in Ribasim Python API readme.md by @Jingru923 in #1523
- Split usage to separate pages by @visr in #1522
- Don't trigger Github CI in a PR on merging Teamcity config commits by @evetion in #1528
- Write Delwaq boundary concentrations with time. Includes basin boundaries. by @evetion in #1524
- Don't require unique node IDs by @visr in #1513
- Update to Julia 1.10.4 by @visr in #1533
- Compute mean realized flows by @SouthEndMusic in #1514
- Generate basin concentration state for Delwaq by @evetion in #1534
- Add subgrid levels results
subgrid_level.arrow
to docs by @Jingru923 in #1525 - Add ipykernel to pixi deps by @evetion in #1542
- Don't write empty result tables by @visr in #1538
- Refactor docs to follow diataxis concept by @evetion in #1541
- Convert TeamCity xml configuration files to Kotlin by @Manangka in #1546
- Discrete Control performance improvements based on AGV model by @SouthEndMusic in #1529
- BMI docs page by @SouthEndMusic in #1521
- Restructure docs a bit more by @visr in #1548
- Include Ribasim Python API reference by @visr in #1553
- Improve first sentence index.qmd by @gijsber in #1557
- Integrate Delwaq into our Python package by @evetion in #1554
- Refactor all the things by @SouthEndMusic in #1559
- Incorporate SmoothInterpolation by @SouthEndMusic in #1543
- line_marker_at_central_point by @DanielTollenaar in #1563
- Move node equations to the node reference pages by @visr in #1564
- Prepare Ribasim release v2024.9.0 by @visr in #1561
- Use keywords for creating parameter structs by @visr in #1566
- Allow for meta_ prefix in spatial tables. by @evetion in #1568
- Auto-generate framework for Python API reference documentation by @Jingru923 in #1565
- Check only connected control states in FractionalFlow validation by @visr in #1569
- Disallow multiple outflows from Outlet at validation by @visr in #1570
Full Changelog: v2024.8.0...v2024.9.0
New Contributors
- @Manangka made their first contribution in #1546
- @DanielTollenaar made their first contribution in #1563
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