Skip to content

Latest commit

 

History

History
545 lines (430 loc) · 20.7 KB

File metadata and controls

545 lines (430 loc) · 20.7 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[3.4.0] - 2026-04-29

Added

  • Added Rodas3_1 integration method (with updated coefficents by @msl3v) to rosenbrock_autoreduce.f90, rosenbrock.{c,f90,m}, rosenbrock_adj.{c,f90}, rosenbrock_tlm.f90
  • Added the #GRAPH command to create graph-based representations of the chemical mechanism
  • Added the F90_graph C-I test to test the #GRAPH command
  • Added Obin Sturm to the list of important contributors in src/code.c

Changed

  • Updated package versions for RTD documentation builds; Also use myst_parser instead of obsolete recommonmark
  • Updated util/Makefile* files to remove *.csv when running make clean or make distclean
  • Updated .gitignore to ignore *.csv files generated by KPP in the ci-tests folders

Fixed

  • Fixed incorrect comment in int/rosenbrock_autoreduce.f90: 10*H should be 0.1*H
  • Fixed several issues in the int/runge_kutta.c integrator

[3.3.1] - 2026-03-27

Added

  • Added GitHub Action to run C-I tests with GCC compilers v9, v10, v11, v12, and v13
  • Added "Lint" GitHub Action to check other actions for security issues
  • Added new example files: rkadj.kpp, sd4.kpp, sdtlm.kpp
  • Added new C-I tests: F90_rkadj, F90_sd4, F90_sdtlm
  • Added docs/read_the_docs_environment.yml

Changed

  • Updated ReadTheDocs documentation to reflect that C-I tests are now done as a GitHub Action
  • Updated the docs/source/reference/editing_these_docs.rst instructions for clarity
  • Updated GitHub Actions to the latest versions

Fixed

  • Moved the which kpp instruction to the end of the "Build the KPP executable" section in the installation guide on ReadTheDocs
  • Updated rules to ignore files in .gitignore and updated comments accordingly
  • Fixed a bug that prevented .ci-pipelines/ci-cleanup-script.sh from removing KPP-generated files for MCM mechanisms
  • Fixed typo in error message in int/rosenbrock_autoreduce.f90
  • Fixed a bug in Makefile template that caused KPP_ROOT_Stoichiom.f90 not compiled if #STOICMAT ON and #HESSIAN OFF

Removed

  • Removed C-I tests on Microsoft Azure Dev Pipelines
  • Replaced BLAS functions (WAXPY, WCOPY, WSCAL, WADD, WLAMCH, WDOT) with pure F90 code from int/*.f90 integrators (thanks to AI for the help)

[3.3.0] - 2025-07-17

Added

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

[3.2.1] - 2025-05-06

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)

[3.2.0] - 2025-02-27

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

[3.1.1] - 2024-04-30

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)

[3.1.0] - 2023-12-20

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

[3.0.2] - 2023-06-02

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

[3.0.1] - 2023-03-21

Added

  • CITATION.cff file which will activate the "Cite this repository" option.

Fixed

  • Fixed a segmentation fault when using #STOICHMAT by using dynamically-sized variables EqnNr and VarNr rather than static variables MAX_EQN and MAX_SPECIES.

[3.0.0] - 2022-11-09

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
    • Added badges for release, release date, and Azure pipelines to index.rst
    • All authors from the Lin et al [2022] paper about KPP 3.0.0 have been added to the front page of ReadTheDocs and .zenodo.json
  • 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
  • Bug fix in int/feuler.f90: FIX must be the 2nd argument passed to routine Fun (from routine FunTemplate)

Removed

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

[2.6.0] - 2022-06-24

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

[2.5.0] - 2022-05-18

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 MAX_EQN and MAX_SPECIES to get KPP to run within 65532 kb of stack memory

[2.4.0] - 2022-04-25

Added

  • Brought updates from the MECCA branch into the main line of development:
    • new integrators: beuler.f90, rosenbrock_mz.f90, rosenbrock_posdef.f90, rosenbrock_posdef_h211b_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

[2.3.2_gc]

Added

  • Workaround for F90 derived-type objects in inlined code (i.e. properly parse State_Het%xArea, etc).
  • Write global variables NUMDEN, MW, SR_MW, SR_TEMP, TEMP_OVER_K300, K300_OVER_TEMP to gckpp_Global.F90
  • Documentation for ReadTheDocs (in the docs folder)
  • Github issue templates

Changed

  • MAX_INLINE (max # of inlined code lines to read) is now 200000
  • Version number in gdata.h is now 2.3.2
  • README.md now contains the ReadTheDocs badge
  • README.md now points to kpp.readthedocs.io for documentation

Removed

  • Comment out the Update_Sun() functions in update_sun.F90, update_sun.F
  • Default rate law functions are no longer written to gckpp_Rates.F90

[2.3.1_gc]

Added

  • Documentation for ReadTheDocs (in the docs folder)
  • Github issue templates

Changed

  • Version number in gdata.h is now 2.3.1
  • README.md now contains the ReadTheDocs badge
  • README.md now points to kpp.readthedocs.io for documentation

[2.3.0_gc]

Added

  • 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

Changed

  • 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
  • Now create Fortran-90 source code files with *.F90 instead of *.f90

Removed

  • Remove calls to UPDATE_SUN and UPDATE_RCONST from all *.f90 integrators

[2.2.5_gc]

Changed

  • Increase MAX_INLINE from 20000 to 50000

[2.2.4_gc]

Added

  • Add MIT license files 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 FAMILY 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 *_Function.F90
  • Added OMPThreadPrivate Functionality to F90 output
  • Completed the split-form Function for f90

Changed

  • 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
  • Rename and change indexing convention

Removed

  • Remove unnecessary files
  • Remove files for GEOS-Chem from top-level directory; these are now in the GEOS-Chem source code
  • Delete the old name directory

Fixed

  • Fix to add coefficients to *_Monitor.f90
  • Fixed a pad processing of terms leading to LOSS fam also generating PROD terms.
  • Fix input argument to ComputeFamilies() from VAR to V - MSL
  • Parameter NFAM was not defined. This is fixed. (MSL)
  • Added fix to camculate NET rather than GROSS prod/loss families - MSL
  • Add fix to calculate NET rather than GROSS prod/loss families - MSL
  • Re-fixed the equivalence statement needed for GEOS-Chem to work. MSL
  • Corrected miniterpretation of the split-form Function for f90.

[2.2.3_rs3] - 2018-11-30

CHANGES by Rolf Sander:

  • several int/*.f90: TABs converted to spaces
  • several dvode files converted to unix file format
  • kpp/int/beuler.f90:
    • factor 101 added to Hstart
    • description of the error numbers IERR added
  • kpp/int/rosenbrock_posdef_h211b_qssa.f90: USE KPP_ROOT_Function, ONLY: Fun_Split

CHANGES by Sergey Gromov and Rolf Sander:

  • several limits increased:
    • src/gdata.h: #define MAX_K 1000
    • src/scan.l: char crtToken[1000]; char nextToken[1000]; char crtFile[1000]; char crt_rate[1000];
    • src/scan.y: %union{char str[1000];};

CHANGES by Adrian Sandu:

  • new integrator beuler.f90 (based on sdirk.f90)

[2.2.3_rs2] - 2016-11-21

CHANGES by Rolf Sander:

  • src/gen.c: bug fix in GenerateParamHeader(): char name[MAX_SPNAME] instead of name[20]
  • kpp.el updated: #REPLACE, #ENDREPLACE, uncertainty of rate coefficient
  • Makefile.defs.Linux: compiler option -Wno-implicit-function-declaration

[2.2.3_rs1] - 2016-08-28

CHANGES by Rolf Sander:

  • upgrade to the official KPP version 2.2.3

[2.2.1_rs7] - 2016-02-09

CHANGES by Rolf Sander:

  • rosenbrock_mz.f90-orig deleted
  • new function StoichNum to get stoichiometric numbers:
    • src/gen.c: new function GenerateFun_Split()
    • kp4.sh: GenerateStoichNum added to KPP_SUBROUTINE_LIST

[2.2.1_rs6] - 2016-01-07

CHANGES by Rolf Sander:

  • src/code_f90.c: Maximum number of continuation lines MAX_NO_OF_LINES increased again, now to 250
  • src/gdata.h: info adjusted
  • src/gen.c: "USE kpp_Parameters" added to SUBROUTINE Initialize to allow species-specific code in #INLINE F90_INIT
  • several int/*.f90: TABs converted to spaces

CHANGES by Patrick Joeckel:

  • int/rosenbrock_mz.f90: loop fusion according to BULL
  • new file Makefile.m

Changes by Domenico Taraborrelli:

  • option for faster chemistry calculation by alternative time stepping (integrator rosenbrock_posdef_h211b_qssa)
    • modified files:
      • src/gen.c: new function GenerateFun_Split
      • kp4.sh: GenerateFun_Split added to KPP_SUBROUTINE_LIST
    • new integrator files: rosenbrock_posdef_h211b_qssa.def, rosenbrock_posdef_h211b_qssa.f90

[2.2.1_rs5] - since caaba_2.5n, 2010-02-22

CHANGES by Rolf Sander:

  • src/gdata.h: several limits increased to allow larger mechanisms: #define MAX_EQN 11000 #define MAX_SPECIES 3500 #define MAX_EQNTAG 32 #define MAX_K 300
  • src/gen.c:
    • crow and diag deleted because they are not used
    • Fortran90 double precision changed to SELECTED_REAL_KIND(12,307)
  • src/Makefile: PHONY target list added to list the configuration
  • src/scan.h: MAX_INLINE increased to 100000
  • src/scan.l: several limits increased to allow larger mechanisms: char crtToken[300]; char nextToken[300]; char crtFile[300]; char crt_rate[300];
  • src/scan.y:
    • "char" increased to 300 (must be the same as MAX_K)
  • util/sutil.f90: TABs converted to spaces

[2.2.1_rs4] - since caaba_2.5m, 2009-11-27

CHANGES by Patrick Joeckel:

  • Makefile, Makefile.defs, Makefile.defs.*, src/Makefile: changes to allow compilation on different machines

CHANGES by Rolf Sander:

  • src/code_matlab.c: "#include <time.h>" added because it is necessary for time_t, see: http://en.wikipedia.org/wiki/Time_t
  • src/scanutil.c:
    • "#include <malloc.h>" removed because it comes from <stdlib.h> (this had caused a problem on MAC-OSX)
  • src/scan.y:
    • "#include <malloc.h>" removed because it comes from <stdlib.h> (this had caused a problem on MAC-OSX)
  • using GNU Bison 2.3 now instead of 2.1

[2.2.1_rs3] - since caaba_2.5c, 2008-07-17

CHANGES by Patrick Joeckel and Rolf Sander:

  • src/code_f90.c and src/gdata.h: changes in MAX_EQNTAG etc. to avoid problems with long equation tags

[2.2.1_rs2] - since caaba_2.4, 2008-02-18

CHANGES by Rolf Sander:

  • kpp_lsode.f90, kpp_seulex.f90, rosenbrock.f90, rosenbrock_posdef.f90, runge_kutta.f90, and sdirk.f90: IERR_NAMES (for error messages) adapted to correct syntax
  • src/code_f90.c:
    • Maximum number of continuation lines increased to 100. If MAX_NO_OF_LINES is too small, kpp may split lines incorrectly.

[2.2.1_rs] - 2007-08-22

CHANGES by Rolf Sander:

  • code_f90.c: added FlushBuf() to F90_DeclareData (otherwise MAX_OUTBUF would have to be very large for large reaction mechanisms)
  • gen.c: The declaration of RTOLS was deleted because it is not needed by the integrators. If the driver programs need it, they can define it themselves.
  • Makefile: new option maintainer-clean is now consistent with src/Makefile

CHANGES by Astrid Kerkweg:

  • src/code_f90.c: string length of F90_types and in subroutine F90_DeclareData increased from 12 to 32 to avoid problems with long species names and long equation tags

CHANGES by Adrian Sandu and Rolf Sander:

  • It looks like the model is hypersensitive to negative concentrations; many times when small negative concentrations are produced the entire future trajectory is put in jeopardy. In the new integrator rosenbrock_posdef.f90, this is fixed by changing "CALL WCOPY(N,Ynew,1,Y,1)" to "Y = MAX(Ynew,ZERO)".

[2.2.1] - 2006-12-01

CHANGES by Adrian Sandu:

  • rosenbrock_soa deleted
  • util/sutil.c: new subroutine KppDecompCmplxR
  • new files: examples/cell.kpp, examples/saprc2006.kpp, int/runge_kutta.c, and int/sdirk.c

CHANGES by Rolf Sander:

  • int/kpp_lsode.f90: like all other integrators, kpp_lsode now also returns IERR==1 after successful completion

CHANGES by Adrian Sandu and Rolf Sander:

  • src/Makefile, scan.l, scan.y: yacc replaced by bison, implementing the bug fixes suggested by Jason Lander

[2.2_July2006] - 2006-07-23

CHANGES by Adrian Sandu:

  • models/CMAQ added
  • changes in int/runge_kutta_adj.f90 and int/runge_kutta_tlm.f90
  • util/blas.c: new subroutines Set2Zero and WADD
  • util/blas.f90: new subroutines WGEFA and WGESL
  • util/sutil.f90: new subroutines KppDecompCmplxR, KppSolveCmplxR, and KppSolveTRCmplxR

[2.2.June2006] - 2006-06-06

CHANGES by Philipp Miehe and Adrian Sandu:

  • new integrators kpp_sdirk4, rosenbrock_soa, runge_kutta, and sdirk
  • integrators rosenbrock, rosenbrock_tlm, and rosenbrock_adj: completely revised
  • new kpp command #DECLARE [SYMBOL|VALUE]
  • util/blas.f90: new subroutine WADD
  • util/sutil.f90: new subroutines KppSolveTRIndirect and KppSolveTRCmplx
  • several files examples/* added
  • changes in drv/general_adj.f90 and drv/general_tlm.f90
  • examples/mimi* deleted

[2.1] - 2005-07-19