Loading...
Searching...
No Matches
DEShybrid< Type > Class Template Reference

Improved hybrid convection scheme of Travin et al. for hybrid RAS/LES calculations with enhanced Grey Area Mitigation (GAM) behaviour. More...

#include <DEShybrid.H>

Inheritance diagram for DEShybrid< Type >:
Collaboration diagram for DEShybrid< Type >:

Public Member Functions

 TypeName ("DEShybrid")
 Runtime type information.
 DEShybrid (const fvMesh &mesh, Istream &is)
 Construct from mesh and Istream.
 DEShybrid (const fvMesh &mesh, const surfaceScalarField &faceFlux, Istream &is)
 Construct from mesh, faceFlux and Istream.
virtual tmp< surfaceScalarFieldblendingFactor (const GeometricField< Type, fvPatchField, volMesh > &vf) const
 Return the face-based blending factor.
tmp< surfaceScalarFieldweights (const VolFieldType &vf) const
 Return the interpolation weighting factors.
tmp< SurfaceFieldType > interpolate (const VolFieldType &vf) const
 Return the face-interpolate of the given cell field with explicit correction.
virtual bool corrected () const
 Return true if this scheme uses an explicit correction.
virtual tmp< SurfaceFieldType > correction (const VolFieldType &vf) const
 Return the explicit correction to the face-interpolate for the given field.
Public Member Functions inherited from surfaceInterpolationScheme< Type >
 TypeName ("surfaceInterpolationScheme")
 Runtime type information.
 declareRunTimeSelectionTable (tmp, surfaceInterpolationScheme, Mesh,(const fvMesh &mesh, Istream &schemeData),(mesh, schemeData))
 declareRunTimeSelectionTable (tmp, surfaceInterpolationScheme, MeshFlux,(const fvMesh &mesh, const surfaceScalarField &faceFlux, Istream &schemeData),(mesh, faceFlux, schemeData))
 surfaceInterpolationScheme (const fvMesh &mesh)
 Construct from mesh.
virtual ~surfaceInterpolationScheme ()=default
 Destructor.
const fvMeshmesh () const
 Return mesh reference.
virtual tmp< surfaceScalarFieldweights (const GeometricField< Type, fvPatchField, volMesh > &) const =0
 Return the interpolation weighting factors for the given field.
virtual tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > correction (const GeometricField< Type, fvPatchField, volMesh > &) const
 Return the explicit correction to the face-interpolate.
virtual tmp< GeometricField< typename innerProduct< vector, Type >::type, fvsPatchField, surfaceMesh > > dotInterpolate (const surfaceVectorField &Sf, const GeometricField< Type, fvPatchField, volMesh > &vf) const
 Return the face-interpolate of the given cell field.
tmp< GeometricField< typename innerProduct< vector, Type >::type, fvsPatchField, surfaceMesh > > dotInterpolate (const surfaceVectorField &Sf, const tmp< GeometricField< Type, fvPatchField, volMesh > > &) const
 Return the face-interpolate of the given tmp cell field.
virtual tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate (const GeometricField< Type, fvPatchField, volMesh > &) const
 Return the face-interpolate of the given cell field.
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate (const tmp< GeometricField< Type, fvPatchField, volMesh > > &) const
 Return the face-interpolate of the given tmp cell field.
template<class SFType>
Foam::tmp< Foam::GeometricField< typename Foam::innerProduct< typename SFType::value_type, Type >::type, Foam::fvsPatchField, Foam::surfaceMesh > > dotInterpolate (const SFType &Sf, const GeometricField< Type, fvPatchField, volMesh > &vf, const tmp< surfaceScalarField > &tlambdas)
tmp< GeometricField< typename innerProduct< vector, scalar >::type, fvsPatchField, surfaceMesh > > dotInterpolate (const surfaceVectorField &Sf, const GeometricField< scalar, fvPatchField, volMesh > &) const
Foam::tmp< Foam::GeometricField< typename Foam::innerProduct< Foam::vector, Foam::scalar >::type, Foam::fvsPatchField, Foam::surfaceMesh > > dotInterpolate (const surfaceVectorField &Sf, const GeometricField< scalar, fvPatchField, volMesh > &) const
Public Member Functions inherited from refCount
constexpr refCount () noexcept
 Default construct, initializing count to 0.
