Recent Releases of kpp

kpp - The Kinetic Preprocessor (KPP) 3.3.0

Release date: 17 Jul 2025 DOI

From CHANGELOG.md

Added

  • Added new integrator: rosenbrock_h211b_qssa.f90
  • Added new C-I tests: F90_ros_h211b, F90_mcm_h211b
  • Added run_example.csh and run_example.sh scripts for the mcm and mcm_h211b examples

Pull requests included

  • Add Rosenbrock_H211b integrator by @yantosca in https://github.com/KineticPreProcessor/KPP/pull/124

Full Changelog: https://github.com/KineticPreProcessor/KPP/compare/3.2.1...3.3.0

- Fortran
Published by yantosca 7 months ago

kpp - The Kinetic PreProcessor (KPP) 3.2.1

Release date: 06 May 2025 DOI

From CHANGELOG.md

Added

  • Added documentation in the #INITVALUES section about using Fortran d (double precision) exponents
  • Added C-I test F90_feuler, using the Forward Euler integrator
  • Added carbon gases mechanism (models/carbon.*)

Changed

  • Updated .ci-pipelines/build-testing.yml to use ubuntu-24.04 instead of ubuntu-20.04 container for Azure C-I tests
  • Updated jinja2 to version 3.1.6 (for ReadTheDocs) to fix a security issue identified by @dependabot

Fixed

  • Fixed parsing of #INITVALUES section to allow Fortran d (double-precision) exponents
  • Updated int/feuler.f90 to return the Texit value as RSTATUS(1) (this was not being done)

Pull requests included

  • Allow constants in #INITVALUES to have Fortran double-precision d exponents by @yantosca in https://github.com/KineticPreProcessor/KPP/pull/134
  • Return Texit from the Forward Euler (feuler) integrator and add corresponding C-I test by @yantosca in https://github.com/KineticPreProcessor/KPP/pull/136

Full Changelog: https://github.com/KineticPreProcessor/KPP/compare/3.2.0...3.2.1

- Fortran
Published by yantosca 10 months ago

kpp - The Kinetic PreProcessor (KPP) 3.2.0

Release Date: 27 Feb 2025

From CHANGELOG.md

Added

  • Added new inline key F90_RCONST_USE in src/gdata.h and src/scanner.c
  • Added documentation about F90_RCONST_USE for ReadTheDocs
  • Added F90_RCONST_USE inlined code to Update_RConstand Update_Photo routines
  • Added warning that LSODE is not thread-safe to ReadTheDocs documentation

Changed

  • Updated Update_RCONST to use Y instead of C to account for updated variable species concentrations
  • Updated C-I tests to print the compiler versions that are used
  • Updated routine GenerateUpdateRconst to manually write the SUBROUTINE and END SUBROUTINE lines (F90 only)
  • Updated routine GenerateUpdateRconst to inline code from #INLINE F90_RCONST_USE before any other F90 variable declarations or statements
  • Updated .gitignore to ignore all executable files
  • Changed Begin INLINED RCONST - F90 USE STATEMENTS to Begin inlined code from F90_RCONST_USE in src/gen.c
  • Changed inlined code comments to be more precise (e.g. Begin inlined code from F90_RCONST) in src/gen.c
  • Updated Flex library installation example on ReadTheDocs
  • Renamed int/beuler.f90 to the int/sdirk.f90, as this is a newer version of the SDIRK integrator
  • Updated documentation for Backwards Euler to instruct user to select #INTEGRATOR sdirk with ICNTRL(3) = 6
  • Updated ReadTheDocs dependencyjinja2 to version 3.1.5 (fixes a security issue)

Fixed

  • Added char* rootFileName to functions and function prototypes for Use_C, Use_F, Use_F90, Use_MATLAB, and Generate
  • Updated docs/requirements.txt to use jinja2==3.1.4 (fixes a security issue)
  • Moved USE constants_mcm from F90_RCONST to F90_RCONST_USE in examples/mcm/mcm_isoprene.eqn
  • Fixed MacOS-specific handling for x86_64 or arm64 in src/Makefile.defs

