Skip to content

Stochastic Backscatter Model for Grey Area Mitigation in Hybrid RANS-LES Simulations#2572

Open
AngPass wants to merge 75 commits intosu2code:developfrom
AngPass:develop
Open

Stochastic Backscatter Model for Grey Area Mitigation in Hybrid RANS-LES Simulations#2572
AngPass wants to merge 75 commits intosu2code:developfrom
AngPass:develop

Conversation

@AngPass
Copy link
Copy Markdown

@AngPass AngPass commented Sep 16, 2025

Proposed Changes

Hybrid RANS-LES methods aim to leverage the strengths of both Reynolds-Averaged Navier-Stokes (RANS) approaches and Large Eddy Simulation (LES), applying RANS near solid walls for computational efficiency and LES in outer flow regions for improved fidelity. A persistent challenge in these techniques is the appearance of the so-called grey area—the transitional region between RANS and LES zones—which is characterized by the absence of resolved turbulence. This leads to degraded accuracy in capturing free shear layers. The Stochastic Backscatter Model (Kok, 2017) aims to mitigate this issue. The model introduces stochastic forcing terms into the momentum and total energy equations that emulate the backscatter of energy from unresolved (subgrid) scales to resolved scales. The random forcing is formulated as the curl of a stochastic vector potential, say $\underline\xi$. The latter must be constructed using a three-step procedure:

  1. A vector of three mutually-uncorrelated normally-distributed random variables is generated at each node.
  2. A Laplacian smoothing in space (Passariello, 2025) is performed on each component of this vector.
  3. The smoothed fields are used as source terms in three stochastic differential equations (also known as Langevin equations). The latter are solved for the components of the vector potential $\underline\xi$.
  4. The curl of $\underline\xi$ is added to the momentum and total energy equations as source term. This can be done modifying the definition of the modeled stress tensor.

References:

  • Kok, J. C. (2017). A stochastic backscatter model for grey-area mitigation in detached eddy simulations. Flow, Turbulence and Combustion, 99(1), 119-150.
  • Passariello, A. (2025). Stochastic Backscatter Model for Unstructured Solvers. arXiv preprint arXiv:2508.17958.

Roadmap

  1. Modifying the definition of the modeled stress tensor using a stochastic contribution. As preliminary step, the vector of uncorrelated variables (point 1 in the procedure above) is employed.
  2. Performing a smoothing on the uncorrelated variables. This requires the solution of a Laplace equation at the beginning of each step.
  3. Implementing three additional equations for the components of the stochastic vector potential. These equations require the use of symmetry-preserving central scheme for the discretization of the convective terms (Kok, 2017).

Related Work

None.

