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:
handleThe
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 objectmixArray1 (
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 objectaverages (
struct) – Struct with averages from LIAmixArray1 (
Mixture) – Pre-shock Mixture objectsmixArray2 (
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 objectaverages (
struct) – Struct with averages from LIAmixArray1 (
Mixture) – Pre-shock Mixture objectsmixArray2 (
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 objectshockTurbulenceModel (
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 objectmixArray1 (
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.ShockTurbulenceModelThe
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 objectjumpConditions (
struct) – Structure with jump conditions across the shock wavemixArray1 (
Mixture) – Pre-shock Mixture objectsmixArray2 (
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.ShockTurbulenceModelThe
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 objectjumpConditions (
struct) – Structure with jump conditions across the shock wavemixArray1 (
Mixture) – Pre-shock Mixture objectsmixArray2 (
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.ShockTurbulenceModelThe
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 objectjumpConditions (
struct) – Structure with jump conditions across the shock wavemixArray1 (
Mixture) – Pre-shock Mixture objectsmixArray2 (
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 objectaverages (
struct) – Struct with averages from LIAmixArray1 (
Mixture) – Pre-shock Mixture arraymixArray2 (
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.ShockTurbulenceModelThe
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 objectjumpConditions (
struct) – Structure with jump conditions across the shock wavemixArray1 (
Mixture) – Pre-shock Mixture objectsmixArray2 (
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