Shock–Turbulence Interaction module#

In this section, you will find the documentation of the shock–turbulence interaction (STI) module, which implements Linear Interaction Analysis (LIA) to quantify turbulence amplification across a shock wave interacting with weak upstream turbulence.

The module supports vortical, entropic, and acoustic disturbances, as well as fully compressible turbulent fields, under the assumptions of linear perturbations, inviscid flow, and thermochemical equilibrium across a thin relaxation layer. The formulation is based on our recent work:

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)

ShockTurbulenceSolver#

class ShockTurbulenceSolver(varargin)#

Bases: handle

The ShockTurbulenceSolver() class characterizes turbulence amplification across a shock wave interacting with weak turbulence using linear interaction analysis.

Uptream turbulence can be comprised of the following type of disturbances:
  • vortical (shockTurbulenceModelVortical)

  • acoustic (shockTurbulenceModelAcoustic)

  • vortical + entropic (shockTurbulenceModelVorticalEntropic)

  • vortical + entropic + acoustic (shockTurbulenceModelCompressible)

These models are based on our previous theoretical works [1-3] and have been extended to multi-component mixtures [4-7] using the Combustion Toolbox [8-9].

References

[1] Huete, C., Cuadra, A., Vera, M., Urzay, & J. (2021). Thermochemical

effects on hypersonic shock waves interacting with weak turbulence. Physics of Fluids 33, 086111 (featured article). DOI: 10.1063/5.0059948.

[2] Huete, C., Velikovich, A. L., & Wouchuk, J. G. (2011). Analytical linear theory

for the interaction of a planar shock wave with a two-or three-dimensional random isotropic density field. Physical Review E—Statistical, Nonlinear, and Soft Matter Physics, 83(5), 056320. DOI: 10.1103/PhysRevE.83.056320.

[3] Huete, C., Wouchuk, J. G., & Velikovich, A. L. (2012). Analytical linear theory

for the interaction of a planar shock wave with a two-or three-dimensional random isotropic acoustic wave field. Physical Review E—Statistical, Nonlinear, and Soft Matter Physics, 85(2), 026312. DOI: 10.1063/5.0059948.

[4] Cuadra, A., Vera, M., Di Renzo, M., & Huete, C. (2023). Linear Theory

of Hypersonic Shocks Interacting with Turbulence in Air. In 2023 AIAA SciTech Forum, National Harbor, USA. DOI: 10.2514/6.2023-0075.

[5] Cuadra, A., Williams, C. T., Di Renzo, M. & Huete, C. (2024). Compressibility

and vibrational-excitation effects in hypersonic shock-turbulence interaction. Tech. Rep. Summer Program Proceedings, Center for Turbulence Research, Stanford University.

[6] 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).

[7] Cuadra, A., Di Renzo, M., Hoste, J. J. O., Williams, C. T., Vera, M., & Huete, C. (2025).

Review of shock-turbulence interaction with a focus on hypersonic flow. Physics of Fluids, 37(4). DOI: 10.1063/5.0255816.

[8] Cuadra, A., Huete, C., & Vera, M. (2026). Combustion Toolbox: An open-source

thermochemical code for gas-and condensed-phase problems involving chemical equilibrium. Computer Physics Communications 320, 110004. DOI:10.1016/j.cpc.2025.110004.

[9] Cuadra, A., Huete, C., Vera, M. (2022). Combustion Toolbox:

A MATLAB-GUI based open-source tool for solving gaseous combustion problems. Zenodo. DOI: 10.5281/zenodo.5554911.

FLAG_INTERPOLATE = 'true'#

Flag to interpolate data in a smaller grid

FLAG_PAPER = 'false'#

Flag to compute Gammas_i as in Cuadra2024b

FLAG_REPORT = 'false'#

Flag to print predefined plots

FLAG_RESULTS = 'false'#

Flag to show results in the command window

FLAG_TIME = 'true'#

Flag to print elapsed time

ShockTurbulenceSolver(varargin)#

Constructor of the ShockTurbulenceSolver class

equilibriumSolver = None#

EquilibriumSolver object

static getDynamicViscosityPowerLawRatio(T1, T2)#

Get dynamic viscosity ratio using a power-law model

Parameters:
  • T1 (float) – Pre-shock temperature [K]

  • T2 (float) – Post-shock temperature [K]

Returns:

muRatio (float) – Dynamic viscosity ratio mu2/mu1

Note: This is a temporal function and will be overriden with a specific TransportProperties class in future releases.

static getDynamicViscositySutherlandRatio(T1, T2)#

Get dynamic viscosity ratio using Sutherland’s law model

Parameters:
  • T1 (float) – Pre-shock temperature [K]

  • T2 (float) – Post-shock temperature [K]

Returns:

muRatio (float) – Dynamic viscosity ratio mu2/mu1

Note: This is a temporal function and will be overriden with a specific TransportProperties class in future releases.

getKolmogorovLength(results, varargin)#

Estimate Kolmogorov length scale ratio across the shock

Parameters:
  • obj (ShockTurbulenceSolver) – ShockTurbulenceSolver object

  • results (struct) – Struct with results from LIA

Optional name-value pairs:
  • viscosityModel (char): Viscosity model to compute dynamic viscosity ratio across the shock (‘powerlaw’ or ‘sutherland’)

Returns:

kolmogorovLengthRatio (float) – Kolmogorov length scale ratio

Example

kolmogorovLengthRatio = getKolmogorovLength(ShockTurbulenceSolver(), results);

Note: The calculation of the dynamic viscosity ratio is based on temporal functions and will be overriden with a specific TransportProperties class in future releases.

jumpConditionsSolver = None#

JumpConditionsSolver object

plot(results)#

Plot results

Parameters:
  • obj (ShockTurbulenceSolver) – ShockTurbulenceSolver object

  • results (struct) – Results from the Linear Interaction Analysis

Example

  • plot(ShockTurbulenceSolver(), results);

plotConfig = None#

PlotConfig object

printTime()#

Print execution time

Parameters:

obj (ShockTurbulenceSolver()) – Object of the class ShockTurbulenceSolver

problemType = None#

Problem type

report(results)#

Postprocess all the results with predefined plots

Parameters:
  • obj (ShockTurbulenceSolver) – ShockTurbulenceSolver object

  • results (struct) – Results from the Linear Interaction Analysis

Example

  • report(ShockTurbulenceSolver(), results);

shockSolver = None#

ShockSolver object

shockTurbulenceModel = None#

ShockTurbulenceModel object

solve(mixArray, varargin)#

Solve shock waves problems

Parameters:
  • obj (ShockTurbulenceSolver) – ShockTurbulenceSolver object

  • mixArray (Mixture) – Initial Mixture objects

Returns:

results (struct) – Struct with results from LIA

Example

  • results = solve(ShockTurbulenceSolver(), mixArray);

time = None#

Elapsed time

ShockTurbulenceModel#

ShockTurbulenceModelVortical#

class ShockTurbulenceModelVortical(varargin)#

Bases: combustiontoolbox.shockturbulence.ShockTurbulenceModel

The ShockTurbulenceModelVortical() class characterizes turbulence amplification across a shock wave interacting with weak turbulence comprised of vortical disturbances using linear theory.

These models are based on our previous theoretical work [1] and have been extended to multi-component mixtures [2-5] using the Combustion Toolbox [6-7].

References

[1] Huete, C., Cuadra, A., Vera, M., Urzay, & J. (2021). Thermochemical

effects on hypersonic shock waves interacting with weak turbulence. Physics of Fluids 33, 086111 (featured article). DOI: 10.1063/5.0059948.

[2] Cuadra, A., Vera, M., Di Renzo, M., & Huete, C. (2023). Linear Theory

of Hypersonic Shocks Interacting with Turbulence in Air. In 2023 AIAA SciTech Forum, National Harbor, USA. DOI: 10.2514/6.2023-0075.

[3] Cuadra, A., Williams, C. T., Di Renzo, M. & Huete, C. (2024). Compressibility

and vibrational-excitation effects in hypersonic shock-turbulence interaction. Tech. Rep. Summer Program Proceedings, Center for Turbulence Research, Stanford University.

[4] 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).

[5] Cuadra, A., Di Renzo, M., Hoste, J. J. O., Williams, C. T., Vera, M., & Huete, C. (2025).

