OptimaSolver.jl
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.
