equilibrium-c: A Lightweight Modern Equilibrium Chemistry Calculator for Hypersonic Flow Applications
Nicholas N. Gibbons
TL;DR
eqc addresses the need for a modern, open-source chemical equilibrium solver suitable for hypersonic and multi-physics simulations by employing an element-potential framework that minimises Gibbs energy under elemental constraints. The code combines a rigorously derived thermodynamic foundation with a robust, analytically-informed Newton solver, including under-relaxation and log-space handling to ensure convergence even with many species and high-temperature ionisation. Validation spans analytic benchmarks (e.g., CO₂ dissociation), cross-code comparisons with NASA CEA, and experimental data from shock-tunnel tests, demonstrating accuracy and robustness across representative regimes. The result is a lightweight, minimal-dependency tool with a Python interface and unit-tested C core, intended for easy integration into complex fluid-dynamics, combustion, and hypersonic design workflows, with broad applicability beyond its primary focus.
Abstract
equilibrium-c (eqc) is a program for computing the composition of gas mixtures in chemical equilibrium. In typical usage, the program is given a known thermodynamic state, such as fixed temperature and pressure, as well as an initial composition of gaseous species, and computes the final composition in the limit of a large amount of time relative to the reaction speeds. eqc includes a database of thermodynamic properties taken from the literature, a set of core routines written the C programming language to solve the equilibrium problems, and a Python wrapper layer to organise the solution process and interface with user code. Dependencies are extremely minimal, and the API is designed to be easily embedded in multi-physics codes that solve problems in fluid dynamics, combustion, and chemical processing. In this paper, I first introduce the equations of chemical equilibrium, then spend some time discussing their numerical solution, and finally present a series of example problems, with an emphasis on verification and validation of the solver.