Review of shock-turbulence interaction with a focus on hypersonic flow. Physics of Fluids, 37(4). DOI: 10.1063/5.0255816.

[6] Cuadra, A., Huete, C., & Vera, M. (2026). Combustion Toolbox: An open-source

thermochemical code for gas-and condensed-phase problems involving chemical equilibrium. Computer Physics Communications 320, 110004. DOI:10.1016/j.cpc.2025.110004.

[7] Cuadra, A., Huete, C., Vera, M. (2022). Combustion Toolbox:

A MATLAB-GUI based open-source tool for solving gaseous combustion problems. Zenodo. DOI: 10.5281/zenodo.5554911.

R11(R, M2, Gammas)#

Compute the total longitudinal TKE amplification ratio (rotational + acoustic)

R11a(R, M2, Gammas)#

Compute the acoustic contribution of the longitudinal TKE amplification ratio (shortwave: zeta > 1)

R11r(R, M2, Gammas)#

Compute the total rotational contribution of the longitudinal TKE amplification ratio (longwave + shortwave)

R11rl(R, M2, Gammas)#

Compute the rotational contribution of the longitudinal TKE amplification ratio (longwave: zeta < 1)

R11rs(R, M2, Gammas)#

Compute the rotational contribution of the longitudinal TKE amplification ratio (shortwave: zeta > 1)

RTT(R, M2, Gammas)#

Compute the total transverse TKE amplification ratio (rotational + acoustic)

RTTa(R, M2, Gammas)#

Compute the acoustic contribution of the transverse TKE amplification ratio (shortwave: zeta > 1)

RTTr(R, M2, Gammas)#

Compute the total rotational contribution of the transverse TKE amplification ratio (longwave + shortwave)

RTTrl(R, M2, Gammas)#

Compute the rotational contribution of the transverse TKE amplification ratio (longwave: zeta < 1)

RTTrs(R, M2, Gammas)#

Compute the rotational contribution of the transverse TKE amplification ratio (shortwave: zeta > 1)

ShockTurbulenceModelVortical(varargin)#

Constructor

Optional Args:

varargin (optional): key-value pairs to initialize the database

Returns:

obj (ShockTurbulenceModelVortical) – ShockTurbulenceModelVortical object

Examples

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelVortical();

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelVortical(‘dimensions’, 3);

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelVortical(‘tolIntegralRelative’, 1e-6);

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelVortical(‘tolIntegralAbsolute’, 1e-10);

enstrophy33(R, M2, Gammas)#

Compute the total enstrophy amplification ratio (longwave + shortwave)

enstrophy33l(R, M2, Gammas)#

Compute the longwave contribution of the enstrophy amplification ratio (longwave: zeta < 1)

enstrophy33s(R, M2, Gammas)#

Compute the shortwave contribution of the enstrophy amplification ratio (shortwave: zeta > 1)

getAverages(R, M2, Gammas)#

Compute the post-shock turbulence statistics for vortical disturbances

Parameters:
  • obj (ShockTurbulenceModelVortical) – ShockTurbulenceModelVortical object

  • R (float) – Density ratio (rho2/rho1)

  • M2 (float) – Post-shock Mach number

  • Gammas (float) – Inverse normalized Hugoniot slope

Returns:

averages (struct) – Structure with averages of post-shock turbulence statistics (e.g., Reynolds stresses, turbulent kinetic energy, enstrophy, etc.)

Example

averages = getAverages(ShockTurbulenceModelVortical(), R, M2, Gammas);

printCheck(R, M2, Gammas, zeta)#

Debugging function to print the results of the calculations

setPDF()#

Define the probability density function (PDF) used to weigh different wavenumber contributions in the post-shock turbulence model

Parameters:

obj (ShockTurbulenceModelVortical) – ShockTurbulenceModelVortical object

Returns:

obj (ShockTurbulenceModelVortical) – Updated ShockTurbulenceModelVortical object with PDF set

ShockTurbulenceModelVorticalEntropic#

class ShockTurbulenceModelVorticalEntropic(varargin)#

Bases: combustiontoolbox.shockturbulence.ShockTurbulenceModel

The ShockTurbulenceModelVorticalEntropic() class characterizes turbulence amplification across a shock wave interacting with weak turbulence comprised of vortical-entropic disturbances using linear theory.

