This version introduces several practical improvements that make flood modeling more reliable and efficient.
It adds support for water surface elevation and soil water content as direct inputs,
implements real-time mass balance error tracking to prevent simulation issues, and saves complete drainage network results to the database.
The update also fixes important bugs related to boundary conditions, mass balance calculations, and capillary pressure conversions,
while improving the internal code structure for better maintainability.
Upgrade now with uv:
uv tool upgrade itzi
Improvements
- Accept water surface elevation (terrain + water depth) as an input value (issue #27)
- Accept soil water content as an input value (issue #96)
- Mass balance error is now tracked in real time.
The simulation will stop if the mass balance error is above a given threshold (issue #114)
- In the water depth maps exported to GRASS, the values under the threshold are no longer deleted, but exported and then masked with
r.null
(issue #123)
- The results for all the nodes and links of the drainage simulation are now saved to the database, not only those with coordinates.
- The output map “mean_losses* now has the same units (mm/h) as the input map losses.
- The distributed wheels are now targeting armv8-a and x86-64-v3.
This allows better performance with NEON and AVX2 vector extensions.
Most platforms less than 10 years old are compatibles.
In case of incompatibilities, building from source remains an option.
- A wheel for Windows on ARM64 is now available.
Corrected bugs
- Fix the conversion factor of input capillary pressure (#132)
- Fix and improve the mass balance computation in the statistical file (issue #77)
- Open boundary condition is now properly applied on all domain boundaries (issue #41)
- The layer assignation for drainage links is now working correctly (issue #138)
Internals
- The reporting functionality is improved and better isolated.
Memory output providers are added in addition to GRASS. (#112, #121, #125, #127, #129)
- Array names, description, units, etc. are now centralized (#134)
- Add benchmark for the tutorial (#113)
- Main surface flow functions in cython are better optimized for vectorization,
with less branching and accepting only c_contiguous arrays. (#146)
- The boundary condition logic is now included into the Cython loop, instead of being done in python with numpy slices. (#151)