GEMS3K Code for Solving for GeoChemical Equilibria

About Standalone GEMS3K Program


1. What does GEMS3K
2. Overview
3. Documentation files
4. Licensing
5. Developers
6. Credits
7. Publications

1. What does GEMS3K

2. Overview

GEMS3K (formerly GEMIPM2K) is a standalone C/C++ code implementing the efficient numerical kernel IPM-3 of the GEM-Selektor v.3 package for geochemical  thermodynamic modeling of complex heterogeneous multicomponent-multiphase  systems. The code includes a TSolMod library of built-in phase models of non-ideal mixing, relevant to a wide range of applications in geochemistry. GEMS3K uses fast and efficient linear algebra solvers from the JAMA C++ TNT package (NIST).

The GEMS3K code results from substantial improvements of the convex programming Gibbs energy minimization algorithms achieved since 2000, when development and support of GEMS was taken over by LES PSI (since 2008 jointly with IGP ETHZ; since 2012 also jointly with the University of Helsinki).

The standalone variant of GEMS3K code can be coupled to reactive mass transport simulation codes, in particular, OpenGeoSys, also running on high-performance computers. Input files (in text format) for GEMS3K can be exported with a few mouse-clicks from the GEM-Selektor v.3  package (more...), or prepared manually using any simple ASCII text editor. The runtime data exchange with the mass transport part of the coupled code can be implemented in computer memory using TNode class functions (more...). 

In order to promote broad application in hydro(thermal)-/ waste geochemistry and related research communities, the standalone GEMS3K code is released open-source under Lesser GPL v.3 license. Potential areas of code application include coupled reactive mass transport codes, parameter fitting packages, and phase diagram plotting tools.

More about the GEMS3K code can be found in publications; technical information is provided in Documentation files.

3. Documentation files

The documentation of standalone GEMS3K code consists of HTML files located in the "Docs/html/" folder in the trunk GEMS3K subversion repository (see contents here).

4. Licensing

Terms and Conditions of Use

GEMS3K code is part of the GEM Software (GEMS).

GEMS and related material (data and documentation), contained in or furnished in connection with the GEMS3K code, are made available by the Paul Scherrer Institute (PSI) to be used in the public interest and for the advancement of science. Permission to use the GEM Software is thereby granted free of charge for educational and academic research purposes only, provided and as long as these Terms and Conditions of Use are accepted.

The user agrees to appropriately acknowledge the authors (GEMS Development Team) and the PSI in publications and reports that result from the use of this software, or in products that include this software in whole or in part. Any modification must include a notice clearly stating its purpose, author, and date.

In addition to Terms and Conditions of GEMS use, the GEMS3K code is released open-source under the terms of LGPL (Lesser General Public License) v.3 in order to promote broad application of GEMS in hydro(thermal)-/ waste geochemistry and related research communities.

Because the GEM Software and related material is free (other than nominal materials and handling expenses) and provided "as is" in its current state, the GEMS Development Team and the PSI have made no warranty, expressed or implied, as to the accuracy or completeness, and cannot take any obligation to provide the user with any updates, revisions, new versions, support, consulting, training, or assistance of any other kind with regard to the use, operation, and performance of GEMS3K.

The user assumes all risks for any damages whatsoever resulting from loss of use, data, or profits arising in connection with the accessibility, use, quality, or performance of this software (see Disclaimer below).


GEM Software is developed as a tool for scientific research and distributed "as is", in its current state of development.

Hence, the PSI and the GEMS Development Team make no warranty or representation of GEMS as error free, accurate, complete, or useful for any specific application. PSI and GEMS Development Team shall not be liable for any claims, demands, liabilities, costs, losses, damages or expenses of any kind caused to or suffered by any person or entity that directly or indirectly arise out or result from the use of the software or in any connection thereof.

Please note that some information accessed through this page may be preliminary in nature and presented prior to final review, quality assurance, and approval by the PSI authorities. This information is provided with the understanding that it is not guaranteed to be correct or complete. Any conclusions drawn from such information are in the sole responsibility of the user.

Any use of trade marks, product, or company names in GEMS3K help files and web pages is solely for descriptive purposes.

5. Developers (GEMS Development Team)


GEM software is developed since 1996 (since 2000 at PSI). Since March 2008, GEMS is developed jointly by the PSI team (D. Kulik, S. Dmytrieva,G. Kosakowski, F.F. Hingerl) and by the ETHZ IGP team (T. Wagner). 

Dmitrii A. Kulik,  team leader (Paul Scherrer Institut): theoretical and practical development of GEM IPM algorithm, its accuracy and phase stability criteria; general design of GEMS3K code, documentation, web pages; co-development of TSolMod class library of built-in models of mixing in phases-solutions.

Svitlana V. Dmytrieva  (Institute of Environmental Geochemistry, Kyiv, Ukraine), guest researcher at PSI,  re-wrote Selektor-A code from C into the GEM-Selektor code in C++. She is involved in optimization and improvement of the GEMS3K code.

Thomas Wagner (IGP, ETH Zurich; since 1.08.2012 Division of Geology, University of Helsinki, Finland), is a co-developer of GEM algorithms, and a leading developer of the TSolMod class library of built-in models of mixing in phases-solutions.

Georg Kosakowski (Paul Scherrer Institut) participates in development of GEMS3K code, especially its interface for data exchange within coupled reactive transport codes, in particular OpenGeoSys-GEMS. His contribution was crucial in dramatic improvement of stability and precision of GEMS3K. 

Ferdinand Franziskus Hingerl (PSI, since 1.08.2012 at ERE, Stanford University, USA) since 2008 contributed in extending TSolMod and GEMS3K codes with Pitzer, Extended UNIQUAC, and rEUNIQUAC models for concentrated aqueous electrolytes over wide ranges of temperature and pressure (in association with the CCES GEOTHERM project).

Konstantin V. Chudnenko (Institute of Geochemistry, Irkutsk, Russia) created earlier SELEKTOR codes for IBM/360 compatible mainframes and maintains the alternative Selektor-W code based on GEM IPM algorithms. He contributed a lot in incorporating the proprietary IPM modules into Selektor-A codes in 1990-1996, and upgrading it into an IPM-2 module of GEM-Selektor in 2000-2001.


Frieder Enzmann (Geowissenschaften, JOGU Mainz, Germany): Improved TNodeArray example also used in the GEM2MT module of GEM-Selektor for 1-D coupled reactive transport simulations using the random-walk algorithms.

Sergey Churakov (Paul Scherrer Institute): Supplied the source C++ code of Churakov-Gottschalk EoS for gas/fluid mixtures, adapted as part of the TSolMod library.

6. Credits

GEMS Development Team acknowledges partial support that comes from various sources, among others: 

Nagra (Swiss National Cooperative for the Disposal of Radioactive Waste), Wettingen;

GEOTHERM project of the Competence Center Environment and Sustainability of the ETH Domain (CCES) (2008-2012);

Fluid chemistry and fluid-rock interaction of Alpine veins, Central Alps (T.Wagner, SNF funded);

Internally-consistent thermodynamic data for fluid-rock equilibria: Development and applications (T.Wagner, ETHIIRA funded);

Sinergia project "COTHERM - COmbined hydrological, geochemical and geophysical modelling of geotTHERMal systems"

Thanks to Dr. Gillian Gruen (focusTerra, ETH Zurich) for designing icons used in GEM-Selektor Graphical User Interface and on GEMS3K help and web pages. 

7. Publications

Kulik D.A., Wagner T., Dmytrieva S.V., Kosakowski G., Hingerl F.F., Chudnenko K.V., Berner U. (2012). GEM-Selektor geochemical modeling package: Numerical kernel GEMS3K for coupled simulation codes. Computational Geosciences (in press),

Wagner T., Kulik D.A., Hingerl F.F., Dmytrieva S.V. (2012). GEM-Selektor geochemical modeling package: TSolMod C++ class library and data interface for multicomponent phase models. Canadian Mineralogist 50, 1173-1195,

Shao H., Dmytrieva S.V., Kolditz O., Kulik D.A., Pfingsten W., Kosakowski G. (2009): Modeling reactive transport in non-ideal aqueous–solid solution system. Applied Geochemistry 24, 1287-1300.

Kulik D.A. (2006): Dual-thermodynamic estimation of stoichiometry and stability of solid solution end members in aqueous - solid solution systems. Chemical Geology 225(2-3),189– 212.

Karpov I.K., Chudnenko K.V., Kulik D.A. and Bychinskii V.A. (2002): The convex programming minimization of five thermodynamic potentials other than Gibbs energy in geochemical modeling. American Journal of Science 302, 281-311.

Karpov I.K., Chudnenko K.V., Kulik D.A., Avchenko O.V. and Bychinski V.A. (2001). Minimization of Gibbs free energy in geochemical systems by convex programming. Geochemistry International 39(11).

Karpov I.K., Chudnenko K.V. and Kulik D.A. (1997): Modeling chemical mass-transfer in geochemical processes: Thermodynamic relations, conditions of equilibria and numerical algorithms. American Journal of Science 297, 767-806.

Last modified: 6.12.2012 DK

Copyright (c) 2012 GEMS Development Team