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 (see Publications).

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.


A free 60-day demo license is available on request.

Please send an e-mail to to receive your free license.

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.


Kppa binaries are available for the following platforms. Please contact if your platform is not listed.








Scientific Linux






SUSE Linux Enterprise




Past Releases

Installation Instructions

rpmlogo.png RPM Package

Double-click the RPM file to install Kppa to /opt/paratools/kppa-version, or use your system's package manager from the command line. For example, on Fedora systems:

sudo yum install /path/to/kppa-version-release.distro.arch.rpm

You can also use the rpm command to install to a different location. For example, if you wish to install Kppa to /usr/local instead of /opt/paratools:

sudo rpm -Uvh --prefix=/usr/local /path/to/kppa-version-release.distro.arch.rpm

deblogo.png Debian Package

Double-click the deb file to /opt/paratools/kppa-version, or use dpkg to install the package from the command line:

sudo dpkg -i /path/to/kppa_version-release_distro_arch.rpm

tgzlogo.png Compressed Tarball File

Use the tar command to extract the tarball into your desired installation destination. For example, to install Kppa to $HOME/software:

mkdir -p $HOME/software
cd $HOME/software
tar xvzf /path/to/kppa-version-release.distro.arch.tgz

Usage Instructions

RPM and DEB packages will put Kppa in your PATH via a symlink in /usr/local/bin. If you install from a tarball, you should update your PATH environment variable to include Kppa:

export PATH=/opt/paratools/kppa-0.2/bin:$PATH

or if you use C-Shell:

setenv PATH /opt/paratools/kppa-0.2/bin:${PATH}

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
                        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

Examples and Demonstrations



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.

Kppa was created from the following publications:

  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.