Added
- Updated the visualization: more generic for forward and backward tracking ([318](https://github.com/WAM2layers/WAM2layers/pull/318)).
- Add difference plots to the regression tests (`test_workflow.py`). The plots are uploaded as "artifacts" on Github Actions for easy inspection ([319](https://github.com/WAM2layers/WAM2layers/pull/319)).
- Added an export to file method for the configuration object (`wam2layers.config.Config`) to allow for easier testing of the command line interface ([320](https://github.com/WAM2layers/WAM2layers/pull/320)).
- Added a regression test for the forward tracking workflow ([320](https://github.com/WAM2layers/WAM2layers/pull/320)).
- Added support for Python 3.12 ([333](https://github.com/WAM2layers/WAM2layers/pull/333)).
- Adopted [NEP-29](https://numpy.org/neps/nep-0029-deprecation_policy.html) as version support policy ([#333](https://github.com/WAM2layers/WAM2layers/pull/333)).
- The output files now contain many attributes for easier interpretation ([334](https://github.com/WAM2layers/WAM2layers/pull/334)).
- Publishing of the package to the Python Package Index ([PyPI](https://pypi.org/)) is now automated with a Github Actions workflow ([#342](https://github.com/WAM2layers/WAM2layers/pull/342)).
- You can now view the version of wam2layers by running `wam2layers --version` ([352](https://github.com/WAM2layers/WAM2layers/pull/352)).
- Added a debug flag to the CLI: `wam2layers --debug`. This will make debug level statements be printed to the terminal as well ([354](https://github.com/WAM2layers/WAM2layers/pull/354)).
Removed
- Support for Python 3.8 has been removed. This is in line with the new policy ([following NEP-29](https://numpy.org/neps/nep-0029-deprecation_policy.html)) ([#333](https://github.com/WAM2layers/WAM2layers/pull/333)).
- The CLI command to generate snapshots was removed. This was deemed to unstable for a V3 release ([362](https://github.com/WAM2layers/WAM2layers/pull/362)).
Fixed
- Fixed a bug in the profiler's `track_stability_correction` method ([325](https://github.com/WAM2layers/WAM2layers/pull/325)).
- Log message about "lost moisture" no longer includes boundary losses. Instead,
there is a separate log message for "boundary transport"
([343](https://github.com/WAM2layers/WAM2layers/pull/343))
- Fixed a bug in the calculation of losses and gains for backtrack, where the moisture was compared to the wrong reference state ([355](https://github.com/WAM2layers/WAM2layers/pull/355)).
- The calculated gains are now absolute fields instead of relative to the reference field ([355](https://github.com/WAM2layers/WAM2layers/pull/355)).
Changed
- The workflow tests use a temporary directory managed by pytest and the user's operating system, to avoid the `/tmp` folder polluting the workspace ([320](https://github.com/WAM2layers/WAM2layers/pull/320)).
- The workflow tests now make extensive use of pytest's [fixtures](https://docs.pytest.org/en/8.0.x/explanation/fixtures.html), which will make future test writing easier ([#320](https://github.com/WAM2layers/WAM2layers/pull/320)).
- The `kvf` parameter can now be a floating point number instead of an integer ([320](https://github.com/WAM2layers/WAM2layers/pull/320)).
- The stability correction warning will now occur only when 10% more of the grid is corrected compared to last warning, or the correction factor is 10% stronger ([332](https://github.com/WAM2layers/WAM2layers/pull/332)).
- The output files now contain a time dimension (incl. the coordinate) ([334](https://github.com/WAM2layers/WAM2layers/pull/334)).
- The package version is now defined in `src/wam2layers/__init__.py` ([334](https://github.com/WAM2layers/WAM2layers/pull/334)).
- The command line interface for tracking has changed. Tracking experiments are now started by doing `wam2layers track config.yml`. The tracking direction is retrieved from the new configuration entry "tracking_direction" ([338](https://github.com/WAM2layers/WAM2layers/pull/338)).
- The configuration parameter "target_frequency" has been renamed to "timestep". Also, under the hood, it is applied in a different location, closer to the core computations. This makes it easier to see the relation between the formula "on paper" and the implementation in the code ([346](https://github.com/WAM2layers/WAM2layers/pull/346)).
- The tests on Github Actions now use base python, not micromamba ([351](https://github.com/WAM2layers/WAM2layers/pull/351)).
- The units with which WAM2layers calculates internally are changed from m3 to kg/m2. This saves some unit conversions, makes it easier to see the relation between the equations and the code, and makes it easier to interpret the output and intermediate states. Visualization functions no longer need to convert back to kg/m2 ([356](https://github.com/WAM2layers/WAM2layers/pull/356)).
- The preprocessed data now mostly follows the CF-1.6 convention for netCDF files ([363](https://github.com/WAM2layers/WAM2layers/pull/363)).
- The output data now follows the CF-1.6 convention for netCDF files ([363](https://github.com/WAM2layers/WAM2layers/pull/363)).