mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
turbulenceModels/RAS/LRR: Added optional Gibson-Launder wall-reflection
This commit is contained in:
@ -24,6 +24,7 @@ License
|
|||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "LRR.H"
|
#include "LRR.H"
|
||||||
|
#include "wallFvPatch.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -80,31 +81,13 @@ LRR<BasicTurbulenceModel>::LRR
|
|||||||
0.09
|
0.09
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
Clrr1_
|
|
||||||
(
|
|
||||||
dimensioned<scalar>::lookupOrAddToDict
|
|
||||||
(
|
|
||||||
"Clrr1",
|
|
||||||
this->coeffDict_,
|
|
||||||
1.8
|
|
||||||
)
|
|
||||||
),
|
|
||||||
Clrr2_
|
|
||||||
(
|
|
||||||
dimensioned<scalar>::lookupOrAddToDict
|
|
||||||
(
|
|
||||||
"Clrr2",
|
|
||||||
this->coeffDict_,
|
|
||||||
0.6
|
|
||||||
)
|
|
||||||
),
|
|
||||||
C1_
|
C1_
|
||||||
(
|
(
|
||||||
dimensioned<scalar>::lookupOrAddToDict
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
(
|
(
|
||||||
"C1",
|
"C1",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
1.44
|
1.8
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
C2_
|
C2_
|
||||||
@ -113,6 +96,24 @@ LRR<BasicTurbulenceModel>::LRR
|
|||||||
(
|
(
|
||||||
"C2",
|
"C2",
|
||||||
this->coeffDict_,
|
this->coeffDict_,
|
||||||
|
0.6
|
||||||
|
)
|
||||||
|
),
|
||||||
|
Ceps1_
|
||||||
|
(
|
||||||
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
|
(
|
||||||
|
"Ceps1",
|
||||||
|
this->coeffDict_,
|
||||||
|
1.44
|
||||||
|
)
|
||||||
|
),
|
||||||
|
Ceps2_
|
||||||
|
(
|
||||||
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
|
(
|
||||||
|
"Ceps2",
|
||||||
|
this->coeffDict_,
|
||||||
1.92
|
1.92
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
@ -135,6 +136,43 @@ LRR<BasicTurbulenceModel>::LRR
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
|
||||||
|
wallReflection_
|
||||||
|
(
|
||||||
|
Switch::lookupOrAddToDict
|
||||||
|
(
|
||||||
|
"wallReflection",
|
||||||
|
this->coeffDict_,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
),
|
||||||
|
kappa_
|
||||||
|
(
|
||||||
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
|
(
|
||||||
|
"kappa",
|
||||||
|
this->coeffDict_,
|
||||||
|
0.41
|
||||||
|
)
|
||||||
|
),
|
||||||
|
Cref1_
|
||||||
|
(
|
||||||
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
|
(
|
||||||
|
"Cref1",
|
||||||
|
this->coeffDict_,
|
||||||
|
0.5
|
||||||
|
)
|
||||||
|
),
|
||||||
|
Cref2_
|
||||||
|
(
|
||||||
|
dimensioned<scalar>::lookupOrAddToDict
|
||||||
|
(
|
||||||
|
"Cref2",
|
||||||
|
this->coeffDict_,
|
||||||
|
0.3
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
k_
|
k_
|
||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
@ -179,10 +217,10 @@ bool LRR<BasicTurbulenceModel>::read()
|
|||||||
if (ReynoldsStress<RASModel<BasicTurbulenceModel> >::read())
|
if (ReynoldsStress<RASModel<BasicTurbulenceModel> >::read())
|
||||||
{
|
{
|
||||||
Cmu_.readIfPresent(this->coeffDict());
|
Cmu_.readIfPresent(this->coeffDict());
|
||||||
Clrr1_.readIfPresent(this->coeffDict());
|
|
||||||
Clrr2_.readIfPresent(this->coeffDict());
|
|
||||||
C1_.readIfPresent(this->coeffDict());
|
C1_.readIfPresent(this->coeffDict());
|
||||||
C2_.readIfPresent(this->coeffDict());
|
C2_.readIfPresent(this->coeffDict());
|
||||||
|
Ceps1_.readIfPresent(this->coeffDict());
|
||||||
|
Ceps2_.readIfPresent(this->coeffDict());
|
||||||
Cs_.readIfPresent(this->coeffDict());
|
Cs_.readIfPresent(this->coeffDict());
|
||||||
Ceps_.readIfPresent(this->coeffDict());
|
Ceps_.readIfPresent(this->coeffDict());
|
||||||
|
|
||||||
@ -228,8 +266,8 @@ void LRR<BasicTurbulenceModel>::correct()
|
|||||||
+ fvm::div(alphaRhoPhi, epsilon_)
|
+ fvm::div(alphaRhoPhi, epsilon_)
|
||||||
- fvm::laplacian(Ceps_*alpha*rho*(k_/epsilon_)*R, epsilon_)
|
- fvm::laplacian(Ceps_*alpha*rho*(k_/epsilon_)*R, epsilon_)
|
||||||
==
|
==
|
||||||
C1_*alpha*rho*G*epsilon_/k_
|
Ceps1_*alpha*rho*G*epsilon_/k_
|
||||||
- fvm::Sp(C2_*alpha*rho*epsilon_/k_, epsilon_)
|
- fvm::Sp(Ceps2_*alpha*rho*epsilon_/k_, epsilon_)
|
||||||
);
|
);
|
||||||
|
|
||||||
epsEqn().relax();
|
epsEqn().relax();
|
||||||
@ -268,13 +306,29 @@ void LRR<BasicTurbulenceModel>::correct()
|
|||||||
fvm::ddt(alpha, rho, R)
|
fvm::ddt(alpha, rho, R)
|
||||||
+ fvm::div(alphaRhoPhi, R)
|
+ fvm::div(alphaRhoPhi, R)
|
||||||
- fvm::laplacian(Cs_*alpha*rho*(k_/epsilon_)*R, R)
|
- fvm::laplacian(Cs_*alpha*rho*(k_/epsilon_)*R, R)
|
||||||
+ fvm::Sp(Clrr1_*alpha*rho*epsilon_/k_, R)
|
+ fvm::Sp(C1_*alpha*rho*epsilon_/k_, R)
|
||||||
==
|
==
|
||||||
alpha*rho*P
|
alpha*rho*P
|
||||||
- (2.0/3.0*(1 - Clrr1_)*I)*alpha*rho*epsilon_
|
- (2.0/3.0*(1 - C1_)*I)*alpha*rho*epsilon_
|
||||||
- Clrr2_*alpha*rho*dev(P)
|
- C2_*alpha*rho*dev(P)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Optionally add wall-refection term
|
||||||
|
if (wallReflection_)
|
||||||
|
{
|
||||||
|
const volVectorField& n_(wallDist::New(this->mesh_).n());
|
||||||
|
const volScalarField& y_(wallDist::New(this->mesh_).y());
|
||||||
|
|
||||||
|
const volSymmTensorField reflect
|
||||||
|
(
|
||||||
|
Cref1_*R - ((Cref2_*C2_)*(k_/epsilon_))*dev(P)
|
||||||
|
);
|
||||||
|
|
||||||
|
REqn() +=
|
||||||
|
((3*pow(Cmu_, 0.75)/kappa_)*(alpha*rho*sqrt(k_)/y_))
|
||||||
|
*dev(symm((n_ & reflect)*n_));
|
||||||
|
}
|
||||||
|
|
||||||
REqn().relax();
|
REqn().relax();
|
||||||
solve(REqn);
|
solve(REqn);
|
||||||
|
|
||||||
|
|||||||
@ -46,17 +46,31 @@ Description
|
|||||||
Physics of Fluids (1958-1988), 13(11), 2634-2649.
|
Physics of Fluids (1958-1988), 13(11), 2634-2649.
|
||||||
\endverbatim
|
\endverbatim
|
||||||
|
|
||||||
|
Optional Gibson-Launder wall-reflection is also provided:
|
||||||
|
\verbatim
|
||||||
|
Gibson, M. M., & Launder, B. E. (1978).
|
||||||
|
Ground effects on pressure fluctuations in the
|
||||||
|
atmospheric boundary layer.
|
||||||
|
Journal of Fluid Mechanics, 86(03), 491-511.
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
The default model coefficients are:
|
The default model coefficients are:
|
||||||
\verbatim
|
\verbatim
|
||||||
LRRCoeffs
|
LRRCoeffs
|
||||||
{
|
{
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
Clrr1 1.8;
|
C1 1.8;
|
||||||
Clrr2 0.6;
|
C2 0.6;
|
||||||
C1 1.44;
|
Ceps1 1.44;
|
||||||
C2 1.92;
|
Ceps2 1.92;
|
||||||
Cs 0.25;
|
Cs 0.25;
|
||||||
Ceps 0.15;
|
Ceps 0.15;
|
||||||
|
|
||||||
|
wallReflection yes;
|
||||||
|
kappa 0.41
|
||||||
|
Cref1 0.5;
|
||||||
|
Cref2 0.3;
|
||||||
|
|
||||||
couplingFactor 0.0;
|
couplingFactor 0.0;
|
||||||
}
|
}
|
||||||
\endverbatim
|
\endverbatim
|
||||||
@ -103,15 +117,23 @@ protected:
|
|||||||
|
|
||||||
dimensionedScalar Cmu_;
|
dimensionedScalar Cmu_;
|
||||||
|
|
||||||
dimensionedScalar Clrr1_;
|
|
||||||
dimensionedScalar Clrr2_;
|
|
||||||
|
|
||||||
dimensionedScalar C1_;
|
dimensionedScalar C1_;
|
||||||
dimensionedScalar C2_;
|
dimensionedScalar C2_;
|
||||||
|
|
||||||
|
dimensionedScalar Ceps1_;
|
||||||
|
dimensionedScalar Ceps2_;
|
||||||
dimensionedScalar Cs_;
|
dimensionedScalar Cs_;
|
||||||
dimensionedScalar Ceps_;
|
dimensionedScalar Ceps_;
|
||||||
|
|
||||||
|
|
||||||
|
// Wall-refection coefficients
|
||||||
|
|
||||||
|
Switch wallReflection_;
|
||||||
|
dimensionedScalar kappa_;
|
||||||
|
dimensionedScalar Cref1_;
|
||||||
|
dimensionedScalar Cref2_;
|
||||||
|
|
||||||
|
|
||||||
// Fields
|
// Fields
|
||||||
|
|
||||||
volScalarField k_;
|
volScalarField k_;
|
||||||
|
|||||||
Reference in New Issue
Block a user