v2412: New and updated solvers and physics

Community contribution: Improved shielding function for SA-DDES turbulence model

TOP

The Delayed Detached-Eddy Simulation (DDES) model [1] is a hybrid RANS/LES approach which aims to model all attached boundary layers via RANS and massively separated flow regions via LES. To prevent the activation of the LES mode inside of attached boundary layers, an additional safeguard function referred to as "shielding" function is implemented. Unfortunately, the standard formulation [1] can collapse on fine grids, leading to a decline of wall shear stresses and potentially premature flow separation. These phenomena are often referred to as "modelled stress depletion" and "grid-induced separation" in the literature.

Deck & Renard [2] recently proposed an improved shielding function which offers more robust behaviour while still allowing a rapid switch to LES in separated shear layers. The formulation was developed for the ZDES mode 2 (2020) turbulence model, which is a variant of the SA-DDES model. The figures demonstrate the benefit of the improved shielding function for the flow around a NACA4412 airfoil with trailing edge separation. The grid on the suction side is strongly refined in the streamwise and spanwise directions, causing the standard shielding function to retreat and premature flow separation to occur. In contrast, the improved shielding function retains RANS mode in the entire attached boundary layer region on the suction side, and the prediction agrees well with reference RANS from the NASA code CFL3D.

 

 

Premature flow separation predicted with the standard shielding function [1] of SA-DDES (SpalartAllmarasDDES) for NACA4412 test case, relative to benchmark RANS solution from the CFL3D code. Contours of normalised velocity magnitude and shielding function fd (left), pressure coefficient Cp and friction coefficient Cf on suction side (right).

 

 

Robust shielding behaviour seen for improved shielding function [2] implemented in SA-DDES (SpalartAllmarasDDES) for NACA4412 test case. Surface pressure coefficient and wall shear stresses in good agreement to benchmark RANS solution in CFL3D code. Contours of normalised velocity magnitude and shielding function fd (left), pressure coefficient Cp and friction coefficient Cf on suction side (right).

The following turbulence modelling features are included in the v2412 release:

  • Improved shielding function formulation of Deck & Renard [2], implemented for SpalartAllmarasDDES, activated via the new option “shielding” (keyword “standard” selects the standard function [1], “ZDES2020” selects the improved formulation [2]).
  • An additional option “usefP2” activates a more robust shielding mode for the Deck & Renard formulation (detailed in equation A.9 of [2]).

Example usage

simulationType LES;
LES
{
    LESModel         SpalartAllmarasDDES;
    SpalartAllmarasDDESCoeffs
    {
        // optional keywords for shielding function
        shielding    ZDES2020;    // default: standard
        usefP2       false;       // default: false
    }

    delta            maxDeltaxyz;

    turbulence       on;
    printCoeffs      on;
}

Note that the improved shielding function is not implemented for the kOmegaSSTDDES model, since the formulation presented in [2] was specifically derived for SA-based DDES.

Tutorial

Attribution

  • The improved shielding function of Deck & Renard (2020) [2] was implemented by Upstream CFD GmbH and integrated into OpenFOAM in collaboration with ESI-UK Ltd with funding by Volkswagen AG.

References

  • [1] P. Spalart, S. Deck, M. Shur, K. Squires, M. Strelets, and A. Travin. A new version of detached-eddy simulation, resistant to ambiguous grid densities. Theoretical and Computational Fluid Dynamics, 20(3):181–195, 2006.
  • [2] Deck, S., & Renard, N. (2020). Towards an enhanced protection of attached boundary layers in hybrid RANS/LES methods. Journal of Computational Physics, vol. 400, pp. 108970, 2020.

Improved Lagrangian injection model: coneNozzleInjection

TOP

This release introduces two minor enhancements to the coneNozzleInjection model:

  • A new injection method that distributes particles uniformly at angular intervals across a disc;
  • Inclusion of the injector's estimated speed to particle injection. While there is no change in the input or output behaviour for static injectors, the velocity of particles injected from moving injectors now includes the injector velocity.

A minimal example usage is as follows:

injectionModels
{
    model1
    {
        type    coneNozzleInjection;

        ...

        // The new injection method: discSegments
        injectionMethod         discSegments;
        nInjectors              10;
        initialInjectorDir      (1 0 0);
    }
}

Source code

Merge request

Improved solid-body motion function: tabulated6DoFMotion

TOP

The tabulated6DoFMotion model now includes a linear interpolation option. A minimal example usage is as follows:

solidBodyMotionFunction tabulated6DoFMotion;

interpolationScheme     linear;  // spline;

Source code

New finite-area framework: Film-separation models

TOP

Finite-area-based film curvature separation models have been updated, and a new film-separation model added for sharp edges. These updates improve the accuracy and flexibility of film-separation predictions under a wide range of geometric and flow conditions.

Key changes and additions:

  • Owen-Ryley model:
    • The existing curvatureSeparation model has been re-implemented as the OwenRyleyModel, based on the work of Owen & Ryley (1983). This model assumes:
      • Once the film detaches from the surface, it immediately breaks into a fine mist of droplets. As a result, it may not accurately represent scenarios where the liquid leaves as a cohesive mass.
      • The film flows around a rounded corner with a fixed radius, potentially limiting its applicability at sharp corners where curvature is not well-defined.
      • Films are thinner than 1e-4 m, with viscous effects and surface disturbances neglected.
      • Uniform film velocity and thickness.
      • The separation criterion is not explicitly formulated, but rather inferred based on the model’s assumptions.
  • New film-separation model for sharp edges:
    • A new model, FriedrichModel has been introduced to compute film-separation properties at sharp edges, covering both full and partial film-separation scenarios. This model is based on the work of Friedrich et al. (2008) and Zhang et al. (2018):
      • Friedrich et al. (2008):
        • Developed a separation criterion rooted in force equilibrium within a control volume at the detachment point.
        • Assumes a maximum film thickness of 1e-4 m.
        • Considers surface tension, gravity, and film inertia.
        • Known to be relatively reliable, though it can predict premature rupture.
        • Serves as the separation method implemented in ANSYS Forte 18.2.
      • Zhang et al. (2018):
        • Enhanced the Friedrich et al. model by introducing a mass-fraction criterion. Unlike models that assume the entire film in a cell detaches simultaneously, the Zhang et al. approach detaches only a fraction of the film based on these criteria. This leads to more realistic predictions of how much film actually separates.

Comprehensive serial and parallel test cases were conducted to ensure robust corner and separation identification, involving cases with sharp edges of various shapes and orientations relative to the flow direction, and multiple spatial resolutions and parallelization configurations.

As a result, users can expect improved consistency and reliability when simulating film-separation phenomena, regardless of mesh complexity or computational setup.

A minimal example usage is as follows:

injectionModels
{
    filmSeparation
}

filmSeparationCoeffs
{
    model              OwenRyley;
    definedPatchRadii  0;
    minInvR1           0;
    deltaByR1Min       0;
}

Source code

Tutorial

Merge request

 

 

Improved simpleFoam: new dynamicMesh support

TOP

simpleFoam now supports a dynamicFvMesh, similar to pimpleFoam. It reads constant/dynamicMeshDict if it is present and calls its update() routine every iteration. This enables, e.g. use of steady-state simulations with dynamic mesh refinement/unrefinement.

More information