About KPP

KPP (The Kinetic PreProcessor, by A. Sandu et al), translates a chemical mechanism specification from plain-text format to source code. You may select the numerical integrator to be used (Runge-Kutta, LSODES, Rosenbrock, etc.) and the language for the generated source code (Fortran-90, Fortran-77, C, Matlab). The resulting source code files may then be integrated into an atmospheric chemistry model, chemical box model, or other application.

The latest public release is KPP 2.2.3_01, which may be obtained as a tarball from the KPP web site. For convenience, the GEOS-Chem Support Team has created a Github repository that contains KPP 2.2.3_01 in the main branch.

About KPP-for-GEOS-Chem

KPP-for-GEOS-Chem is a clean implementation of KPP that has been customized for GEOS-Chem v11-01 and later versions. You can use KPP-for-GEOS-Chem to modify existing GEOS-Chem chemistry mechanisms or create new mechanisms.

Current and previous KPP-for-GEOS-Chem releases are kept in the GC_updates branch of the KPP repository on Github.


The version of KPP-for-GEOS-Chem that you will need to use currently depends on the version of GEOS-Chem that you have. In the future we hope to make KPP-for-GEOS-Chem version a submodule of GEOS-Chem.

The GEOS-Chem source code module flexchem_mod.F90 serves as the connection between the chemical mechanism solver files generated by KPP-for-GEOS-Chem and the species concentration array in GEOS-Chem. In flexchem_mod.F90, species concentrations, photoylsis rates, meteorology fields, and other relevant information are passed to the chemistry mechanism routines created by KPP-for-GEOS-Chem. These routines compute reaction rates, perform the forward integration, and pass the updated species concentration back to GEOS-Chem.

The main benefits of KPP-for-GEOS-Chem are:

  1. Better documentation of chemical mechanisms;

  2. Easy switching between chemical mechanisms.

  3. Optimized chemistry computations; and

  4. Removal of the SMVGEAR solver from GEOS-Chem.