Major changes:
- Add variable volume continuous stirred-tank reactor model (supports binding for batch uptake experiments).
- Add lumped rate model without pores (e.g., equilibrium dispersive model, DPFR, PFR).
- Add lumped rate model with pores.
- Add support for size exclusion chromatography (models can be run without binding model, `PORE_ACCESSIBILITY` provides component dependent porosities).
- Add a lot of tests for various vital parts (Jacobians, parameter sensitivities).
- Add row equilibration to consistent initialization (nonlinear solvers, linear systems) for improved precision.
- Fix a lot of bugs.
- Add JSON as input file format to cadet-cli.
- Improve documentation.
Breaking changes in the file format:
- In output datasets: `SOLUTION_PARTICLE` no longer contains mobile and solid phase, but only the mobile phase. The same holds for `SOLDOT_PARTICLE`, `SENS_PARTICLE`, `SENSDOT_PARTICLE`.
- Added `SOLUTION_SOLID` (`SOLDOT_SOLID`, `SENS_SOLID`, `SENSDOT_SOLID`) output dataset which stores the solid phase.
- Added `WRITE_XYZ_SOLID` field to `/input/return/unit_ABC` for configuring whether the solid phase is returned.
- In return configuration rename `WRITE_XYZ_COLUMN_ABC` to `WRITE_XYZ_ABC` (e.g., `WRITE_SOLUTION_COLUMN_INLET` -> `WRITE_SOLUTION_INLET`). Note that the old return configuration fields are still supported for compatibility, but this may change at any time.
- In output datasets rename `XYZ_COLUMN_ABC` to `XYZ_ABC` (e.g., `SENSDOT_COLUMN_OUTLET` -> `SENSDOT_OUTLET`).
- In `/meta` change `FILE_FORMAT` version field from string to int. Versions of the type Major.Minor.Patch are assumed to have only two digits for each part. This number is encoded in an int by concatenating the parts (e.g., „02.12.78" -> 21278).
- In return configuration rename `WRITE_XYZ_COLUMN` to `WRITE_XYZ_BULK` (e.g., `WRITE_SENS_COLUMN` -> `WRITE_SENS_BULK`).
- In output datasets rename `XYZ_COLUMN` to `XYZ_BULK` (e.g., `SOLDOT_COLUMN` -> `SOLDOT_BULK`).
- In `/meta` rename `SIMTIME` to `TIME_SIM`.
Non-breaking changes in the file format:
- In return configuration add `WRITE_XYZ_VOLUME` (e.g., `WRITE_SOLUTION_VOLUME`) to indicate that the volume should be returned if it is available (e.g., CSTR).
- In output datasets add `XYZ_VOLUME` datasets (e.g., `SOLUTION_VOLUME`).
- Expose some time integrator (IDAS) settings to the user (e.g., number of Newton iterations, sensitivity error test).
Major internal changes:
- Change state ordering from component-major to cell-major in the bulk block of the GRM.
- Reduce duplicated and boilerplate code (especially in binding models).
- Changes in some internal interfaces necessitated by CSTR implementation.