# v0.12.0

**CADET-Process** v0.12.0 is the culmination of 11 months of dedicated development and collaboration.
This release introduces significant new features, critical bug fixes, enhanced test coverage, and improved documentation.
We strongly encourage all users to upgrade to this version for better performance and new functionalities.

This release requires Python 3.10+.

## Highlights and new features of this release

### General improvements
- [#330](https://github.com/fau-advanced-separations/CADET-Process/pull/330): Improve plotting module: The entire plotting module was overhauled and now offers consistent styling, sizing etc. across all figures.

### {mod}`CADETProcess.processModel` improvements
- [#252](https://github.com/fau-advanced-separations/CADET-Process/pull/252): Add HIC Unified binding model
- [#292](https://github.com/fau-advanced-separations/CADET-Process/pull/292): Add ACT isotherm
- [#331](https://github.com/fau-advanced-separations/CADET-Process/pull/331): Add `k_eq` to selected binding models
- [#289](https://github.com/fau-advanced-separations/CADET-Process/pull/289): Account for bound states in `SolutionSolid`

### {mod}`CADETProcess.modelBuilder` improvements
- [#302](https://github.com/fau-advanced-separations/CADET-Process/pull/302): Add model builders for BatchElution, Flip-Flop, CLR, SSR, and LWE processes
- [#328](https://github.com/fau-advanced-separations/CADET-Process/pull/328): Add `SerialColumns` builder
- [#368](https://github.com/fau-advanced-separations/CADET-Process/pull/368): Model builder improvements: consistent event naming, avoid unnecessary column copies, add `own_binding_model` option

### {mod}`CADETProcess.comparison` improvements
- [#288](https://github.com/fau-advanced-separations/CADET-Process/pull/288): Update pearson / shape computation

### {mod}`CADETProcess.fractionation` improvements
- [#364](https://github.com/fau-advanced-separations/CADET-Process/pull/364): Fractionation improvements
- [#369](https://github.com/fau-advanced-separations/CADET-Process/pull/369): Add `ProcessMeta` dataclass for safe override of process metadata in fractionation

### {mod}`CADETProcess.optimization` improvements
- [#153](https://github.com/fau-advanced-separations/CADET-Process/pull/153): Add COBYQA optimizer
- [#342](https://github.com/fau-advanced-separations/CADET-Process/pull/342): Add heuristic for automatic scaling of `pop_size`, `n_max_gen`, and `n_ref_dirs`
- [#349](https://github.com/fau-advanced-separations/CADET-Process/pull/349): Add `MassBalance` criterion for asserting stationarity
- [#323](https://github.com/fau-advanced-separations/CADET-Process/pull/323): Improve Yamamoto method

### Other improvements
- [#294](https://github.com/fau-advanced-separations/CADET-Process/pull/294): Upload coverage to codecov


## Deprecations / Breaking changes

- In the {class}`~CADETProcess.simulator.SimulatorBase` class, the `run` method, which defined an interface for subclasses, is no longer available.
  Users should instead utilize the {meth}`~CADETProcess.simulator.SimulatorBase.simulate` method, which includes additional pre- and post-processing steps.
  The {meth}`~CADETProcess.simulator.SimulatorBase._run` method has been made private.
- In the {class}`~CADETProcess.optimization.OptimizerBase` class, the `run` method, which defined an interface for subclasses, is no longer available.
  Users should instead utilize the {meth}`~CADETProcess.optimization.OptimizerBase.optimize` method, which includes additional pre- and post-processing steps.
  The {meth}`~CADETProcess.optimization.OptimizerBase._run` method has been made private.
- Height was removed from {class}`~CADETProcess.comparison.Shape`. ([#221](https://github.com/fau-advanced-separations/CADET-Process/pull/221))
  Users should instead explicitly add a {class}`~CADETProcess.comparison.Height` metric to the {class}`~CADETProcess.comparison.Comparator`.
- The `valve_dead_volume` attribute has been removed from the {class}`~CADETProcess.modelBuilder.ZoneBaseClass` class.
  Instead of using `valve_dead_volume`, users can now pass `valve_parameters`.
  This parameter should include a `unit_type` (which can be either `Cstr` or `TubularReactor`) along with the corresponding parameters specific to the unit type.
  For detailed guidance on setting up the valve parameters, refer to the method {meth}`~CADETProcess.modelBuilder.ZoneBaseClass._setup_valve`.
- `f_min`/`m_min` have been renamed to `f_minimized`/`m_minimized` in optimization results to avoid ambiguity.
- The `show` option has been removed from all plotting methods.
  Responsibility for managing figures now lies with the user.
- `evaluation_objects` has been removed from the `set_variables` signature.


## Fixed bugs

- [#305](https://github.com/fau-advanced-separations/CADET-Process/pull/305): Fix indices for aggregator optimization variables
- [#353](https://github.com/fau-advanced-separations/CADET-Process/pull/353): Fix optimization variables for fractionation with multiple outlets
- [#354](https://github.com/fau-advanced-separations/CADET-Process/pull/354): Fix updating flow rate `TimeLine` of `SolutionIO`
- [#367](https://github.com/fau-advanced-separations/CADET-Process/pull/367): Manually run callbacks at the end of each optimization for COBYLA
- [#370](https://github.com/fau-advanced-separations/CADET-Process/pull/370): Fix buffer capacity improvements
- [#371](https://github.com/fau-advanced-separations/CADET-Process/pull/371): Minor fixes
- [#377](https://github.com/fau-advanced-separations/CADET-Process/pull/377): Fix stationarity evaluator

---

**Full Changelog**: [Compare v0.11.1 to v0.12.0](https://github.com/fau-advanced-separations/CADET-Process/compare/v0.11.1...v0.12.0)
