# v0.11.0

**CADET-Process** v0.11.0 is the culmination of 6 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

* Added [Contributor's guide](https://github.com/fau-advanced-separations/CADET-Process/blob/dev/CONTRIBUTING.md). ([#112](https://github.com/fau-advanced-separations/CADET-Process/pull/112))
* Split optional dependencies and dependency groups. ([#266](https://github.com/fau-advanced-separations/CADET-Process/pull/266))
* Migrated from **unittest** to [**pytest**](https://docs.pytest.org/en/stable/) for a more flexible and expressive testing framework, simplifying test discovery and fixtures.
* Added [**Dependabot**](https://github.com/dependabot) for automated dependency monitoring and updates, helping to catch outdated or vulnerable packages early. ([#231](https://github.com/fau-advanced-separations/CADET-Process/pull/231))
* Adopted the [**XDG Base Directory**](https://specifications.freedesktop.org/basedir-spec/latest/) specification to standardize the location of temporary files and cache directories, improving compatibility with user environments.
* Introduced [**Ruff**](https://docs.astral.sh/ruff/) for linting and formatting, ensuring consistent code style, enforcing docstrings, and maintaining type annotations across the codebase. ([#259](https://github.com/fau-advanced-separations/CADET-Process/pull/259))

### {mod}`CADETProcess.processModel` improvements
* Add/component names when adding reactions by @AntoniaBerger in https://github.com/fau-advanced-separations/CADET-Process/pull/223
* Make axial dispersion component dependent by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/239
* Add method to calculate Bodenstein number by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/234
* Improve interpolation of concentration profiles by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/218
* Normalize profiles before fitting piecewise polynomial by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/205

### {mod}`CADETProcess.comparison` improvements
* Add ShapeFront difference metric by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/242

### {mod}`CADETProcess.fractionation` improvements
* Add/use component names when adding fractions by @AntoniaBerger in https://github.com/fau-advanced-separations/CADET-Process/pull/244
* Use last point fulfilling purity constraints for initial values by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/254

### {mod}`CADETProcess.simulator` improvements
* Add version property to Cadet by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/255
* Add warning to simulator when setting n_cycles_max below n_cycles_min by @ronald-jaepel in https://github.com/fau-advanced-separations/CADET-Process/pull/213
* Adapt to CADET-Python's new run interface by @ronald-jaepel in https://github.com/fau-advanced-separations/CADET-Process/pull/245

### {mod}`CADETProcess.optimization` improvements
* Expose option to set precision for variables by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/103
* Add pairwise plot by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/246
* Update hopsy methods by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/240

### Other improvements
* Make run methods private by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/211
* Fix syntax warnings for invalid escape sequence in docstrings by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/241
* Pin sqlite version to avoid crashes by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/233


## 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`.
  It's important to note that the current implementation of valve parameters is a temporary workaround to address a limitation in **CADET-Core**, which does not support zero-volume mixer/splitter unit operations and is not meant to model system dead volume.
  Hopefully, future updates will include support for this feature, eliminating the need for this workaround.

## Fixed bugs:
* Do not round hopsy problem when computing chebyshev center by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/256
* Fix storage of surface_diffusion in parameters dict by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/277
* Transfer output state when building flow sheet from CarouselBuilder by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/274
* Add concentration to parameters by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/238
* Call super().__init__() for Simulator by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/212
* Fix Aggregator setter by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/216
* Fix ProxyList by @schmoelder in https://github.com/fau-advanced-separations/CADET-Process/pull/225
* Handle nan's in round_to_significant_digits by @ronald-jaepel in https://github.com/fau-advanced-separations/CADET-Process/pull/235
* Extend MPMLangmuir gamma range by @ronald-jaepel in https://github.com/fau-advanced-separations/CADET-Process/pull/210

---

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