Removed

  • Removed int/beuler.f90
  • Removed int/beuler.def ## Pull requests included
  • Update function prototypes to avoid compiler warnings with GCC 13 by @yantosca in https://github.com/KineticPreProcessor/KPP/pull/103
  • Use Y instead of C in Update_RCONST by @srosanka in https://github.com/KineticPreProcessor/KPP/pull/106
  • Add code from #INLINE F90RCONSTUSE at the top of the UPDATE_RCONST subroutine by @yantosca in https://github.com/KineticPreProcessor/KPP/pull/120
  • consistent comments for inlined Code by @RolfSander in https://github.com/KineticPreProcessor/KPP/pull/122
  • Add inlined code in the #INLINE F90RCONSTUSE block to the Update_Photo routine by @yantosca in https://github.com/KineticPreProcessor/KPP/pull/125
  • Update int/sdirk.f90 to the same version as was in int/beuler.f90 by @yantosca in https://github.com/KineticPreProcessor/KPP/pull/130
  • Fixed MacOS-specific handling for x86_64 or arm64 by @yantosca in https://github.com/KineticPreProcessor/KPP/pull/127

New Contributors

  • @srosanka made their first contribution in https://github.com/KineticPreProcessor/KPP/pull/106

Full Changelog: https://github.com/KineticPreProcessor/KPP/compare/3.1.1...3.2.0

- Fortran
Published by yantosca 12 months ago

kpp - The Kinetic PreProcessor (KPP) 3.1.1

Release Date: 30 Apr 2024 DOI

CHANGELOG

Changed

  • Updated Python package versions for ReadTheDocs in docs/requirements.txt
  • Now request Python 3.12 for ReadTheDocs builds in .readthedocs.yaml
  • Updated MAX_NO_OF_LINES to 2000 to parse the MCM mechanism
  • Updaeed MAX_EQN to 18000 to parse the MCM mechanism