These models are based on our previous theoretical works [1-2] and have been extended to multi-component mixtures [3-6] using the Combustion Toolbox [7-8].

References

[1] Huete, C., Cuadra, A., Vera, M., Urzay, & J. (2021). Thermochemical

effects on hypersonic shock waves interacting with weak turbulence. Physics of Fluids 33, 086111 (featured article). DOI: 10.1063/5.0059948.

[2] Huete, C., Velikovich, A. L., & Wouchuk, J. G. (2011). Analytical linear theory

for the interaction of a planar shock wave with a two-or three-dimensional random isotropic density field. Physical Review E—Statistical, Nonlinear, and Soft Matter Physics, 83(5), 056320. DOI: 10.1103/PhysRevE.83.056320.

[3] Cuadra, A., Vera, M., Di Renzo, M., & Huete, C. (2023). Linear Theory

of Hypersonic Shocks Interacting with Turbulence in Air. In 2023 AIAA SciTech Forum, National Harbor, USA. DOI: 10.2514/6.2023-0075.

[4] Cuadra, A., Williams, C. T., Di Renzo, M. & Huete, C. (2024). Compressibility

and vibrational-excitation effects in hypersonic shock-turbulence interaction. Tech. Rep. Summer Program Proceedings, Center for Turbulence Research, Stanford University.

[5] 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).

[6] Cuadra, A., Di Renzo, M., Hoste, J. J. O., Williams, C. T., Vera, M., & Huete, C. (2025).

Review of shock-turbulence interaction with a focus on hypersonic flow. Physics of Fluids, 37(4). DOI: 10.1063/5.0255816.

[7] Cuadra, A., Huete, C., & Vera, M. (2026). Combustion Toolbox: An open-source

thermochemical code for gas-and condensed-phase problems involving chemical equilibrium. Computer Physics Communications 320, 110004. DOI:10.1016/j.cpc.2025.110004.

[8] Cuadra, A., Huete, C., Vera, M. (2022). Combustion Toolbox:

A MATLAB-GUI based open-source tool for solving gaseous combustion problems. Zenodo. DOI: 10.5281/zenodo.5554911.

R11(R, M2, Gammas, Gammas1, beta, chi)#

Compute the total longitudinal TKE amplification ratio (rotational + acoustic)

R11a(R, M2, Gammas, Gammas1, beta, chi)#

Compute the acoustic contribution of the longitudinal TKE amplification ratio (shortwave: zeta > 1)

R11r(R, M2, Gammas, Gammas1, beta, chi)#

Compute the total rotational contribution of the longitudinal TKE amplification ratio (longwave + shortwave)

R11rl(R, M2, Gammas, Gammas1, beta, chi)#

Compute the rotational contribution of the longitudinal TKE amplification ratio (longwave: zeta < 1)

R11rs(R, M2, Gammas, Gammas1, beta, chi)#

Compute the rotational contribution of the longitudinal TKE amplification ratio (shortwave: zeta > 1)

RTT(R, M2, Gammas, Gammas1, beta, chi)#

Compute the total transverse TKE amplification ratio (rotational + acoustic)

RTTa(R, M2, Gammas, Gammas1, beta, chi)#

Compute the acoustic contribution of the transverse TKE amplification ratio (shortwave: zeta > 1)

RTTr(R, M2, Gammas, Gammas1, beta, chi)#

Compute the total rotational contribution of the transverse TKE amplification ratio (longwave + shortwave)

RTTrl(R, M2, Gammas, Gammas1, beta, chi)#

Compute the rotational contribution of the transverse TKE amplification ratio (longwave: zeta < 1)

RTTrs(R, M2, Gammas, Gammas1, beta, chi)#

Compute the rotational contribution of the transverse TKE amplification ratio (shortwave: zeta > 1)

ShockTurbulenceModelVorticalEntropic(varargin)#

Constructor

Optional Args:

varargin (optional): key-value pairs to initialize the database

Returns:

obj (ShockTurbulenceModelVorticalEntropic) – ShockTurbulenceModelVorticalEntropic object

