BUG: deltaMax correction and IDDED delta correction

This commit is contained in:
sergio
2010-12-06 12:47:14 +00:00
parent 2ec4f3631a
commit d54b31e2d6
2 changed files with 39 additions and 35 deletions

View File

@ -42,47 +42,34 @@ void Foam::IDDESDelta::calcDelta()
{ {
label nD = mesh().nGeometricD(); label nD = mesh().nGeometricD();
volScalarField delta
(
IOobject
(
"delta",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
dimensionedScalar("zero", dimLength, SMALL),
calculatedFvPatchScalarField::typeName
);
delta.internalField() = pow(mesh_.V(), 1.0/3.0);
// initialise hwn as wall distance // initialise hwn as wall distance
volScalarField hwn = wallDist(mesh()).y(); volScalarField hwn = wallDist(mesh()).y();
scalar deltamaxTmp = 0.;
const cellList& cells = mesh().cells();
forAll(cells,cellI)
{
scalar deltaminTmp = 1.e10;
const labelList& cFaces = mesh().cells()[cellI];
const point& centrevector = mesh().cellCentres()[cellI];
forAll(cFaces, cFaceI)
{
label faceI = cFaces[cFaceI];
const point& facevector = mesh().faceCentres()[faceI];
scalar tmp = mag(facevector - centrevector);
if (tmp > deltamaxTmp)
{
deltamaxTmp = tmp;
}
if (tmp < deltaminTmp)
{
deltaminTmp = tmp;
}
}
hwn[cellI] = 2.0*deltaminTmp;
}
dimensionedScalar deltamax("deltamax",dimLength,2.0*deltamaxTmp);
if (nD == 3) if (nD == 3)
{ {
delta_.internalField() = delta_.internalField() =
deltaCoeff_ deltaCoeff_
*min *min
( (
max(max(cw_*wallDist(mesh()).y(), cw_*deltamax), hwn), max(max(cw_*wallDist(mesh()).y(), cw_*delta), hwn),
deltamax delta
); );
} }
else if (nD == 2) else if (nD == 2)
@ -95,8 +82,8 @@ void Foam::IDDESDelta::calcDelta()
deltaCoeff_ deltaCoeff_
*min *min
( (
max(max(cw_*wallDist(mesh()).y(), cw_*deltamax), hwn), max(max(cw_*wallDist(mesh()).y(), cw_*delta), hwn),
deltamax delta
); );
} }
else else

View File

@ -44,9 +44,26 @@ addToRunTimeSelectionTable(LESModel, SpalartAllmarasIDDES, dictionary);
tmp<volScalarField> SpalartAllmarasIDDES::alpha() const tmp<volScalarField> SpalartAllmarasIDDES::alpha() const
{ {
volScalarField delta
(
IOobject
(
"delta",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
dimensionedScalar("zero", dimLength, SMALL),
calculatedFvPatchScalarField::typeName
);
delta.internalField() = pow(mesh_.V(), 1.0/3.0);
return max return max
( (
0.25 - y_/dimensionedScalar("hMax", dimLength, max(cmptMax(delta()))), 0.25 - y_/delta,
scalar(-5) scalar(-5)
); );
} }