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., Vera, M., & Huete, C. (2026). The role of compressibility and vibrational excitation in hypersonic shock-turbulence interactions. Journal of Fluid Mechanics, 1032, A13. doi:10.1017/jfm.2026.11356.

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_PAPER = 'false'#

Flag to compute Gammas_i as in Cuadra2024b

FLAG_REPORT = 'false'#

Flag to print predefined plots

FLAG_RESULTS = 'true'#

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

getJumpConditions(mixArray1, varargin)#

Get jump conditions across the shock for an array of Mixture objects

Parameters:
  • obj (ShockTurbulenceSolver) – ShockTurbulenceSolver object

  • mixArray1 (Mixture) – Initial Mixture objects

Returns:

Tuple containing

  • jumpConditions (struct): Struct with jump conditions across the shock

  • mixArray1 (Mixture): Pre-shock Mixture objects

  • mixArray2 (Mixture): Post-shock Mixture objects

jumpConditionsSolver = None#

JumpConditionsSolver object

plot(averages, mixArray1, mixArray2)#

Plot results

Parameters:
  • obj (ShockTurbulenceSolver) – ShockTurbulenceSolver object

  • averages (struct) – Struct with averages from LIA

  • mixArray1 (Mixture) – Pre-shock Mixture objects

  • mixArray2 (Mixture) – Post-shock Mixture objects

Example

plot(ShockTurbulenceSolver(), mixArray1, mixArray2);

plotConfig = None#

PlotConfig object

printTime()#

Print execution time

Parameters:

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

problemType = None#

Problem type

problemTypeMixArray = None#

Accronym to set problemType in mixArray1 and mixArray2

report(averages, mixArray1, mixArray2)#

Postprocess all the results with predefined plots

Parameters:
  • obj (ShockTurbulenceSolver) – ShockTurbulenceSolver object

  • averages (struct) – Struct with averages from LIA

  • mixArray1 (Mixture) – Pre-shock Mixture objects

  • mixArray2 (Mixture) – Post-shock Mixture objects

Example

  • report(ShockTurbulenceSolver(), results);

setShockTurbulenceModel(shockTurbulenceModel)#

Set the ShockTurbulenceModel object or the name of the model

Parameters:
  • obj (ShockTurbulenceSolver) – ShockTurbulenceSolver object

  • shockTurbulenceModel (ShockTurbulenceModel or char) – ShockTurbulenceModel object or name of the model

Returns:

obj (ShockTurbulenceSolver) – ShockTurbulenceSolver object with updated ShockTurbulenceModel

shockSolver = None#

ShockSolver object

shockTurbulenceModel = None#

ShockTurbulenceModel object

solve(mixArray1, varargin)#

Solve array of shock waves problems

Parameters:
  • obj (ShockTurbulenceSolver) – ShockTurbulenceSolver object

  • mixArray1 (Mixture) – Initial Mixture objects

Returns:

Tuple containing

  • averages (struct): Struct with averages from LIA

  • mixArray1 (Mixture): Pre-shock Mixture objects

  • mixArray2 (Mixture): Post-shock Mixture objects

Example

  • [averages, mixArray1, mixArray2] = solve(ShockTurbulenceSolver(), mixArray1);

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(jumpConditions, mixArray1, mixArray2)#

Compute the post-shock turbulence statistics for vortical disturbances

Parameters:
  • obj (ShockTurbulenceModelVortical) – ShockTurbulenceModelVortical object

  • jumpConditions (struct) – Structure with jump conditions across the shock wave

  • mixArray1 (Mixture) – Pre-shock Mixture objects

  • mixArray2 (Mixture) – Post-shock Mixture objects

Returns:

Tuple containing

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

  • mixArray1 (Mixture): Pre-shock Mixture objects

  • mixArray2 (Mixture): Post-shock Mixture objects

Example

[averages, mixArray1, mixArray2] = getAverages(ShockTurbulenceModelVortical(), jumpConditions, mixArray1, mixArray2);

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(jumpConditions, mixArray1, mixArray2)#

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

Parameters:
  • obj (ShockTurbulenceModelVorticalEntropic) – ShockTurbulenceModelVorticalEntropic object

  • jumpConditions (struct) – Structure with jump conditions across the shock wave

  • mixArray1 (Mixture) – Pre-shock Mixture objects

  • mixArray2 (Mixture) – Post-shock Mixture objects

Returns:

Tuple containing

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

  • mixArray1 (Mixture): Pre-shock Mixture objects

  • mixArray2 (Mixture): Post-shock Mixture objects

Example

[averages, mixArray1, mixArray2] = getAverages(ShockTurbulenceModelVorticalEntropic(), jumpConditions, mixArray1, mixArray2);

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(jumpConditions, mixArray1, mixArray2)#

Compute the post-shock turbulence statistics for acoustic disturbances

Parameters:
  • obj (ShockTurbulenceModelAcoustic) – ShockTurbulenceModelAcoustic object

  • jumpConditions (struct) – Structure with jump conditions across the shock wave

  • mixArray1 (Mixture) – Pre-shock Mixture objects

  • mixArray2 (Mixture) – Post-shock Mixture objects

Returns:

Tuple containing

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

  • mixArray1 (Mixture): Pre-shock Mixture objects

  • mixArray2 (Mixture): Post-shock Mixture objects

Example

[averages, mixArray1, mixArray2] = getAverages(ShockTurbulenceModelAcoustic(), jumpConditions, mixArray1, mixArray2);

getKolmogorovLength(averages, mixArray1, mixArray2)#

Estimate Kolmogorov length scale ratio across the shock

Parameters:
  • obj (ShockTurbulenceSolver) – ShockTurbulenceSolver object

  • averages (struct) – Struct with averages from LIA

  • mixArray1 (Mixture) – Pre-shock Mixture array

  • mixArray2 (Mixture) – Post-shock Mixture array

Returns:

kolmogorovLengthRatio (float) – Kolmogorov length scale ratio

Example

kolmogorovLengthRatio = getKolmogorovLength(ShockTurbulenceSolver(), averages, mixArray1, mixArray2);

Note: For acoustic disturbances, the Kolmogorov length scale ratio is not defined

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(jumpConditions, mixArray1, mixArray2)#

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

Parameters:
  • obj (ShockTurbulenceModelCompressible) – ShockTurbulenceModelCompressible object

  • jumpConditions (struct) – Structure with jump conditions across the shock wave

  • mixArray1 (Mixture) – Pre-shock Mixture objects

  • mixArray2 (Mixture) – Post-shock Mixture objects

Returns:

Tuple containing

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

  • mixArray1 (Mixture): Pre-shock Mixture objects

  • mixArray2 (Mixture): Post-shock Mixture objects

Example

[averages, mixArray1, mixArray2] = getAverages(ShockTurbulenceModelCompressible(), jumpConditions, mixArray1, mixArray2);

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