Examples

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelVorticalEntropic();

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelVorticalEntropic(‘dimensions’, 3);

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelVorticalEntropic(‘tolIntegralRelative’, 1e-6);

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelVorticalEntropic(‘tolIntegralAbsolute’, 1e-10);

enstrophy33(R, M2, Gammas, Gammas1, beta, chi)#

Compute the total enstrophy amplification ratio (longwave + shortwave)

enstrophy33l(R, M2, Gammas, Gammas1, beta, chi)#

Compute the longwave contribution of the enstrophy amplification ratio (longwave: zeta < 1)

enstrophy33s(R, M2, Gammas, Gammas1, beta, chi)#

Compute the shortwave contribution of the enstrophy amplification ratio (shortwave: zeta > 1)

getAverages(R, M2, Gammas, Gammas1, beta, chi)#

Compute the post-shock turbulence statistics for vortical-entropic disturbances

Parameters:
  • obj (ShockTurbulenceModelVorticalEntropic) – ShockTurbulenceModelVorticalEntropic object

  • R (float) – Density ratio rho_2 / rho_1

  • M2 (float) – Post-shock Mach number

  • Gammas (float) – Inverse normalized Hugoniot slope, see Eq. (22) in [1] (Eq. (4) in [2])

  • Gammas1 (float) – Inverse normalized Hugoniot slope

  • beta (float) – Ratio of speed of sound in the post-shock state to the pre-shock state

  • chi (float) – mean correlation coefficient between the vortical and entropic modes

Returns:

averages (struct) – Structure with averages of post-shock turbulence statistics (e.g., Reynolds stresses, turbulent kinetic energy, enstrophy, etc.)

Example

averages = getAverages(ShockTurbulenceModelVorticalEntropic(), R, M2, Gammas, Gammas1, beta, chi);

printCheck(R, M2, Gammas, Gammas1, beta, chi, zeta)#

Debugging function to print the results of the calculations

setChiFunction()#

Set the chi function for the model.

Parameters:

obj (ShockTurbulenceModelVorticalEntropic) – ShockTurbulenceModelVorticalEntropic object

Returns:

obj (ShockTurbulenceModelVorticalEntropic) – Updated object with chi function set

setPDF()#

Define the probability density function (PDF) used to weigh different wavenumber contributions in the post-shock turbulence model

Parameters:

obj (ShockTurbulenceModelVorticalEntropic) – ShockTurbulenceModelVorticalEntropic object

Returns:

obj (ShockTurbulenceModelVorticalEntropic) – Updated ShockTurbulenceModelVorticalEntropic object with PDF set

ShockTurbulenceModelAcoustic#

class ShockTurbulenceModelAcoustic(varargin)#

Bases: combustiontoolbox.shockturbulence.ShockTurbulenceModel

The ShockTurbulenceModelAcoustic() class characterizes turbulence amplification across a shock wave interacting with weak turbulence comprised of acoustic disturbances using linear theory.

These models are based on our previous theoretical work [1] and have been extended to multi-component mixtures [2-3] using the Combustion Toolbox [4-5].

References

[1] Huete, C., Wouchuk, J. G., & Velikovich, A. L. (2012). Analytical linear theory

for the interaction of a planar shock wave with a two-or three-dimensional random isotropic acoustic wave field. Physical Review E—Statistical, Nonlinear, and Soft Matter Physics, 85(2), 026312. DOI: 10.1063/5.0059948.

[2] Cuadra, A., Williams, C. T., Di Renzo, M. & Huete, C. (2024). Compressibility

and vibrational-excitation effects in hypersonic shock-turbulence interaction. Tech. Rep. Summer Program Proceedings, Center for Turbulence Research, Stanford University.

[3] 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).

[4] Cuadra, A., Huete, C., & Vera, M. (2026). Combustion Toolbox: An open-source

thermochemical code for gas-and condensed-phase problems involving chemical equilibrium. Computer Physics Communications 320, 110004. DOI:10.1016/j.cpc.2025.110004.

[5] Cuadra, A., Huete, C., Vera, M. (2022). Combustion Toolbox:

A MATLAB-GUI based open-source tool for solving gaseous combustion problems. Zenodo. DOI: 10.5281/zenodo.5554911.

K(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the total longitudinal TKE amplification ratio (rotational + acoustic)

Ka(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the acoustic contribution of the longitudinal TKE amplification ratio (shortwave: zeta > 1)

Krl(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the rotational contribution of the longitudinal TKE amplification ratio (longwave: zeta < 1)

Krs(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the rotational contribution of the longitudinal TKE amplification ratio (shortwave: zeta > 1)

R11(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the total longitudinal TKE amplification ratio (rotational + acoustic)

R11a(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the acoustic contribution of the longitudinal TKE amplification ratio (shortwave: zeta > 1)

R11rl(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the rotational contribution of the longitudinal TKE amplification ratio (longwave: zeta < 1)

R11rs(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the rotational contribution of the longitudinal TKE amplification ratio (shortwave: zeta > 1)

RTT(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the total transverse TKE amplification ratio (rotational + acoustic)

RTTa(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the acoustic contribution of the transverse TKE amplification ratio (shortwave: zeta > 1)

RTTrl(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the rotational contribution of the transverse TKE amplification ratio (longwave: zeta < 1)

RTTrs(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the rotational contribution of the transverse TKE amplification ratio (shortwave: zeta > 1)

ShockTurbulenceModelAcoustic(varargin)#

Constructor

Optional Args:

varargin (optional): key-value pairs to initialize the database

Returns:

obj (ShockTurbulenceModelAcoustic) – ShockTurbulenceModelAcoustic object

Examples

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelAcoustic();

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelAcoustic(‘dimensions’, 3);

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelAcoustic(‘tolIntegralRelative’, 1e-6);

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelAcoustic(‘tolIntegralAbsolute’, 1e-10);

enstrophy(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the total enstrophy amplification ratio (longwave + shortwave)

enstrophyl(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the longwave contribution of the enstrophy amplification ratio (longwave: zeta < 1)

enstrophys(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the shortwave contribution of the enstrophy amplification ratio (shortwave: zeta > 1)

getAverages(R, M2, Gammas, Gammas1, Gammas3, beta)#

Compute the post-shock turbulence statistics for acoustic disturbances

Parameters:
  • obj (ShockTurbulenceModelAcoustic) – ShockTurbulenceModelAcoustic object

  • R (float) – Density ratio rho_2 / rho_1

  • M2 (float) – Post-shock Mach number

  • Gammas (float) – Inverse normalized Hugoniot slope, see Eq. (22) in [1] (Eq. (4) in [2])

  • Gammas3 (float) – Inverse normalized Hugoniot slope

  • beta (float) – Ratio of speed of sound in the post-shock state to the pre-shock state

Returns:

averages (struct) – Structure with averages of post-shock turbulence statistics (e.g., Reynolds stresses, turbulent kinetic energy, enstrophy, etc.)

Example

averages = getAverages(ShockTurbulenceModelAcoustic(), R, M2, Gammas, Gammas3, beta);

printCheck(R, M2, Gammas, Gammas1, Gammas3, beta, zeta)#

Debugging function to print the results of the calculations

setPDF()#

Define the probability density function (PDF) used to weigh different wavenumber contributions in the post-shock turbulence model

Parameters:

obj (ShockTurbulenceModelAcoustic) – ShockTurbulenceModelAcoustic object

Returns:

obj (ShockTurbulenceModelAcoustic) – Updated ShockTurbulenceModelAcoustic object with PDF set

ShockTurbulenceModelCompressible#

class ShockTurbulenceModelCompressible(varargin)#

Bases: combustiontoolbox.shockturbulence.ShockTurbulenceModel

The ShockTurbulenceModelCompressible() class characterizes turbulence amplification across a shock wave interacting with weak turbulence comprised of vortical-entropic and acoustic disturbances using linear theory.

These models are based on our previous theoretical works [1-3] and have been extended to multi-component mixtures [4-7] using the Combustion Toolbox [8-9].

References

[1] Huete, C., Cuadra, A., Vera, M., Urzay, & J. (2021). Thermochemical

effects on hypersonic shock waves interacting with weak turbulence. Physics of Fluids 33, 086111 (featured article). DOI: 10.1063/5.0059948.

[2] Huete, C., Velikovich, A. L., & Wouchuk, J. G. (2011). Analytical linear theory

for the interaction of a planar shock wave with a two-or three-dimensional random isotropic density field. Physical Review E—Statistical, Nonlinear, and Soft Matter Physics, 83(5), 056320. DOI: 10.1103/PhysRevE.83.056320.

[3] Huete, C., Wouchuk, J. G., & Velikovich, A. L. (2012). Analytical linear theory

for the interaction of a planar shock wave with a two-or three-dimensional random isotropic acoustic wave field. Physical Review E—Statistical, Nonlinear, and Soft Matter Physics, 85(2), 026312. DOI: 10.1063/5.0059948.

[4] Cuadra, A., Vera, M., Di Renzo, M., & Huete, C. (2023). Linear Theory

of Hypersonic Shocks Interacting with Turbulence in Air. In 2023 AIAA SciTech Forum, National Harbor, USA. DOI: 10.2514/6.2023-0075.

[5] Cuadra, A., Williams, C. T., Di Renzo, M. & Huete, C. (2024). Compressibility

and vibrational-excitation effects in hypersonic shock-turbulence interaction. Tech. Rep. Summer Program Proceedings, Center for Turbulence Research, Stanford University.

[6] 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).

[7] Cuadra, A., Di Renzo, M., Hoste, J. J. O., Williams, C. T., Vera, M., & Huete, C. (2025).

Review of shock-turbulence interaction with a focus on hypersonic flow. Physics of Fluids, 37(4). DOI: 10.1063/5.0255816.

[8] Cuadra, A., Huete, C., & Vera, M. (2026). Combustion Toolbox: An open-source

thermochemical code for gas-and condensed-phase problems involving chemical equilibrium. Computer Physics Communications 320, 110004. DOI:10.1016/j.cpc.2025.110004.

[9] Cuadra, A., Huete, C., Vera, M. (2022). Combustion Toolbox:

A MATLAB-GUI based open-source tool for solving gaseous combustion problems. Zenodo. DOI: 10.5281/zenodo.5554911.

ShockTurbulenceModelCompressible(varargin)#

Constructor

Optional Args:

varargin (optional): key-value pairs to initialize the database

Returns:

obj (ShockTurbulenceModelCompressible) – ShockTurbulenceModelCompressible object

Examples

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelCompressible();

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelCompressible(‘dimensions’, 3);

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelCompressible(‘tolIntegralRelative’, 1e-6);

  • shockTurbulenceModel = combustiontoolbox.shockturbulence.ShockTurbulenceModelCompressible(‘tolIntegralAbsolute’, 1e-10);

getAverages(R, M2, Gammas, Gammas1, Gammas3, beta, eta, chi, etaVorticity)#

Compute the post-shock turbulence statistics by superposing the contributions of acoustic and vortical-entropic fluctuations

Parameters:
  • obj (ShockTurbulenceModelCompressible) – ShockTurbulenceModelCompressible object

  • R (float) – Density ratio rho_2 / rho_1

  • M2 (float) – Post-shock Mach number

  • Gammas (float) – Inverse normalized Hugoniot slope, see Eq. (22) in [1] (Eq. (4) in [2])

  • Gammas1 (float) – Inverse normalized Hugoniot slope

  • Gammas3 (float) – Inverse normalized Hugoniot slope

  • beta (float) – Ratio of speed of sound in the post-shock state to the pre-shock state

  • eta (float) – square ratio of vortical to acoustic disturbances

  • chi (float) – mean correlation coefficient between the vortical and entropic modes

  • etaVorticity (float) – Downstream vorticity generated by acoustic disturbances across the shock normalized by the upstream rotational-entropic vorticity

Returns:

averages (struct) – Structure with averages of post-shock turbulence statistics (e.g., Reynolds stresses, turbulent kinetic energy, enstrophy, etc.)

Example

averages = getAverages(ShockTurbulenceModelCompressible(), R, M2, Gammas, Gammas1, Gammas3, beta, eta, chi, etaVorticity);

setPDF()#

Define the probability density function (PDF) used to weigh different wavenumber contributions in the post-shock turbulence model

Parameters:

obj (ShockTurbulenceModelCompressible) – ShockTurbulenceModelCompressible object

Returns:

obj (ShockTurbulenceModelCompressible) – Updated ShockTurbulenceModelCompressible object with PDF set