  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.
