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
andVdotout
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 theUpdate_SUN
,Update_RCONST
, andUpdate_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 inupdate_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 fromSUBROUTINE Fun
.Rename
KPP/kpp_2.2.3_01
folder toKPP/kpp-code
.Now write
gckpp_Model.F90
andgckpp_Precision.F90
fromgen.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
accordinglyCreate
README.md
for main branchSet
FLEX_LIB_DIR
usingFLEX_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.F90Added
rosenbrock_split.def
integrator definitionAdded
OMPThreadPrivate
function for F77.Added declaration of
A
in ROOT_FunctionAdded
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 300Extend 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.