int use_count () const noexcept
 Return the current reference count.
bool unique () const noexcept
 Return true if the reference count is zero.
void operator++ () noexcept
 Increment the reference count.
void operator++ (int) noexcept
 Increment the reference count.
void operator-- () noexcept
 Decrement the reference count.
void operator-- (int) noexcept
 Decrement the reference count.
Public Member Functions inherited from blendedSchemeBase< Type >
 blendedSchemeBase ()=default
 Constructor.
virtual ~blendedSchemeBase ()=default
 Destructor.

Additional Inherited Members

Static Public Member Functions inherited from surfaceInterpolationScheme< Type >
static tmp< surfaceInterpolationScheme< Type > > New (const fvMesh &mesh, Istream &schemeData)
 Return new tmp interpolation scheme.
static tmp< surfaceInterpolationScheme< Type > > New (const fvMesh &mesh, const surfaceScalarField &faceFlux, Istream &schemeData)
 Return new tmp interpolation scheme.
static tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate (const GeometricField< Type, fvPatchField, volMesh > &, const tmp< surfaceScalarField > &, const tmp< surfaceScalarField > &)
 Return the face-interpolate of the given cell field.
template<class SFType>
static tmp< GeometricField< typename innerProduct< typename SFType::value_type, Type >::type, fvsPatchField, surfaceMesh > > dotInterpolate (const SFType &Sf, const GeometricField< Type, fvPatchField, volMesh > &vf, const tmp< surfaceScalarField > &tlambdas)
 Return the face-interpolate of the given cell field.
static tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate (const GeometricField< Type, fvPatchField, volMesh > &, const tmp< surfaceScalarField > &)
 Return the face-interpolate of the given cell field.

Detailed Description

template<class Type>
class Foam::DEShybrid< Type >

Improved hybrid convection scheme of Travin et al. for hybrid RAS/LES calculations with enhanced Grey Area Mitigation (GAM) behaviour.

The scheme provides a blend between two convection schemes, based on local properties including the wall distance, velocity gradient and eddy viscosity. The scheme was originally developed for DES calculations to blend a low-dissipative scheme, e.g. linear, in the vorticity-dominated, finely-resolved regions and a numerically more robust, e.g. upwind-biased, convection scheme in irrotational or coarsely-resolved regions.

The routine calculates the blending factor denoted as "sigma" in the literature reference, where 0 <= sigma <= sigmaMax, which is then employed to set the weights:

\‍[    weight = (1-sigma) w_1 + sigma w_2
\‍]

where

$        sigma $=blending factor
$        w_1   $=scheme 1 weights
$        w_2   $=scheme 2 weights

First published in:

        Travin, A., Shur, M., Strelets, M., & Spalart, P. R. (2000).
        Physical and numerical upgrades in the detached-eddy
        simulation of complex turbulent flows.
        In LES of Complex Transitional and Turbulent Flows.
        Proceedings of the Euromech Colloquium 412. Munich, Germany

Original publication contained a typo for C_H3 constant. Corrected version with minor changes for 2 lower limiters published in:

        Spalart, P., Shur, M., Strelets, M., & Travin, A. (2012).
        Sensitivity of landing-gear noise predictions by large-eddy
        simulation to numerics and resolution.
        In 50th AIAA Aerospace Sciences Meeting Including the
        New Horizons Forum and Aerospace Exposition. Nashville, US.
        DOI:10.2514/6.2012-1174

