Jean-François Barthélémy
  • Home
  • Software
  • Teaching
  • Publications
  • Postprints

On this page

  • Key features
  • Installation
  • Links

ChemistryLab.jl

Julia
Chemistry
Materials Science

A Julia computational chemistry toolkit — formula handling, species management, stoichiometric matrices, thermodynamic databases and chemical equilibrium. Initially aimed at low-carbon cementitious materials and aqueous solutions.

ChemistryLab.jl is a computational chemistry toolkit. Although initially dedicated to low-carbon cementitious materials and aqueous solutions, its scope is wider: it provides chemical formula handling, species management, stoichiometric matrix construction, activity models, thermodynamic equilibrium and database interoperability. Developed with Anthony Soive and released under LGPL v2.1+. Part of the MicroPoroChemoMechanics ecosystem.

Key features

  • Chemical formula handling — creation, conversion and display with charge management, Unicode and Phreeqc notations
  • Species management — Species and CemSpecies types for solution and solid phases, with requalification via with_class
  • Stoichiometric matrices — automatic construction for reaction and equilibrium analysis
  • Database interoperability — import and merge ThermoFun (.json) and Cemdata (.dat) data
  • Solid solutions — ideal (IdealSolidSolutionModel) or non-ideal binary (RedlichKisterModel) mineral mixing phases
  • Activity models — DiluteSolutionModel, HKFActivityModel (extended Debye–Hückel B-dot) and DaviesActivityModel
  • Chemical equilibrium — equilibrium compositions by Gibbs energy minimization (equilibrate, ChemicalSystem, ChemicalState)
  • ForwardDiff compatibility — sensitivity analysis through the whole pipeline

Installation

ChemistryLab.jl is registered in Julia’s General registry:

using Pkg
Pkg.add("ChemistryLab")

Solving an equilibrium requires an optimization backend, loaded on demand through a package extension — either the default Ipopt one or the Julia-native interior-point solver:

using Optimization, OptimizationIpopt   # default backend
# or
using OptimaSolver                      # Julia-native interior-point backend

Links

Docs Repository DOI