Accurate simulations of combustion phenomena require the use of detailed chemical kinetics in order to capture limit phenomena such as ignition and extinction as well as predict pollutant formation. However, the chemical kinetic models for hydrocarbon fuels of practical interest typically have large numbers of species and reactions and exhibit high levels of mathematical stiffness in the governing differential equations, particularly for larger fuel molecules. In order to integrate the stiff equations governing chemical kinetics, generally reactive-flow simulations rely on implicit algorithms that require frequent Jacobian matrix evaluations. Some in situ and a posteriori computational diagnostics methods also require accurate Jacobian matrices, including computational singular perturbation and chemical explosive mode analysis. Typically, finite differences numerically approximate these, but for larger chemical kinetic models this poses significant computational demands since the number of chemical source term evaluations scales with the square of species count. Furthermore, existing analytical Jacobian tools do not optimize evaluations or support emerging SIMD processors such as GPUs. Here we introduce pyJac, a Python-based open-source program that generates analytical Jacobian matrices for use in chemical kinetics modeling and analysis. As a demonstration, we first establish the correctness of the Jacobian matrices for kinetic models of hydrogen, methane, ethylene, and isopentanol oxidation, then demonstrate the performance achievable on CPUs and GPUs using pyJac via matrix evaluation timing comparisons.
Preprint submitted to Computer Physics Communications February 21, 2017 Keywords: Chemical kinetics, Jacobian, SIMD, GPU
PROGRAM SUMMARY
Manuscript Title: pyJac: analytical Jacobian generator for chemical kinetics
Authors: Kyle E. Niemeyer, Nicholas J. Curtis, Chih-Jen Sung
Nature of problem: Automatic generation of source code to evaluate Jacobian matrices for chemical kinetic models
Solution method: Chemical kinetic model interpreted from input file(s), and partial derivatives and necessary supporting functions are written to file based on a theoretical derivation.
Running time: Problem dependent; from seconds to tens of minutes depending on the model size.
Keywords: Chemical kinetics, Jacobian, SIMD, GPU
Introduction
As the need for detailed and accurate chemical kinetic models2 in predictive reactive-flow simulations has become recognized in recent years, such models describing the oxidation of hydrocarbon fuels simultaneously grew orders of magnitude in size and complexity. For example, a recently developed detailed kinetic model for 2-methylalkanes, relevant for jet and diesel fuel surrogates, consists of over 7000 species and 30000 reactions [1]; similarly large surrogate models exist for gasoline [2, 3] and biodiesel [4]. Since in general the computational cost of solving the associated generally stiff systems of equations scales quadratically with the number of species at best—and at worst, cubically—models of such a large size pose challenges even for lower-dimensional analyses, and cannot practically be used directly in multidimensional reactive-flow simulations.
In an effort to reduce the computational demands of using large, detailed kinetic models, a number of techniques have been developed to reduce their size and complexity while retaining predictiveness, as reviewed by Lu and Law [5] as well as Turányi and Tomlin [6]. Major classes of such approaches include skeletal reduction methods that remove unimportant species and reactions [7, 8, 9, 10], lumping of species that share similar properties [11, 12, 13], and time-scale reduction methods that reduce chemical stiffness [14, 15, 16, 17]. Effective reduction strategies either combine multiple methods a priori [18, 19, 20] or apply them dynamically during a simulation to achieve greater local savings [21, 22, 23, 24, 25, 26]. Techniques such as interpolation/tabulation of expensive terms [27] can also reduce computational costs.
In addition to the aforementioned cost reduction methods that modify the chemical kinetic models, improvements to the integration algorithms that actually solve the governing differential equations can also offer significant gains in computational performance. Due to the chemical stiffness exhibited by most kinetic models, solvers typically rely on robust, high-order implicit integration algorithms based on backward differentiation formulae [28, 29, 30, 31]. In order to solve the nonlinear algebraic equations that arise in these methods, the Jacobian matrix must be evaluated and factorized, operations that result in the quadratic and cubic costs mentioned previously. However, by using an analytical formulation for the Jacobian matrix rather than a typical finite difference approximation, the cost of the numerous evaluations can drop from growing with the square of the number of species to a linear dependence [5].
In parallel with the potential improvements in stiff implicit integrators used for chemical kinetics, algorithms tailored for high-performance hardware accelerators offer another route to reducing computational costs. In the past, central processing unit (CPU) clock speeds increased regularly—i.e., Moore’s Law—but power consumption and heat dissipation issues disrupted this trend recently, slowing the pace of increases in CPU clock rates. While multicore parallelism continues to raise CPU performance, single-instruction multiple data (SIMD) processors, e.g., graphics processing units (GPUs), recently emerged as a low-cost, low-power consumption, and massively parallel high-performance computing alternative. GPUs—originally developed for graphics/video processing and display purposes—consist of hundreds to thousands of cores, compared to the tens of cores found on a typical CPU. Recognizing that the SIMD parallelism model fits well with the operator-split chemistry integration that forms the basis of many reactive-flow codes [32], a number of studies in recent years [33, 34, 35, 36, 37, 38] explored the use of SIMD processors to accelerate the integration of chemical kinetics in reactive-flow codes. Niemeyer and Sung [39] reviewed such efforts in greater detail. While explicit methods offer significant improvements in performance for nonstiff and moderately stiff chemical kinetics [38], experiences thus far suggest that stiff chemistry continues to require the use of implicit or similar algorithms. This provides significant motivation to provide the capability of evaluating analytical Jacobian matrices on GPUs as well as CPUs.
Thus, motivated by the potential cost reductions offered by analytical Jacobian matrix formulations, over the past five years a number of research groups developed analytical Jacobian generators for chemical kinetics, although as will be discussed the software package introduced here offers a number of improvements. The TChem toolkit developed by Safta et al. [40] was one of the first software packages developed for calculating the analytical Jacobian matrix, but provides this functionality through an interface rather than generating customized source code for each model. Youssef [41] recognized the importance of using an analytical Jacobian over a numerical approximation to reduce both computational cost and numerical error when performing eigendecomposition of the matrix. Bisetti [42] released a utility for producing analytical Jacobian matrix source code based on isothermal and isobaric conditions, with the state vector comprised of species concentrations rather than mass fractions; while incompatible with many existing reactive-flow formulations, this formulation resulted in a significant increase of Jacobian matrix sparsity—such a strategy should be investigated further. Perini et al. [43] developed an analytical Jacobian matrix formulation for constant-volume combustion, and when used in a multidimensional reactive-flow simulation—combined with tabulation of temperature-dependent properties—reported a performance improvement of around 80 % over finite-difference-based approximations. Recently, Dijkmans et al. [44] used a GPU-based analytical Jacobian combined with tabulation of temperature-dependent functions based on polynomial interpolations to accelerate the integration of chemical kinetics equations, similar to the earlier approach of Shi et al. [34]. Unlike the current work, the approach of Dijkmans et al. [44] used the GPU to calculate the elements of a single Jacobian matrix in parallel, rather than a large number of matrices corresponding to different states.
To our knowledge, currently no open-source analytical chemical Jacobian tool exists that is capable of generating code specifically optimized for SIMD processors. To this end, pyJac is capable of generating subroutines for reaction rates, species production rates, derivative source terms, and analytical chemical Jacobian matrices both for CPU operation via C/C++ and GPU operation via CUDA [45], a widely used programming language for NVIDIA GPUs. Furthermore, pyJac supports newer pressure-dependent reaction formulations (i.e., based on logarithmic or Chebyshev polynomial interpolation).
The rest of the paper is structured as follows. First, in Section 2 we introduce the governing equations for chemical kinetics and then provide the analytical Jacobian matrix formulation in Section 3. Next, Section 4 describes the techniques used to optimize evaluation of the analytical Jacobian on both CPUs and GPUs. Then, in Section 5 we demonstrate the correctness and computational performance of the generated analytical Jacobian matrices for benchmark chemical kinetic models, and discuss the implications of these results. Finally, we summarize our work in Section 6 and outline future research directions.
Theory
This section describes the theoretical background of the analytical Jacobian generator, first in terms of the governing equations and then the components of the Jacobian matrix itself. The literature contains more detailed explanations of the governing equations development [46, 47, 48], but we include the necessary details here for completeness.
Governing equations
The initial value problem to be solved, whether in the context of a single homogeneous reacting system (e.g., autoignition, perfectly stirred reactor) or the chemistry portion of an operator-split multidimensional reactive-flow simulation [32], is described using an ordinary differential equation for the thermochemical composition vector
Φ={T,Y1,Y2,…,YNsp−1}T,(1)
where T is the temperature, Yi are the species mass fractions, and Nsp is the number of species. The mass fraction of the final species, YNsp, is determined through conservation of mass:
YNsp=1−k=1∑Nsp−1Yk(2)
where the most abundant species (e.g., N2 in air-fed combustion) can be assigned to this role. In multidimensional simulations where the equations for chemical kinetics are coupled to conservation of energy (or enthalpy), temperature can be determined algebraically in a straightforward manner [32]. Completely defining the thermodynamic state also requires either pressure (p) or density (ρ), related to temperature and the mixture composition through the ideal equation of state
p=ρWRT=RTk=1∑Nsp[Xk](3)
where R is the universal gas constant, W is the average molecular weight of the mixture, and [Xk] is the molar concentration of the kth species. In the current implementation of pyJac, we assume a constant-pressure system3; thus, we use (3) to determine density rather than including it in the differential system given by (1). The average molecular weight is defined by
W=∑k=1NspYk/Wk1=pρRT(4)
and the molar concentrations by
[Xk]=ρWkYk(5)
where Wk is the molecular weight of the kth species.
The system of ODEs governing the time change in thermochemical composition corresponding to (1) is then f=∂Φ/∂t:
where cp is the mass-averaged constant-pressure specific heat, hk is the enthalpy of the kth species in mass units, and ω˙k is the kth species overall production rate.
Thermodynamic properties
The standard-state thermodynamic properties (in molar units) for a gaseous species k is defined using the standard seven-coefficient polynomial of Gordon and McBride [49]:
where Cp,k is the constant-pressure specific heat in molar units, Hk is the enthalpy in molar units, Sk is the entropy in molar units, and the ∘ indicates a standard-state property at one atmosphere (equivalent to the property at any pressure for calorically perfect gases).
The mass-based specific heat and enthalpy are then defined as
cp,k=WkCp,kandhk=WkHk,(12)
and the mixture-averaged specific heat is
cp=k=1∑NspYkcp,k.(13)
Reaction rate expressions
Next, we define the species rates of production and related kinetic terms as
ω˙k=i=1∑Nreacνkiqi,(14)
where Nreac is the number of reactions, νki is the overall stoichiometric coefficient for species k in reaction i, and qi is the rate-of-progress for reaction i. These are defined by
νki=νki′′−νki′and(15)
qi=ciRi,(16)
where νki′′ and νki′ are the product and reactant stoichiometric coefficients (respectively) of species k in reaction i. The base rate-of-progress for the ith reversible reaction Ri is given by
Ri=Rf,i−Rr,i,(17)
References
[1]S. M. Sarathy, C. K. Westbrook, M. Mehl, W. J. Pitz, C. Togbe, P. Dagaut, H. Wang, M. A. Oehlschlaeger, U. Niemann, K. Seshadri, P. S. Veloo, C. Ji, F. N. Egolfopoulos, T. Lu, Comprehensive chemical kinetic modeling of the oxidation of 2-methylalkanes from C₇ to C₂₀, Combust. Flame 158 (12) (2011) 2338–2357. doi: 10.1016/j.combustflame.2011.05.007.DOI
[2]M. Mehl, W. J. Pitz, C. K. Westbrook, H. J. Curran, Kinetic modeling of gasoline surrogate components and mixtures under engine conditions, Proc. Combust. Inst. 33 (1) (2011) 193–200. doi:10.1016/j.proci.2010.05.027.DOI
[3]M. Mehl, J.-Y. Chen, W. J. Pitz, S. M. Sarathy, C. K. Westbrook, An approach for formulating surrogates for gasoline with application toward a reduced surrogate mechanism for CFD engine modeling, Energy Fuels 25 (11) (2011) 5215–5223. doi: 10.1021/ef201099y.DOI
[4]O. Herbinet, W. J. Pitz, C. K. Westbrook, Detailed chemical kinetic mechanism for the oxidation of biodiesel fuels blend surrogate, Combust. Flame 157 (5) (2010) 893–908. doi:10.1016/j.combustflame.2009.10.013.DOI
[5]T. Lu, C. K. Law, Toward accommodating realistic fuel chemistry in large-scale computations, Prog. Energy Comb. Sci. 35 (2) (2009) 192–215. doi:10.1016/j.pecs.2008.10.002.DOI
[6]T. Turányi, A. S. Tomlin, Analysis of Kinetic Reaction Mechanisms, Springer-Verlag, Berlin Heidelberg, 2014. doi:10.1007/978-3-662-44562-4.DOI
[7]T. Lu, C. K. Law, Linear time reduction of large kinetic mechanisms with directed relation graph: n-heptane and iso-octane, Combust. Flame 144 (1-2) (2006) 24–36. doi:10.1016/j.combustflame.2005.02.015.DOI
[8]P. Pepiot-Desjardins, H. Pitsch, An efficient error-propagation-based reduction method for large chemical kinetic mechanisms, Combust. Flame 154 (1–2) (2008) 67–81. doi: 10.1016/j.combustflame.2007.10.020.
[9]V. Hiremath, Z. Ren, S. B. Pope, A greedy algorithm for species selection in dimension reduction of combustion chemistry, Combust. Theor. Model. 14 (5) (2010) 619–652. doi:10.1080/13647830.2010.499964.DOI
[10]K. E. Niemeyer, C. J. Sung, M. P. Raju, Skeletal mechanism generation for surrogate fuels using directed relation graph with error propagation and sensitivity analysis, Combust. Flame 157 (9) (2010) 1760–1770. doi:10.1016/j.combustflame.2009.12.022.DOI
[11]T. Lu, C. K. Law, Diffusion coefficient reduction through species bundling, Combust. Flame 148 (3) (2007) 117–126. doi:10.1016/j.combustflame.2006.10.004.DOI
[12]S. S. Ahmed, F. Mauß, G. Moréac, T. Zeuch, A comprehensive and compact n-heptane oxidation model derived using chemical lumping, Phys. Chem. Chem. Phys. 9 (9) (2007) 1107–1126. doi:10.1039/b614712g.DOI
[13]P. Pepiot-Desjardins, H. Pitsch, An automatic chemical lumping method for the reduction of large chemical kinetic mechanisms, Combust. Theor. Model. 12 (6) (2008) 1089–1108. doi:10.1080/13647830802245177.
[14]U. Maas, S. B. Pope, Simplifying chemical kinetics: intrinsic low-dimensional manifolds in composition space, Combust. Flame 88 (3-4) (1992) 239–264. doi:10.1016/0010-2180(92)90034-M.DOI
[15]S.-H. Lam, D. A. Goussis, The CSP method for simplifying kinetics, Int. J. Chem. Kinet. 26 (4) (1994) 461–486. doi:10.1002/kin.550260408.DOI
[16]T. Lu, Y. Ju, C. K. Law, Complex CSP for chemistry reduction and analysis, Combust. Flame 126 (1–2) (2001) 1445–1455. doi:10.1016/S0010-2180(01)00252-8.DOI
[17]X. Gou, W. Sun, Z. Chen, Y. Ju, A dynamic multi-timescale method for combustion modeling with detailed and reduced chemical kinetic mechanisms, Combust. Flame 157 (6) (2010) 1111–1121. doi:10.1016/j.combustflame.2010.02.020.DOI
[18]T. Lu, C. K. Law, Strategies for mechanism reduction for large hydrocarbons: n-heptane, Combust. Flame 154 (1–2) (2008) 153–163. doi:10.1016/j.combustflame.2007.11.013.DOI
[19]K. E. Niemeyer, C. J. Sung, Mechanism reduction for multicomponent surrogates: A case study using toluene reference fuels, Combust. Flame 161 (11) (2014) 2752–2764. doi:10.1016/j.combustflame.2014.05.001.DOI
[20]K. E. Niemeyer, C. J. Sung, Reduced chemistry for a gasoline surrogate valid at engine-relevant conditions, Energy Fuels 29 (2) (2015) 1172–1185. doi:10.1021/ef5022126.DOI
[21]I. Banerjee, M. Ieraperitrou, An adaptive reduction scheme to model reactive flow, Combust. Flame 144 (3) (2006) 619–633. doi:10.1016/j.combustflame.2005.10.001.DOI
[22]L. Liang, J. Stevens, J. T. Farrell, A dynamic adaptive chemistry scheme for reactive flow computations, Proc. Combust. Inst. 32 (1) (2009) 527–534. doi:10.1016/j.proci.2008.05.073.DOI
[23]Y. Shi, L. Liang, H.-W. Ge, R. D. Reitz, Acceleration of the chemistry solver for modeling DI engine combustion using dynamic adaptive chemistry (DAC) schemes, Combust. Theor. Model. 14 (1) (2010) 69–89. doi:10.1080/13647830903548834.DOI
[24]X. Gou, Z. Chen, W. Sun, Y. Ju, A dynamic adaptive chemistry scheme with error control for combustion modeling with a large detailed mechanism, Combust. Flame 160 (2) (2013) 225–231. doi:10.1080/13647830.2012.733825.
[25]H. Yang, Z. Ren, T. Lu, G. M. Goldin, Dynamic adaptive chemistry for turbulent flame simulations, Combust. Theor. Model. 17 (1) (2013) 167–183. doi:10.1080/13647830.2012.733825.DOI
[26]N. J. Curtis, K. E. Niemeyer, C. J. Sung, An automated target species selection method for dynamic adaptive chemistry simulations, Combust. Flame 162 (2015) 1358–1374. doi:10.1016/j.combustflame.2014.11.004.DOI
[27]S. B. Pope, Computationally efficient implementation of combustion chemistry using in situ adaptive tabulation, Combust. Theor. Model. 1 (1) (1997) 41–63. doi:10.1080/713665229.DOI
[28]C. F. Curtiss, J. O. Hirschfelder, Integration of stiff equations, PNAS 38 (3) (1952) 235–243.pubmed.ncbi.nlm.nih.gov/16589085
[29]G. D. Byrne, A. C. Hindmarsh, Stiff ODE solvers: a review of current and coming attractions, J. Comput. Phys. 70 (1) (1987) 1–62. doi:10.1016/0021-9991(87)90001-5.DOI
[30]P. N. Brown, G. D. Byrne, A. C. Hindmarsh, VODE: a variable-coefficient ODE solver, SIAM J. Sci. Stat. Comput. 10 (5) (1989) 1038–1051. doi:10.1137/0910062.DOI
[31]A. C. Hindmarsh, P. N. Brown, K. E. Grant, S. L. Lee, R. Serban, D. E. Shumaker, C. S. Woodward, SUNDIALS: Suite of nonlinear and differential/algebraic equation solvers, ACM T. Math. Software 31 (3) (2005) 363–396. doi:10.1145/1089014.1089020.DOI
[32]E. S. Oran, J. P. Boris, Numerical Simulation of Reactive Flow, 2nd Edition, Cambridge University Press, Cambridge, 2001.
[33]K. Spafford, J. Meredith, J. Vetter, J. Chen, R. Grout, R. Sankaran, Accelerating S3D: A GPGPU case study, in: Euro-Par 2009 Parallel Processing Workshops, LNCS 6043, Springer-Verlag, Berlin, Heidelberg, 2010, pp. 122–131. doi:10.1007/978-3-642-14122-5_16.DOI
[34]Y. Shi, W. H. G. Jr, H.-W. Wong, O. O. Oluwole, Redesigning combustion modeling algorithms for the graphics processing unit (GPU): Chemical kinetic rate evaluation and ordinary differential equation integration, Combust. Flame 158 (5) (2011) 836–847. doi:10.1016/j.combustflame.2011.01.024.DOI
[35]K. E. Niemeyer, C. J. Sung, C. G. Fotache, J. C. Lee, Turbulence-chemistry closure method using graphics processing units: a preliminary test, in: 7th Fall Technical Meeting of the Eastern States Section of the Combustion Institute, 2011. doi:10.6084/m9.figshare.3384964.v1.
[36]Y. Shi, W. H. Green, H.-W. Wong, O. O. Oluwole, Accelerating multi-dimensional combustion simulations using GPU and hybrid explicit/implicit ODE integration, Combust. Flame 159 (7) (2012) 2388–2397. doi:10.1016/j.combustflame.2012.02.016.DOI
[37]C. P. Stone, R. L. Davis, Techniques for solving stiff chemical kinetics on graphical processing units, J. Propul. Power 29 (4) (2013) 764–773. doi:10.2514/1.B34874.
[38]K. E. Niemeyer, C. J. Sung, Accelerating moderately stiff chemical kinetics in reactive-flow simulations using GPUs, J. Comput. Phys. 256 (2014) 854–871. doi:10.1016/j.jcp.2013.09.025.DOI
[39]K. E. Niemeyer, C. J. Sung, Recent progress and challenges in exploiting graphics processors in computational fluid dynamics, J. Supercomput. 67 (2) (2014) 528–564. doi:10.1007/s11227-013-1015-7.DOI
[40]C. Safta, H. N. Najm, O. M. Knio, TChem - a software toolkit for the analysis of complex kinetic models, Tech. Rep. SAND2011-3282, Sandia National Laboratories (May 2011).DOI
[41]M. R. Youssefi, Development of analytic tools for computational flame diagnostics, Master’s thesis, University of Connecticut, http://digitalcommons.uconn.edu/gstheses/145/ (Aug. 2011).
[42]F. Bisetti, Integration of large chemical kinetic mechanisms via exponential methods with Krylov approximations to Jacobian matrix functions, Combust. Theor. Model. 16 (3) (2012) 387–418. doi:10.1080/13647830.2011.631032.DOI
[43]F. Perini, E. Galligani, R. D. Reitz, An analytical Jacobian approach to sparse reaction kinetics for computationally efficient combustion modeling with large reaction mechanisms, Energy Fuels 26 (8) (2012) 4804–4822. doi:10.1021/ef300747n.DOI
[44]T. Dijkmans, C. M. Schietekat, K. M. Van Geem, G. B. Marin, GPU based simulation of reactive mixtures with detailed chemistry in combination with tabulation and an analytical Jacobian, Comput. Chem. Eng. 71 (2014) 521–531. doi:10.1016/j.compchemeng.2014.09.016.DOI
[45]J. Nickolls, I. Buck, M. Garland, K. Skadron, Scalable parallel programming with CUDA, Queue 6 (2) (2008) 40–53. doi:10.1145/1365490.1365500.DOI
[46]C. K. Law, Combustion Physics, Cambridge University Press, New York, 2006.
[47]J. Warnatz, U. Maas, R. W. Dibble, Combustion, 4th Edition, Physical and Chemical Fundamentals, Modeling and Simulation, Experiments, Pollutant Formation, Springer, Berlin Heidelberg, 2006.
[48]I. Glassman, R. A. Yetter, Combustion, 4th Edition, Academic Press, Burlington, MA, 2008.
[49]S. Gordon, B. J. McBride, Computer program for calculation of complex chemical equilibrium compositions, rocket performance, incident and reflected shocks, and Chapman-Jouguet detonations, Tech. Rep. NASA-SP-273, NASA Lewis Research Center (Mar. 1976).
[50]F. A. Lindemann, S. Arrhenius, I. Langmuir, N. R. Dhar, J. Perrin, W. C. McC Lewis, Discussion on “the radiation theory of chemical action”, Trans. Faraday Soc. 17 (1922) 598–606. doi:10.1039/TF9221700598.DOI
[51]R. G. Gilbert, K. Luther, J. Troe, Theory of thermal unimolecular reactions in the fall-off range. II. Weak collision rate constants, Ber. Bunsenges. Phys. Chem. 87 (2) (1983) 169–177. doi:10.1002/bbpc.19830870218.DOI
[52]P. H. Stewart, C. W. Larson, D. M. Golden, Pressure and temperature dependence of reactions proceeding via a bound complex. 2. Application to 2CH₃ → C₂H₅ + H, Combust. Flame 75 (1) (1989) 25–31. doi:10.1016/0010-2180(89)90084-9.DOI
[53]Reaction Design: San Diego, CHEMKIN-PRO 15113 (2012). URL http://www.ansys.com/Products/Fluids/ANSYS-Chemkin-Pro
[54]D. G. Goodwin, H. K. Moffat, R. L. Speth, Cantera: An object-oriented software toolkit for chemical kinetics, thermodynamics, and transport processes, http://www.cantera.org, version 2.3.0 (2017). doi:10.5281/zenodo.170284.
[55]P. K. Venkatesh, A. M. Dean, M. H. Cohen, R. W. Carr, Chebyshev expansions and sensitivity analysis for approximating the temperature- and pressure-dependence of chemically-activated reactions, Rev. Chem. Eng. 13 (1) (1997) 1–67. doi:10.1515/REVCE.1997.13.1.1.DOI
[56]P. K. Venkatesh, A. Y. Chang, A. M. Dean, M. H. Cohen, R. W. Carr, Parameterization of pressure- and temperature-dependent kinetics in multiple well reactions, AIChE J. 43 (5) (1997) 1331–1340. doi:10.1002/aic.690430522.DOI
[57]P. K. Venkatesh, Damped pseudospectral functional forms of the falloff behavior of unimolecular reactions, J. Phys. Chem. A 104 (2) (2000) 280–287. doi:10.1021/jp991458u.DOI
[58]G. P. Smith, D. M. Golden, M. Frenklach, N. W. Moriarty, B. Eiteneer, M. Goldenberg, C. T. Bowman, R. K. Hanson, S. Song, W. C. Gardiner, V. V. Lissianski, Z. Qin, GRI-Mech 3.0, http://www.me.berkeley.edu/gri_mech/.
[59]Python Software Foundation, Python language reference, version 2.7.10, Available at http://www.python.org (2015).
[60]K. E. Niemeyer, N. J. Curtis, pyJac v1.0.2 (Jan. 2017). doi:10.5281/zenodo.251144.DOI
[61]S. van der Walt, S. C. Colbert, G. Varoquaux, The NumPy array: A structure for efficient numerical computation, Comput. Sci. Eng. 13 (2011) 22–30. doi:10.1109/MCSE.2011.37.DOI
[62]S. Behnel, R. Bradshaw, C. Citro, L. Dalcin, D. S. Seljebotn, K. Smith, Cython: The best of both worlds, Comput. Sci. Eng. 13 (2011) 31–39. doi:10.1109/MCSE.2010.118.DOI
[63]K. Simonov, PyYAML version 3.11, Available at http://pyyaml.org (Mar. 2014).
[64]R. J. Hogan, Adept v1.1, Available at https://github.com/rjhogan/Adept (Jun. 2015).
[65]M. P. Burke, M. Chaos, Y. Ju, F. L. Dryer, S. J. Klippenstein, Comprehensive H₂/O₂ kinetic model for high-pressure combustion, Int. J. Chem. Kinet. 44 (7) (2011) 444–474. doi:10.1002/kin.20603.
[66]H. Wang, X. You, A. V. Joshi, S. G. Davis, A. Laskin, F. Egolfopoulos, C. K. Law, USC Mech Version II. High-temperature combustion reaction model of H₂/CO/C₁–C₄ compounds, http://ignis.usc.edu/USC_Mech_II.htm (May 2007).
[67]S. M. Sarathy, S. Park, B. W. Weber, W. Wang, P. S. Veloo, A. C. Davis, C. Togbe, C. K. Westbrook, O. Park, G. Dayma, Z. Luo, M. A. Oehlschlaeger, F. N. Egolfopoulos, T. Lu, W. J. Pitz, C. J. Sung, P. Dagaut, A comprehensive experimental and modeling study of iso-pentanol combustion, Combust. Flame 160 (12) (2013) 2712–2728. doi:10.1016/j.combustflame.2013.06.022.DOI
[68]L. F. Shampine, Numerical Solution of Ordinary Differential Equations, Chapman & Hall, New York, 1994.
[69]S.-H. Lam, D. A. Goussis, Understanding complex chemical kinetics with computational singular perturbation, Symp. (Int.) Combust. 22 (1988) 931–941. doi:10.1016/S0082-0784(89)80102-X.DOI
[70]S.-H. Lam, Using CSP to understand complex chemical kinetics, Combust. Sci. Technol. 89 (5-6) (1993) 375–404. doi:10.1080/00102209308924120.DOI
[72]T. Lu, C. S. Yoo, J. H. Chen, C. K. Law, Three-dimensional direct numerical simulation of a turbulent lifted hydrogen jet flame in heated coflow: a chemical explosive mode analysis, J. Fluid Mech. 652 (2010) 45–64. doi:10.1017/S002211201000039X.DOI
[73]Z. Luo, C. S. Yoo, E. S. Richardson, J. H. Chen, C. K. Law, T. Lu, Chemical explosive mode analysis for a turbulent lifted ethylene jet flame in highly-heated coflow, Combust. Flame 159 (1) (2012) 265–274. doi:10.1016/j.combustflame.2011.05.023.DOI
[74]R. Shan, C. S. Yoo, J. H. Chen, T. Lu, Computational diagnostics for n-heptane flames with chemical explosive mode analysis, Combust. Flame 159 (10) (2012) 3119–3127. doi:10.1016/j.combustflame.2012.05.012.DOI
[75]R. J. Hogan, Fast reverse-mode automatic differentiation using expression templates in C++, ACM Trans. Math. Software 40 (4) (2014) 26. doi:10.1145/2560359.DOI
[76]L. F. Richardson, The approximate arithmetical solution by finite differences of physical problems involving differential equations, with an application to the stresses in a masonry dam, Phil. Trans. R. Soc. A 210 (1911) 307–357.
[77]J. N. Lyness, C. B. Moler, Van der Monde systems and numerical differentiation, Numer. Math. 8 (5) (1966) 458–464. doi:10.1007/BF02166671.DOI
[78]J. N. Lyness, C. B. Moler, Generalized Romberg methods for integrals of derivatives, Numer. Math. 14 (1) (1969) 1–13. doi:10.1007/BF02165095.DOI
[79]J. R. R. A. Martins, P. Sturdza, J. J. Alonso, The complex-step derivative approximation, ACM Trans. Math. Software 29 (3) (2003) 245–262. doi:10.1145/838250.838251.DOI
[80]L. F. Shampine, Accurate numerical derivatives in MATLAB, ACM T. Math. Software 33 (4) (2007) 26. doi:10.1145/1268776.1268781.DOI
[81]M. S. Ridout, Statistical applications of the complex-step method of numerical differentiation, Am. Stat. 63 (1) (2009) 66–74. doi:10.1198/tast.2009.0013.DOI
[82]E. Anderson, Z. Bai, C. Bischof, S. Blackford, J. Demmel, J. Dongarra, J. Du Croz, A. Greenbaum, S. Hammarling, A. McKenney, D. Sorensen, LAPACK Users’ Guide, 3rd Edition, SIAM, Philadelphia, PA, 1999.
[83]C. Safta, H. N. Najm, O. M. Knio, TChem v0.2, Available at http://www.sandia.gov/tchem/index.html (2011).
[84]Free Software Foundation, gcc-4.8.5, Available at https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/ (Jun. 2015).
[85]NVIDIA, CUDA Toolkit 7.5, Available at https://developer.nvidia.com/cuda-downloads (Sep. 2015).
[86]K. E. Niemeyer, N. J. Curtis, C. J. Sung, Data, plotting scripts, and figures for “pyJac: analytical Jacobian generator for chemical kinetics”, figshare, CC-BY license (2017). doi:10.6084/m9.figshare.4578010.v1.DOI
[87]S. M. Correa, Turbulence-chemistry interactions in the intermediate regime of premixed combustion, Combust. Flame 93 (1–2) (1993) 41–60. doi:10.1016/0010-2180(93)90083-F.DOI
[89]A. Bhave, M. Kraft, Partially stirred reactor model: Analytical solutions and numerical convergence study of a PDF/Monte Carlo method, SIAM J. Sci. Comput. 25 (5) (2004) 1798–1823. doi:10.1137/S1064827502411328.DOI
[90]Z. Ren, S. B. Pope, An investigation of the performance of turbulent mixing models, Combust. Flame 136 (1-2) (2004) 208–216. doi:10.1016/j.combustflame.2003.09.014.DOI
[91]Z. Ren, Y. Liu, T. Lu, L. Lu, O. O. Oluwole, G. M. Goldin, The use of dynamic adaptive chemistry and tabulation in reactive flow simulations, Combust. Flame 161 (1) (2014) 127–137. doi:10.1016/j.combustflame.2013.08.018.DOI
[92]N. J. Curtis, K. E. Niemeyer, Fileset for testing thread-safety of TChem, figshare (Jan. 2017). doi:10.6084/m9.figshare.4563982.v1.DOI