KPP revision history

Only the major new features are listed here. For a detailed description of the changes, read the file $KPP_HOME/CHANGELOG.md.

KPP 2.5.0

  • Merged updates from the GEOS-Chem development stream (versions KPP 2.2.4_gc, KPP 2.2.5_gc, KPP 2.3.0_gc, KPP 2.3.1_gc, KPP 2.3.2_gc ) into the mainline KPP development stream. Previously hardwired code has been removed and replaced with code selectable via KPP commands.

  • Added a new forward-Euler method integrator (feuler.f90).

  • Added KPP commands #MINVERSION and #UPPERCASEF90 (along with corresponding continuous integration tests).

  • Added optional variables Aout and Vdotout to subroutine Fun().

  • Replaced Fortran EQUIVALENCE statements with thread-safe pointer assignments (Fortran90 only).

  • Converted the KPP user manual to Sphinx/ReadTheDocs format (this now replaces the prior ReadTheDocs documentaton).

  • Added updates to allow KPP to be built on MacOS X systems.

  • Added small_strato C-I test that uses the exact same options as is described in Running KPP with an example stratospheric mechanism.

KPP 2.4.0

  • Added new integrators: beuler.f90, rosenbrock_mz.f90, rosenbrock_posdef.f90,  :file:`rosenbrock_posdef_h211b_qssa.f90.

  • Several memory sizes (MAX_EQN, …) have been increased to allow large chemical mechanisms.

  • Added new Makefile target: list.

  • Added LaTeX User Manual.

  • Now use ICNTRL(15) to decide whether or not to toggle calling the Update_SUN, Update_RCONST, and Update_PHOTO routines from within the integrator.

KPP 2.3.2_gc

NOTE: Contains KPP Modifications specific to GEOS-Chem:

  • Added workaround for F90 derived-type objects in inlined code (i.e. properly parse State_Het%xArea, etc).

  • Updated Github issue templates.

  • MAX_INLINE (max # of inlined code lines to read) has been increased to 200000.

  • Commented out the Update_Sun() functions in update_sun.F90, update_sun.F. (NOTE: These have been restored in KPP 2.5.0).

  • Default rate law functions are no longer written to gckpp_Rates.F90. (NOTE: These have been restored in KPP 2.5.0).

KPP 2.3.1_gc

NOTE: KPP modifications specific to GEOS-Chem:

ALSO NOTE: ReadTheDocs documentation has been updated in KPP 2.5.0 to remove GEOS-Chem specific information.

  • Added documentation for ReadTheDocs.

  • Added Github issue templates.

  • README.md now contains the ReadTheDocs badge.

  • README.md now points to kpp.readthedocs.io for documentation.

KPP 2.3.0_gc

NOTE: Contains KPP modifications specific to GEOS-Chem

  • Added README.md for the GC_updates branch.

  • Added MIT license for the GC_updates branch.

  • Add Aout argument to return reaction rates from SUBROUTINE Fun.

  • Rename KPP/kpp_2.2.3_01 folder to KPP/kpp-code.

  • Now write gckpp_Model.F90 and gckpp_Precision.F90 from gen.c.

  • Do not write file creation & time to KPP-generated files (as this will cause Git to interpret each file as a new file to be added).

  • Now create Fortran-90 source code files with *.F90 instead of *.f90. (NOTE: In KPP 2.5.0, this can specified with the uppercasef90 command.)

  • Remove calls to UPDATE_SUN and UPDATE_RCONST from all *.f90 integrators. (NOTE: This has been restored in KPP 2.5.0.)

KPP 2.2.5_gc

NOTE: Contains KPP modifications specific to GEOS-Chem

  • Increase MAX_INLINE from 20000 to 50000

KPP 2.2.4_gc

NOTE: Contains KPP modifications specific to GEOS-Chem

  • Add MIT license files for GC_updates branch and update README.md accordingly

  • Create README.md for main branch

  • Set FLEX_LIB_DIR using FLEX_HOME env variable if it is defined.

  • Added an exponential integrator.

  • Added array to *_Monitor for family names (FAM_NAMES) string vector.

  • Added functionality for Prod/Loss families using #FAMILIES token.

  • Add scripts necessary to build a new mechanism for GEOS-Chem

  • Completed the prod/loss option (token: #FLUX [on/off])

  • Added OMP THREADPRIVATE to LinearAlgebra.F90

  • Added rosenbrock_split.def integrator definition

  • Added OMPThreadPrivate function for F77.

  • Added declaration of A in ROOT_Function

  • Added OMP THREADPRIVATE Functionality to F90 output.

  • Completed the split-form Function for F90.

  • Increase maximum number of equations.

  • Increase MAX_FAMILIES parameter from 50 to 300

  • Extend equation length limit to 200 characters.

  • Also changed the species name for a family to the family name itself.

  • Modified Families to minimize the number of additional species created

  • Renamed and change indexing convention

  • Removed unnecessary files

KPP 2.2.3

  • A new function called k_3rd_iupac is available, calculating third-order rate coefficients using the formula used by IUPAC [Atkinson et al., 2004].

  • While previous versions of KPP were using yacc (yet another compiler compiler), the current version has been modified to be compatible with the parser generator bison, which is the successor of yacc.

  • New Runge-Kutta integrators were added: kpp_dvode.f90, runge_kutta.f90, runge_kutta_tlm.f90, sdirk_adj.f90, sdirk_tlm.f90.

  • New Rosebrock method Rang3 was added.

  • The new KPP command #DECLARE was added (see declare).

  • Several vector and array functions from BLAS (WCOPY, WAXPY, etc.) were replaced by Fortran90 expressions.

KPP 2.1

  • Fortran90 output has been available since the preliminary version “1.1-f90-alpha12” provided in [Sander et al., 2005].

  • Matlab is a new target language (see Sect. 4.4).

  • The set of integrators has been extended with a general Rosenbrock integrator, and the corresponding tangent linear and adjoint methods.

  • The KPP-generated Fortran90 code has a different file structure than the C or Fortran77 output (see The Fortran90 code).

  • An automatically generated Makefile facilitates the compilation of the KPP-generated code (see The Makefile).

  • Equation tags provide a convenient way to refer to specific chemical reactions (see #LOOKAT and #MONITOR.

  • The dummy index allows to test if a certain species occurs in the current chemistry mechanism. (see dummyindex)

  • Lines starting with // are comment lines.