# Release notes

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).

See also the [unreleased changes].

% Type of changes

% ---------------

% Added      Added for new features.

% Changed    Changed for changes in existing functionality.

% Deprecated Deprecated for soon-to-be removed features.

% Removed    Removed for now removed features.

% Fixed      Fixed for any bug fixes.

% Security   Security in case of vulnerabilities.

## [0.8.0] (2024-01-28)

- Build and upload wheels on PyPI with Github Actions.
- Much better CI in foss.heptapod.net and Github Actions.
- Use the [Meson build system](https://mesonbuild.com) via
  [meson-python](https://github.com/mesonbuild/meson-python).
- Development: use PDM, Nox and Pixi.

## [0.7.4] (2023-10-05)

- [!342](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/342)
  Refactoring and improvements spectra ns2d and ns3d.
- [!335](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/335)
  Improvement `fluidsim-ipy-load` which can now take a path as argument
- Code improvements, bug fixes (in particular for movies) and compatibility with
  new Matplotlib

## [0.7.3] (2023-05-24)

- Official support for only Python 3.9, 3.10 and 3.11.
- Few improvements for
  [Fluidsimfoam](https://foss.heptapod.net/fluiddyn/fluidsimfoam).

## [0.7.2] (2023-01-05)

- New module {mod}`fluidsim_core.output.remaining_clock_time`.

## [0.7.1] (2022-11-30)

- [!325](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/325) Small
  changes in restarts utilities for Snek5000 0.8.0.

## [0.7.0] (2022-11-23)

- [!316](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/316)
  Interactive movies

- [!317](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/317) and
  [!318](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/318)

  - Refactor movie code in fluidsim-core with several improvements and bugfixes
    ({mod}`fluidsim_core.output.movies` and
    {mod}`fluidsim_core.output.phys_fields`)
  - Movies for Snek5000

- [!319](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/319)
  Refactor restart code in fluidsim-core
  ({class}`fluidsim_core.scripts.restart.RestarterABC` and
  {class}`fluidsim.util.scripts.restart.Restarter`)

- [!320](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/320) Restart
  for Snek5000 in fluidsim-core

- [!321](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/321) command
  `fluidsim-ipy-load`.

## [0.6.1] (2022-09-07)

- Turbulence models with `extend_simul_class`
  ([!308](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/308), see
  {mod}`fluidsim.base.turb_model`)

- Kolmogorov forcing
  ([!307](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/307), see
  {mod}`fluidsim.base.forcing.kolmogorov`)

- Output {mod}`fluidsim.base.output.horiz_means`
  ([!309](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/309))

- Output {mod}`fluidsim.base.output.cross_corr3d`
  ([!295](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/295))

- Better support for 3d FFT libs based on pencil decompositions
  ([!283](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/283))

- [!289](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/289)

  - File `is_being_advanced.lock` in the result directory during the runs
  - Better handling of signals (`SIGINT`, `SIGTERM` and `SIGUSR2`)
  - `fluidsim-restart` supports idempotent jobs (OAR scheduler)
  - {func}`fluidsim.util.get_dataframe_from_paths` using
    `sim.output.get_mean_values`
  - {func}`fluidsim.util.get_last_estimated_remaining_duration`
  - `sim.output.spatiotemporal_spectra.get_spectra`

- CI also running on Github Actions
  ([!224](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/224))

- Various fixes (in particular energy steps with `fluidsim-restart`)

- Various plot improvements (in particular `plot_omega_emp` in
  {mod}`fluidsim.base.output.spatiotemporal_spectra`)

## [0.6.0] (2022-02-07)

- New subpackage {mod}`fluidsim.util.scripts` and module
  {mod}`fluidsim.util.scripts.turb_trandom_anisotropic`
  ([!255](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/255)).

- Entry points console_scripts `fluidsim-restart`
  ([!261](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/261)) and
  `fluidsim-modif-resolution`
  ([!263](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/263)).

- Forcing
  {class}`fluidsim.base.forcing.anisotropic.TimeCorrelatedRandomPseudoSpectralAnisotropic`
  (extension for 3d solvers + new parameter
  `params.forcing.tcrandom_anisotropic.delta_angle`)
  ([!247](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/247)).

- New projection functions (toroidal/poloidal) in
  {mod}`fluidsim.operators.operators3d`
  ([!247](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/247)).

- [! 250](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/250): New
  parameter `params.projection` for ns3d solvers.

  The equations (`ns3d`, `ns3d.strat` and `ns3d.bouss`) can be modified by
  projecting the solutions on the poloidal or toroidal manifolds.

- Faster loading at Python start
  ([!264](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/264))

- Various bugfixes, in particular related to restart.

## [0.5.1] (2021-11-05)

- [!244](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/244): Taylor
  Green forcing for ns3d solvers
- fluidsim-core: change order for the initialization of the parameters: Simul
  class before the subclasses.

## [0.5.0] (2021-09-29)

### Added

- [!200](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/200) : New
  mechanism to easily extend a Simul class (subpackage
  {mod}`fluidsim.extend_simul`).

- [!201](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/201) :
  Improve FluidSim Core API with a warning and a convenience function

  - Warnings added when `_set_attrib` is called instead of `_set_child` by a
    InfoSolver instance
  - New function `iter_complete_params`

- Output `spatial_means_regions_milestone.py` using {mod}`fluidsim.extend_simul`.

- New options `no_vz_kz0` and `NO_KY0`.

- Spatiotemporal spectra and many improvements for the temporal spectra for ns3d
  and ns2d solvers by Jason Reneuve
  ([!202](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/202), ...)

- Better Burgers1d solvers (by Ashwin Vishnu)

### Changed

- [!200](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/200) :
  (internal) {class}`fluidsim_core.info.InfoSolverCore`: `__init__` now fully
  initializes the instance (calling the method `complete_with_classes`). New
  keyword argument `only_root` to initialize only the root level.
- [!211](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/211) :
  Replace for ns2d solvers the output `frequency_spectra` (nearly not used) by the
  newer output `temporal_spectra` written for ns3d solvers.

### Fixed

- Many bugfixes!

## [0.4.1] (2021-02-02)

Few bugfixes and
[!192](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/192) (temporal
spectra for ns3d solvers).

## [0.4.0] (2021-01-11)

- [!186](https://foss.heptapod.net/fluiddyn/fluidsim/-/merge_requests/186):
  Package split into `fluidsim-core` and `fluidsim`

  - Base classes and abstract base classes defined for `params`, `info_solver`,
    `sim`, `output` instances
  - Entry points as a *plugin framework* to register FluidSim solvers

- `base/output/print_stdout.py`: better regularity saving + method
  `plot_clock_times`

- Able to run bigger simulations (`2034x2034x384`) on the Occigen cluster (in
  particular new function `fluidsim.modif_resolution_from_dir_memory_efficient`)

## [0.3.3] (2020-10-15)

- Bugfixes and optimizations (in particular for ns3d solvers)
- Forcing WATU Coriolis and Milestone for ns3d.strat
- pyproject.toml and isolated build
- Timestepping using phase-shifting for dealiasing
- Improve regularity of saving for some outputs

## [0.3.2] (2019-11-14)

- Bug fixes and Transonic 0.4 compatibility

## [0.3.1] (2019-03-07)

- Windows compatibility
- Only Python code (stop using Cython)
- Improvements ns2d.strat

## [0.3.0] (2019-01-31)

- Drop support for Python 2.7!
- Accelerated by Transonic & Pythran (also time stepping)
- Better setup.py (by Ashwin Vishnu)
- Improvement ns2d.strat (by Miguel Calpe Linares)
- Much better testing (internal, CI, compatibility pytest, coverage 87%)
- Fix several bugs :-)
- New function load_for_restart

## [0.2.2] (2018-07-01)

- Let fluidfft decides which FFT class to use (dependency fluidfft >= 0.2.4)

## [0.2.1] (2018-05-24)

- IPython magic commands (by Ashwin Vishnu).
- Bugfix divergence-free flow and time_stepping in ns3d solvers.

## [0.2.0] (2018-05-04)

- Many bugfixes and nicer code (using the Python code formatter Black).
- Faster ns3d solver.
- ns2d.strat + anisotropic forcing (by Miguel Calpe Linares).
- Nicer forcing parameters.

## 0.1.1

- Better `phys_fields.plot` and `phys_fields.animate` (by Ashwin Vishnu and Miguel
  Calpe Linares).
- Faster installation (with configuration file).
- Installation without mpi4py.
- Faster time stepping with less memory allocation.
- Much faster ns3d solvers.

## 0.1.0

- Uses fluidfft and Pythran

## 0.0.5

- Compatible fluiddyn 0.1.2

## 0.0.4

- 0D models (predaprey, lorenz)
- Continuous integration, unittests with bitbucket-pipelines

## 0.0.3a0

Merge with geofluidsim (Ashwin Vishnu Mohanan repository)

- Movies.
- Preprocessing of parameters.
- Less bugs.

## 0.0.2a1

- Use a cleaner parameter container class (fluiddyn 0.0.8a1).

## 0.0.2a0

- SetOfVariables inherits from numpy.ndarray.
- The creation of default parameter has been simplified and is done by a class
  function Simul.create_default_params.

## 0.0.1a

- Split the package fluiddyn between one base package and specialized packages.

[0.2.0]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.1.1...0.2.0
[0.2.1]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.2.0...0.2.1
[0.2.2]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.2.1...0.2.2
[0.3.0]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.2.2...0.3.0
[0.3.1]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.3.0...0.3.1
[0.3.2]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.3.1...0.3.2
[0.3.3]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.3.2...0.3.3
[0.4.0]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.3.3...0.4.0
[0.4.1]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.4.0...0.4.1
[0.5.0]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.4.1...0.5.0
[0.5.1]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.5.0...0.5.1
[0.6.0]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.5.1...0.6.0
[0.6.1]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.6.0...0.6.1
[0.7.0]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.6.1...0.7.0
[0.7.1]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.7.0...0.7.1
[0.7.2]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.7.1...0.7.2
[0.7.3]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.7.2...0.7.3
[0.7.4]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.7.3...0.7.4
[0.8.0]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.7.4...0.8.0
[unreleased changes]: https://foss.heptapod.net/fluiddyn/fluidsim/-/compare/0.8.0...branch%2Fdefault
