Validations#

The Combustion Toolbox [Cuadra et al., 2024, Cuadra et al., 2026] has been rigorously benchmarked against several established reference codes across a range of thermochemical equilibrium problems. The table below summarizes the main external solvers considered for comparison together with their typical scopes of application.

Reference code

Scope of application

NASA CEA [Gordon and McBride, 1994]

Chemical equilibrium, combustion, propulsion performance

Cantera [Goodwin et al., 2021]

Chemical equilibrium, chemical kinetics, combustion, reactive flow simulations, transport, plasma and electrochemical systems

Caltech’s SD-Toolbox [Browne et al., 2008]

Shock waves, detonations, high-enthalpy reactive flows

TEA [Blecic et al., 2016]

Thermochemical equilibrium of exoplanetary atmospheres

Note

Caltech’s SD-Toolbox internally uses the Cantera [Goodwin et al., 2021] software packag for thermochemical calculations.

Warning

For the sake of clarity, we only show a reduced set of species in the validation of the mole fractions.

Contents

Chemical equilibrium calculations#

Validations of the EquilibriumSolver for different problem types with NASA CEA as reference. The problem types covered are:

  • TP (defined temperature and pressure)

  • HP (defined enthalpy and pressure)

  • TV (defined temperature and volume)

  • EV (defined internal energy and volume)

  • SP (defined entropy and pressure)

  • SV (defined entropy and volume)

Case

Mixture definition

Conditions

Equivalence ratio

Reference code

MATLAB script

Data source

TP 1

\(\text{C}_6\text{H}_6 + \dfrac{7.5}{\phi}(\text{O}_2 + 3.76\ \text{N}_2)\)