PR Checklist

  • I am submitting my contribution to the develop branch.
  • My contribution generates no new compiler warnings (try with --warnlevel=3 when using meson).
  • My contribution is commented and consistent with SU2 style (https://su2code.github.io/docs_v7/Style-Guide/).
  • I used the pre-commit hook to prevent dirty commits and used pre-commit run --all to format old commits.
  • I have added a test case that demonstrates my contribution, if necessary.
  • I have updated appropriate documentation (Tutorials, Docs Page, config_template.cpp), if necessary.

AngPass and others added 2 commits September 15, 2025 18:26
The Reynolds stress tensor definition is modified to include a random contribution, which is expressed as the curl of a normally-distributed stochastic vector potential.
AngPass and others added 2 commits September 23, 2025 10:12
Add Langevin equations to Spalart-Allmaras solver (uncorrelated random source term) + add stochastic contribution to Reynolds stress tensor (using conservative variables from Langevin equations).
@pcarruscag pcarruscag changed the title Stochastic Backscatter Model for Grey Area Mitigation in Hybrid RANS-LES Simulations [WIP] Stochastic Backscatter Model for Grey Area Mitigation in Hybrid RANS-LES Simulations Sep 23, 2025
AngPass and others added 22 commits September 24, 2025 11:05
Fix sanitizer warnings and regression test failures

- Address issues reported by clang sanitizers.
- Adjust implementation to ensure regression tests pass.
- Enhance readability.
- Ensure consistent declaration types.
- Extend implementation to 2D configurations.
- Improve robustness.
Enforce boundary conditions in Langevin equations.
- Implement a skew-symmetric scheme for the discretization of the convective terms in the Langevin equations.
- Fix the seed for the generation of the random source terms at the beginning of the simulation.
- Add the flag for the simulation of the Decaying Isotropic Homogeneous Turbulence.
- Generate the initial velocity field matching the experimental data by Comte-Bellot & Corrsin.
- Include a preliminary test case.
- Implement flag to enforce LES in the whole domain.
- Add option to set the LES filter width to a user-specified value.
- Add velocity divergence to volume outputs.
- Remove internal generation of initial velocity field for simulating the Decaying Isotropic Homogeneous Turbulence (DIHT).
- Add consistent evaluation of the turbulent kinetic energy in the random source term appearing in the momentum equations.
- Add backscatter intensity coefficient in the configuration file.
- Add random initialization of the Langevin variables.
- Add Laplacian smoothing of source terms in Langevin equations.
Remark: pseudo-time integration is employed (residuals are printed on screen with fixed frequency, the maximum number of time iterations can be defined by the user).
- Fix redundancy in virtual member definition.
- Add stochastic source term to Spalart-Allmaras turbulence model equation (to ensure exchange of modeled and resolved kinetic energy).
- Replace dual-time integration with Successive Over-Relaxation for Laplacian smoothing.
- Initialize stochastic vector potential as equal to the stochastic source terms in Langevin equations.
- Add random source term to main balance equations in LES zones exclusively.
- Blend RANS and LES turbulence timescales using the LES sensor.
- Scale source terms in Langevin equations using Bessel functions to preserve the variance.
-  Compute Bessel integral at the beginning of the simulation for optimization.
- Add variance monitoring to screen output.
paan882 and others added 6 commits February 13, 2026 17:25
- Add the option to apply the backscatter model only in a bounded box.
- Add the option to enforce backscatter where shielding function exceeds
  user-defined value.
- Correct bug in LD2 implementation.
- Make style consistent and update configuration template.
- Modify the scaling of the stochastic forcing to include the modeled
  viscosity.
- Fix the computation of the stochastic tensor.
- Add the MPI communication of the DES lengthscale.
@AngPass AngPass marked this pull request as ready for review March 2, 2026 11:03
@AngPass AngPass marked this pull request as draft March 2, 2026 11:04
AngPass and others added 3 commits March 4, 2026 15:21
Remove outdated configuration file.
- Add the stochastic variables (from Langevin equations) to the restart
  file.
- Optimize the definition of the points lying inside the box where the
  backscatter model is active.
- Limit the turbulence time scale in RANS regions (Langevin equations).
- Add test case: spatially-developing mixing layer.
@AngPass
Copy link
Copy Markdown
Author

AngPass commented Mar 10, 2026

@pcarruscag I added the cfg file of a test case (i.e., the spatially-developing mixing layer). Should I open a separate pull request under Test Cases to upload the grid, or is it fine to include everything here?

@pcarruscag
Copy link
Copy Markdown
Member

Large files in testcases please.

@AngPass
Copy link
Copy Markdown
Author

AngPass commented Mar 16, 2026

Large files in testcases please.

@pcarruscag I uploaded the grid for the proposed test case (i.e., the backward-facing step). I had to compress it. The reference pull request in the TestCases repo is su2code/TestCases#187.

The code is now ready for review.

@pcarruscag pcarruscag marked this pull request as ready for review March 16, 2026 15:41
@pcarruscag pcarruscag changed the title [WIP] Stochastic Backscatter Model for Grey Area Mitigation in Hybrid RANS-LES Simulations Stochastic Backscatter Model for Grey Area Mitigation in Hybrid RANS-LES Simulations Mar 16, 2026
@pcarruscag
Copy link
Copy Markdown
Member

Add a regression test to parallel_regression.py, you'll probably need to do something custom to decompress the file.
It would be good to make it a bit smaller if possible too.

Comment on lines +559 to +561
su2double Res_Wall[MAXNVAR] = {0.0};
Res_Wall[0] = coeff*RoughWallBC*Area;
LinSysRes.SubtractBlock(iPoint, Res_Wall);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Revert and use LinSysRes(iPoint, 0) -= Res_Wall;

Comment on lines -510 to +564
su2double Jacobian_i = (laminar_viscosity /density *Area)/(0.03*Roughness_Height*sigma);
Jacobian_i += 2.0*RoughWallBC*Area/sigma;
if (implicit) Jacobian.AddVal2Diag(iPoint, -Jacobian_i);
Jacobian_i[0][0] = (laminar_viscosity /density *Area)/(0.03*Roughness_Height*sigma);
Jacobian_i[0][0] += 2.0*RoughWallBC*Area/sigma;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

revert, just your last change to this part is enough to make it compatible right?

su2double mean_check_new = 0.0;
su2double var_check_notSmoothed = 0.0;
su2double mean_check_notSmoothed = 0.0;
for (unsigned long iPoint = 0; iPoint < nPointDomain; iPoint++) {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is some OpenMP stuff missing; I can help with that later.

@pcarruscag
Copy link
Copy Markdown
Member

Post some results you obtained with this implementation please.

AngPass and others added 8 commits March 27, 2026 17:39
Co-authored-by: Pedro Gomes <38071223+pcarruscag@users.noreply.github.com>
Co-authored-by: Pedro Gomes <38071223+pcarruscag@users.noreply.github.com>
Co-authored-by: Pedro Gomes <38071223+pcarruscag@users.noreply.github.com>
Co-authored-by: Pedro Gomes <38071223+pcarruscag@users.noreply.github.com>
Co-authored-by: Pedro Gomes <38071223+pcarruscag@users.noreply.github.com>
Co-authored-by: Pedro Gomes <38071223+pcarruscag@users.noreply.github.com>
Co-authored-by: Pedro Gomes <38071223+pcarruscag@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants