mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
CONTRIBUTION: Turbulence - updated SpalartAlmaras & kOmegaSST DES, DDES and IDDES
Code supplied by CFD Software E+F GmbH
This commit is contained in:
@ -45,7 +45,7 @@ Description
|
|||||||
w_2 | scheme 2 weights
|
w_2 | scheme 2 weights
|
||||||
\endvartable
|
\endvartable
|
||||||
|
|
||||||
Reference:
|
First published in:
|
||||||
\verbatim
|
\verbatim
|
||||||
A. Travin, M. Shur, M. Strelets, P. Spalart (2000).
|
A. Travin, M. Shur, M. Strelets, P. Spalart (2000).
|
||||||
Physical and numerical upgrades in the detached-eddy simulation of
|
Physical and numerical upgrades in the detached-eddy simulation of
|
||||||
@ -54,6 +54,16 @@ Description
|
|||||||
Transition and Turbulent Flows, Munich, Germany
|
Transition and Turbulent Flows, Munich, Germany
|
||||||
\endverbatim
|
\endverbatim
|
||||||
|
|
||||||
|
Original publication contained a typo for C_H3 constant. Corrected version
|
||||||
|
with minor changes for 2 lower limiters published in:
|
||||||
|
\verbatim
|
||||||
|
P. Spalart, M. Shur, M. Strelets, A. Travin (2012).
|
||||||
|
Sensitivity of Landing-Gear Noise Predictions by Large-Eddy
|
||||||
|
Simulation to Numerics and Resolution.
|
||||||
|
AIAA Paper 2012-1174, 50th AIAA Aerospace Sciences Meeting,
|
||||||
|
Nashville / TN, Jan. 2012
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
Example of the DEShybrid scheme specification using linear within the LES
|
Example of the DEShybrid scheme specification using linear within the LES
|
||||||
region and linearUpwind within the RAS region:
|
region and linearUpwind within the RAS region:
|
||||||
\verbatim
|
\verbatim
|
||||||
@ -65,7 +75,9 @@ Description
|
|||||||
linear // scheme 1
|
linear // scheme 1
|
||||||
linearUpwind grad(U) // scheme 2
|
linearUpwind grad(U) // scheme 2
|
||||||
0.65 // DES coefficient, typically = 0.65
|
0.65 // DES coefficient, typically = 0.65
|
||||||
10 // Reference time scale (Uref/Lref)
|
30 // Reference velocity scale
|
||||||
|
2 // Reference length scale
|
||||||
|
0 // Minimum sigma limit (0-1)
|
||||||
1; // Maximum sigma limit (0-1)
|
1; // Maximum sigma limit (0-1)
|
||||||
.
|
.
|
||||||
.
|
.
|
||||||
@ -119,17 +131,22 @@ class DEShybrid
|
|||||||
//- DES Coefficient
|
//- DES Coefficient
|
||||||
scalar CDES_;
|
scalar CDES_;
|
||||||
|
|
||||||
//- Time scale coefficient [1/s]
|
//- Reference velocity scale [m/s]
|
||||||
dimensionedScalar invTau_;
|
dimensionedScalar U0_;
|
||||||
|
|
||||||
//- Maximum bound for sigma (limited to 1)
|
//- Reference length scale [m]
|
||||||
|
dimensionedScalar L0_;
|
||||||
|
|
||||||
|
//- Minimum bound for sigma (0 <= sigmaMin <= 1)
|
||||||
|
scalar sigmaMin_;
|
||||||
|
|
||||||
|
//- Maximum bound for sigma (0 <= sigmaMax <= 1)
|
||||||
scalar sigmaMax_;
|
scalar sigmaMax_;
|
||||||
|
|
||||||
//- Lower limit for `B' coefficient
|
//- constants of scheme
|
||||||
dimensionedScalar B0_;
|
scalar CH1_;
|
||||||
|
scalar CH2_;
|
||||||
//- Small length scale to avoid division by zero
|
scalar CH3_;
|
||||||
dimensionedScalar d0_;
|
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
//- Disallow default bitwise copy construct
|
||||||
DEShybrid(const DEShybrid&);
|
DEShybrid(const DEShybrid&);
|
||||||
@ -152,31 +169,48 @@ class DEShybrid
|
|||||||
tmp<volTensorField> gradU(fvc::grad(U));
|
tmp<volTensorField> gradU(fvc::grad(U));
|
||||||
const volScalarField S(sqrt(2.0)*mag(symm(gradU())));
|
const volScalarField S(sqrt(2.0)*mag(symm(gradU())));
|
||||||
const volScalarField Omega(sqrt(2.0)*mag(skew(gradU())));
|
const volScalarField Omega(sqrt(2.0)*mag(skew(gradU())));
|
||||||
const volScalarField magSqrGradU(magSqr(gradU));
|
const dimensionedScalar tau0_ = L0_/U0_;
|
||||||
|
|
||||||
const volScalarField B
|
const volScalarField B
|
||||||
(
|
(
|
||||||
0.5*Omega*max(S, Omega)
|
CH3_*Omega*max(S, Omega)
|
||||||
/max(0.5*magSqrGradU, B0_)
|
/max(0.5*(sqr(S)+sqr(Omega)), sqr(1.0e-3/tau0_))
|
||||||
);
|
);
|
||||||
const volScalarField K
|
const volScalarField K
|
||||||
(
|
(
|
||||||
max(Foam::sqrt(0.5*magSqrGradU), 0.1*invTau_)
|
max(Foam::sqrt(0.5*(sqr(S)+sqr(Omega))), 0.1/tau0_)
|
||||||
);
|
);
|
||||||
|
|
||||||
const volScalarField lTurb(Foam::sqrt(nuEff/(pow(0.09, 1.5)*K)));
|
const volScalarField lTurb(Foam::sqrt(nuEff/(pow(0.09, 1.5)*K)));
|
||||||
const volScalarField g(tanh(pow4(B)));
|
const volScalarField g(tanh(pow4(B)));
|
||||||
const volScalarField A
|
const volScalarField A
|
||||||
(
|
(
|
||||||
max(scalar(0), CDES_*delta/max(lTurb*g, d0_) - 0.5)
|
CH2_*max(scalar(0), CDES_*delta/max(lTurb*g, 1.0e-15*L0_) - 0.5)
|
||||||
);
|
);
|
||||||
const surfaceScalarField Af(fvc::interpolate(A));
|
|
||||||
|
const volScalarField IOhybrid
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"DEShybridFactor",
|
||||||
|
this->mesh().time().timeName(),
|
||||||
|
this->mesh(),
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::NO_WRITE
|
||||||
|
),
|
||||||
|
max(sigmaMax_*tanh(pow(A, CH1_)), sigmaMin_)
|
||||||
|
);
|
||||||
|
if (this->mesh().time().outputTime())
|
||||||
|
{
|
||||||
|
IOhybrid.write();
|
||||||
|
}
|
||||||
|
|
||||||
return tmp<surfaceScalarField>
|
return tmp<surfaceScalarField>
|
||||||
(
|
(
|
||||||
new surfaceScalarField
|
new surfaceScalarField
|
||||||
(
|
(
|
||||||
vf.name() + "BlendingFactor",
|
vf.name() + "BlendingFactor",
|
||||||
max(sigmaMax_*tanh(pow3(Af)), scalar(0))
|
fvc::interpolate(IOhybrid)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -205,16 +239,43 @@ public:
|
|||||||
surfaceInterpolationScheme<Type>::New(mesh, is)
|
surfaceInterpolationScheme<Type>::New(mesh, is)
|
||||||
),
|
),
|
||||||
CDES_(readScalar(is)),
|
CDES_(readScalar(is)),
|
||||||
invTau_("invTau", dimless/dimTime, readScalar(is)),
|
U0_("U0", dimLength/dimTime, readScalar(is)),
|
||||||
|
L0_("L0", dimLength, readScalar(is)),
|
||||||
|
sigmaMin_(readScalar(is)),
|
||||||
sigmaMax_(readScalar(is)),
|
sigmaMax_(readScalar(is)),
|
||||||
B0_("B0", dimless/sqr(dimTime), 1e-20),
|
CH1_(3.0),
|
||||||
d0_("d0", dimLength, SMALL)
|
CH2_(1.0),
|
||||||
|
CH3_(2.0)
|
||||||
{
|
{
|
||||||
if (invTau_.value() <= 0)
|
if (U0_.value() <= 0)
|
||||||
{
|
{
|
||||||
FatalErrorInFunction
|
FatalErrorInFunction
|
||||||
<< "invTau coefficient must be greater than 0. "
|
<< "U0 coefficient must be greater than 0. "
|
||||||
<< "Current value: " << invTau_ << exit(FatalError);
|
<< "Current value: " << U0_ << exit(FatalError);
|
||||||
|
}
|
||||||
|
if (L0_.value() <= 0)
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "L0 coefficient must be greater than 0. "
|
||||||
|
<< "Current value: " << L0_ << exit(FatalError);
|
||||||
|
}
|
||||||
|
if (sigmaMin_ < 0)
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "sigmaMin coefficient must be greater than or equal to 0. "
|
||||||
|
<< "Current value: " << sigmaMin_ << exit(FatalError);
|
||||||
|
}
|
||||||
|
if (sigmaMax_ < 0)
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "sigmaMax coefficient must be greater than or equal to 0. "
|
||||||
|
<< "Current value: " << sigmaMax_ << exit(FatalError);
|
||||||
|
}
|
||||||
|
if (sigmaMin_ > 1)
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "sigmaMin coefficient must be less than or equal to 1. "
|
||||||
|
<< "Current value: " << sigmaMin_ << exit(FatalError);
|
||||||
}
|
}
|
||||||
if (sigmaMax_ > 1)
|
if (sigmaMax_ > 1)
|
||||||
{
|
{
|
||||||
@ -242,16 +303,43 @@ public:
|
|||||||
surfaceInterpolationScheme<Type>::New(mesh, faceFlux, is)
|
surfaceInterpolationScheme<Type>::New(mesh, faceFlux, is)
|
||||||
),
|
),
|
||||||
CDES_(readScalar(is)),
|
CDES_(readScalar(is)),
|
||||||
invTau_("invTau", dimless/dimTime, readScalar(is)),
|
U0_("U0", dimLength/dimTime, readScalar(is)),
|
||||||
|
L0_("L0", dimLength, readScalar(is)),
|
||||||
|
sigmaMin_(readScalar(is)),
|
||||||
sigmaMax_(readScalar(is)),
|
sigmaMax_(readScalar(is)),
|
||||||
B0_("B0", dimless/sqr(dimTime), 1e-20),
|
CH1_(3.0),
|
||||||
d0_("d0", dimLength, SMALL)
|
CH2_(1.0),
|
||||||
|
CH3_(2.0)
|
||||||
{
|
{
|
||||||
if (invTau_.value() <= 0)
|
if (U0_.value() <= 0)
|
||||||
{
|
{
|
||||||
FatalErrorInFunction
|
FatalErrorInFunction
|
||||||
<< "invTau coefficient must be greater than 0. "
|
<< "U0 coefficient must be greater than 0. "
|
||||||
<< "Current value: " << invTau_ << exit(FatalError);
|
<< "Current value: " << U0_ << exit(FatalError);
|
||||||
|
}
|
||||||
|
if (L0_.value() <= 0)
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "L0 coefficient must be greater than 0. "
|
||||||
|
<< "Current value: " << U0_ << exit(FatalError);
|
||||||
|
}
|
||||||
|
if (sigmaMin_ < 0)
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "sigmaMin coefficient must be greater than or equal to 0. "
|
||||||
|
<< "Current value: " << sigmaMin_ << exit(FatalError);
|
||||||
|
}
|
||||||
|
if (sigmaMax_ < 0)
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "sigmaMax coefficient must be greater than or equal to 0. "
|
||||||
|
<< "Current value: " << sigmaMax_ << exit(FatalError);
|
||||||
|
}
|
||||||
|
if (sigmaMin_ > 1)
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "sigmaMin coefficient must be less than or equal to 1. "
|
||||||
|
<< "Current value: " << sigmaMin_ << exit(FatalError);
|
||||||
}
|
}
|
||||||
if (sigmaMax_ > 1)
|
if (sigmaMax_ > 1)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -68,7 +68,7 @@ tmp<volScalarField> SpalartAllmarasDDES<BasicTurbulenceModel>::fd
|
|||||||
const volScalarField& magGradU
|
const volScalarField& magGradU
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
return 1 - tanh(pow(fdFactor_*rd(magGradU), fdExponent_));
|
return 1 - tanh(pow(Cd1_*rd(magGradU), Cd2_));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -82,13 +82,16 @@ tmp<volScalarField> SpalartAllmarasDDES<BasicTurbulenceModel>::dTilda
|
|||||||
const volTensorField& gradU
|
const volTensorField& gradU
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
|
const volScalarField lRAS(this->y_);
|
||||||
|
const volScalarField lLES(this->psi(chi, fv1)*this->CDES_*this->delta());
|
||||||
|
|
||||||
return max
|
return max
|
||||||
(
|
(
|
||||||
this->y_
|
lRAS
|
||||||
- fd(mag(gradU))
|
- fd(mag(gradU))
|
||||||
*max
|
*max
|
||||||
(
|
(
|
||||||
this->y_ - this->psi(chi, fv1)*this->CDES_*this->delta(),
|
lRAS - lLES,
|
||||||
dimensionedScalar("zero", dimLength, 0)
|
dimensionedScalar("zero", dimLength, 0)
|
||||||
),
|
),
|
||||||
dimensionedScalar("small", dimLength, SMALL)
|
dimensionedScalar("small", dimLength, SMALL)
|
||||||
@ -119,27 +122,34 @@ SpalartAllmarasDDES<BasicTurbulenceModel>::SpalartAllmarasDDES
|
|||||||
alphaRhoPhi,
|
alphaRhoPhi,
|
||||||
phi,
|
phi,
|
||||||
transport,
|
transport,
|
||||||
propertiesName
|
propertiesName,
|
||||||
|
type
|
||||||
),
|
),
|
||||||
fdFactor_
|
|
||||||
|
Cd1_
|
||||||
(
|
(
|
||||||
dimensioned<scalar>::lookupOrAddToDict
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
(
|
(
|
||||||
"fdFactor",
|
"Cd1",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
8
|
8
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
fdExponent_
|
Cd2_
|
||||||
(
|
(
|
||||||
dimensioned<scalar>::lookupOrAddToDict
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
(
|
(
|
||||||
"fdExponent",
|
"Cd2",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
3
|
3
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
{}
|
{
|
||||||
|
if (type == typeName)
|
||||||
|
{
|
||||||
|
this->printCoeffs(type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
@ -149,8 +159,9 @@ bool SpalartAllmarasDDES<BasicTurbulenceModel>::read()
|
|||||||
{
|
{
|
||||||
if (SpalartAllmarasDES<BasicTurbulenceModel>::read())
|
if (SpalartAllmarasDES<BasicTurbulenceModel>::read())
|
||||||
{
|
{
|
||||||
fdFactor_.readIfPresent(this->coeffDict());
|
Cd1_.readIfPresent(this->coeffDict());
|
||||||
fdExponent_.readIfPresent(this->coeffDict());
|
Cd2_.readIfPresent(this->coeffDict());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -81,11 +81,10 @@ protected:
|
|||||||
|
|
||||||
// Protected data
|
// Protected data
|
||||||
|
|
||||||
//- fd function pre-factor
|
// Model coefficients
|
||||||
dimensionedScalar fdFactor_;
|
|
||||||
|
|
||||||
//- fd function exponent
|
dimensionedScalar Cd1_;
|
||||||
dimensionedScalar fdExponent_;
|
dimensionedScalar Cd2_;
|
||||||
|
|
||||||
|
|
||||||
// Protected Member Functions
|
// Protected Member Functions
|
||||||
|
|||||||
@ -73,16 +73,6 @@ tmp<volScalarField> SpalartAllmarasDES<BasicTurbulenceModel>::ft2
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class BasicTurbulenceModel>
|
|
||||||
tmp<volScalarField> SpalartAllmarasDES<BasicTurbulenceModel>::S
|
|
||||||
(
|
|
||||||
const volTensorField& gradU
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
return sqrt(2.0)*mag(symm(gradU));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class BasicTurbulenceModel>
|
template<class BasicTurbulenceModel>
|
||||||
tmp<volScalarField> SpalartAllmarasDES<BasicTurbulenceModel>::Omega
|
tmp<volScalarField> SpalartAllmarasDES<BasicTurbulenceModel>::Omega
|
||||||
(
|
(
|
||||||
|
|||||||
@ -133,8 +133,6 @@ protected:
|
|||||||
|
|
||||||
tmp<volScalarField> ft2(const volScalarField& chi) const;
|
tmp<volScalarField> ft2(const volScalarField& chi) const;
|
||||||
|
|
||||||
tmp<volScalarField> S(const volTensorField& gradU) const;
|
|
||||||
|
|
||||||
tmp<volScalarField> Omega(const volTensorField& gradU) const;
|
tmp<volScalarField> Omega(const volTensorField& gradU) const;
|
||||||
|
|
||||||
tmp<volScalarField> Stilda
|
tmp<volScalarField> Stilda
|
||||||
|
|||||||
@ -34,15 +34,24 @@ namespace LESModels
|
|||||||
|
|
||||||
// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * //
|
// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class BasicTurbulenceModel>
|
||||||
|
const IDDESDelta& SpalartAllmarasIDDES<BasicTurbulenceModel>::setDelta() const
|
||||||
|
{
|
||||||
|
if (!isA<IDDESDelta>(this->delta_()))
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "The delta function must be set to a " << IDDESDelta::typeName
|
||||||
|
<< " -based model" << exit(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
return refCast<const IDDESDelta>(this->delta_());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class BasicTurbulenceModel>
|
template<class BasicTurbulenceModel>
|
||||||
tmp<volScalarField> SpalartAllmarasIDDES<BasicTurbulenceModel>::alpha() const
|
tmp<volScalarField> SpalartAllmarasIDDES<BasicTurbulenceModel>::alpha() const
|
||||||
{
|
{
|
||||||
// Equation 9 (plus limits)
|
return max(0.25 - this->y_/IDDESDelta_.hmax(), scalar(-5));
|
||||||
return max
|
|
||||||
(
|
|
||||||
0.25 - this->y_/static_cast<const volScalarField&>(IDDESDelta_.hmax()),
|
|
||||||
scalar(-5)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -52,8 +61,7 @@ tmp<volScalarField> SpalartAllmarasIDDES<BasicTurbulenceModel>::ft
|
|||||||
const volScalarField& magGradU
|
const volScalarField& magGradU
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
// Equation 13
|
return tanh(pow3(sqr(Ct_)*rd(this->nut_, magGradU)));
|
||||||
return tanh(pow3(sqr(ct_)*rd(this->nut_, magGradU)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -63,8 +71,7 @@ tmp<volScalarField> SpalartAllmarasIDDES<BasicTurbulenceModel>::fl
|
|||||||
const volScalarField& magGradU
|
const volScalarField& magGradU
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
// Equation 13
|
return tanh(pow(sqr(Cl_)*rd(this->nu(), magGradU), 10));
|
||||||
return tanh(pow(sqr(cl_)*rd(this->nu(), magGradU), 10));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -75,7 +82,9 @@ tmp<volScalarField> SpalartAllmarasIDDES<BasicTurbulenceModel>::rd
|
|||||||
const volScalarField& magGradU
|
const volScalarField& magGradU
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
return min
|
tmp<volScalarField> tr
|
||||||
|
(
|
||||||
|
min
|
||||||
(
|
(
|
||||||
nur
|
nur
|
||||||
/(
|
/(
|
||||||
@ -83,10 +92,15 @@ tmp<volScalarField> SpalartAllmarasIDDES<BasicTurbulenceModel>::rd
|
|||||||
(
|
(
|
||||||
magGradU,
|
magGradU,
|
||||||
dimensionedScalar("SMALL", magGradU.dimensions(), SMALL)
|
dimensionedScalar("SMALL", magGradU.dimensions(), SMALL)
|
||||||
)*sqr(this->kappa_*this->y_)
|
)
|
||||||
|
*sqr(this->kappa_*this->y_)
|
||||||
),
|
),
|
||||||
scalar(10)
|
scalar(10)
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
tr().boundaryField() == 0.0;
|
||||||
|
|
||||||
|
return tr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -98,8 +112,7 @@ tmp<volScalarField> SpalartAllmarasIDDES<BasicTurbulenceModel>::fdt
|
|||||||
const volScalarField& magGradU
|
const volScalarField& magGradU
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
// Related to equation 16
|
return 1 - tanh(pow(Cdt1_*rd(this->nut_, magGradU), Cdt2_));
|
||||||
return 1 - tanh(pow3(8*rd(this->nuEff(), magGradU)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -111,31 +124,38 @@ tmp<volScalarField> SpalartAllmarasIDDES<BasicTurbulenceModel>::dTilda
|
|||||||
const volTensorField& gradU
|
const volTensorField& gradU
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
|
const volScalarField magGradU(mag(gradU));
|
||||||
|
const volScalarField psi(this->psi(chi, fv1));
|
||||||
|
|
||||||
|
const volScalarField lRAS(this->y_);
|
||||||
|
const volScalarField lLES(psi*this->CDES_*this->delta());
|
||||||
|
|
||||||
const volScalarField alpha(this->alpha());
|
const volScalarField alpha(this->alpha());
|
||||||
const volScalarField expTerm(exp(sqr(alpha)));
|
const volScalarField expTerm(exp(sqr(alpha)));
|
||||||
const volScalarField magGradU(mag(gradU));
|
|
||||||
|
|
||||||
// Equation 9
|
|
||||||
tmp<volScalarField> fB = min(2*pow(expTerm, -9.0), scalar(1));
|
tmp<volScalarField> fB = min(2*pow(expTerm, -9.0), scalar(1));
|
||||||
|
|
||||||
// Equation 11
|
|
||||||
tmp<volScalarField> fe1 =
|
tmp<volScalarField> fe1 =
|
||||||
2*(pos(alpha)*pow(expTerm, -11.09) + neg(alpha)*pow(expTerm, -9.0));
|
2*(pos(alpha)*pow(expTerm, -11.09) + neg(alpha)*pow(expTerm, -9.0));
|
||||||
|
|
||||||
// Equation 12
|
|
||||||
tmp<volScalarField> fe2 = 1 - max(ft(magGradU), fl(magGradU));
|
tmp<volScalarField> fe2 = 1 - max(ft(magGradU), fl(magGradU));
|
||||||
|
|
||||||
// Equation 10
|
|
||||||
const volScalarField psi(this->psi(chi, fv1));
|
|
||||||
tmp<volScalarField> fe = max(fe1 - 1, scalar(0))*psi*fe2;
|
tmp<volScalarField> fe = max(fe1 - 1, scalar(0))*psi*fe2;
|
||||||
|
|
||||||
// Equation 16
|
|
||||||
const volScalarField fdTilda(max(1 - fdt(magGradU), fB));
|
const volScalarField fdTilda(max(1 - fdt(magGradU), fB));
|
||||||
|
|
||||||
// Equation 17 (plus limits)
|
// Simplified formulation from Gritskevich et al. paper (2011) where fe = 0
|
||||||
|
/*
|
||||||
return max
|
return max
|
||||||
(
|
(
|
||||||
fdTilda*(1 + fe)*this->y_ + (1 - fdTilda)*psi*this->CDES_*this->delta(),
|
fdTilda*lRAS
|
||||||
|
+ (1 - fdTilda)*lLES,
|
||||||
|
dimensionedScalar("SMALL", dimLength, SMALL)
|
||||||
|
);
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Original formulation from Shur et al. paper (2008)
|
||||||
|
return max
|
||||||
|
(
|
||||||
|
fdTilda*(1 + fe)*lRAS
|
||||||
|
+ (1 - fdTilda)*lLES,
|
||||||
dimensionedScalar("SMALL", dimLength, SMALL)
|
dimensionedScalar("SMALL", dimLength, SMALL)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -164,37 +184,53 @@ SpalartAllmarasIDDES<BasicTurbulenceModel>::SpalartAllmarasIDDES
|
|||||||
alphaRhoPhi,
|
alphaRhoPhi,
|
||||||
phi,
|
phi,
|
||||||
transport,
|
transport,
|
||||||
propertiesName
|
propertiesName,
|
||||||
|
type
|
||||||
),
|
),
|
||||||
fwStar_
|
|
||||||
|
Cdt1_
|
||||||
(
|
(
|
||||||
dimensioned<scalar>::lookupOrAddToDict
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
(
|
(
|
||||||
"fwStar",
|
"Cdt1",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
0.424
|
8
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
cl_
|
Cdt2_
|
||||||
(
|
(
|
||||||
dimensioned<scalar>::lookupOrAddToDict
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
(
|
(
|
||||||
"cl",
|
"Cdt2",
|
||||||
|
this->coeffDict_,
|
||||||
|
3
|
||||||
|
)
|
||||||
|
),
|
||||||
|
Cl_
|
||||||
|
(
|
||||||
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
|
(
|
||||||
|
"Cl",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
3.55
|
3.55
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
ct_
|
Ct_
|
||||||
(
|
(
|
||||||
dimensioned<scalar>::lookupOrAddToDict
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
(
|
(
|
||||||
"ct",
|
"Ct",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
1.63
|
1.63
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
IDDESDelta_(refCast<IDDESDelta>(this->delta_()))
|
IDDESDelta_(setDelta())
|
||||||
{}
|
{
|
||||||
|
if (type == typeName)
|
||||||
|
{
|
||||||
|
this->printCoeffs(type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
@ -204,9 +240,10 @@ bool SpalartAllmarasIDDES<BasicTurbulenceModel>::read()
|
|||||||
{
|
{
|
||||||
if (SpalartAllmarasDES<BasicTurbulenceModel>::read())
|
if (SpalartAllmarasDES<BasicTurbulenceModel>::read())
|
||||||
{
|
{
|
||||||
fwStar_.readIfPresent(this->coeffDict());
|
Cdt1_.readIfPresent(this->coeffDict());
|
||||||
cl_.readIfPresent(this->coeffDict());
|
Cdt2_.readIfPresent(this->coeffDict());
|
||||||
ct_.readIfPresent(this->coeffDict());
|
Cl_.readIfPresent(this->coeffDict());
|
||||||
|
Ct_.readIfPresent(this->coeffDict());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,21 +66,11 @@ class SpalartAllmarasIDDES
|
|||||||
:
|
:
|
||||||
public SpalartAllmarasDES<BasicTurbulenceModel>
|
public SpalartAllmarasDES<BasicTurbulenceModel>
|
||||||
{
|
{
|
||||||
// Private data
|
|
||||||
|
|
||||||
// Model constants
|
|
||||||
|
|
||||||
dimensionedScalar fwStar_;
|
|
||||||
dimensionedScalar cl_;
|
|
||||||
dimensionedScalar ct_;
|
|
||||||
|
|
||||||
// Fields
|
|
||||||
|
|
||||||
const IDDESDelta& IDDESDelta_;
|
|
||||||
|
|
||||||
|
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
|
//- Check that the supplied delta is an IDDESDelta
|
||||||
|
const IDDESDelta& setDelta() const;
|
||||||
|
|
||||||
tmp<volScalarField> alpha() const;
|
tmp<volScalarField> alpha() const;
|
||||||
tmp<volScalarField> ft(const volScalarField& magGradU) const;
|
tmp<volScalarField> ft(const volScalarField& magGradU) const;
|
||||||
tmp<volScalarField> fl(const volScalarField& magGradU) const;
|
tmp<volScalarField> fl(const volScalarField& magGradU) const;
|
||||||
@ -101,6 +91,19 @@ class SpalartAllmarasIDDES
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
// Protected data
|
||||||
|
|
||||||
|
// Model coefficients
|
||||||
|
|
||||||
|
dimensionedScalar Cdt1_;
|
||||||
|
dimensionedScalar Cdt2_;
|
||||||
|
dimensionedScalar Cl_;
|
||||||
|
dimensionedScalar Ct_;
|
||||||
|
|
||||||
|
// Fields
|
||||||
|
|
||||||
|
const IDDESDelta& IDDESDelta_;
|
||||||
|
|
||||||
// Protected Member Functions
|
// Protected Member Functions
|
||||||
|
|
||||||
//- Length scale
|
//- Length scale
|
||||||
|
|||||||
@ -37,7 +37,6 @@ namespace LESModels
|
|||||||
template<class BasicTurbulenceModel>
|
template<class BasicTurbulenceModel>
|
||||||
tmp<volScalarField> kOmegaSSTDDES<BasicTurbulenceModel>::rd
|
tmp<volScalarField> kOmegaSSTDDES<BasicTurbulenceModel>::rd
|
||||||
(
|
(
|
||||||
const volScalarField& nur,
|
|
||||||
const volScalarField& magGradU
|
const volScalarField& magGradU
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
@ -45,7 +44,7 @@ tmp<volScalarField> kOmegaSSTDDES<BasicTurbulenceModel>::rd
|
|||||||
(
|
(
|
||||||
min
|
min
|
||||||
(
|
(
|
||||||
nur
|
this->nuEff()
|
||||||
/(
|
/(
|
||||||
max
|
max
|
||||||
(
|
(
|
||||||
@ -69,7 +68,7 @@ tmp<volScalarField> kOmegaSSTDDES<BasicTurbulenceModel>::fd
|
|||||||
const volScalarField& magGradU
|
const volScalarField& magGradU
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
return 1 - tanh(pow(cd1_*rd(this->nuEff(), magGradU), cd2_));
|
return 1 - tanh(pow(Cd1_*rd(magGradU), Cd2_));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -87,9 +86,18 @@ tmp<volScalarField> kOmegaSSTDDES<BasicTurbulenceModel>::dTilda
|
|||||||
|
|
||||||
const volScalarField lRAS(sqrt(k)/(this->betaStar_*omega));
|
const volScalarField lRAS(sqrt(k)/(this->betaStar_*omega));
|
||||||
const volScalarField lLES(CDES*this->delta());
|
const volScalarField lLES(CDES*this->delta());
|
||||||
const dimensionedScalar d0("SMALL", dimLength, SMALL);
|
|
||||||
|
|
||||||
return max(lRAS - fd(magGradU)*max(lRAS - lLES, d0), d0);
|
return max
|
||||||
|
(
|
||||||
|
lRAS
|
||||||
|
- fd(magGradU)
|
||||||
|
*max
|
||||||
|
(
|
||||||
|
lRAS - lLES,
|
||||||
|
dimensionedScalar("zero", dimLength, 0)
|
||||||
|
),
|
||||||
|
dimensionedScalar("small", dimLength, SMALL)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -120,20 +128,20 @@ kOmegaSSTDDES<BasicTurbulenceModel>::kOmegaSSTDDES
|
|||||||
type
|
type
|
||||||
),
|
),
|
||||||
|
|
||||||
cd1_
|
Cd1_
|
||||||
(
|
(
|
||||||
dimensioned<scalar>::lookupOrAddToDict
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
(
|
(
|
||||||
"cd1",
|
"Cd1",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
20
|
20
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
cd2_
|
Cd2_
|
||||||
(
|
(
|
||||||
dimensioned<scalar>::lookupOrAddToDict
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
(
|
(
|
||||||
"cd2",
|
"Cd2",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
3
|
3
|
||||||
)
|
)
|
||||||
@ -153,8 +161,8 @@ bool kOmegaSSTDDES<BasicTurbulenceModel>::read()
|
|||||||
{
|
{
|
||||||
if (kOmegaSSTDES<BasicTurbulenceModel>::read())
|
if (kOmegaSSTDES<BasicTurbulenceModel>::read())
|
||||||
{
|
{
|
||||||
cd1_.readIfPresent(this->coeffDict());
|
Cd1_.readIfPresent(this->coeffDict());
|
||||||
cd2_.readIfPresent(this->coeffDict());
|
Cd2_.readIfPresent(this->coeffDict());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,14 +66,10 @@ class kOmegaSSTDDES
|
|||||||
{
|
{
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
tmp<volScalarField> rd
|
|
||||||
(
|
|
||||||
const volScalarField& nur,
|
|
||||||
const volScalarField& magGradU
|
|
||||||
) const;
|
|
||||||
|
|
||||||
tmp<volScalarField> fd(const volScalarField& magGradU) const;
|
tmp<volScalarField> fd(const volScalarField& magGradU) const;
|
||||||
|
|
||||||
|
tmp<volScalarField> rd(const volScalarField& magGradU) const;
|
||||||
|
|
||||||
// Disallow default bitwise copy construct and assignment
|
// Disallow default bitwise copy construct and assignment
|
||||||
kOmegaSSTDDES(const kOmegaSSTDDES&);
|
kOmegaSSTDDES(const kOmegaSSTDDES&);
|
||||||
kOmegaSSTDDES& operator=(const kOmegaSSTDDES&);
|
kOmegaSSTDDES& operator=(const kOmegaSSTDDES&);
|
||||||
@ -85,8 +81,8 @@ protected:
|
|||||||
|
|
||||||
// Model coefficients
|
// Model coefficients
|
||||||
|
|
||||||
dimensionedScalar cd1_;
|
dimensionedScalar Cd1_;
|
||||||
dimensionedScalar cd2_;
|
dimensionedScalar Cd2_;
|
||||||
|
|
||||||
|
|
||||||
// Protected Member Functions
|
// Protected Member Functions
|
||||||
@ -144,11 +140,13 @@ public:
|
|||||||
} // End namespace Foam
|
} // End namespace Foam
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
#ifdef NoRepository
|
#ifdef NoRepository
|
||||||
# include "kOmegaSSTDDES.C"
|
# include "kOmegaSSTDDES.C"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -62,12 +62,7 @@ tmp<volScalarField> kOmegaSSTDES<BasicTurbulenceModel>::dTilda
|
|||||||
const volScalarField& k = this->k_;
|
const volScalarField& k = this->k_;
|
||||||
const volScalarField& omega = this->omega_;
|
const volScalarField& omega = this->omega_;
|
||||||
|
|
||||||
return
|
return min(CDES*this->delta(), sqrt(k)/(this->betaStar_*omega));
|
||||||
min
|
|
||||||
(
|
|
||||||
CDES*this->delta(),
|
|
||||||
sqrt(k + this->kMin_)/(this->betaStar_*omega)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -113,7 +108,7 @@ kOmegaSSTDES<BasicTurbulenceModel>::kOmegaSSTDES
|
|||||||
(
|
(
|
||||||
"CDESkom",
|
"CDESkom",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
0.78
|
0.82
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
CDESkeps_
|
CDESkeps_
|
||||||
@ -122,7 +117,7 @@ kOmegaSSTDES<BasicTurbulenceModel>::kOmegaSSTDES
|
|||||||
(
|
(
|
||||||
"CDESkeps",
|
"CDESkeps",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
0.61
|
0.60
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -37,6 +37,9 @@ Description
|
|||||||
39th AIAA Aerospace Sciences Meeting and Exhibit, Reno, NV
|
39th AIAA Aerospace Sciences Meeting and Exhibit, Reno, NV
|
||||||
\endverbatim
|
\endverbatim
|
||||||
|
|
||||||
|
Note: DES constants CDES_kom and CDES_keps have been re-calibrated to
|
||||||
|
OpenFOAM numerics via decaying isotropic turbulence test case
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
kOmegaSSTDES.C
|
kOmegaSSTDES.C
|
||||||
|
|
||||||
|
|||||||
@ -61,7 +61,7 @@ tmp<volScalarField> kOmegaSSTIDDES<BasicTurbulenceModel>::ft
|
|||||||
const volScalarField& magGradU
|
const volScalarField& magGradU
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
return tanh(pow3(sqr(ct_)*rd(this->nut_, magGradU)));
|
return tanh(pow3(sqr(Ct_)*rd(this->nut_, magGradU)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ tmp<volScalarField> kOmegaSSTIDDES<BasicTurbulenceModel>::fl
|
|||||||
const volScalarField& magGradU
|
const volScalarField& magGradU
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
return tanh(pow(sqr(cl_)*rd(this->nu(), magGradU), 10));
|
return tanh(pow(sqr(Cl_)*rd(this->nu(), magGradU), 10));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -104,18 +104,18 @@ tmp<volScalarField> kOmegaSSTIDDES<BasicTurbulenceModel>::rd
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
template<class BasicTurbulenceModel>
|
template<class BasicTurbulenceModel>
|
||||||
tmp<volScalarField> kOmegaSSTIDDES<BasicTurbulenceModel>::fd
|
tmp<volScalarField> kOmegaSSTIDDES<BasicTurbulenceModel>::fdt
|
||||||
(
|
(
|
||||||
const volScalarField& magGradU
|
const volScalarField& magGradU
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
return 1 - tanh(pow(cdt1_*rd(this->nuEff(), magGradU), cdt2_));
|
return 1 - tanh(pow(Cdt1_*rd(this->nut_, magGradU), Cdt2_));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
|
||||||
|
|
||||||
template<class BasicTurbulenceModel>
|
template<class BasicTurbulenceModel>
|
||||||
tmp<volScalarField> kOmegaSSTIDDES<BasicTurbulenceModel>::dTilda
|
tmp<volScalarField> kOmegaSSTIDDES<BasicTurbulenceModel>::dTilda
|
||||||
(
|
(
|
||||||
@ -128,22 +128,35 @@ tmp<volScalarField> kOmegaSSTIDDES<BasicTurbulenceModel>::dTilda
|
|||||||
|
|
||||||
const volScalarField lRAS(sqrt(k)/(this->betaStar_*omega));
|
const volScalarField lRAS(sqrt(k)/(this->betaStar_*omega));
|
||||||
const volScalarField lLES(CDES*this->delta());
|
const volScalarField lLES(CDES*this->delta());
|
||||||
const dimensionedScalar d0("SMALL", dimLength, SMALL);
|
|
||||||
|
|
||||||
const volScalarField alpha(this->alpha());
|
const volScalarField alpha(this->alpha());
|
||||||
const volScalarField expTerm(exp(sqr(alpha)));
|
const volScalarField expTerm(exp(sqr(alpha)));
|
||||||
|
|
||||||
tmp<volScalarField> fStep = min(2*pow(expTerm, -9.0), scalar(1));
|
tmp<volScalarField> fB = min(2*pow(expTerm, -9.0), scalar(1));
|
||||||
const volScalarField fHyb(max(1 - fd(magGradU), fStep));
|
tmp<volScalarField> fe1 =
|
||||||
// Simplified version where fRestore = 0
|
|
||||||
// return max(d0, fHyb*lRAS + (1 - fHyb)*lLES);
|
|
||||||
|
|
||||||
// Original form
|
|
||||||
tmp<volScalarField> fHill =
|
|
||||||
2*(pos(alpha)*pow(expTerm, -11.09) + neg(alpha)*pow(expTerm, -9.0));
|
2*(pos(alpha)*pow(expTerm, -11.09) + neg(alpha)*pow(expTerm, -9.0));
|
||||||
tmp<volScalarField> fAmp = 1 - max(ft(magGradU), fl(magGradU));
|
tmp<volScalarField> fe2 = 1 - max(ft(magGradU), fl(magGradU));
|
||||||
tmp<volScalarField> fRestore = max(fHill - 1, scalar(0))*fAmp;
|
tmp<volScalarField> fe = max(fe1 - 1, scalar(0))*fe2;
|
||||||
return max(d0, fHyb*(1 + fRestore)*lRAS + (1 - fHyb)*lLES);
|
|
||||||
|
const volScalarField fdTilda(max(1 - fdt(magGradU), fB));
|
||||||
|
|
||||||
|
// Simplified formulation from Gritskevich et al. paper (2011) where fe = 0
|
||||||
|
/*
|
||||||
|
return max
|
||||||
|
(
|
||||||
|
fdTilda*lRAS
|
||||||
|
+ (1 - fdTilda)*lLES,
|
||||||
|
dimensionedScalar("SMALL", dimLength, SMALL)
|
||||||
|
);
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Original formulation from Shur et al. paper (2008)
|
||||||
|
return max
|
||||||
|
(
|
||||||
|
fdTilda*(1 + fe)*lRAS
|
||||||
|
+ (1 - fdTilda)*lLES,
|
||||||
|
dimensionedScalar("SMALL", dimLength, SMALL)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -173,38 +186,39 @@ kOmegaSSTIDDES<BasicTurbulenceModel>::kOmegaSSTIDDES
|
|||||||
propertiesName,
|
propertiesName,
|
||||||
type
|
type
|
||||||
),
|
),
|
||||||
cdt1_
|
|
||||||
|
Cdt1_
|
||||||
(
|
(
|
||||||
dimensioned<scalar>::lookupOrAddToDict
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
(
|
(
|
||||||
"cdt1",
|
"Cdt1",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
20
|
20
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
cdt2_
|
Cdt2_
|
||||||
(
|
(
|
||||||
dimensioned<scalar>::lookupOrAddToDict
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
(
|
(
|
||||||
"cdt2",
|
"Cdt2",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
3
|
3
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
cl_
|
Cl_
|
||||||
(
|
(
|
||||||
dimensioned<scalar>::lookupOrAddToDict
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
(
|
(
|
||||||
"cl",
|
"Cl",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
5
|
5
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
ct_
|
Ct_
|
||||||
(
|
(
|
||||||
dimensioned<scalar>::lookupOrAddToDict
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
(
|
(
|
||||||
"ct",
|
"Ct",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
1.87
|
1.87
|
||||||
)
|
)
|
||||||
@ -225,10 +239,10 @@ bool kOmegaSSTIDDES<BasicTurbulenceModel>::read()
|
|||||||
{
|
{
|
||||||
if (kOmegaSSTDES<BasicTurbulenceModel>::read())
|
if (kOmegaSSTDES<BasicTurbulenceModel>::read())
|
||||||
{
|
{
|
||||||
cdt1_.readIfPresent(this->coeffDict());
|
Cdt1_.readIfPresent(this->coeffDict());
|
||||||
cdt2_.readIfPresent(this->coeffDict());
|
Cdt2_.readIfPresent(this->coeffDict());
|
||||||
cl_.readIfPresent(this->coeffDict());
|
Cl_.readIfPresent(this->coeffDict());
|
||||||
ct_.readIfPresent(this->coeffDict());
|
Ct_.readIfPresent(this->coeffDict());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -81,7 +81,7 @@ class kOmegaSSTIDDES
|
|||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Delay function
|
//- Delay function
|
||||||
tmp<volScalarField> fd(const volScalarField& maggradU) const;
|
tmp<volScalarField> fdt(const volScalarField& magGradU) const;
|
||||||
|
|
||||||
// Disallow default bitwise copy construct and assignment
|
// Disallow default bitwise copy construct and assignment
|
||||||
kOmegaSSTIDDES(const kOmegaSSTIDDES&);
|
kOmegaSSTIDDES(const kOmegaSSTIDDES&);
|
||||||
@ -94,15 +94,16 @@ protected:
|
|||||||
|
|
||||||
// Model coefficients
|
// Model coefficients
|
||||||
|
|
||||||
dimensionedScalar cdt1_;
|
dimensionedScalar Cdt1_;
|
||||||
dimensionedScalar cdt2_;
|
dimensionedScalar Cdt2_;
|
||||||
dimensionedScalar cl_;
|
dimensionedScalar Cl_;
|
||||||
dimensionedScalar ct_;
|
dimensionedScalar Ct_;
|
||||||
|
|
||||||
// Fields
|
// Fields
|
||||||
|
|
||||||
const IDDESDelta& IDDESDelta_;
|
const IDDESDelta& IDDESDelta_;
|
||||||
|
|
||||||
|
// Protected Member Functions
|
||||||
|
|
||||||
//- Length scale
|
//- Length scale
|
||||||
virtual tmp<volScalarField> dTilda
|
virtual tmp<volScalarField> dTilda
|
||||||
@ -157,11 +158,13 @@ public:
|
|||||||
} // End namespace Foam
|
} // End namespace Foam
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
#ifdef NoRepository
|
#ifdef NoRepository
|
||||||
# include "kOmegaSSTIDDES.C"
|
# include "kOmegaSSTIDDES.C"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
Reference in New Issue
Block a user