\(T = 2500\,\mathrm{K}\)
\(p = 1\,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_TP_CEA_1

./validations/cea/data/tp

TP 2

\(\text{C}_6\text{H}_6 + \dfrac{7.5}{\phi}\text{O}_2\)

\(T = 2500\,\mathrm{K}\)
\(p = 1\,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_TP_CEA_2

./validations/cea/data/tp

TP 3

\(\text{CH}_3\text{OH} + \dfrac{1.5}{\phi}(\text{O}_2 + 3.76\ \text{N}_2)\)

\(T = 2500\,\mathrm{K}\)
\(p = 1\,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_TP_CEA_3

./validations/cea/data/tp

TP 4

\(\text{CH}_3\text{OH} + \dfrac{1.5}{\phi}\text{O}_2\)

\(T = 2500\,\mathrm{K}\)
\(p = 1\,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_TP_CEA_4

./validations/cea/data/tp

HP 1

\(\text{C}_2\text{H}_2 + \dfrac{2.5}{\phi}(\text{O}_2 + 3.76 \text{N}_2)\)

\(T_\text{initial} = 300\,\mathrm{K}\)
\(p = 1\,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_HP_CEA_1

./validations/cea/data/hp

HP 2

\(\text{C}_2\text{H}_2 + \dfrac{2.5}{\phi}\text{O}_2\)

\(T_\text{initial} = 300\,\mathrm{K}\)
\(p = 1\,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_HP_CEA_2

./validations/cea/data/hp

HP 3

\(\text{CH}_4 + \dfrac{2}{\phi}(\text{O}_2 + 3.76 \text{N}_2)\)

\(T_\text{initial} = 300\,\mathrm{K}\)
\(p = 1\,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_HP_CEA_3

./validations/cea/data/hp

HP 4

\(\text{CH}_4 + \dfrac{2}{\phi}\text{O}_2\)

\(T_\text{initial} = 300\,\mathrm{K}\)
\(p = 1\,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_HP_CEA_4

./validations/cea/data/hp

HP 5

\(\text{Natural gas} + \dfrac{2.05}{\phi}\text{Air}\)

\(T_\text{initial} = 300\,\mathrm{K}\)
\(p = 1\,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_HP_CEA_5

./validations/cea/data/hp

TV 1

\(\text{CH}_4 + \dfrac{2}{\phi}\text{Air}\)

\(T = 3000\,\mathrm{K}\)
\(p = 1.0132\,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_TV_CEA_1

./validations/cea/data/tv

EV 1

\(\text{CH}_4 + \dfrac{2}{\phi}\text{Air}\)

\(T = 300\,\mathrm{K}\)
\(p = 1.0132\,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_EV_CEA_1

./validations/cea/data/ev

Note

  • Natural gas: \(0.85\text{CH}_4 + 0.1\text{C}_2\text{H}_6 + 0.05\text{CO}_2\)

  • Air: \(3.73 \text{N}_2 + \text{O}_2 + 0.0447\text{Ar} + 0.00152 \text{CO}_2\)

  • Ideal Air: \(3.76 \text{N}_2 + \text{O}_2\)

Hint

To run all the validations contrasted with CEA at once, write at the prompt:

run_validations_CEA

TP 1 - C\(_{6}\)H\(_{6}\) + Air#

TP 2 - C\(_{6}\)H\(_{6}\) + O\(_{2}\)#

TP 3 - CH\(_{3}\)OH + Air#

TP 4 - CH\(_{3}\)OH + O\(_{2}\)#

HP 1 - C\(_{2}\)H\(_{2}\) + Air#

HP 2 - C\(_{2}\)H\(_{2}\) + O\(_{2}\)#

HP 3 - CH\(_{4}\) + Air#

HP 4 - CH\(_{4}\) + O\(_{2}\)#

HP 5 - Natural Gas + Air#

TV 1 - CH\(_{4}\) + Air#

EV 1 - CH\(_{4}\) + Air#

Shock wave calculations#

Validations of the ShockSolver for different problem types with NASA CEA and Caltech’s SD-Toolbox as reference. The problem types covered are:

  • SHOCK I (planar shock waves)

  • SHOCK R (reflected shock waves)

  • SHOCK OBLIQUE (oblique shock waves)

  • SHOCK POLAR (shock polar diagrams)

  • SHOCK PRANDTL MEYER (Prandtl-Meyer expansion waves)

Case

Mixture

Conditions

Reference code

MATLAB script

Data source

SHOCK I 1

Air + ions

T = 300 K
p = 1 bar

NASA CEA

run_validation_SHOCK_IONIZATION_CEA_1

./validations/cea/shocks

SHOCK R 1

Air + ions

T = 300 K
p = 1 bar

NASA CEA

run_validation_SHOCK_R_IONIZATION_CEA_1

./validations/cea/shocks

SHOCK POLAR 1

Air (frozen)

T = 300 K
p = 1.01325 bar

SD-Toolbox + Cantera

run_validation_SHOCK_POLAR_SDToolbox_1

./validations/sdtoolbox/data

SHOCK PRANDTL MEYER 1

Air + ions

T = 3000 K
p = 1 bar

SD-Toolbox + Cantera

run_validation_SHOCK_PRANDTL_MEYER_SDToolbox_1

./validations/sdtoolbox/data

SHOCK PRANDTL MEYER 2

Air (frozen)

T = 3000 K
p = 1 bar

SD-Toolbox + Cantera

run_validation_SHOCK_PRANDTL_MEYER_SDToolbox_2

./validations/sdtoolbox/data

SHOCK I - Air with ionization#

SHOCK R - Air with ionization#

SHOCK POLAR 1 - Air with ionization#

SHOCK PRANDTL MEYER 1 - Air#

SHOCK PRANDTL MEYER 2 - Air (frozen)#

Detonation wave calculations#

Validations of the DetonationSolver for different problem types with NASA CEA as reference. The problem type covered is:

  • DET (Chapman-Jouguet detonations)

Case

Mixture definition

Conditions

Equivalence ratio

Reference code

MATLAB script

Data source

DET 1

\(\text{C}_2\text{H}_2 + \dfrac{2.5}{\phi}(\text{O}_2 + 3.76,\text{N}_2)\)

\(T = 300\,\mathrm{K}\)
\(p = 1,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_DET_CEA_1

./validations/cea/detonations

DET 2

\(\text{C}_2\text{H}_2 + \dfrac{2.5}{\phi}\text{O}_2\)

\(T = 300\,\mathrm{K}\)
\(p = 1,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_DET_CEA_2

./validations/cea/detonations

DET 3

\(\text{CH}_4 + \dfrac{2}{\phi}(\text{O}_2 + 3.76,\text{N}_2)\)

\(T = 300\,\mathrm{K}\)
\(p = 1,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_DET_CEA_3

./validations/cea/detonations

DET 4

\(\text{CH}_4 + \dfrac{2}{\phi}\text{O}_2\)

\(T = 300\,\mathrm{K}\)
\(p = 1,\mathrm{bar}\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_DET_CEA_4

./validations/cea/detonations

DET 1 - C\(_{2}\)H\(_{2}\) + Air#

DET 2 - C\(_{2}\)H\(_{2}\) + O\(_{2}\)#

DET 3 - CH\(_{4}\) + Air#

DET 4 - CH\(_{4}\) + O\(_{2}\)#

Rocket calculations#

Validations of the RocketSolver for different problem types with NASA CEA as reference. The problem type covered is:

  • ROCKET IAC (Infinite area chamber model)

  • ROCKET FAC (Finite area chamber model)

Case

Propellants

Conditions

Equivalence ratio

Reference code

MATLAB script

Data source

ROCKET IAC 1

LH\(_2\) + LOX

\(T_\text{fuel} = 20.27\,\mathrm{K}\)
\(T_\text{oxid} = 90.17\,\mathrm{K}\)
\(p_\text{chamber} = 22,\mathrm{bar}\)
\(A_\text{exit}/A_\text{throat} = 3\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_ROCKET_CEA_17

./validations/cea/rocket

ROCKET IAC 2

LH\(_2\) + LOX

\(T_\text{fuel} = 298.15\,\mathrm{K}\)
\(T_\text{oxid} = 90.17\,\mathrm{K}\)
\(p_\text{chamber} = 101.325,\mathrm{bar}\)
\(A_\text{exit}/A_\text{throat} = 8\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_ROCKET_CEA_24

./validations/cea/rocket

ROCKET FAC 1

RP-1 + LOX

\(T_\text{fuel} = 298.15\,\mathrm{K}\)
\(T_\text{oxid} = 90.17\,\mathrm{K}\)
\(p_\text{chamber} = 22,\mathrm{bar}\)
\(A_\text{chamber}/A_\text{throat} = 2\)
\(A_\text{exit}/A_\text{throat} = [1:2.6]\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_ROCKET_CEA_1
run_validation_ROCKET_CEA_16

./validations/cea/rocket

ROCKET FAC 2

LH\(_2\) + LOX

\(T_\text{fuel} = 20.27\,\mathrm{K}\)
\(T_\text{oxid} = 90.17\,\mathrm{K}\)
\(p_\text{chamber} = 101.325,\mathrm{bar}\)
\(A_\text{chamber}/A_\text{throat} = 2\)
\(A_\text{exit}/A_\text{throat} = 8\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_ROCKET_CEA_18

./validations/cea/rocket

ROCKET FAC 3

RP-1 + LOX

\(T_\text{fuel} = 298.15\,\mathrm{K}\)
\(T_\text{oxid} = 90.17\,\mathrm{K}\)
\(p_\text{chamber} = 101.325,\mathrm{bar}\)
\(A_\text{chamber}/A_\text{throat} = 2\)
\(A_\text{exit}/A_\text{throat} = 8\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_ROCKET_CEA_20

./validations/cea/rocket

ROCKET FAC 4

LCH\(_4\) + LOX

\(T_\text{fuel} = 111.66\,\mathrm{K}\)
\(T_\text{oxid} = 90.17\,\mathrm{K}\)
\(p_\text{chamber} = 101.325,\mathrm{bar}\)
\(A_\text{chamber}/A_\text{throat} = 2\)
\(A_\text{exit}/A_\text{throat} = 8\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_ROCKET_CEA_21

./validations/cea/rocket

ROCKET FAC 5

LH\(_2\) + LOX

\(T_\text{fuel} = 20.27\,\mathrm{K}\)
\(T_\text{oxid} = 90.17\,\mathrm{K}\)
\(p_\text{chamber} = 101.325,\mathrm{bar}\)
\(A_\text{chamber}/A_\text{throat} = 2\)
\(A_\text{exit}/A_\text{throat} = 8\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_ROCKET_CEA_22

./validations/cea/rocket

ROCKET FAC 6

MMH + N\(_2\)O\(_4\)

\(T_\text{fuel} = 298.15\,\mathrm{K}\)
\(T_\text{oxid} = 300\,\mathrm{K}\)
\(p_\text{chamber} = 101.325,\mathrm{bar}\)
\(A_\text{chamber}/A_\text{throat} = 2\)
\(A_\text{exit}/A_\text{throat} = 8\)

\(0.5 \le \phi \le 4\)

NASA CEA

run_validation_ROCKET_CEA_23

./validations/cea/rocket

ROCKET IAC 1 - LH2 + LOX#

ROCKET IAC 2 - LH2 + LOX#

ROCKET FAC 1 - RP1 + LOX#

ROCKET FAC 2 - LH2 + LOX#

ROCKET FAC 3 - RP1 + LOX#

ROCKET FAC 4 - LCH4 + LOX#

ROCKET FAC 5 - LH2 + LOX#

ROCKET FAC 6 - MMH + N2O4#

Exoplanet chemical equilibrium calculations#

Validations of the EquilibriumSolver and SolarAbundances classes for different temperature and pressure profiles with Thermochemical Equilibrium Abundances of chemical species (TEA) software as reference. The problem type covered is:

  • TP (defined temperature and pressure profiles)

Case

Mixture / Scenario

Temperature range

Pressure range

Reference code

MATLAB script

Data source / URL

TEA 1

See note\(^1\)

\(T \in [500, 5000]\) K

\(p \in [10^{-5}, 10^{2}]\) bar

TEA

run_validation_TP_TEA_1

https://github.com/dzesmin/TEA/blob/master/doc/examples/quick_example/results/quick_example.tea

TEA 2

WASP-43b, \(\text{metallicity} = 1\)

\(T \in [958.36, 1811.89]\) K

\(p \in [2.4\!\times\!10^{-6}, 31.62]\) bar

TEA

run_validation_TP_TEA_2

https://github.com/dzesmin/RRC-BlecicEtal-2015a-ApJS-TEA/tree/master/Fig6/WASP43b-solar

TEA 3

WASP-43b, \(\text{metallicity} = 10\)

\(T \in [958.36, 1811.89]\) K

\(p \in [2.4\!\times\!10^{-6}, 31.62]\) bar

TEA

run_validation_TP_TEA_3

https://github.com/dzesmin/RRC-BlecicEtal-2015a-ApJS-TEA/tree/master/Fig6/WASP43b-10xsolar

TEA 4

WASP-43b, \(\text{metallicity} = 50\)

\(T \in [958.36, 1811.89]\) K

\(p \in [2.4\!\times\!10^{-6}, 31.62]\) bar

TEA

run_validation_TP_TEA_4

https://github.com/dzesmin/RRC-BlecicEtal-2015a-ApJS-TEA/tree/master/Fig6/WASP43b-50xsolar

\(^1\) Initial mixture: H = 1.0000000000e+00, He = 8.5113803820e-02, C = 2.6915348039e-04, N = 6.7608297539e-05, O = 4.8977881937e-04

TEA 1#

WASP-43b metallicity 1#

WASP-43b metallicity 10#

WASP-43b metallicity 50#