Release `0.4.0` brings some new functionality and an internal refactor of the analytical code.
Package Changes
**"Breaking Changes**
- The `BeamParameters` class now asks for energies in `eV` instead of `GeV`. If instantiating from the `.from_line` or `.from_madx` constructor methods, no changes from the user are required.
**Code Refactor**
- Analytical classes are now based on a new `AnalyticalIBS` ABC class, which implements itself `.coulomb_log` and `.emittance_evolution`, and provides API footprints for abstract methods to implement. This improves code clarity and helped reduce some overheads.
**New Functionality**
- Both geometric and normalized emittances can be provided wherever emittances are expected as input, and the user can specify which is given with a `normalized_emittances` boolean argument. Conversion is handled internally.
- Where emittances are returned, the same type as the ones given is returned (normalized as inputs leads to normalized as outputs etc).
- The `BjorkenMtingwaIBS` class can now handle coasting beams for growth rates calculation, with a new `bunched` boolean argument. Methods called internally (`.coulomb_log` and `._Gamma`) have also had this implemented and the parameter is propagated.
- The `NagaitsevIBS` class has matched the API but raises a `NotImplementedError` if `bunched=True` is given.
- The `OpticsParameters` class now checks for betatron coupling presence in constructor methods and logs a warning to the user if some is present in the machine, as it might make results inaccurate.
**Maintenance**
- Fixed some deprecation warnings in constructors.
- Added tests for all new behaviours and changes.
Documentation Changes
- Added an FAQ section for geometric & normalized emittances.
- Added an FAQ section for bunched & coasting beams.
- Updated all API docs according to the changes above.
- Added reference to Physics Vade Mecum and cite it in docstring of Coulomb log.
- Adapted benchmarks and example galleries to new APIs.
Other Changes
- Updated CI to use the newer action version for `setup-python`.
- Explicitely included Python 3.12 to test matrices.
- Added authors file for Zenodo integration.
- Included badges in README.
See the [documentation](https://fsoubelet.github.io/xibs/) for details on all new functionality.
**Full Changelog**: https://github.com/fsoubelet/xibs/compare/0.3.0...0.4.0