Kppa is a software tool that automatically generates C or Fortran90 code to simulate chemical kinetic systems. It has many applications including atmospheric simulation, chemical reactor modeling, microorganism growth modeling, and even food spoilage modeling. The generated code can use your GPU or multi-core CPU to deliver outstanding performance. Kppa also uses the sparsity of the model Jacobian and Hessian to achieve excellent computational efficiency. In peer-reviewed studies, Kppa-generated chemical kernels achieved 10-25x the performance of the state-of-the-art codes used in WRF-Chem and CMAQ.

Kppa will help you develop new chemical simulation codes or improve your existing simulations. Kppa input files are written in a superset of the popular KPP language, so many projects will find it easy to integrate Kppa into their workflow. The code Kppa generates is modular and well documented, so using Kppa to testbed numerical integration schemes or add chemistry to an existing model is straightforward.



We offer a variety of licensing options to best fit your organization’s needs. Paid licenses include technical support and free software upgrades. Please send an e-mail to for a consultation and quote. A free 60-day demo license is available on request. Please send your request for a free license to


Please visit the Kppa downloads page to download Kppa.

Installation Instructions

Please see the Kppa installation guide for help installing Kppa.

Quick Start

The simplest way to use Kppa is to pass it an input file on the command line:

kppa my_model.kppa

This will create a chemical model named “my_model” using the parameters specified in the my_model.kppa file. The output will be several source code files in the current directory. You can use the -o flag to specify an output directory for the generated files:

kppa my_model.kppa -o output

Kppa includes several example models in the “examples” folder. These are a great starting point for creating your own models:

cd /opt/paratools/kppa-0.2/examples
cp -R small $HOME
cd $HOME/small
kppa small.kppa -o small_example

Type kppa --help to see all Kppa’s command line arguments:

Kppa: the Kinetic preproccessor accelerated
usage: kppa [-h] [-v {DEBUG,INFO,WARNING,ERROR,CRITICAL}] [-n NAME] [-o OUTPUTDIR] [-f] [-l LICENSE] [-t] input_file Kppa: The Kinetic preprocessor accelerated positional arguments: input_file Input file in KPP or KPPA language optional arguments: -h, --help show this help message and exit -v {DEBUG,INFO,WARNING,ERROR,CRITICAL}, --verbosity {DEBUG,INFO,WARNING,ERROR,CRITICAL} Set program logging level -n NAME, --name NAME Name of generated model -o OUTPUTDIR, --outputdir OUTPUTDIR Destination directory for generated files -f, --force Overwrite output files if they already exist -l LICENSE, --license LICENSE Path to license file -t, --test Execute unit tests. Writes files in current directory



Please join the Kppa user’s mailing list to be notified of new Kppa releases and updates. If you’re having any issues with Kppa or would like to suggest new features, please contact


  1. H. Zhang, J.C. Linford, A. Sandu, and R. Sander. Chemical Mechanism Solvers in Air Quality Models. Atmosphere. 2011; 2(3):510-532.

  2. J.C. Linford, J. Michalakes, M. Vachharijani, and A. Sandu, “Automatic Generation of Multi-Core Chemical Kernels”, IEEE TPDS: Special Issue on High-Performance Computing with Accelerators, Vol. 22, No. 1, p. 119-131, 2011.

  3. J.C. Linford. “Accelerating Atmospheric Modeling Through Emerging Multi-core Technologies”, Doctoral Dissertation, 2010, Virginia Polytechnic Institute and State University, Blacksburg, VA, USA.

  4. J.C. Linford, J. Michalakes, M. Vachharijani, and A. Sandu, “Multi-core acceleration of chemical kinetics for modeling and simulation”, SC’09. Portland, OR. Nov 14-20, 2009.


We wish to acknowledge Dr. Adrian Sandu, Dr. Valeriu Damian, Dr. Mirela Damian, Dr. Florian A. Potra, and Dr. Gregory R. Carmichael for their contributions to this field, both through published literature and the development of KPP: The Kinetic PreProcessor. Kppa is an original work containing no code from KPP, but it would not have been posible without KPP’s example. We also wish to thank Dr. John Michalakes for his work in GPU acceleration of numerical weather prediction.

  1. A. Sandu and R. Sander, “Technical note: Simulating chemical systems in Fortran90 and Matlab with the Kinetic PreProcessor KPP-2.1”, Atmos. Chem. Phys., Vol. 6, p. 187-195, 2005.

  2. A. Sandu, D. Daescu, and G.R. Carmichael, “Direct and Adjoint Sensitivity Analysis of Chemical Kinetic Systems with KPP: I — Theory and Software Tools”, Atmospheric Environment, Vol. 37, p. 5083-5096, 2003.

  3. D. Daescu, A. Sandu, and G.R. Carmichael, “Direct and Adjoint Sensitivity Analysis of Chemical Kinetic Systems with KPP: II — Validation and Numerical Experiments”, Atmospheric Environment, Vol. 37, p. 5097-5114, 2003.

  4. V. Damian, A. Sandu, M. Damian, F. Potra, and G.R. Carmichael, “The Kinetic PreProcessor KPP — A Software Environment for Solving Chemical Kinetics”, Computers and Chemical Engineering, Vol. 26, No. 11, p. 1567-1579, 2002.

  5. A. Sandu, J. Verwer, J. Blom, J. Spee, G.R. Carmichael, and F. Potra, “Benchmarking stiff ODE solvers for atmospheric chemistry problems II: Rosenbrock solvers”, Atmos. Environ., Vol. 31, p. 3459-3472, 1997.

  6. A. Sandu, F. Potra, V. Damian, and G.R. Carmichael, “Efficient implementation of fully implicit methods for atmospheric chemistry”, J. Comp. Phys., No. 129, p. 101-110, 1996.>

  7. E. Hairer and G. Wanner, “Solving Ordinary Differential Equations II. Stiff and Differential-Algebraic Problems”, Springer-Verlag, Berlin, 1991.

Software License

Kppa is copyright (c) ParaTools, Inc. All rights reserved.
Kppa is licensed under the terms described in license file included in the Kppa distribution.