Recording date:
Duration:
Session:
Speaker:
Co-Authors:
Abstract:
Chromatography, Modelling, Numerical methods, Discontinuous Galerkin, Julia
Chromatography plays a pivotal role in the purification of biopharmaceutical products and proteins. Continuous chromatography stands out as a promising approach to boost productivity while minimizing solvent usage compared to traditional batch chromatography. However, the implementation of continuous chromatography is notably intricate. It necessitates the utilization of multiple columns arranged in series and/or parallel configurations within open or closed loops (Schmidt-Traub et al., 2020).
While modeling can guide the design and operation of continuous chromatography, it is essential to acknowledge the computational challenge posed by solving the underlying partial differential equations (PDEs). The simulation time required for these models can be substantial. Notably, for the simulated moving bed (SMB), the simulation time can become significant as all columns must be solved simultaneously until cyclic steady state (He et al., 2020).
The prolonged simulation times underscore the need for fast solvers. To address this challenge, Meyer introduced an arbitrary order Discontinuous Galerkin spectral element method (DGSEM) for solving the general rate model in batch chromatography (Meyer et al., 2020). Recently, Breuer derived a slightly different DGSEM variant and implemented it using C++. The resulting code is open-source and publicly accessible through the CADET-Core software
(github.com/modsim/CADET) (accessed 28/02/2024) (Breuer et al., 2023; Leweke & von Lieres, 2018).
While C++ is a programming language renowned for its high computational performance, it is a low-level compiled language and thus demands more programming expertise compared to languages such as Python. In contrast, Python is a dynamic high-level programming language that is easy to use but at the expense of lower computational performance. Meanwhile, the programming language Julia leverages the advantages of C++ and python as it is a dynamic, high-level programming language that simultaneously generates fast, low-level machine code (Bezanson et al., 2017). Furthermore, Julia has a broad range of Ordinary Differential Equations (ODE) solvers for stiff problems (Rackauckas & Nie, 2017), which are often encountered in chromatography modelling (Kumar & Lenhoff, 2020).
The CADET-Core is a fundamental system solver with various unit operations including chromatography columns, crystallization, filtration, reactions etc. It supports arbitrary sequence and networks of unit operations, tubes, valves, tanks etc. Given the extensive functionality and complex codebase, there is a need for more agile and accessible code. For example, the two most used isotherm models, the steric mass action isotherm for ion-exchange hromatography and the Langmuir isotherm, cannot always explain resulting chromatograms (Kumar & Lenhoff, 2020). Especially for complex chromatography modes with various adsorption phenomena present, such as mixed-mode chromatography, the knowledge base and selection of isotherm models available is limited (Kumar & Lenhoff, 2020). Thus, to mathematically describe the adsorption behavior accurately, new isotherm models are needed. To implement isotherm models easily while maintaining high performance computation of chromatography models, the CADET-Julia package was developed. The Julia package has implemented the DGSEM for chromatography models in a simplified codebase with ease of implementation of new models for rapid prototyping and customized isotherms. The ease of implementing new isotherms is demonstrated by the fact that specifying the analytical Jacobian is not necessary to achieve very high solver performance. Hence, the isotherm models can be specified arbitrary and take many factors into account. The CADET-Julia code can be found on Github (github.com/jespfra/CADET-Julia) (accessed 28/02/2024). In this study, extensive benchmarks of CADET-Julia to the C++ implementation in CADET-Core are made in terms of convergence of error and simulation time for different complex continuous
setups. The various Julia solvers will be tested for various chromatography models and setups. The performance differences between the CADET-Julia and CADET-Core will be discussed.