ENH: Spalart-Allmaras DES, DDES and IDDES model updates

Included option to use the low Reynolds number correction, with a
default value of 'on'.  Further details can be found in the reference:

    Spalart, P. R., Deck, S., Shur, M.L., Squires, K.D., Strelets, M.Kh,
    Travin, A. (2006).
    A new version of detached-eddy simulation, resistant to ambiguous grid
    densities.
    Theor. Comput. Fluid Dyn., 20, 181-195.

Set using the entry:

    lowReCorrection on; // off
This commit is contained in:
Andrew Heather
2015-11-30 12:48:20 +00:00
parent 7cb12e208d
commit 981b6303a4
4 changed files with 135 additions and 9 deletions

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -88,7 +88,7 @@ tmp<volScalarField> SpalartAllmarasDDES<BasicTurbulenceModel>::dTilda
- fd(mag(gradU))
*max
(
this->y_ - this->CDES_*this->delta(),
this->y_ - this->psi(chi, fv1)*this->CDES_*this->delta(),
dimensionedScalar("zero", dimLength, 0)
),
dimensionedScalar("small", dimLength, SMALL)

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -63,6 +63,16 @@ tmp<volScalarField> SpalartAllmarasDES<BasicTurbulenceModel>::fv2
}
template<class BasicTurbulenceModel>
tmp<volScalarField> SpalartAllmarasDES<BasicTurbulenceModel>::ft2
(
const volScalarField& chi
) const
{
return Ct3_*exp(-Ct4_*sqr(chi));
}
template<class BasicTurbulenceModel>
tmp<volScalarField> SpalartAllmarasDES<BasicTurbulenceModel>::S
(
@ -148,6 +158,53 @@ tmp<volScalarField> SpalartAllmarasDES<BasicTurbulenceModel>::fw
}
template<class BasicTurbulenceModel>
tmp<volScalarField> SpalartAllmarasDES<BasicTurbulenceModel>::psi
(
const volScalarField& chi,
const volScalarField& fv1
) const
{
tmp<volScalarField> tpsi
(
new volScalarField
(
IOobject
(
type() + ":psi",
this->time().timeName(),
this->mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
this->mesh(),
dimensionedScalar("one", dimless, 1)
)
);
if (lowReCorrection_)
{
volScalarField& psi = tpsi();
const volScalarField fv2(this->fv2(chi, fv1));
const volScalarField ft2(this->ft2(chi));
psi =
sqrt
(
min
(
scalar(100),
(1 - Cb1_/(Cw1_*sqr(kappa_)*fwStar_)*(ft2 + (1 - ft2)*fv2))
/max(SMALL, (fv1*max(1e-10, 1 - ft2)))
)
);
}
return tpsi;
}
template<class BasicTurbulenceModel>
tmp<volScalarField> SpalartAllmarasDES<BasicTurbulenceModel>::dTilda
(
@ -156,7 +213,7 @@ tmp<volScalarField> SpalartAllmarasDES<BasicTurbulenceModel>::dTilda
const volTensorField& gradU
) const
{
tmp<volScalarField> tdTilda(CDES_*this->delta());
tmp<volScalarField> tdTilda(psi(chi, fv1)*CDES_*this->delta());
min(tdTilda().dimensionedInternalField(), tdTilda(), y_);
return tdTilda;
}
@ -300,6 +357,42 @@ SpalartAllmarasDES<BasicTurbulenceModel>::SpalartAllmarasDES
0.07
)
),
lowReCorrection_
(
Switch::lookupOrAddToDict
(
"lowReCorrection",
this->coeffDict_,
true
)
),
Ct3_
(
dimensioned<scalar>::lookupOrAddToDict
(
"Ct3",
this->coeffDict_,
1.2
)
),
Ct4_
(
dimensioned<scalar>::lookupOrAddToDict
(
"Ct4",
this->coeffDict_,
0.5
)
),
fwStar_
(
dimensioned<scalar>::lookupOrAddToDict
(
"fwStar",
this->coeffDict_,
0.424
)
),
nuTilda_
(
@ -345,6 +438,11 @@ bool SpalartAllmarasDES<BasicTurbulenceModel>::read()
CDES_.readIfPresent(this->coeffDict());
ck_.readIfPresent(this->coeffDict());
lowReCorrection_.readIfPresent("lowReCorrection", this->coeffDict());
Ct3_.readIfPresent(this->coeffDict());
Ct4_.readIfPresent(this->coeffDict());
fwStar_.readIfPresent(this->coeffDict());
return true;
}
else
@ -418,6 +516,7 @@ void SpalartAllmarasDES<BasicTurbulenceModel>::correct()
const volScalarField chi(this->chi());
const volScalarField fv1(this->fv1(chi));
const volScalarField ft2(this->ft2(chi));
tmp<volTensorField> tgradU = fvc::grad(U);
const volScalarField Omega(this->Omega(tgradU()));
@ -431,10 +530,11 @@ void SpalartAllmarasDES<BasicTurbulenceModel>::correct()
- fvm::laplacian(alpha*rho*DnuTildaEff(), nuTilda_)
- Cb2_/sigmaNut_*alpha*rho*magSqr(fvc::grad(nuTilda_))
==
Cb1_*alpha*rho*Stilda*nuTilda_
Cb1_*alpha*rho*Stilda*nuTilda_*(scalar(1) - ft2)
- fvm::Sp
(
Cw1_*alpha*rho*fw(Stilda, dTilda)*nuTilda_/sqr(dTilda),
(Cw1_*fw(Stilda, dTilda) - Cb1_/sqr(kappa_)*ft2)
*alpha*rho*nuTilda_/sqr(dTilda),
nuTilda_
)
);

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -39,6 +39,15 @@ Description
Advances in DNS/LES, 1, 4-8.
\endverbatim
Including the low Reynolds number correction documented in
\verbatim
Spalart, P. R., Deck, S., Shur, M.L., Squires, K.D., Strelets, M.Kh,
Travin, A. (2006).
A new version of detached-eddy simulation, resistant to ambiguous grid
densities.
Theor. Comput. Fluid Dyn., 20, 181-195.
\endverbatim
SourceFiles
SpalartAllmarasDES.C
@ -91,6 +100,15 @@ protected:
dimensionedScalar CDES_;
dimensionedScalar ck_;
// Low Reynolds number correction
Switch lowReCorrection_;
dimensionedScalar Ct3_;
dimensionedScalar Ct4_;
dimensionedScalar fwStar_;
// Fields
volScalarField nuTilda_;
@ -113,6 +131,8 @@ protected:
const volScalarField& fv1
) const;
tmp<volScalarField> ft2(const volScalarField& chi) const;
tmp<volScalarField> S(const volTensorField& gradU) const;
tmp<volScalarField> Omega(const volTensorField& gradU) const;
@ -138,6 +158,12 @@ protected:
const volScalarField& dTilda
) const;
tmp<volScalarField> psi
(
const volScalarField& chi,
const volScalarField& fv1
) const;
//- Length scale
virtual tmp<volScalarField> dTilda
(

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -140,7 +140,7 @@ tmp<volScalarField> SpalartAllmarasIDDES<BasicTurbulenceModel>::dTilda
(
dimensionedScalar("SMALL", dimLength, SMALL),
fHyb*(1 + fRestore*Psi)*this->y_
+ (1 - fHyb)*this->CDES_*Psi*this->delta()
+ (1 - fHyb)*this->psi(chi, fv1)*this->CDES_*Psi*this->delta()
);
}