Skip to content

Commit 89d99c2

Browse files
committed
Update documentation
* Add description on how to add Parameter sensitivites * Add puttmann2016 and use the same format in citation.bib and literature.bib * Fix typo(s)
1 parent 3b6d6f0 commit 89d99c2

File tree

8 files changed

+115
-85
lines changed

8 files changed

+115
-85
lines changed

CITATION.bib

+52-38
Original file line numberDiff line numberDiff line change
@@ -3,65 +3,79 @@
33
44
% General:
55
6-
@article{Leweke:2018,
7-
author = {Leweke, S. and von Lieres, E.},
6+
@article{Leweke2018CADET,
87
title = {Chromatography Analysis and Design Toolkit (CADET)},
9-
journal = {Computers and Chemical Engineering},
10-
volume = {113},
118
year = {2018},
12-
pages = {274–294},
9+
author = {Leweke, Samuel and von Lieres, Eric},
1310
doi = {10.1016/j.compchemeng.2018.02.025},
14-
url = {https://doi.org/10.1016/j.compchemeng.2018.02.025}
11+
journal = {Computers & Chemical Engineering},
12+
volume = {113},
13+
pages = {274-294},
14+
issn = {0098-1354},
15+
keywords = {Column liquid chromatography, General rate model, Modeling and simulation platform, Model calibration, Process analysis and design, Statistical analysis, Experimental design},
16+
abstract = {CADET is an open source modeling and simulation framework for column liquid chromatography. The software is freely distributed to both academia and industry under the GPL license (https://github.com/modsim/cadet). CADET is based on a core simulator that is written in object oriented C++ and applies modern mathematical algorithms for efficiently solving a variety of customary chromatography models. This simulation engine is interfaced to a suite of MATLAB tools for setting up and executing the most common scientific workflows, e.g., model calibration, process design, robustness analysis, statistical analysis, and experimental design. The model library and numerical methods are continuously extended and improved. For instance, binding models with multiple bound states, pH and/or temperature dependence of binding parameters, surface diffusion, and arbitrary spacing of the radial discretization have been recently added. Moreover, numerical accuracy and computational speed of the code are comprehensively benchmarked using high precision reference solutions and realistic model problems. Versatility of the CADET modeling platform is demonstrated with several examples that are also published as open source code and can be freely adapted to specific use cases. In one of several case studies, sequential and simultaneous optimization of elution gradient shape and cut times are compared for a three component separation. This process is designed to achieve Pareto optimal purity and yield of the central fraction. Moreover, the robustness of these designs with respect to typical process variations is systematically studied. The last case study illustrates the optimal design of experiments for estimating model parameters with maximal accuracy.}
1517
}
1618

17-
@article{vonLieres:2010,
18-
author = {von Lieres, E. and Andersson, J.},
19-
title = {A fast and accurate solver for the general rate model of column liquid chromatography},
20-
journal = {Computers and Chemical Engineering},
21-
volume = {34},
22-
number = {8},
19+
@article{VonLieres2010a,
20+
title = {{A fast and accurate solver for the general rate model of column liquid chromatography}},
2321
year = {2010},
24-
pages = {1180–1191},
22+
author = {von Lieres, Eric and Andersson, Joel},
2523
doi = {10.1016/j.compchemeng.2010.03.008},
26-
url = {https://doi.org/10.1016/j.compchemeng.2010.03.008}
24+
journal = {Computers {\&} Chemical Engineering},
25+
issn = {00981354},
26+
month = aug,
27+
number = {8},
28+
pages = {1180--1191},
29+
volume = {34},
2730
}
2831

2932
% DG discretization of transport models:
3033
31-
@article{Breuer:2023,
32-
author = {Breuer, J. and Leweke, S. and Schmölder, J. and Gassner, G. and von Lieres, E.},
34+
@article{Breuer2023,
3335
title = {Spatial discontinuous Galerkin spectral element method for a family of chromatography models in CADET},
34-
journal = {Computers and Chemical Engineering},
35-
volume = {177},
3636
year = {2023},
37-
pages = {108340},
37+
author = {Jan Michael Breuer and Samuel Leweke and Johannes Schmölder and Gregor Gassner and Eric {von Lieres}},
3838
doi = {10.1016/j.compchemeng.2023.108340},
39-
url = {https://doi.org/10.1016/j.compchemeng.2023.108340}
39+
journal = {Computers \& Chemical Engineering},
40+
volume = {177},
41+
pages = {108340},
42+
issn = {0098-1354},
4043
}
4144

4245
% Crystallization:
4346
44-
@article{Zhang1:2024,
45-
author = {Zhang, Wendi and Przybycien, Todd and Schmölder, Johannes and Leweke, Samuel and von Lieres, Eric},
46-
title = {Solving crystallization/precipitation population balance models in {CADET}, part {I}: {Nucleation} growth and growth rate dispersion in batch and continuous modes on nonuniform grids},
47-
journal = {Computers and Chemical Engineering},
48-
volume = {183},
47+
@article{Zhang2024,
48+
title = {Solving crystallization/precipitation population balance models in CADET, part I: Nucleation growth and growth rate dispersion in batch and continuous modes on nonuniform grids},
4949
year = {2024},
50-
pages = {108612},
50+
author = {Zhang, Wendi and Przybycien, Todd and Schmölder, Johannes and Leweke, Samuel and von Lieres, Eric},
5151
doi = {10.1016/j.compchemeng.2024.108612},
52-
url = {https://doi.org/10.1016/j.compchemeng.2024.108612}
52+
journal = {Computers \& Chemical Engineering},
53+
pages = {108612},
54+
publisher = {Elsevier},
5355
}
5456

55-
% Parameter sensitivities
57+
% Parameter sensitivities and Algorithmic Differentiation
5658
57-
@article{Puttmann:2013,
58-
title = {Fast and accurate parameter sensitivities for the general rate model of column liquid chromatography},
59-
journal = {Computers & Chemical Engineering},
60-
volume = {56},
61-
pages = {46-57},
59+
@article{Puttmann2013,
60+
title = {{Fast and accurate parameter sensitivities for the general rate model of column liquid chromatography}},
6261
year = {2013},
63-
issn = {0098-1354},
64-
doi = {https://doi.org/10.1016/j.compchemeng.2013.04.021},
65-
url = {https://www.sciencedirect.com/science/article/pii/S0098135413001440},
66-
author = {Andreas Püttmann and Sebastian Schnittert and Uwe Naumann and Eric {von Lieres}}
67-
}
62+
author = {Püttmann, Andreas and Schnittert, Sebastian and Naumann, Uwe and von Lieres, Eric},
63+
doi = {10.1016/j.compchemeng.2013.04.021},
64+
journal = {Computers {\&} Chemical Engineering},
65+
issn = {00981354},
66+
month = sep,
67+
pages = {46--57},
68+
volume = {56},
69+
}
70+
71+
@article{Puttmann2016,
72+
title = {{Utilizing algorithmic differentiation to efficiently compute chromatograms and parameter sensitivities}},
73+
year = {2016},
74+
author = {Püttmann, Andreas and Schnittert, Sebastian and Leweke, Samuel and von Lieres, Eric},
75+
doi = {10.1016/j.ces.2015.08.050},
76+
journal = {Chemical Engineering Science},
77+
issn = {00092509},
78+
month = jan,
79+
volume = {139},
80+
pages = {152--162},
81+
}

doc/developer_guide/model_expansion.rst

+21-2
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ Most important functionality to be implemented:
9393
4. System Jacobian: Owned by the unit operation. Defined given by :math:`J := \frac{\partial F}{\partial y} + \alpha \frac{\partial F}{\partial \dot{y}}`, i.e. both the state and state derivative Jacobian need to be implemented.
9494
5. Linear solve: Solves the system :math:`J x = b` with given :math:`b`.
9595
6. Algorithmic differentiation (AD):
96-
a. Parameter sensitivities: Use ``ParamType`` for all parameters and ``ResidualType`` for the residual.
97-
b. Jacobian calculation via AD (can be used to verify the analytical implementation): Use ``StateType`` for the state and ``ResidualType`` for the residual. Additionally, you need to implement the following functions to enable the AD Jacobian: ``requiredADdirs()``, ``prepareADvectors``, ``extractJacobianFromAD()``, ``useAnalyticJacobian()``. For details please refer to `Püttmann et al. <https://doi.org/10.1016/j.compchemeng.2013.04.021>`_.
96+
a. Parameter sensitivities: Use ``ParamType`` for all parameters and ``ResidualType`` for the residual. A more detailed guide on parameter sensitivities can be found in the corresponding section below.
97+
b. Jacobian calculation via AD (can be used to verify the analytical implementation): Use ``StateType`` for the state and ``ResidualType`` for the residual. Additionally, you need to implement the following functions to enable the AD Jacobian: ``requiredADdirs()``, ``prepareADvectors``, ``extractJacobianFromAD()``, ``useAnalyticJacobian()``. For details please refer to `Püttmann et al. (2016) <https://doi.org/10.1016/j.ces.2015.08.050>`_.
9898

9999
Testing and Publication
100100
^^^^^^^^^^^^^^^^^^^^^^^
@@ -121,3 +121,22 @@ Use ``ParamType`` and ``ResidualType`` for parameters and residual ``res`` to en
121121
Use ``StateType`` and ``ResidualType`` for the state ``y`` and residual ``res`` to enable the AD Jacobian.
122122

123123
To use AD for a new unit operation, you can either apply dense AD or, in case of a model with many states or spatial resolution, you need to think of the shape of the Jacobian and apply sparse AD.
124+
125+
Parameter sensitivities
126+
^^^^^^^^^^^^^^^^^^^^^^^
127+
128+
Parameter sensitivity estimation in CADET-Core leverages the capabilities provided by the time integrator module `IDAS <https://sundials.readthedocs.io/en/latest/idas/index.html>`_ to compute `forward sensitivities <https://sundials.readthedocs.io/en/latest/idas/Mathematics_link.html#forward-sensitivity-analysis>`_, combined with our custom implementation for algorithmic differentiation, as described in our publication `Püttmann et al. (2016) <https://doi.org/10.1016/j.ces.2015.08.050>`_.
129+
To enable a parameter sensitivity for you model, you only have to take care about calling and interfacing to the existing infrastructure, which is briefly described in the following steps:
130+
- The parameter must be defined as an `active` type
131+
- In the residual function, the parameter must be used as a `ParamType`
132+
- The parameter must be registered, i.e. added to the `_parameters` map, e.g.
133+
```
134+
_parameters[makeParamId(hashString("TOTAL_POROSITY"), _unitOpIdx, CompIndep, ParTypeIndep, BoundStateIndep, ReactionIndep, SectionIndep)] = &_totalPorosity;
135+
```
136+
which creates a unique parameter ID. ALso, the dependencies of the parameter need to be specified here, e.g. if it depends on a particle type or component etc. This map is called by the modelsystem to set up the sensitivity equations.
137+
- If the parameter is vector valued, the sensitivities for each entry of the 1D or 2D vector can be computed.
138+
To this end, you need to call the corresponding registering function, e.g.
139+
```
140+
registerParam1DArray(_parameters, _initC, [=](bool multi, unsigned int comp) { return makeParamId(hashString("INIT_C"), _unitOpIdx, comp, ParTypeIndep, BoundStateIndep, ReactionIndep, SectionIndep); });
141+
```
142+
- CADET-Core takes care of the rest

doc/developer_guide/release_new_version.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.. _release_new_version:
22

3-
CADET-Core version release
4-
==========================
3+
CADET-Core release
4+
==================
55

66
CADET-Core releases follow the semantic versioning system, which is documented `here <https://semver.org/>`_.
77

doc/literature.bib

+36-36
Original file line numberDiff line numberDiff line change
@@ -3,110 +3,110 @@
33
44
@article{Leweke2018CADET,
55
title = {Chromatography Analysis and Design Toolkit (CADET)},
6+
year = {2018},
7+
author = {Leweke, Samuel and von Lieres, Eric},
8+
doi = {10.1016/j.compchemeng.2018.02.025},
69
journal = {Computers & Chemical Engineering},
710
volume = {113},
811
pages = {274-294},
9-
year = {2018},
1012
issn = {0098-1354},
11-
doi = {10.1016/j.compchemeng.2018.02.025},
12-
author = {Leweke, Samuel and von Lieres, Eric},
1313
keywords = {Column liquid chromatography, General rate model, Modeling and simulation platform, Model calibration, Process analysis and design, Statistical analysis, Experimental design},
1414
abstract = {CADET is an open source modeling and simulation framework for column liquid chromatography. The software is freely distributed to both academia and industry under the GPL license (https://github.com/modsim/cadet). CADET is based on a core simulator that is written in object oriented C++ and applies modern mathematical algorithms for efficiently solving a variety of customary chromatography models. This simulation engine is interfaced to a suite of MATLAB tools for setting up and executing the most common scientific workflows, e.g., model calibration, process design, robustness analysis, statistical analysis, and experimental design. The model library and numerical methods are continuously extended and improved. For instance, binding models with multiple bound states, pH and/or temperature dependence of binding parameters, surface diffusion, and arbitrary spacing of the radial discretization have been recently added. Moreover, numerical accuracy and computational speed of the code are comprehensively benchmarked using high precision reference solutions and realistic model problems. Versatility of the CADET modeling platform is demonstrated with several examples that are also published as open source code and can be freely adapted to specific use cases. In one of several case studies, sequential and simultaneous optimization of elution gradient shape and cut times are compared for a three component separation. This process is designed to achieve Pareto optimal purity and yield of the central fraction. Moreover, the robustness of these designs with respect to typical process variations is systematically studied. The last case study illustrates the optimal design of experiments for estimating model parameters with maximal accuracy.}
1515
}
1616

1717
@article{VonLieres2010a,
18+
title = {{A fast and accurate solver for the general rate model of column liquid chromatography}},
19+
year = {2010},
1820
author = {von Lieres, Eric and Andersson, Joel},
1921
doi = {10.1016/j.compchemeng.2010.03.008},
20-
issn = {00981354},
2122
journal = {Computers {\&} Chemical Engineering},
23+
issn = {00981354},
2224
month = aug,
2325
number = {8},
2426
pages = {1180--1191},
25-
title = {{A fast and accurate solver for the general rate model of column liquid chromatography}},
2627
volume = {34},
27-
year = {2010}
2828
}
2929

3030
% CADET-CORE MAJOR EXTENSIONS
3131
32-
@article{ZHANG2025solving,
32+
@article{Zhang2025,
3333
title = {Solving crystallization/precipitation population balance models in CADET, Part II: Size-based Smoluchowski coagulation and fragmentation equations in batch and continuous modes},
34+
year = {2025},
35+
author = {Zhang, Wendi and Przybycien, Todd and Breuer, Jan Michael and von Lieres, Eric},
36+
doi = {10.1016/j.compchemeng.2024.108860},
3437
journal = {Computers & Chemical Engineering},
3538
volume = {192},
3639
pages = {108860},
37-
year = {2025},
3840
issn = {0098-1354},
39-
doi = {10.1016/j.compchemeng.2024.108860},
40-
author = {Zhang, Wendi and Przybycien, Todd and Breuer, Jan Michael and von Lieres, Eric}
4141
}
4242

43-
@article{zhang2024solving,
44-
title = {Solving crystallization/precipitation population balance models in CADET, part I: Nucleation growth and growth rate dispersion in batch and continuous modes on nonuniform grids},
45-
author = {Zhang, Wendi and Przybycien, Todd and Schmölder, Johannes and Leweke, Samuel and von Lieres, Eric},
46-
journal = {Computers \& Chemical Engineering},
47-
pages = {108612},
48-
year = {2024},
49-
publisher = {Elsevier},
50-
doi = {10.1016/j.compchemeng.2024.108612}
43+
@article{Zhang2024,
44+
title = {Solving crystallization/precipitation population balance models in CADET, part I: Nucleation growth and growth rate dispersion in batch and continuous modes on nonuniform grids},
45+
year = {2024},
46+
author = {Zhang, Wendi and Przybycien, Todd and Schmölder, Johannes and Leweke, Samuel and von Lieres, Eric},
47+
doi = {10.1016/j.compchemeng.2024.108612},
48+
journal = {Computers \& Chemical Engineering},
49+
pages = {108612},
50+
publisher = {Elsevier},
5151
}
5252

5353
@article{Breuer2023,
5454
title = {Spatial discontinuous Galerkin spectral element method for a family of chromatography models in CADET},
55+
year = {2023},
56+
author = {Jan Michael Breuer and Samuel Leweke and Johannes Schmölder and Gregor Gassner and Eric {von Lieres}},
57+
doi = {10.1016/j.compchemeng.2023.108340},
5558
journal = {Computers \& Chemical Engineering},
5659
volume = {177},
5760
pages = {108340},
58-
year = {2023},
5961
issn = {0098-1354},
60-
doi = {10.1016/j.compchemeng.2023.108340},
61-
author = {Jan Michael Breuer and Samuel Leweke and Johannes Schmölder and Gregor Gassner and Eric {von Lieres}},
6262
}
6363

6464
@article{Puttmann2013,
65+
title = {{Fast and accurate parameter sensitivities for the general rate model of column liquid chromatography}},
66+
year = {2013},
6567
author = {Püttmann, Andreas and Schnittert, Sebastian and Naumann, Uwe and von Lieres, Eric},
6668
doi = {10.1016/j.compchemeng.2013.04.021},
67-
issn = {00981354},
6869
journal = {Computers {\&} Chemical Engineering},
70+
issn = {00981354},
6971
month = sep,
7072
pages = {46--57},
71-
title = {{Fast and accurate parameter sensitivities for the general rate model of column liquid chromatography}},
7273
volume = {56},
73-
year = {2013}
7474
}
7575

7676
@article{Puttmann2016,
77+
title = {{Utilizing algorithmic differentiation to efficiently compute chromatograms and parameter sensitivities}},
78+
year = {2016},
7779
author = {Püttmann, Andreas and Schnittert, Sebastian and Leweke, Samuel and von Lieres, Eric},
7880
doi = {10.1016/j.ces.2015.08.050},
79-
issn = {00092509},
8081
journal = {Chemical Engineering Science},
82+
issn = {00092509},
8183
month = jan,
82-
pages = {152--162},
83-
title = {{Utilizing algorithmic differentiation to efficiently compute chromatograms and parameter sensitivities}},
8484
volume = {139},
85-
year = {2016}
85+
pages = {152--162},
8686
}
8787

8888
% CADET OTHER SOFTWARE
8989
9090
@Article{Schmoelder2020,
91-
author = {Schmölder, Johannes and Kaspereit, Malte},
9291
title = {A {{Modular Framework}} for the {{Modelling}} and {{Optimization}} of {{Advanced Chromatographic Processes}}},
92+
year = {2020},
93+
author = {Schmölder, Johannes and Kaspereit, Malte},
9394
doi = {10.3390/pr8010065},
95+
journal = {Processes},
9496
number = {1},
95-
pages = {65},
9697
volume = {8},
97-
journal = {Processes},
98-
year = {2020},
98+
pages = {65},
9999
}
100100

101-
@article{Heymann2022advanced,
101+
@article{Heymann2022,
102102
title = {Advanced score system and automated search strategies for parameter estimation in mechanistic chromatography modeling},
103+
year = {2022},
104+
author = {William Heymann and Juliane Glaser and Fabrice Schlegel and Will Johnson and Pablo Rolandi and Eric {von Lieres}},
105+
doi = {https://doi.org/10.1016/j.chroma.2021.462693},
103106
journal = {Journal of Chromatography A},
104107
volume = {1661},
105108
pages = {462693},
106-
year = {2022},
107109
issn = {0021-9673},
108-
doi = {https://doi.org/10.1016/j.chroma.2021.462693},
109-
author = {William Heymann and Juliane Glaser and Fabrice Schlegel and Will Johnson and Pablo Rolandi and Eric {von Lieres}},
110110
}
111111

112112
% CADET-CORE SELECTED USE-CASES

doc/modelling/crystallization.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ In CADET, we chose particle size and axial coordinate as the internal and extern
1111
The PBM in CADET is implemented so that it can be used in any unit operation that supports reactions.
1212
Typical applications consider crystallization in a CSTR or, to model continuous processes, in a Dispersive Plug-Flow Reactor (DPFR), which is described by the LRM without solid phase.
1313

14-
In the following, we give a brief overview on the modelling equations, for more information on the PBM as implemented in CADET, please refer to :cite:`zhang2024solving`.
14+
In the following, we give a brief overview on the modelling equations, for more information on the PBM as implemented in CADET, please refer to :cite:`Zhang2024`.
1515

1616
.. figure:: PBM_Part_I.png
1717

doc/modelling/unit_operations/lumped_rate_model_without_pores.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Both quasi-stationary and dynamic binding models are supported:
3939
4040
\begin{aligned}
4141
\text{quasi-stationary: }& & 0 &= f_{\text{ads}}\left( c^\ell, c^s\right), \\
42-
\text{dynamic: }& & \frac{\partial q}{\partial t} &= f_{\text{ads}}\left( c^\ell, c^s\right) + f_{\text{react}}^s\left( c^\ell, c^s \right).
42+
\text{dynamic: }& & \frac{\partial c^s}{\partial t} &= f_{\text{ads}}\left( c^\ell, c^s\right) + f_{\text{react}}^s\left( c^\ell, c^s \right).
4343
\end{aligned}
4444
4545
By default, the following initial conditions are applied for all :math:`z \in [0,L]`:

doc/publications.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ CADET-Core Numerics and Modeling
3838
.. bibliography:: literature.bib
3939
:filter: False
4040

41-
ZHANG2025solving
42-
zhang2024solving
41+
Zhang2025
42+
Zhang2024
4343

4444
**Publications on Parameter sensitivites and (compressed) algorithmic differentiation**
4545

0 commit comments

Comments
 (0)