Example of the DEShybrid scheme specification using linear within the LES region and linearUpwind within the RAS region:

    divSchemes
    {
        .
        .
        div(phi,U)      Gauss DEShybrid
            linear                    // scheme 1
            linearUpwind grad(U)      // scheme 2
            delta                     // LES delta name, e.g. 'delta', 'hmax'
            0.65                      // CDES coefficient
            30                        // Reference velocity scale
            2                         // Reference length scale
            0                         // Minimum sigma limit (0-1)
            1                         // Maximum sigma limit (0-1)
            1.0e-03                   // Limiter of B function, typically 1e-03
            1.0;                      // nut limiter (if > 1, GAM extension is active)
        .
        .
    }

Notes

  • Scheme 1 should be linear (or other low-dissipative schemes) which will be used in the detached/vortex shedding regions.
  • Scheme 2 should be an upwind/deferred correction/TVD scheme which will be used in the free-stream/Euler/boundary layer regions.
  • The scheme is compiled into a separate library, and not available to solvers by default. In order to use the scheme, add the library as a run-time loaded library in the $FOAM\_CASE/system/controlDict dictionary, e.g.:
            libs (turbulenceModelSchemes);
    
Source files

Definition at line 143 of file DEShybrid.H.

Constructor & Destructor Documentation

◆ DEShybrid() [1/2]

template<class Type>
DEShybrid ( const fvMesh & mesh,
Istream & is )
inline

Construct from mesh and Istream.

The name of the flux field is read from the Istream and looked-up from the mesh objectRegistry

Definition at line 409 of file DEShybrid.H.

References Foam::dimLength, Foam::dimTime, surfaceInterpolationScheme< Type >::mesh(), and surfaceInterpolationScheme< Type >::New().

Here is the call graph for this function:

◆ DEShybrid() [2/2]

template<class Type>
DEShybrid ( const fvMesh & mesh,
const surfaceScalarField & faceFlux,
Istream & is )
inline

Construct from mesh, faceFlux and Istream.

Definition at line 433 of file DEShybrid.H.

References Foam::dimLength, Foam::dimTime, surfaceInterpolationScheme< Type >::mesh(), and surfaceInterpolationScheme< Type >::New().

Here is the call graph for this function:

Member Function Documentation

◆ TypeName()

template<class Type>
TypeName ( "DEShybrid< Type >" )

Runtime type information.

◆ blendingFactor()

template<class Type>
virtual tmp< surfaceScalarField > blendingFactor ( const GeometricField< Type, fvPatchField, volMesh > & vf) const
inlinevirtual

Return the face-based blending factor.

Implements blendedSchemeBase< Type >.

Definition at line 471 of file DEShybrid.H.

References delta, Foam::exit(), Foam::FatalError, FatalErrorInFunction, surfaceInterpolationScheme< Type >::mesh(), and turbulenceModel::propertiesName.

Referenced by correction(), interpolate(), and weights().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ weights()

template<class Type>
tmp< surfaceScalarField > weights ( const VolFieldType & vf) const
inline

Return the interpolation weighting factors.

Definition at line 511 of file DEShybrid.H.

References blendingFactor().

Here is the call graph for this function:

◆ interpolate()

template<class Type>
tmp< SurfaceFieldType > interpolate ( const VolFieldType & vf) const
inline

Return the face-interpolate of the given cell field with explicit correction.

Definition at line 525 of file DEShybrid.H.

References blendingFactor().

Here is the call graph for this function:

◆ corrected()

template<class Type>
virtual bool corrected ( ) const
inlinevirtual

Return true if this scheme uses an explicit correction.

Reimplemented from surfaceInterpolationScheme< Type >.

Definition at line 538 of file DEShybrid.H.

Referenced by correction().

Here is the caller graph for this function:

◆ correction()

template<class Type>
virtual tmp< SurfaceFieldType > correction ( const VolFieldType & vf) const
inlinevirtual

Return the explicit correction to the face-interpolate for the given field.

Definition at line 548 of file DEShybrid.H.

References blendingFactor(), corrected(), and correction().

Referenced by correction().

Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following file: