J.-F. Barthélémy
  • Home
  • Software
  • Publications
  • Postprints
  • Teaching
  • About

OptimaSolver.jl

Julia
Optimization
Thermodynamics

Julia port of Allan Leal’s Optima C++ library: a primal-dual interior-point solver for Gibbs energy minimization, with diagonal Hessian structure and implicit-differentiation sensitivity matrices. The equilibrium backend of ChemistryLab.jl.

OptimaSolver.jl is a Julia port of the Optima C++ library developed by Allan Leal (ETH Zürich) — github.com/reaktoro/optima. It is a primal-dual interior-point solver written for the specific shape of chemical equilibrium problems: minimization of a Gibbs energy whose Hessian is diagonal, under linear mass-balance constraints. It serves as a core solver backend for ChemistryLab.jl equilibrium computations.

Key features

  • Primal-dual interior-point method exploiting the diagonal Hessian structure of an ideal or non-ideal Gibbs energy
  • Sensitivity matrices obtained by implicit differentiation of the optimality conditions, so derivatives of the equilibrium state come out of the solve itself
  • Warm start from a previous solution, for continuation along a reaction path

Credits and license

The algorithmic design — Schur-complement Newton step, filter line search, variable stability classification and implicit-differentiation sensitivity — comes from that library and from Leal, Blunt & LaForce (2014), Efficient chemical equilibrium calculations for geochemical speciation and reactive transport modelling, Geochimica et Cosmochimica Acta 131, 301–322, doi:10.1016/j.gca.2014.01.038.

The port is released under LGPL-2.1-or-later, matching the upstream library, and carries both copyright notices.

Links

Docs Repository DOI

Jean-François Barthélémy — Cerema · UMR MCD

ORCID · GitHub · HAL

  • View source

Built with Quarto