Fixed

  • Now only add tha extra Aout argument to Fun and Fun_Split for F90 (see issues #56, #96)

Full Changelog: https://github.com/KineticPreProcessor/KPP/compare/3.1.0...3.1.1

- Fortran
Published by yantosca almost 2 years ago

kpp - The Kinetic PreProcessor (KPP) 3.1.0

Release Date: 20 Dec 2023 DOI

CHANGELOG

Added

  • #AUTOREDUCE has been added to the list of KPP commands in the ReadTheDocs documentaton
  • Added examples/mcm folder with minimal example for the Master Chemical Mechanism
  • Added C-I test for MCM, based on the minimal example

Removed

  • TRANSPORT and TRANSPORTALL input options; these were obsolete
  • LUMP input option; this was obsolete
  • DEFRAD, SETRAD, INITIALIZE, XGRID, YGRID, ZGRID, WRITE_OPT, RUN, USE, USES; these were obsolete

Full Changelog: https://github.com/KineticPreProcessor/KPP/compare/3.0.2...3.1.0

- Fortran
Published by yantosca about 2 years ago

kpp - The Kinetic PreProcessor (KPP) 3.0.2

Release Date: 12 Jun 2023 DOI

CHANGELOG

Added

  • Added .readthedocs.yaml for configuring ReadTheDocs builds
  • Added a ReadTheDocs badge in README.md
  • State that #INTEGRATOR none statements should be removed in RTD documentation

Changed

  • Added pybtex and pybtex-docutils to the docs/requirements.txt

Fixed

  • Minor issues in site-lisp/kpp.el file for Emacs

Full Changelog: https://github.com/KineticPreProcessor/KPP/compare/3.0.1...3.0.2

- Fortran
Published by yantosca over 2 years ago

kpp - The Kinetic PreProcessor (KPP) 3.0.1

Release date: 21 Mar 2023 DOI

CHANGELOG

Added

  • Add CITATION.cff by @zmoon in https://github.com/KineticPreProcessor/KPP/pull/74

Changed

  • Update citation for KPP 3.0.0 paper by @jimmielin in https://github.com/KineticPreProcessor/KPP/pull/68

Fixed

  • GenerateJacReactantProd(): change arrays from static allocation to dynamic by @obin1 in https://github.com/KineticPreProcessor/KPP/pull/67

New Contributors

  • @obin1 made their first contribution in https://github.com/KineticPreProcessor/KPP/pull/67
  • @zmoon made their first contribution in https://github.com/KineticPreProcessor/KPP/pull/74

Full Changelog: https://github.com/KineticPreProcessor/KPP/compare/3.0.0...3.0.1

- Fortran
Published by yantosca almost 3 years ago

kpp - The Kinetic PreProcessor (KPP) 3.0.0

Release date: 09 Nov 2022 DOI

What's Changed

  • Cleanup in auto-reduce code and added a rosenbrock_autoreduce test by @jimmielin in https://github.com/KineticPreProcessor/KPP/pull/49
  • C-I tests folders have been renamed for clarity by @yantosca
  • Documentation improvements for 3.0.0: Auto-reduction solver and State_Het by @jimmielin in https://github.com/KineticPreProcessor/KPP/pull/51
  • Cleanup util by @RolfSander in https://github.com/KineticPreProcessor/KPP/pull/52
  • Updates for C-language output by @yantosca in https://github.com/KineticPreProcessor/KPP/pull/53
  • Add Ubuntu x8664 FLEXLIB_DIR into Makefile.defs by @jimmielin in https://github.com/KineticPreProcessor/KPP/pull/55
  • Makefile.defs now uses KPP_FLEX_LIB_DIR instead of FLEX_LIB_DIR by @yantosca
  • Remove Vdotout functionality by @jimmielin in https://github.com/KineticPreProcessor/KPP/pull/54
  • FIX must be the 2nd argument passed to FUN in int/feuler.f90 (plus doc updates) by @yantosca in https://github.com/KineticPreProcessor/KPP/pull/61

Full Changelog: https://github.com/KineticPreProcessor/KPP/compare/2.6.0...3.0.0

- Fortran
Published by yantosca over 3 years ago

kpp - The Kinetic PreProcessor (KPP) 3.0.0-rc.4

Release Date 18 Oct 2022

What's Changed

  • FIX must be the 2nd argument passed to FUN in int/feuler.f90 (plus doc updates) by @yantosca in https://github.com/KineticPreProcessor/KPP/pull/61

Full Changelog: https://github.com/KineticPreProcessor/KPP/compare/3.0.0-rc.3...3.0.0-rc.4

- Fortran
Published by yantosca over 3 years ago

kpp - The Kinetic PreProcessor (KPP) 3.0.0-rc.3

Release date 27 Jul 2022 DOI

Added

  • All authors from Lin et al 2022 (the KPP 3.0.0 paper) have been added as authors on ReadTheDocs and in the .zenodo.json file
  • Updated version number to 3.0.0-rc.3 in src/gdata.h

- Fortran
Published by yantosca over 3 years ago

kpp - The Kinetic PreProcessor (KPP) 3.0.0-rc.2

Release candidate for KPP 3.0.0 Release date: 13 Jul 2022 DOI

Changed

  • Bug fix: Remove extraneous "," in .zenodo.json that was preventing auto-DOI generation
  • Updated version numbers to 3.0.0-rc.2 in docs/source/conf.py and src/gdata.h

- Fortran
Published by yantosca over 3 years ago

kpp - The Kinetic PreProcessor (KPP) 3.0.0-rc.1

Release candidate for KPP 3.0.0 Release date 13 Jul 2022

Changed

  • Now add (hopefully) correct license metadata in .zenodo.json file for auto-DOI generation
  • Summarized CHANGELOG.md information in the "Revision History" page of the ReadTheDocs documentation
  • Updated version number to KPP 3.0.0-rc.1

- Fortran
Published by yantosca over 3 years ago

kpp - The Kinetic PreProcessor (KPP) 3.0.0-rc.0

Release candidate for KPP 3.0.0 Release date 13 Jul 2022

Added

  • C-language updates
    • Restored driver programs general.c and general_adj.c
    • Updated rate-law functions in util/UserRateLaws.c
    • Added C-I tests for C-language integrators (using the small_strato mechanism
    • Now use // instead of /* */ comment strings
  • ReadTheDocs documentation updates:
    • Authors in the reference page are now listed alphabetically
    • In-text citations now use the :cite:t style (e.g. "Smith et al [2000]")
    • Corrected several omissions
    • Removed table numbers from tables (to reduce confusion)
    • Now document additional installation steps for MacOS X
    • Added documentation about KPP_FLEX_LIB_DIR
  • C-I test additions
    • Added a C-I test for the rosenbrock_autoreduce integrator

Changed

  • C-I test updates
    • Renamed CI-test folders for clarity (C_*, F90_*, 'X_*')
    • Abstracted reusable code into the ci-common-defs.sh script
    • Replaced ci-manual-testing-script.sh with ci-testing-script.sh (which now works both locally and on Azure Dev Pipelines)
    • Renamed ci-manual-cleanup-script.sh to ci-cleanup-script.sh
    • Updated docs accordingly
  • Makefile changes
    • Makefile.defs now uses environment variable KPP_FLEX_LIB_DIR when it cannot find the flex library file in standard locations v
    • Removed host-specific if blocks from Makefile.defs
  • Other changes
    • DOUBLE_COMPLEX is now replaced by COMPLEX(kind=dp)
    • Fixed incorrect license string in .zenodo.json
    • Added extra free() statements in src/gen.c to avoid memory leaks

Removed

  • bibtex.json (no longer needed w/ Sphinx 3.5.4)
  • Fun() no longer uses Vdotout since it can be retrieved from Vdot

- Fortran
Published by yantosca over 3 years ago

kpp - The Kinetic PreProcessor (KPP) 2.6.0

Release date: 24 Jun 2022 DOI

Added

  • New integrator: rosenbrock_autoreduce.f90
    • Also added corresponding documentation for ReadTheDocs

Changed

  • The ICNTRL(5) option in the LSODE integrator is now ICNTRL(10).

- Fortran
Published by yantosca over 3 years ago

kpp - The Kinetic PreProcessor (KPP) 2.5.0

Release date: 18 May 2022 DOI

Added

  • New integrators
    • feuler.f90
  • New C-I tests
    • ros_minver
    • ros_upcase
    • Added scripts to run C-I tests manually (for development/debugging)
  • Brought updates for GEOS-Chem into the main line of development
    • Added #MINVERSION switch to force KPP to stop unless a minimum version is used
    • Added #UPPERCASEF90 to generate F90 code with the .F90 suffixes
    • Removed EQUIVALENCE statements from F90-generated code; VAR and FIX now point to C witihin integrators. This is to ensure thread-safe operation when using KPP-generated code in an OpenMP parallel environment.
  • Bug fixes:
    • Make sure to inline parameter "sp" into the _Global.F90 file when the "#DOUBLE off" option is used.

Changed

  • Code updates
    • Rewrote code to remove compiler warnings
    • Fortran-90 makefiles now use GFORTRAN as the default compiler option
    • Added ReadTheDocs output
    • Updated top-of-file comment headers to point to the KPP Github site and to acknowledge new authors
    • Routine Fun() now returns optional arguments Aout and Vdotout
  • Updates for building on MacOS
    • Reduce size of MAXEQN and MAXSPECIES to get KPP to run within 65532 kb of stack memory

- Fortran
Published by yantosca almost 4 years ago

kpp - The Kinetic PreProcessor (KPP) 2.4.0

Release date: 25 Apr 2022

Added

  • Brought updates from the MECCA branch into the main line of development:
    • new integrators: beuler.f90, rosenbrockmz.f90, rosenbrockposdef.f90, rosenbrockposdefh211b_qssa.f90
    • several memory sizes (MAX_EQN, ...) increased to allow large chemical mechanisms
    • new Makefile target: list
    • LaTeX User Manual added
  • 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

- Fortran
Published by yantosca almost 4 years ago