Skip to content

Add: include new CT-LIA module for solving shock-turbulence interaction problems using linear theory #991#1094

Merged
AlbertoCuadra merged 13 commits intomasterfrom
develop
Dec 16, 2025
Merged

Add: include new CT-LIA module for solving shock-turbulence interaction problems using linear theory #991#1094
AlbertoCuadra merged 13 commits intomasterfrom
develop

Conversation

@AlbertoCuadra
Copy link
Member

@AlbertoCuadra AlbertoCuadra commented Dec 16, 2025

This pull request introduces a Linear Interaction Analysis (LIA) framework for shock–turbulence interaction (STI) problems in compressible flows, hearafter 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 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 measures

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 = \dfrac{\langle \delta \rho_1^e \delta u_1^r\rangle}{\langle \delta u_1^r \delta u_1^r \rangle} \dfrac{\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.

Acoustic-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 = \dfrac{\text{TKE}_{1a}}{\text{TKE}_{1r}},$$

where TKE_1,a and TKE_1,r 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 entropic or acoustic content (eta = 0, no chi)
  • 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

Minor changes

This pull request also introduces a small set of utility plotting classes in the utils.display subpackage to improve figure management and layout consistency.

  • Canvas (abstract base class)
    Provides a common interface for figure creation, tiled layouts, axis management, and formatting via PlotConfig. This class centralizes shared plotting logic and reduces code duplication.

  • PlotFigure
    Extends Canvas to provide a unified interface for plotting thermodynamic and transport properties against an arbitrary independent variable, with consistent styling and optional validation overlays.

  • PlotComposition
    Extends Canvas to generate species composition plots (e.g. molar fractions Xi) with automatic species filtering, log scaling, and validation support.

  • Employ the CaloricGasModel class to express the caloric model.

@AlbertoCuadra AlbertoCuadra added bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request labels Dec 16, 2025
@github-project-automation github-project-automation bot moved this to In progress in v2.0.0 Dec 16, 2025
@AlbertoCuadra AlbertoCuadra moved this to 2025 Q4 – Oct-Dec in Roadmap Dec 16, 2025
@AlbertoCuadra AlbertoCuadra changed the title Add: include new CT-LIA module for solving shock-turbulence interaction problems using linear theory Add: include new CT-LIA module for solving shock-turbulence interaction problems using linear theory #991 Dec 16, 2025
@AlbertoCuadra AlbertoCuadra merged commit 0d8c970 into master Dec 16, 2025
1 check passed
@github-project-automation github-project-automation bot moved this from In progress to Done in v2.0.0 Dec 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request

Projects

Status: 2025 Q4 – Oct-Dec
Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant