Releases: CombustionToolbox/combustion_toolbox
Combustion Toolbox v1.2.9
This release improves robustness and consistency in shock jump-derivative computations, generalizes the shock–turbulence interaction workflow for broader parametric studies, and integrates SHOCKTURBULENCE problems into the Combustion Toolbox App. It also includes bug fixes in chemical system updates, equilibrium stability improvements at low temperatures, and several minor usability enhancements.
1. Refactored JumpConditionsSolver
This new release fixes inconsistent values of Gammas1 and Gammas3 in JumpConditionsSolver when using scalar Mach inputs (e.g., M1 = 5). The previous implementation relied on interpolation along the Hugoniot curve, which is not well-defined for a single point and can change when extra points are added.
Gammas1 and Gammas3 now enforce the constant post-shock density constraint using the chain-rule, leveraging derivatives with respect to Mach computed during Gammas2:
Results are now stable and consistent for both scalar and array Mach inputs.
2. Updated ShockTurbulenceSolver
Reorganize and generalize the shockturbulence subpackage to improve maintainability and enable parametric sweeps on upstream parameters beyond the pre-shock Mach number.
solve()now returnsmixArray1andmixArray2, with LIA outputs stored in mixArray2(i).lia as a structure.- Refactoring and cleanup of solver/model interfaces for easier extension and reuse.
3. Added SHOCKTURBUENCE_* problems to the Combustion Toolbox App
All SHOCKTURBULENCE_* problems are now available directly from the Combustion Toolbox App, enabling interactive configuration and execution of shock–turbulence interaction cases without scripting.
4. Bug fixes
- Invoke
clean()/cleanMoles()when updatingChemicalSystem.propertiesMatrixto avoid stale values - Fix chemical equilibrium failures at low temperature when ionized species may be present
5. Minor changes
- Added
eta,chi,etaVorticity, andliaas properties ofMixtureclass - Included printing option in
Mixtureclass forSHOCKTURBULENCE_*problems - Added missing labels in the
interpreterLabelutility function
Full Changelog: v1.2.8...v1.2.9
Combustion Toolbox v1.2.8
This release introduces a new module for linear shock-turbulence interaction analysis, a generalized Prandtl-Meyer expansion solver using different caloric models, and a broad set of robustness improvements, bug fixes, and documentation updates across the Combustion Toolbox ecosystem.
1. New CT-LIA module for solving shock-turbulence interaction problems using linear theory
This v1.2.8 presents a Linear Interaction Analysis (LIA) framework for shock-turbulence interaction (STI) problems in compressible flows, hereafter CT-LIA. This new module enables the computation of turbulence amplification statistics across a normal shock interacting with weak upstream turbulence, under the assumptions of linearity, inviscid flow, and thermochemical equilibrium across a thin relaxation layer.
The solver is fully integrated into the Combustion Toolbox framework and supports calorically perfect, thermally perfect, and calorically imperfect gas models, as well as multi-component mixtures.
The solver follows the theoretical formulation described in:
Cuadra, A., Williams, C. T., Di Renzo, M., & Huete, C. The role of compressibility and vibrational-excitation in hypersonic shock-turbulence interactions. Journal of Fluid Mechanics (under review).
Solver architecture
ShockTurbulenceSolver
A new high-level class, ShockTurbulenceSolver, orchestrates the complete LIA workflow:
- Computation of shock jump conditions using
EquilibriumSolver,ShockSolver, andJumpConditionsSolver - Selection of the appropriate turbulence interaction model based on the prescribed upstream disturbance type
- Spectral integration of post-shock turbulence statistics
- Optional reporting and visualization of results
The solver dispatches to a specific turbulence model via the problemType
argument:
vorticalvortical_entropicacousticcompressible
This design cleanly separates thermodynamics, shock physics, and turbulence
modeling, while maintaining a consistent user-facing API.
ShockTurbulenceModel Hierarchy
A new abstract base class, ShockTurbulenceModel, defines a unified interface for
all LIA turbulence models. Four concrete implementations are provided:
ShockTurbulenceModelVorticalShockTurbulenceModelVorticalEntropicShockTurbulenceModelAcousticShockTurbulenceModelCompressible
Each model:
- Implements the appropriate linear transfer functions for its modal content
- Uses a dimension-dependent (2D / 3D) wavenumber probability density function
- Computes ensemble-averaged post-shock quantities via spectral integration
- Returns consistent amplification metrics, including:
- Turbulent kinetic energy (TKE)
- Longitudinal and transverse TKE components
- Enstrophy
- Anisotropy
Characterization of upstream turbulence field
Vortical-Entropic Correlation (chi)
The parameter
Following Eq. (3.9) of the reference formulation,
where
Dilatational-to-Solenoidal TKE Ratio (eta)
The parameter
where
Examples
This pull request includes some examples illustrating all supported configurations:
-
Vortical Shock-Turbulence Interaction
- Purely solenoidal upstream turbulence
- No acoustic or entropic content (
eta = 0,chi = 0)
-
Vortical-Entropic Shock-Turbulence Interaction
- Solenoidal turbulence with correlated entropic density fluctuations
- Controlled via
chi
-
Acoustic Shock-Turbulence Interaction
- Purely dilatational, propagating acoustic disturbances
- No vortical or entropic modes
-
Fully Compressible Shock-Turbulence Interaction
- Combined vortical, entropic, and acoustic fluctuations
- Controlled via
chiandeta
2. Generalized Prandtl-Meyer expansion solver for different caloric models
A new SHOCK_PRANDTL_MEYER problem type has been added to the ShockSolver class, extending the shock module beyond compression waves to include isentropic expansion fans in real-gas flows.
This feature extends the shock module beyond compression waves and introduces a real-gas Prandtl-Meyer expansion solver, compatible with both frozen and equilibrium thermochemical models, with built-in path history for visualization and analysis.
Capabilities
- Computes downstream state after a flow expansion through a deflection angle
θ₂ - Marches along a constant-entropy and specific-volume (SV) path
- Uses perfect-gas Prandtl-Meyer theory only for initialization
- Tracks full expansion path history in
mix2.polar(for polar plotting) - Enforces stagnation enthalpy conservation during expansion
- Control number of points through the isentropic expansion path using
numPointsPrandtMeyerduringShockSolverdefinition
Supported caloric models
- Calorically perfect gas (
FLAG_TCHEM_FROZEN = true) #1083 - Thermally perfect gas (
FLAG_FROZEN = true) - Calorically imperfect gas at chemical equilibrium (default mode)
Numerical Method Summary
- Initial guess
(ρ₂, M₂)generated from classical Prandtl-Meyer relations - Expansion path traced using
tracePrandtlMeyerExpansionunder SV constraints - Iterative refinement of downstream density using Newton-Raphson
- At each iteration:
- Thermodynamic state enforced via
stateSV - Velocity and Mach updated from constant stagnation enthalpy
- Generalized Prandtl-Meyer integrand used instead of γ-based analytical formula
- Thermodynamic state enforced via
Validation
The implementation was verified against Caltech’s Shock-Detonation Toolbox for both thermally perfect and calorically imperfect (equilibrium) gas models. The figure below shows the equilibrium Prandtl-Meyer expansion for deflection angles
Example
% Import packages
import combustiontoolbox.databases.NasaDatabase
import combustiontoolbox.core.*
import combustiontoolbox.shockdetonation.*
import combustiontoolbox.utils.display.*
% Definitions
FLAG_FROZEN = false;
% Get Nasa database
DB = NasaDatabase();
% Define chemical system
system = ChemicalSystem(DB);
% Initialize mixture
mix = Mixture(system);
% Define chemical state
set(mix, {'N2', 'O2'}, [79, 21]/21);
% Define properties
mixArray1 = setProperties(mix, 'temperature', 3000, 'pressure', 1, 'M1', 1, 'theta', 82);
% Initialize solver
solver = ShockSolver('problemType', 'SHOCK_PRANDTL_MEYER');
% Solve problem
[mixArray1, mixArray2] = solver.solveArray(mixArray1);
% Generate report from mixArray
report(solver, mixArray1, mixArray2)
% Generate report from polar of last mixArray2
mixArray2(end).polar(1).rangeName = 'theta';
report(solver, mixArray2(end).polar, mixArray2(end).polar)Benchmark
𝗦𝘆𝘀𝘁𝗲𝗺 𝗜𝗻𝗳𝗼𝗿𝗺𝗮𝘁𝗶𝗼𝗻
CT version MATLAB version OS version CPU name Clock speed Cache L2 Cores
__________ ______________ __________ ____________ ___________ ________ _____
1.2.8 R2025b 15.6.1 Apple M2 Pro N/A 65536 10
𝗕𝗲𝗻𝗰𝗵𝗺𝗮𝗿𝗸𝗶𝗻𝗴
Module Solver Problem Filename Cases Species Tolerance AvgTime
______ ___________ ___________________ ______________________________________________ _____ _______ _________ _______
CT-SD ShockSolver SHOCK_PRANDTL_MEYER run_validation_SHOCK_PRANDTL_MEYER_SDToolbox_1 1 11 1.00e-05 1.2191
CT-SD ShockSolver SHOCK_PRANDTL_MEYER run_validation_SHOCK_PRANDTL_MEYER_SDToolbox_2 81 11 1.00e-05 0.94038
𝗦𝘂𝗺𝗺𝗮𝗿𝘆 𝗕𝗲𝗻𝗰𝗵𝗺𝗮𝗿𝗸𝗶𝗻𝗴
Module Problem GroupCount sum_Cases mean_Cases sum_Species mean_Species sum_AvgTime mean_AvgTime
______ ___________________ __________ _________ __________ ___________ ____________ ___________ ____________
CT-SD SHOCK_PRANDTL_MEYER 2 82 41 22 11 2.1594 1.0797
3. New CaloricGasModel enumeration
A new enumeration class, CaloricGasModel, has been introduced to explicitly define the caloric gas model:
perfectthermallyPerfectimperfect
This replaces the previous dual-flag mechanism and prevents invalid or ambiguous configurations.
Backward Compatibility
- Legacy flags are still accepted.
- CaloricGasModel.fromFlag() maps them safely to enum values.
Example
caloricGasModel = CaloricGasModel.perfect;
if caloricGasModel.isPerfect()
% configure perfect gas behavior...
en...Combustion Toolbox v1.2.7
This release introduces new capabilities, plasma diagnostics, updated database (Burcat, January 2023), bug fixes, and performance improvements across the Combustion Toolbox framework.
1. New JumpConditionsSolver class for calculation of dimensionless Rankine–Hugoniot slopes
A dedicated solver class has been implemented to compute thermochemical Rankine–Hugoniot jump conditions and the dimensionless RH slopes required in shock-turbulence interaction linear analysis (Cuadra2024b, Cuadra2025a).
- Computes upstream/downstream shock states with thermochemistry.
- Provides direct access to RH slope parameters for post-processing of STI amplification factors.
- Implemented as a standalone solver, ready for integration with the upcoming
ShockTurbulenceSolvermodule.
2. Plasma diagnostics for weakly ionized mixtures
A new diagnostic suite has been added to the Mixture class to evaluate whether a reacting gas mixture can be treated as a weakly ionized plasma, i.e., when Coulomb interactions remain negligible.
New diagnostic quantities:
-
Electron number density
$(\hat{n}_e)$ -
Ion number density
$(\hat{n}_i)$ -
Degree of ionization
$(\chi)$ -
Debye length
$(\lambda_D)$ -
Number of electrons in a Debye sphere
$(N_D)$ -
Species-wise plasma coupling parameter
$(\mathcal{G}_j)$ -
Mean plasma coupling parameter
$(\mathcal{G})$ - Detection of weakly coupled plasmas based on the condition
$(\mathcal{G} \ll 1)$
3. New thermodynamic setters in Mixture class
Three new state-setting methods are now available in Mixture, allowing the thermodynamic state to be directly defined using entropy, enthalpy, or internal energy, namely
setEntropysetEnthalpysetInternalEnergy
4. Burcat's database updated to January 2023 release
The Burcat thermochemical database has been updated to the latest publicly available version (January 2023).
5. New Benchmark class for automated performance analysis
A new utility class has been developed to systematically evaluate the computational performance of the Combustion Toolbox framework across different problem types and hardware configurations.
𝗕𝗘𝗡𝗖𝗛𝗠𝗔𝗥𝗞 𝗥𝗘𝗣𝗢𝗥𝗧
𝗦𝘆𝘀𝘁𝗲𝗺 𝗜𝗻𝗳𝗼𝗿𝗺𝗮𝘁𝗶𝗼𝗻
CT version MATLAB version OS version CPU name Clock speed Cache L2 Cores
__________ ______________ __________ ____________ ___________ ________ _____
1.2.7 R2025b 15.6.1 Apple M2 Pro N/A 65536 10
𝗕𝗲𝗻𝗰𝗵𝗺𝗮𝗿𝗸𝗶𝗻𝗴
Module Solver Problem Filename Cases Species Tolerance AvgTime
_________ _________________ ___________________ ______________________________________________ _____ _______ _________ _______
CT-EQUIL EquilibriumSolver TP run_validation_TP_TEA_1 300 12 1.00e-06 1.2725
CT-EQUIL EquilibriumSolver TP run_validation_TP_TEA_2 90 26 1.00e-06 0.9694
CT-EQUIL EquilibriumSolver TP run_validation_TP_TEA_3 90 26 1.00e-06 0.96146
CT-EQUIL EquilibriumSolver TP run_validation_TP_TEA_4 90 26 1.00e-06 0.94948
CT-EQUIL EquilibriumSolver TP run_validation_TP_CEA_1 351 94 1.00e-06 1.5101
CT-EQUIL EquilibriumSolver TP run_validation_TP_CEA_2 351 94 1.00e-06 1.4609
CT-EQUIL EquilibriumSolver TP run_validation_TP_CEA_3 351 94 1.00e-06 1.3866
CT-EQUIL EquilibriumSolver TP run_validation_TP_CEA_4 351 94 1.00e-06 1.4681
CT-EQUIL EquilibriumSolver TP run_validation_TP_CEA_5 181 247 1.00e-06 1.449
CT-EQUIL EquilibriumSolver TP run_validation_TP_CEA_6 481 177 1.00e-06 1.992
CT-EQUIL EquilibriumSolver TV run_validation_TV_CEA_1 351 94 1.00e-06 1.476
CT-EQUIL EquilibriumSolver TV run_validation_TV_CEA_2 351 213 1.00e-06 1.7019
CT-EQUIL EquilibriumSolver HP run_validation_HP_CEA_1 351 94 1.00e-03 2.0117
CT-EQUIL EquilibriumSolver HP run_validation_HP_CEA_2 351 94 1.00e-03 1.9549
CT-EQUIL EquilibriumSolver HP run_validation_HP_CEA_3 351 94 1.00e-03 1.9791
CT-EQUIL EquilibriumSolver HP run_validation_HP_CEA_4 351 94 1.00e-03 1.9141
CT-EQUIL EquilibriumSolver EV run_validation_EV_CEA_1 351 94 1.00e-03 1.9471
CT-EQUIL EquilibriumSolver SP run_validation_SP_CEA_1 351 94 1.00e-03 3.1354
CT-EQUIL EquilibriumSolver SV run_validation_SV_CEA_1 351 94 1.00e-03 3.1185
CT-SD ShockSolver SHOCK_I run_validation_SHOCK_IONIZATION_CEA_1 260 51 1.00e-05 1.5735
CT-SD ShockSolver SHOCK_I run_validation_SHOCK_IONIZATION_CEA_2 260 61 1.00e-05 1.6415
CT-SD ShockSolver SHOCK_R run_validation_SHOCK_R_IONIZATION_CEA_1 225 51 1.00e-05 1.9375
CT-SD ShockSolver SHOCK_R run_validation_SHOCK_R_IONIZATION_CEA_2 225 61 1.00e-05 2.0467
CT-SD ShockSolver SHOCK_POLAR run_validation_SHOCK_POLAR_SDToolbox_1 4 11 1.00e-05 2.3553
CT-SD ShockSolver SHOCK_POLAR run_validation_SHOCK_POLAR_SDToolbox_2 4 13 1.00e-05 2.397
CT-SD DetonationSolver DET run_validation_DET_CEA_1 351 94 1.00e-05 2.4159
CT-SD DetonationSolver DET run_validation_DET_CEA_2 351 157 1.00e-05 3.0528
CT-SD DetonationSolver DET run_validation_DET_CEA_3 351 94 1.00e-05 2.0356
CT-SD DetonationSolver DET run_validation_DET_CEA_4 351 94 1.00e-05 1.893
CT-SD DetonationSolver DET_OVERDRIVEN run_validation_DET_OVERDRIVEN_SDToolbox_1 91 25 1.00e-05 1.287
CT-SD DetonationSolver DET_POLAR run_validation_DET_POLAR_SDToolbox_1 5 30 1.00e-05 2.7438
CT-ROCKET RocketSolver ROCKET_FAC run_validation_ROCKET_CEA_20 351 96 1.00e-04 12.305
CT-ROCKET RocketSolver ROCKET_FAC run_validation_ROCKET_CEA_21 351 96 1.00e-04 10.445
CT-ROCKET RocketSolver ROCKET_FAC run_validation_ROCKET_CEA_22 351 12 1.00e-04 5.1941
CT-ROCKET RocketSolver ROCKET_FAC run_validation_ROCKET_CEA_23 351 96 1.00e-04 10.516
CT-ROCKET RocketSolver ROCKET_IAC run_validation_ROCKET_CEA_24 351 12 1.00e-04 2.8258
CT-ROCKET RocketSolver ROCKET_IAC run_validation_ROCKET_CEA_25 351 12 1.00e-04 1.8727
𝗦𝘂𝗺𝗺𝗮𝗿𝘆 𝗕𝗲𝗻𝗰𝗵𝗺𝗮𝗿𝗸𝗶𝗻𝗴
Module Problem GroupCount sum_Cases mean_Cases sum_Species mean_Species sum_AvgTime mean_AvgTime
_________ ___________________ __________ _________ __________ ___________ ____________ ___________ ____________
CT-EQUIL TP 10 2636 263.6 890 89 13.42 1.342
CT-EQUIL TV 2 702 351 307 153.5 3.1779 1.589
CT-EQUIL HP 4 1404 351 376 94 7.8598 1.9649
CT-EQUIL EV 1 351 351 94 94 1.9471 1.9471
CT-EQUIL SP 1 351 351 94 94 3.1354 3.1354
CT-EQUIL SV 1 351 351 94 94 3.1185 3.1185
CT-SD SHOCK_I 2 520 260 112 56 3.2151 1.6075
CT-SD SHOCK_R 2 ...
Combustion Toolbox v1.2.0
This release introduces significant enhancements, new features, bug fixes, and performance improvements across multiple modules of the Combustion Toolbox.
New Features and Enhancements
1. New +turbulence subpackage
A dedicated suite for turbulence analysis.
-
HelmholtzSolverclass:- Implements Helmholtz-Hodge decomposition to separate 3D velocity fields into:
- Solenoidal Component (divergence-free)
- Dilatational Component (curl-free)
- Includes validation methods to ensure decomposition accuracy.
- Implements Helmholtz-Hodge decomposition to separate 3D velocity fields into:
-
TurbulenceSpectraclass:- Computes turbulence energy spectra using:
- Spherical Averaging
- Cross-Plane Averaging (configurable for
x,y, orzaxes)
- Provides functions to validate energy cascade properties and visualize spectra.
- Functions to compute probability density functions (PDFs) and integral length scales.
- New routines for computing and plotting joint-PDFs with advanced visualization features.
- Computes turbulence energy spectra using:
-
VelocityFieldclass:- Encapsulates 3D velocity field data (
u,v,w) and offers:- Methods for computing magnitudes.
- Utilities for normalizing and scaling velocity fields.
- Encapsulates 3D velocity field data (
2. New HTR Data Utility classes
A dedicated HTR data handling module has been introduced to facilitate postprocessing and data analysis from HTR solver simulations.
- HTR Data Handling:
HTRDataReaderclass: Reads simulation data from the HTR solver, extracting velocity, temperature, pressure, and species concentration fields.HTRDataAverageclass: Provides postprocessing utilities for averaging HTR simulation results, computing spatial and temporal averages of key flow properties.
3. Refactored EquationState class
Significant refactoring has been performed in the Mixture class to improve flexibility, maintainability, and computational efficiency.
- Introduced
EquationStateas an abstract base class for different equations of state. - New
EquationStateIdealGasclass implements the ideal gas law:-
getPressure(T, V): Computes pressure using$P = \frac{RT}{V}$ . -
getVolume(T, P): Computes molar volume using$V = \frac{RT}{P}$ .
-
- This structure prepares the framework for future real gas models (e.g., Peng-Robinson, BKW, Heuzé EOS).
4. Improved Mixture class Computation
-
Refactored Methods:
updateComposition()to handle composition changes independently.updateThermodynamics()to compute thermodynamic properties without redundant recalculations.
-
Optimized State-Setting:
setTemperature(),setPressure(), andsetVolume()now trigger only necessary updates, avoiding redundant logic.
-
Performance Improvements:
- Removed unnecessary unit conversions in shock and detonation solvers.
- Optimized the
ChemicalSystemclass by avoidinggetmethods forindexElementsandindexSpecies, reducing overhead. - Improved
Unitsclass performance by replacing handle functions with direct conversion factors.
-
New
MixtureConfigclass:- Introduced to handle configuration settings for
Mixtureobjects. - Supports
mol,molar fraction, ormass fractioncomposition units. - Allows for compact composition output using the
FLAG_COMPACToption.
- Introduced to handle configuration settings for
-
Include
setTemperatureSpeciesmethod to define initial temperatures for each species in a mixture.-
Key Features:
- Custom initialization of temperatures for individual species.
- Automatic computation of equilibrium temperature.
- Thermodynamic recalculations after changes in composition.
-
Example Usage:
set(mix, {'CH4'}, 'fuel', 1); set(mix, {'O2'}, 'oxidizer', 1); setTemperatureSpecies(mix, [300, 350]);
-
5. New Standalone Installer (INSTALL_STANDALONE.sh)
A cross-platform Bash script to automate installation of the standalone version.
-
Key Features:
- Detects the operating system (Windows, macOS, or Linux).
- Fetches the latest release assets from GitHub.
- Extracts and executes the appropriate installer.
-
Usage Instructions:
sh INSTALL_STANDALONE.sh
-
Repository Optimization:
- Standalone installers are no longer stored in the repository.
- They are now included as release assets to reduce repository size and improve maintainability.
Bug Fixes and Refinements
- Fixed errors in thermochemical property calculations using the frozen approximation.
- Resolved issues with internal energy and enthalpy calculations in the
Speciesobject. - Fixed
molesGuessbug inMixture, ensuring proper behavior whenindexProductsdiffers fromindexSpecies. - Corrected errors in
rocketFACmethod for subsonic regions. - Fixed
setListSpeciesmethod when complete combustion is selected. - Extended equivalence ratio range in
EXAMPLE_HP_COMPLETE_INCOMPLETEto observe soot formation. - Updated comments and documentation for clarity and maintainability.
Full Changelog: v1.1.3...v1.2.0
Combustion Toolbox v1.1.3
What's Changed
The main database file (DB.mat) is now generated locally on the user's computer during installation instead of being pre-included. The INSTALL.m routine has been updated to perform this database generation, and standalone apps for all operating systems have been adjusted to incorporate these changes. Additionally, the validation/figures folder is no longer tracked in the repository to save space; it can be generated by running:
run_validation_CEA.mrun_validation_SDToolbox.mrun_validation_TEA.m
Note: The validations/figures directory must be created manually using:
mkdir(fullfile('validations', 'figures'));Full Changelog: v1.1.2...v1.1.3
Combustion Toolbox v1.1.2
What's Changed
- Solve: size error
generateDatabasewhen DB.mat is loaded from cache by @AlbertoCuadra in #997
Full Changelog: v1.1.1...v1.1.2
Combustion Toolbox v1.1.1
What's Changed
- Force recompilation to resolve version mismatch issues between MATLAB FileExchange and GitHub
- Add: example
SHOCK_I_THERMO.mby @AlbertoCuadra in #989 - Solve: address minor plotting errors in the
plotFigureroutine for improved visualization of variables
Full Changelog: v1.1.0...v1.1.1
Combustion Toolbox v1.1.0
Major changes
-
Object-oriented: Combustion Toolbox is now object-oriented in v1.1.0. This transition enhances integration with other frameworks, boosts performance, and improves encapsulation. The three main modules, CT-EQUIL, CT-SD, and CT-ROCKET, now rely on the
EquilibriumSolver,ShockSolver,DetonationSolver, andRocketSolverclasses. -
New algorithm for initial chemical composition estimation: The estimation of initial gaseous species composition has been upgraded from a fixed value approach to a more sophisticated max-min composition method, akin to the Mutation++ code. This estimation, solved using the Simplex algorithm (see Simplex.m and SimplexDual.m), provides more accurate and reliable results for all the species involved, including condensed species.
-
Improved chemical equilibrium solver: The chemical equilibrium solver, encapsulated in the
EquilibriumSolverclass, now includes slack variables to manage the composition of condensed species at chemical equilibrium. This approach, inspired by the Reaktoro and FastChem-Condensed codes, allows for simultaneous computation of all condensed species that meet the vapor pressure test. -
Performance improvements: The new version offers a significant performance boost, with the code running 1.3x to 1.9x faster than v1.0.5.
-
Cached thermodynamic functions: The thermodynamic functions are typically the most called routines when using the Combustion Toolbox. Although their performance was already fast, these functions are now temporarily stored in the cache for even faster data access.
-
New code organization: The code components are now organized using namespaces (
+folders), ensuring a more structured and maintainable codebase. -
Full Changelog: For a detailed list of changes, visit the Full Changelog.
Full Changelog: v1.0.5...v1.1.0
Combustion Toolbox v1.1.0beta
Major changes
-
Object-oriented: Combustion Toolbox is now object-oriented in v1.1.0beta. This transition enhances integration with other frameworks, boosts performance, and improves encapsulation. The three main modules, CT-EQUIL, CT-SD, and CT-ROCKET, now rely on the
EquilibriumSolver,ShockSolver,DetonationSolver, andRocketSolverclasses. -
New algorithm for initial chemical composition estimation: Previous versions used a fixed value for estimating the initial composition of gaseous species. This has been improved by implementing a max-min composition method, similar to the Mutation++ code, and solved using the Simplex algorithm (refer to
Simplex.mandSimplexDual.m). -
Faster and more robust chemical equilibrium kernel: The chemical equilibrium solver, encapsulated in the
EquilibriumSolverclass, now includes slack variables to manage the composition of condensed species at chemical equilibrium. This approach, inspired by the Reaktoro and FastChem-Condensed codes, allows for simultaneous computation of all condensed species that meet the vapor pressure test. -
Cached thermodynamic functions: The thermodynamic functions are typically the most called routines when using the Combustion Toolbox. Although their performance was already fast, now these functions are temporarily stored in the cache for even faster data access.
-
New code organization: The code components are now organized using namespaces (
+folders), ensuring a more structured and maintainable codebase. -
Full Changelog: For a detailed list of changes, visit the Full Changelog.
Combustion Toolbox v1.0.5
What's Changed
- Update: typo by @AlbertoCuadra in #939
- Update: typos by @AlbertoCuadra in #940
- Solve: hotfix error chemical equilibria with inert species by @AlbertoCuadra in #941
- Update: compile CT v1.0.5 by @AlbertoCuadra in #942
Full Changelog: v1.0.4...v1.0.5