Skip to content

Chemical equilibrium API

from ensim.core.chemistry import CombustionProblem
from ensim.utils.nasa_parser import load_default_database

database = load_default_database()
problem = CombustionProblem(database)
problem.add_fuel("H2", moles=2.0, temperature=298.15)
problem.add_oxidizer("O2", moles=1.0, temperature=298.15)
result = problem.solve(
    pressure=6.89e6,
    initial_temp_guess=3500.0,
    max_iterations=100,
    tolerance=1e-6,
)

if not result.converged:
    raise RuntimeError("equilibrium did not converge")

CombustionProblem enforces species lookup and builds elemental constraints from the supplied reactants. solve returns temperature, product moles/mole fractions, mixture molar mass, frozen Cp/Cv, iteration count and convergence state.

Pressures are Pa, temperatures K and reactant amounts mol. The result's mean_molecular_weight is g/mol. The available species define the equilibrium problem; use load_default_database() for the same packaged data as the GUI.

See theory and validation.