Skip to content

Releases: CombustionToolbox/combustion_toolbox

Combustion Toolbox v1.2.9

15 Jan 10:37
bf0ea08

Choose a tag to compare

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:

$$ \left(\frac{\partial p_2}{\partial \phi}\right)_{\rho_2} = \frac{\partial p_2}{\partial \phi} - \frac{\partial p_2}{\partial M_1} \frac{\left(\partial \rho_2/\partial \phi\right)}{\left(\partial \rho_2/\partial M_1\right)} , \qquad \phi \in {T_1, p_1} $$

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 returns mixArray1 and mixArray2, 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.

CleanShot 2026-01-15 at 11 26 44 CleanShot 2026-01-15 at 11 35 28

4. Bug fixes

  • Invoke clean() / cleanMoles() when updating ChemicalSystem.propertiesMatrix to avoid stale values
  • Fix chemical equilibrium failures at low temperature when ionized species may be present

5. Minor changes

  • Added eta, chi, etaVorticity, and lia as properties of Mixture class
  • Included printing option in Mixtureclass for SHOCKTURBULENCE_* problems
  • Added missing labels in the interpreterLabel utility function

Full Changelog: v1.2.8...v1.2.9

Combustion Toolbox v1.2.8

08 Jan 15:35
905540a

Choose a tag to compare

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:

  1. Computation of shock jump conditions using EquilibriumSolver, ShockSolver, and JumpConditionsSolver
  2. Selection of the appropriate turbulence interaction model based on the prescribed upstream disturbance type
  3. Spectral integration of post-shock turbulence statistics
  4. Optional reporting and visualization of results

The solver dispatches to a specific turbulence model via the problemType
argument:

  • vortical
  • vortical_entropic
  • acoustic
  • compressible

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:

  • ShockTurbulenceModelVortical
  • ShockTurbulenceModelVorticalEntropic
  • ShockTurbulenceModelAcoustic
  • ShockTurbulenceModelCompressible

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 $\chi$ prescribes the correlation between entropic density fluctuations and vortical velocity perturbations in the upstream turbulence. This quantity represents dilatational content implicit in the vortical-entropic mode and does not correspond to propagating acoustic energy.

Following Eq. (3.9) of the reference formulation, $\chi$ is defined as

$$ \langle \chi \rangle = \frac{\langle \delta \rho_1^e \delta u_1^r\rangle}{\langle \delta u_1^r \delta u_1^r \rangle} \frac{\langle c_1 \rangle}{\langle \rho_1 \rangle},$$

where $\delta \rho_1^e$ denotes entropic density fluctuations, $\delta u_1^r$ denotes rotational (vortical) velocity fluctuations, and $c_1$ and $\rho_1$ are the upstream speed of sound and density.

Dilatational-to-Solenoidal TKE Ratio (eta)

The parameter $\eta$ controls the relative contribution of propagating acoustic (dilatational) fluctuations to the upstream turbulent kinetic energy. It is defined as

$$\eta = \frac{\text{TKE}_{1a}}{\text{TKE}_{1r}},$$

where $TKE_{1a}$ and $TKE_{1r}$ denote the acoustic and vortical-entropic contributions to the upstream turbulent kinetic energy, respectively.

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 chi and eta

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 numPointsPrandtMeyer during ShockSolver definition

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 tracePrandtlMeyerExpansion under 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

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 $\theta_2 \in [0, 82^\circ]$ in an air mixture (79% $\text{N}_2$ / 21% $\text{O}_2$) at a free-stream Mach number $\mathcal{M}_1 = 1$.

test_validation

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:

  • perfect
  • thermallyPerfect
  • imperfect

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...
Read more

Combustion Toolbox v1.2.7

14 Oct 18:16
1a55274

Choose a tag to compare

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 ShockTurbulenceSolver module.

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

  • setEntropy
  • setEnthalpy
  • setInternalEnergy

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         ...
Read more

Combustion Toolbox v1.2.0

16 Mar 09:17
dd1636a

Choose a tag to compare

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.

  • HelmholtzSolver class:

    • 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.
  • TurbulenceSpectra class:

    • Computes turbulence energy spectra using:
      • Spherical Averaging
      • Cross-Plane Averaging (configurable for x, y, or z axes)
    • 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.
  • VelocityField class:

    • Encapsulates 3D velocity field data (u, v, w) and offers:
      • Methods for computing magnitudes.
      • Utilities for normalizing and scaling velocity fields.

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:
    • HTRDataReader class: Reads simulation data from the HTR solver, extracting velocity, temperature, pressure, and species concentration fields.
    • HTRDataAverage class: 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 EquationState as an abstract base class for different equations of state.
  • New EquationStateIdealGas class 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(), and setVolume() now trigger only necessary updates, avoiding redundant logic.
  • Performance Improvements:

    • Removed unnecessary unit conversions in shock and detonation solvers.
    • Optimized the ChemicalSystem class by avoiding get methods for indexElements and indexSpecies, reducing overhead.
    • Improved Units class performance by replacing handle functions with direct conversion factors.
  • New MixtureConfig class:

    • Introduced to handle configuration settings for Mixture objects.
    • Supports mol, molar fraction, or mass fraction composition units.
    • Allows for compact composition output using the FLAG_COMPACT option.
  • Include setTemperatureSpecies method 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 Species object.
  • Fixed molesGuess bug in Mixture, ensuring proper behavior when indexProducts differs from indexSpecies.
  • Corrected errors in rocketFAC method for subsonic regions.
  • Fixed setListSpecies method when complete combustion is selected.
  • Extended equivalence ratio range in EXAMPLE_HP_COMPLETE_INCOMPLETE to observe soot formation.
  • Updated comments and documentation for clarity and maintainability.

Full Changelog: v1.1.3...v1.2.0

Combustion Toolbox v1.1.3

10 Nov 12:43

Choose a tag to compare

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.m
  • run_validation_SDToolbox.m
  • run_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

04 Nov 15:24

Choose a tag to compare

What's Changed

  • Solve: size error generateDatabase when DB.mat is loaded from cache by @AlbertoCuadra in #997

Full Changelog: v1.1.1...v1.1.2

Combustion Toolbox v1.1.1

04 Nov 15:01

Choose a tag to compare

What's Changed

  • Force recompilation to resolve version mismatch issues between MATLAB FileExchange and GitHub
  • Add: example SHOCK_I_THERMO.m by @AlbertoCuadra in #989
  • Solve: address minor plotting errors in the plotFigure routine for improved visualization of variables

Full Changelog: v1.1.0...v1.1.1

Combustion Toolbox v1.1.0

03 Sep 19:32

Choose a tag to compare

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, and RocketSolver classes.

  • 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 EquilibriumSolver class, 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

05 Aug 11:52

Choose a tag to compare

Pre-release

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, and RocketSolver classes.

  • 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.m and SimplexDual.m).

  • Faster and more robust chemical equilibrium kernel: The chemical equilibrium solver, encapsulated in the EquilibriumSolver class, 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

29 Jan 13:51

Choose a tag to compare

What's Changed

Full Changelog: v1.0.4...v1.0.5