Computational singular perturbation (CSP) is a method to analyze dynamical systems. It targets the decoupling of fast and slow dynamics using an alternate linear expansion of the right-hand side of the governing equations based on eigenanalysis of the associated Jacobian matrix. This representation facilitates diagnostic analysis, detection and control of stiffness, and the development of simplified models. We have implemented CSP in a C++ open-source library CSPlib1 using the Kokkos2 parallel programming model to address portability across diverse heterogeneous computing platforms, i.e., multi/many-core CPUs and GPUs. We describe the CSPlib implementation and present its computational performance across different computing platforms using several test problems. Specifically, we test the CSPlib performance for a constant pressure ignition reactor model on different architectures, including IBM Power 9, Intel Xeon Skylake, and NVIDIA V100 GPU. The size of the chemical kinetic mechanism is varied in these tests. As expected, the Jacobian matrix evaluation, the eigensolution of the Jacobian matrix, and matrix inversion are the most expensive computational tasks. When considering the higher throughput characteristic of GPUs, GPUs performs better for small matrices with higher occupancy rate. CPUs gain more advantages from the higher performance of well-tuned and optimized linear algebra libraries such as OpenBLAS. Program summaryProgram Title: CSPlibCPC Library link to program files:https://doi.org/10.17632/p9gb7z54sp.1Developer's repository link:https://github.com/sandialabs/csplibLicensing provisions: BSD 2-clauseProgramming language: C++Nature of problem: Dynamical systems can involve coupled processes with a wide range of time scales. The computational singular perturbation (CSP) method offers a reformulation of these systems which enables the use of dynamically-based diagnostic tools to better comprehend the dynamics by decoupling fast and slow processes. CSPlib is an open-source software library for analyzing general ordinary differential equation (ODE) and differential algebraic equation (DAE) systems, with specialized implementations for detailed chemical kinetic ODE/DAE systems. It relies on CSP for the analysis of these systems. CSPlib has been used in gas kinetic and heterogeneous catalytic kinetic models.Solution method: CSP analysis seeks a set of basis vectors to linearly decompose the right-hand side (RHS) of a dynamical system in a manner that decouples fast and slow processes. The CSP basis vectors are often well approximated with the right eigenvectors of the RHS Jacobian. And the left basis vectors are found by the inversion of the matrix, whose columns are the CSP basis vectors. Accordingly, the right and left CSP basis vectors are orthonormal. CSP defines mode amplitudes as the projections of the left basis vectors on the RHS; the time scales as the reciprocals of the RHS Jacobian eigenvalue magnitudes; and the CSP pointers, which are the element-wise multiplication of the transpose of the right CSP basis vectors with the left CSP basis vectors. For kinetic models that can be cast as the product of a generalized stoichiometric matrix and a rate of progress vector, CSP defines the participation index, which represents the contribution of a chemical reaction to each mode. Further, it defines the slow and fast importance indices, which describe the contribution of a chemical reaction to the slow and fast dynamics of a state variable, respectively. These indices are useful in diagnostic studies of dynamical systems and the construction of simplified models.Additional comments including restrictions and unusual features: CSPlib is a portable library that carries out many CSP analyses in parallel and can be used in modern high-performance platforms.
Read full abstract