diff --git a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.C b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.C index f0af3c94c0..ce6c40c0fe 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.C +++ b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.C @@ -7,6 +7,7 @@ ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation Copyright (C) 2015-2022 OpenCFD Ltd. + Copyright (C) 2022 Upstream CFD GmbH ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -51,6 +52,43 @@ tmp SpalartAllmarasDDES::fd // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // +template +tmp SpalartAllmarasDDES::Stilda +( + const volScalarField& chi, + const volScalarField& fv1, + const volTensorField& gradU, + const volScalarField& dTilda +) const +{ + tmp St = + SpalartAllmarasBase>::Stilda + ( + chi, + fv1, + gradU, + dTilda + ); + + if (useSigma_) + { + const volScalarField& lRAS(this->y_); + const volScalarField lLES(this->lengthScaleLES(chi, fv1)); + const volScalarField Omega(this->Omega(gradU)); + const volScalarField Ssigma(this->Ssigma(gradU)); + + return + max + ( + St - fd(mag(gradU))*pos(lRAS - lLES)*(Omega - Ssigma), + this->Cs_*Omega + ); + } + + return St; +} + + template tmp SpalartAllmarasDDES::dTilda ( @@ -103,14 +141,30 @@ SpalartAllmarasDDES::SpalartAllmarasDDES type ), + useSigma_ + ( + Switch::getOrAddToDict + ( + "useSigma", + this->coeffDict_, + false + ) + ), Cd1_ ( - dimensioned::getOrAddToDict - ( - "Cd1", - this->coeffDict_, - 8 - ) + useSigma_ ? + dimensioned::getOrAddToDict + ( + "Cd1Sigma", + this->coeffDict_, + 10 + ) + : dimensioned::getOrAddToDict + ( + "Cd1", + this->coeffDict_, + 8 + ) ), Cd2_ ( @@ -136,6 +190,7 @@ bool SpalartAllmarasDDES::read() { if (SpalartAllmarasDES::read()) { + useSigma_.readIfPresent("useSigma", this->coeffDict()); Cd1_.readIfPresent(this->coeffDict()); Cd2_.readIfPresent(this->coeffDict()); diff --git a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.H b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.H index 29f279d353..5f6c652add 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.H +++ b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.H @@ -7,6 +7,7 @@ ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation Copyright (C) 2019-2022 OpenCFD Ltd. + Copyright (C) 2022 Upstream CFD GmbH ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -85,6 +86,9 @@ protected: // Protected data + //- Switch to activate grey-area enhanced sigma-DDES + Switch useSigma_; + // Model coefficients dimensionedScalar Cd1_; @@ -93,6 +97,14 @@ protected: // Protected Member Functions + virtual tmp Stilda + ( + const volScalarField& chi, + const volScalarField& fv1, + const volTensorField& gradU, + const volScalarField& dTilda + ) const; + //- Length scale virtual tmp dTilda ( diff --git a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDES/SpalartAllmarasDES.C b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDES/SpalartAllmarasDES.C index 1b17db41f6..f93b38c79b 100644 --- a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDES/SpalartAllmarasDES.C +++ b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDES/SpalartAllmarasDES.C @@ -7,6 +7,7 @@ ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation Copyright (C) 2016-2022 OpenCFD Ltd. + Copyright (C) 2022 Upstream CFD GmbH ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -166,6 +167,10 @@ SpalartAllmarasDES::SpalartAllmarasDES ) ) { + // Note: Ctrans coeff is model specific; for S-A = 67.7 + this->Ctrans_ = + dimensioned::getOrAddToDict("Ctrans", this->coeffDict_, 67.7); + if (type == typeName) { this->printCoeffs(type);