Skip to content

KPP 3.4.0 release#150

Open
yantosca wants to merge 36 commits intomainfrom
release/3.4.0
Open

KPP 3.4.0 release#150
yantosca wants to merge 36 commits intomainfrom
release/3.4.0

Conversation

@yantosca
Copy link
Copy Markdown
Contributor

This is the KPP 3.4.0 release PR. This PR adds the following features:

  1. Updates included in KPP 3.4.0

  2. Version numbers have also been updated:

    • CHANGELOG.md
    • docs/source/conf.py
    • src/gdata.h
  3. Corresponding ReadTheDocs documentation updates have also been made.

  4. Python package versions for ReadTheDocs have been updated to more recent versions.

yantosca and others added 30 commits July 17, 2025 14:15
int/rosenbrock.f90
int/rosenbrock_autoreduce.f90
- Added updated the Rosenbrock Rodas3 coefficients in routine
  Rodas3_1, which is called when ICNTRL(3)==0 or ICNTRL(3)==7.
- Trimmed trailing whitespace

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/rosenbrock.f90
int/rosenbrock_autoreduce.f90
- Added updated the Rosenbrock Rodas3 coefficients in routine
  Rodas3_1, which is called when ICNTRL(3)==7.
- Trimmed trailing whitespace

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/rosenbrock.F90
- Update Rodas 3.1 coefficients (@msl3v, 08 Apr 2025)
- Add comments to be consistent w/ rosenbrock_autoreduce.f90

int/rosenbrock_autoreduce.f90
- Update Rodas 3.1 coefficients (@msl3v, 08 Apr 2025)
- Fixed incorrect comment in ros_ErrorMsg, case -7
  (should be 0.1*H, not 10*H)

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/rosenbrock.c
int/rosenbrock.m
- Added Rodas3.1 routine with latest coeffs from Mike Long (22 May 2025)
- Trimmed trailing whitespace

int/rosenbrock.f90
int/rosenbrock_autoreduce.f90
- Updated Rodas3.1 routine with latest coeffs from Mike Long (22 May 2025)

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/rosenbrock_adj.c
int/rosenbrock_adj.f90
- Add Rodas3_1 routine with updated coefficients by Mike Long (22 May 2025)

int/rosenbrock.c
- Fixed the definition of ros_Name in the Rodas3_1 routine

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/rosenbrock_adj.c
- Added function prototype for Rodas3_1
- Changed "*ros_S" to "ros_S" in Rodas3_1 routine
- Changed "*ros_ELO" to ros_ELO" in Rodas3_1 routine

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/rosenbrock.c
int/rosenbrock.f90
int/rosenbrock.m
int/rosenbrock_adj.f90
int/rosenbrock_autoreduce.f90
int/rosenbrock_h211b_qssa.f90
int/rosenbrock_tlm.f90
- Update the Rodas3.1 coefficients to the set provided
  by Mike Long on 17 July 2025
- Update comments accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/rosenbrock.f90
int/rosenbrock_autoreduce.f90
- Added updated the Rosenbrock Rodas3 coefficients in routine
  Rodas3_1, which is called when ICNTRL(3)==0 or ICNTRL(3)==7.
- Trimmed trailing whitespace

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/rosenbrock.f90
int/rosenbrock_autoreduce.f90
- Added updated the Rosenbrock Rodas3 coefficients in routine
  Rodas3_1, which is called when ICNTRL(3)==7.
- Trimmed trailing whitespace

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/rosenbrock.F90
- Update Rodas 3.1 coefficients (@msl3v, 08 Apr 2025)
- Add comments to be consistent w/ rosenbrock_autoreduce.f90

int/rosenbrock_autoreduce.f90
- Update Rodas 3.1 coefficients (@msl3v, 08 Apr 2025)
- Fixed incorrect comment in ros_ErrorMsg, case -7
  (should be 0.1*H, not 10*H)

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/rosenbrock.c
int/rosenbrock.m
- Added Rodas3.1 routine with latest coeffs from Mike Long (22 May 2025)
- Trimmed trailing whitespace

int/rosenbrock.f90
int/rosenbrock_autoreduce.f90
- Updated Rodas3.1 routine with latest coeffs from Mike Long (22 May 2025)

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/rosenbrock_adj.c
int/rosenbrock_adj.f90
- Add Rodas3_1 routine with updated coefficients by Mike Long (22 May 2025)

int/rosenbrock.c
- Fixed the definition of ros_Name in the Rodas3_1 routine

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/rosenbrock_adj.c
- Added function prototype for Rodas3_1
- Changed "*ros_S" to "ros_S" in Rodas3_1 routine
- Changed "*ros_ELO" to ros_ELO" in Rodas3_1 routine

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/rosenbrock.c
int/rosenbrock.f90
int/rosenbrock.m
int/rosenbrock_adj.f90
int/rosenbrock_autoreduce.f90
int/rosenbrock_h211b_qssa.f90
int/rosenbrock_tlm.f90
- Update the Rodas3.1 coefficients to the set provided
  by Mike Long on 17 July 2025
- Update comments accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/rosenbrock_adj.f90
- CASE(7) now calls RODAS3_1 instead of RODAS4, which was a typo.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
CHANGELOG.md
- Now also state that we have added RODAS3.1 to the
  rosenbrock_tlm.f90 integrator.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
…ers)

This merge brings PR #140 (Add RODAS3.1 integration method to all
Rosenbrock solvers, by @msl3v and @yantosca) into the KPP 3.4.0
development stream.

PR #140 adds an optional Rosenbrock integration method (called
RODAS3.1, based on Long et al 2026) to all Rosenbrock integrators.
RODAS3.1 is invoked when ICNTRL(3)==7.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
docs/read_the_docs_environment.yml
docs/requirements.txt
docs/source/conf.py
- Updated Python package versions
- Now use "myst_parser" instead of the unmaintained "recommonmark"

docs/source/using_kpp/04_input_for_kpp.rst
- Now note that ICNTRL(3)==7 will choose the Rodas3.1 method
  for Rosenbrock integrators

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
int/runge_kutta.c
- Fixed several issues:
  1. RK_Interpolate — strncmp without == 0
  2. RK_ErrorMsg — Code = *IERR → *IERR = Code
  3. RK_ErrorEstimate — rkE[0,1,2] → rkE[1,2,3]
  4. RK_Integrator — NewtonIterMain saves main loop count
  5. Radau2A_Coefficients — missing . in rkb[2]
  6. Lobatto3C_Coefficients — rkT[0][1] written twice;
     rkT[0][0] was never being set

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings PR #148 (Fixed several issues in the runge_kutta.c
integrator, by @yantosca) into the KPP 3.4.0 development stream.

With the help of Claude AI, we have identified and fixed several
issues in the int/runge_kutta.c integrator that were causing
numerical instability:

1. In routine RK_Interpolate, added ==0 to the strncmp comparison,
   to ensure proper behavior.

2. In routine RK_ErrorMsg, the *IERR array was being passed back
   without a value. We fixed this by setitng *IERR = Code; instead
   of the other way around.

3. In routine RK_ErrorEstimate, the indices rkE[0,1,2] were incorrect,
   they were changed to rke[1,2,3].

4. In routine RK_Integrator, the NewtonIter variable was being overwritten.
   We now use NewtonIterMain to save the main loop count.

5. In routine Radau2A_Coefficients, the rkb[2] was missing a decimal
   point. It was set to 1111111... instead of 1.1111..., now fixed.

6. In routine Lobatto3C_Coefficients, the array element rkT[0][1] was
   written twice. Thus rkT[0][0] was never being set, This is now fixed.

This fix reduces the number of total integration steps in the C_rk C-I
test from 10^6 to ~3200.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings PR #149 (Add #GRAPH command to create graph-based
representations of the chemical mechanism, by @obin1) into the
KPP 3.4.0 development stream.

@obin1 wrote:

   These files are useful for mechanism analysis, visualization, and
   further processing outside of KPP. Bipartite networks can be projected
   into unipartite networks, for example a kinetics graph as in
   Sander (2024). I've been working with @blrodriguez18 and
   @DanielGetter using this option in KPP to create a 30+ graph
   library of chemical mechanism edgelists.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
docs/source/using_kpp/04_input_for_kpp.rst
- Added documentation about the #GRAPH option

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
.gitignore
- Include docs/_build in the Git ignore list

docs/read_the_docs_environments.yml
docs/requirements.txt
- Updated sphinx-rtd-theme to 3.1.0
- Updated myst-parser to 5.0.0
- Downgraded sphinx-autobuild to 2024.2.4

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings updates from the 3.4.0 development stream
into the release/3.4.0 branch, in anticipation of the
Kinetic PreProcessor (KPP) 3.4.0 release.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
docs/source/citations/kpp.bib
- Added Sturm and Silva, 2025
- Added Sturm and Wexler, 2022
- Added Long et al., 2026 (submitted)

docs/source/getting_started/00_revision_history.rst
- Added KPP 3.4.0 section

docs/source/tech_info/07_numerical_methods.rst
- Converted table to list-table
- Added RODAS-3.1 section

docs/source/using_kpp/04_input_for_kpp.rst
- Trimmed trailing whitespace

docs/source/conf.py
src/gdata.h
- Version number updated to 3.4.0

AUTHORS.txt
- Updated accordingly

CHANGELOG.md
- Updated accordingly
- Version number updated to 3.4.0

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
@yantosca yantosca added this to the 3.4.0 milestone Apr 27, 2026
@yantosca yantosca requested review from RolfSander and obin1 April 27, 2026 18:36
@yantosca yantosca self-assigned this Apr 27, 2026
@yantosca yantosca added the feature New feature or request label Apr 27, 2026
Copy link
Copy Markdown
Contributor

@RolfSander RolfSander left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yantosca and @obin1: Do you have any comments on my post here?

#149 (comment)

If we want to make these small changes of the GRAPH output format, that
could go into 3.4.0 as well.

@obin1
Copy link
Copy Markdown
Member

obin1 commented Apr 28, 2026

yes, I'll work on those changes to go into the 3.4.0 release, it should be fairly minor

@yantosca
Copy link
Copy Markdown
Contributor Author

Thanks @obin1. Feel free to push to the release/3.4.0 branch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants