Chemical Thermodynamics and Activity Diagrams

What is it?

This R package provides functions and data sets to support chemical thermodynamic modeling in biochemistry and low-temperature geochemistry. The features include calculation of the standard molal thermodynamic properties and chemical affinities of reactions involving minerals and/or biomolecules; a database of thermodynamic properties of aqueous, crystalline and gaseous species; amino acid group additivity for the standard molal thermodynamic properties of neutral and ionized proteins; use of the revised Helgeson-Kirkham-Flowers equations of state for aqueous species; construction of equilibrium activity diagrams as a function of temperature, pressure, and chemical activities or fugacities of basis species.

An example

After Helgeson, 1970.

Getting started

Download R from the Comprehensive R Archive Network (CRAN). Launch an R session, then use these commands to install and load the package and run the examples from the documentation.


Download and documentation

download Download CHNOSZ, and get other files ( news pdf refs )
manual Online manual
examples Output from examples (including figures)
demos Demos (longer examples, with figures)
vignettes Package vignettes ("Regressing thermodynamic data" added in version 1.0.8-2 )

Older stuff

anim Animations of equilibrium activity diagrams (2013)
transfer Reaction path calculations in CHNOSZ (2009)

Around the web


CHNOSZ is free software made available under the GPL.

The maintainer of this package is Jeffrey Dick. Please contact me at

Work on this project through 2008 was supported by research grants from the U.S. National Science Foundation and Department of Energy. In 2009-2011, this material is based upon work supported by the National Science Foundation under Grant No. EAR-0847616.

To cite CHNOSZ, use this reference: Dick, 2008. The thermodynamic database represents the work of many different authors. If you publish results of calculations using any of these data, please cite the primary data sources! For a list of references, use the browse.refs() function in the package, or access the table of references here.

Updated on 2017-01-13 by Jeffrey M. Dick