Refactorization of incompressible/compressible nut/mut wall functions. Author: Vuko Vukcevic. Merge: Hrvoje Jasak.
This commit is contained in:
commit
e01e16c943
98 changed files with 2790 additions and 2119 deletions
|
@ -17,13 +17,17 @@ alphatWallFunctions = $(wallFunctions)/alphatWallFunctions
|
||||||
$(alphatWallFunctions)/alphatWallFunction/alphatWallFunctionFvPatchScalarField.C
|
$(alphatWallFunctions)/alphatWallFunction/alphatWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
mutWallFunctions = $(wallFunctions)/mutWallFunctions
|
mutWallFunctions = $(wallFunctions)/mutWallFunctions
|
||||||
$(mutWallFunctions)/mutkWallFunction/mutkWallFunctionFvPatchScalarField.C
|
|
||||||
$(mutWallFunctions)/mutWallFunction/mutWallFunctionFvPatchScalarField.C
|
$(mutWallFunctions)/mutWallFunction/mutWallFunctionFvPatchScalarField.C
|
||||||
$(mutWallFunctions)/mutRoughWallFunction/mutRoughWallFunctionFvPatchScalarField.C
|
$(mutWallFunctions)/mutLowReWallFunction/mutLowReWallFunctionFvPatchScalarField.C
|
||||||
$(mutWallFunctions)/mutSpalartAllmarasWallFunction/mutSpalartAllmarasWallFunctionFvPatchScalarField.C
|
$(mutWallFunctions)/mutkWallFunction/mutkWallFunctionFvPatchScalarField.C
|
||||||
|
$(mutWallFunctions)/mutkRoughWallFunction/mutkRoughWallFunctionFvPatchScalarField.C
|
||||||
|
$(mutWallFunctions)/mutUWallFunction/mutUWallFunctionFvPatchScalarField.C
|
||||||
|
$(mutWallFunctions)/mutURoughWallFunction/mutURoughWallFunctionFvPatchScalarField.C
|
||||||
$(mutWallFunctions)/mutSpalartAllmarasStandardWallFunction/mutSpalartAllmarasStandardWallFunctionFvPatchScalarField.C
|
$(mutWallFunctions)/mutSpalartAllmarasStandardWallFunction/mutSpalartAllmarasStandardWallFunctionFvPatchScalarField.C
|
||||||
$(mutWallFunctions)/mutSpalartAllmarasStandardRoughWallFunction/mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField.C
|
$(mutWallFunctions)/mutSpalartAllmarasStandardRoughWallFunction/mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField.C
|
||||||
$(mutWallFunctions)/mutLowReWallFunction/mutLowReWallFunctionFvPatchScalarField.C
|
$(mutWallFunctions)/mutSpalartAllmarasWallFunction/mutSpalartAllmarasWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
|
backwardsCompatibility/wallFunctions/backwardsCompatibilityWallFunctions.C
|
||||||
|
|
||||||
epsilonWallFunctions = $(wallFunctions)/epsilonWallFunctions
|
epsilonWallFunctions = $(wallFunctions)/epsilonWallFunctions
|
||||||
$(epsilonWallFunctions)/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.C
|
$(epsilonWallFunctions)/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.C
|
||||||
|
@ -42,6 +46,4 @@ derivedFvPatchFields/turbulentTemperatureCoupledBaffle/turbulentTemperatureCoupl
|
||||||
derivedFvPatchFields/turbulentTemperatureCoupledBaffle/regionProperties.C
|
derivedFvPatchFields/turbulentTemperatureCoupledBaffle/regionProperties.C
|
||||||
derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C
|
derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C
|
||||||
|
|
||||||
backwardsCompatibility/wallFunctions/backwardsCompatibilityWallFunctions.C
|
|
||||||
|
|
||||||
LIB = $(FOAM_LIBBIN)/libcompressibleRASModels
|
LIB = $(FOAM_LIBBIN)/libcompressibleRASModels
|
||||||
|
|
|
@ -27,7 +27,7 @@ License
|
||||||
|
|
||||||
#include "calculatedFvPatchField.H"
|
#include "calculatedFvPatchField.H"
|
||||||
#include "alphatWallFunctionFvPatchScalarField.H"
|
#include "alphatWallFunctionFvPatchScalarField.H"
|
||||||
#include "mutWallFunctionFvPatchScalarField.H"
|
#include "mutkWallFunctionFvPatchScalarField.H"
|
||||||
#include "mutLowReWallFunctionFvPatchScalarField.H"
|
#include "mutLowReWallFunctionFvPatchScalarField.H"
|
||||||
#include "epsilonWallFunctionFvPatchScalarField.H"
|
#include "epsilonWallFunctionFvPatchScalarField.H"
|
||||||
#include "kqRWallFunctionFvPatchField.H"
|
#include "kqRWallFunctionFvPatchField.H"
|
||||||
|
@ -158,7 +158,7 @@ tmp<volScalarField> autoCreateMut
|
||||||
if (bm[patchI].isWall())
|
if (bm[patchI].isWall())
|
||||||
{
|
{
|
||||||
mutBoundaryTypes[patchI] =
|
mutBoundaryTypes[patchI] =
|
||||||
RASModels::mutWallFunctionFvPatchScalarField::typeName;
|
RASModels::mutkWallFunctionFvPatchScalarField::typeName;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -100,6 +100,25 @@ mutLowReWallFunctionFvPatchScalarField::mutLowReWallFunctionFvPatchScalarField
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
tmp<scalarField> mutLowReWallFunctionFvPatchScalarField::yPlus() const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchI];
|
||||||
|
const scalarField& muw = turbModel.mu().boundaryField()[patchI];
|
||||||
|
const scalarField& rhow = turbModel.rho().boundaryField()[patchI];
|
||||||
|
|
||||||
|
const scalarField nuw = muw/rhow;
|
||||||
|
|
||||||
|
return y*sqrt(nuw*mag(Uw.snGrad()))/nuw;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makePatchTypeField
|
makePatchTypeField
|
||||||
|
|
|
@ -28,7 +28,19 @@ Description
|
||||||
Boundary condition for turbulent (kinematic) viscosity when for use with
|
Boundary condition for turbulent (kinematic) viscosity when for use with
|
||||||
low Reynolds number models.
|
low Reynolds number models.
|
||||||
|
|
||||||
Sets mut to zero, and provides an access to calculate y+.
|
Sets mut to zero, and provides an access function to calculate y+.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Example of the boundary condition specification:
|
||||||
|
\verbatim
|
||||||
|
<patchName>
|
||||||
|
{
|
||||||
|
type mutLowReWallFunction;
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
See also
|
||||||
|
Foam::nutWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
mutLowReWallFunctionFvPatchScalarField.C
|
mutLowReWallFunctionFvPatchScalarField.C
|
||||||
|
@ -59,7 +71,7 @@ class mutLowReWallFunctionFvPatchScalarField
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
// Private member functions
|
// Protected Member Functions
|
||||||
|
|
||||||
//- Calculate the turbulence viscosity
|
//- Calculate the turbulence viscosity
|
||||||
virtual tmp<scalarField> calcMut() const;
|
virtual tmp<scalarField> calcMut() const;
|
||||||
|
@ -132,6 +144,12 @@ public:
|
||||||
new mutLowReWallFunctionFvPatchScalarField(*this, iF)
|
new mutLowReWallFunctionFvPatchScalarField(*this, iF)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
//- Calculate and return the yPlus at the boundary
|
||||||
|
virtual tmp<scalarField> yPlus() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -38,171 +38,6 @@ namespace compressible
|
||||||
namespace RASModels
|
namespace RASModels
|
||||||
{
|
{
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
|
||||||
|
|
||||||
tmp<scalarField>
|
|
||||||
mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::calcYPlus
|
|
||||||
(
|
|
||||||
const scalarField& magUp
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
|
||||||
const scalarField& muw = rasModel.mu().boundaryField()[patchI];
|
|
||||||
const fvPatchScalarField& rho = rasModel.rho().boundaryField()[patchI];
|
|
||||||
|
|
||||||
tmp<scalarField> tyPlus(new scalarField(patch().size(), 0.0));
|
|
||||||
scalarField& yPlus = tyPlus();
|
|
||||||
|
|
||||||
if (roughnessHeight_ > 0.0)
|
|
||||||
{
|
|
||||||
// Rough Walls
|
|
||||||
const scalar c_1 = 1/(90 - 2.25) + roughnessConstant_;
|
|
||||||
static const scalar c_2 = 2.25/(90 - 2.25);
|
|
||||||
static const scalar c_3 = 2.0*atan(1.0)/log(90/2.25);
|
|
||||||
static const scalar c_4 = c_3*log(2.25);
|
|
||||||
|
|
||||||
//if (KsPlusBasedOnYPlus_)
|
|
||||||
{
|
|
||||||
// If KsPlus is based on YPlus the extra term added to the law
|
|
||||||
// of the wall will depend on yPlus
|
|
||||||
forAll(yPlus, facei)
|
|
||||||
{
|
|
||||||
const scalar magUpara = magUp[facei];
|
|
||||||
const scalar Re = rho[facei]*magUpara*y[facei]/muw[facei];
|
|
||||||
const scalar kappaRe = kappa_*Re;
|
|
||||||
|
|
||||||
scalar yp = yPlusLam_;
|
|
||||||
const scalar ryPlusLam = 1.0/yp;
|
|
||||||
|
|
||||||
int iter = 0;
|
|
||||||
scalar yPlusLast = 0.0;
|
|
||||||
scalar dKsPlusdYPlus = roughnessHeight_/y[facei];
|
|
||||||
|
|
||||||
// Enforce the roughnessHeight to be less than the distance to
|
|
||||||
// the first cell centre.
|
|
||||||
if (dKsPlusdYPlus > 1)
|
|
||||||
{
|
|
||||||
dKsPlusdYPlus = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Additional tuning parameter (fudge factor) - nominally = 1
|
|
||||||
dKsPlusdYPlus *= roughnessFudgeFactor_;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
yPlusLast = yp;
|
|
||||||
|
|
||||||
// The non-dimensional roughness height
|
|
||||||
scalar KsPlus = yp*dKsPlusdYPlus;
|
|
||||||
|
|
||||||
// The extra term in the law-of-the-wall
|
|
||||||
scalar G = 0.0;
|
|
||||||
|
|
||||||
scalar yPlusGPrime = 0.0;
|
|
||||||
|
|
||||||
if (KsPlus >= 90)
|
|
||||||
{
|
|
||||||
const scalar t_1 = 1 + roughnessConstant_*KsPlus;
|
|
||||||
G = log(t_1);
|
|
||||||
yPlusGPrime = roughnessConstant_*KsPlus/t_1;
|
|
||||||
}
|
|
||||||
else if (KsPlus > 2.25)
|
|
||||||
{
|
|
||||||
const scalar t_1 = c_1*KsPlus - c_2;
|
|
||||||
const scalar t_2 = c_3*log(KsPlus) - c_4;
|
|
||||||
const scalar sint_2 = sin(t_2);
|
|
||||||
const scalar logt_1 = log(t_1);
|
|
||||||
G = logt_1*sint_2;
|
|
||||||
yPlusGPrime =
|
|
||||||
(c_1*sint_2*KsPlus/t_1) + (c_3*logt_1*cos(t_2));
|
|
||||||
}
|
|
||||||
|
|
||||||
scalar denom = 1.0 + log(E_*yp) - G - yPlusGPrime;
|
|
||||||
if (mag(denom) > VSMALL)
|
|
||||||
{
|
|
||||||
yp = (kappaRe + yp*(1 - yPlusGPrime))/denom;
|
|
||||||
}
|
|
||||||
|
|
||||||
} while
|
|
||||||
(
|
|
||||||
mag(ryPlusLam*(yp - yPlusLast)) > 0.0001
|
|
||||||
&& ++iter < 10
|
|
||||||
&& yp > VSMALL
|
|
||||||
);
|
|
||||||
|
|
||||||
yPlus[facei] = max(0.0, yp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Smooth Walls
|
|
||||||
forAll(yPlus, facei)
|
|
||||||
{
|
|
||||||
const scalar magUpara = magUp[facei];
|
|
||||||
const scalar Re = rho[facei]*magUpara*y[facei]/muw[facei];
|
|
||||||
const scalar kappaRe = kappa_*Re;
|
|
||||||
|
|
||||||
scalar yp = yPlusLam_;
|
|
||||||
const scalar ryPlusLam = 1.0/yp;
|
|
||||||
|
|
||||||
int iter = 0;
|
|
||||||
scalar yPlusLast = 0.0;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
yPlusLast = yp;
|
|
||||||
yp = (kappaRe + yp)/(1.0 + log(E_*yp));
|
|
||||||
|
|
||||||
} while
|
|
||||||
(
|
|
||||||
mag(ryPlusLam*(yp - yPlusLast)) > 0.0001
|
|
||||||
&& ++iter < 10
|
|
||||||
);
|
|
||||||
|
|
||||||
yPlus[facei] = max(0.0, yp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return tyPlus;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField>
|
|
||||||
mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::calcMut() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
|
||||||
const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
|
|
||||||
const scalarField& muw = rasModel.mu().boundaryField()[patchI];
|
|
||||||
const fvPatchScalarField& rho = rasModel.rho().boundaryField()[patchI];
|
|
||||||
|
|
||||||
scalarField magUp = mag(Uw.patchInternalField() - Uw);
|
|
||||||
|
|
||||||
tmp<scalarField> tyPlus = calcYPlus(magUp);
|
|
||||||
scalarField& yPlus = tyPlus();
|
|
||||||
|
|
||||||
tmp<scalarField> tmutw(new scalarField(patch().size(), 0.0));
|
|
||||||
scalarField& mutw = tmutw();
|
|
||||||
|
|
||||||
forAll(yPlus, facei)
|
|
||||||
{
|
|
||||||
if (yPlus[facei] > yPlusLam_)
|
|
||||||
{
|
|
||||||
const scalar Re = rho[facei]*magUp[facei]*y[facei]/muw[facei];
|
|
||||||
mutw[facei] = muw[facei]*(sqr(yPlus[facei])/Re - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return tmutw;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::
|
mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::
|
||||||
|
@ -212,10 +47,7 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
mutWallFunctionFvPatchScalarField(p, iF),
|
mutURoughWallFunctionFvPatchScalarField(p, iF)
|
||||||
roughnessHeight_(pTraits<scalar>::zero),
|
|
||||||
roughnessConstant_(pTraits<scalar>::zero),
|
|
||||||
roughnessFudgeFactor_(pTraits<scalar>::zero)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -228,10 +60,7 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
||||||
const fvPatchFieldMapper& mapper
|
const fvPatchFieldMapper& mapper
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
mutWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
|
mutURoughWallFunctionFvPatchScalarField(ptf, p, iF, mapper)
|
||||||
roughnessHeight_(ptf.roughnessHeight_),
|
|
||||||
roughnessConstant_(ptf.roughnessConstant_),
|
|
||||||
roughnessFudgeFactor_(ptf.roughnessFudgeFactor_)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -243,10 +72,7 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
mutWallFunctionFvPatchScalarField(p, iF, dict),
|
mutURoughWallFunctionFvPatchScalarField(p, iF, dict)
|
||||||
roughnessHeight_(readScalar(dict.lookup("roughnessHeight"))),
|
|
||||||
roughnessConstant_(readScalar(dict.lookup("roughnessConstant"))),
|
|
||||||
roughnessFudgeFactor_(readScalar(dict.lookup("roughnessFudgeFactor")))
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -256,10 +82,7 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
||||||
const mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField& rwfpsf
|
const mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField& rwfpsf
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
mutWallFunctionFvPatchScalarField(rwfpsf),
|
mutURoughWallFunctionFvPatchScalarField(rwfpsf)
|
||||||
roughnessHeight_(rwfpsf.roughnessHeight_),
|
|
||||||
roughnessConstant_(rwfpsf.roughnessConstant_),
|
|
||||||
roughnessFudgeFactor_(rwfpsf.roughnessFudgeFactor_)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -270,44 +93,10 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
mutWallFunctionFvPatchScalarField(rwfpsf, iF),
|
mutURoughWallFunctionFvPatchScalarField(rwfpsf, iF)
|
||||||
roughnessHeight_(rwfpsf.roughnessHeight_),
|
|
||||||
roughnessConstant_(rwfpsf.roughnessConstant_),
|
|
||||||
roughnessFudgeFactor_(rwfpsf.roughnessFudgeFactor_)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
tmp<scalarField>
|
|
||||||
mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::yPlus() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
|
|
||||||
const scalarField magUp = mag(Uw.patchInternalField() - Uw);
|
|
||||||
|
|
||||||
return calcYPlus(magUp);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::write
|
|
||||||
(
|
|
||||||
Ostream& os
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
fixedValueFvPatchScalarField::write(os);
|
|
||||||
writeLocalEntries(os);
|
|
||||||
os.writeKeyword("roughnessHeight")
|
|
||||||
<< roughnessHeight_ << token::END_STATEMENT << nl;
|
|
||||||
os.writeKeyword("roughnessConstant")
|
|
||||||
<< roughnessConstant_ << token::END_STATEMENT << nl;
|
|
||||||
os.writeKeyword("roughnessFudgeFactor")
|
|
||||||
<< roughnessFudgeFactor_ << token::END_STATEMENT << nl;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makePatchTypeField
|
makePatchTypeField
|
||||||
|
|
|
@ -26,7 +26,9 @@ Class
|
||||||
mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Wall function boundary condition for rough walls
|
This boundary condition is the same as mutURoughWallFunction. We will simply
|
||||||
|
derive from mutURoughWallFunctionFvPatchScalarField to enable backward
|
||||||
|
compatibility.
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
mutSpalartAllamarasStandardWallFunctionFvPatchScalarField.C
|
mutSpalartAllamarasStandardWallFunctionFvPatchScalarField.C
|
||||||
|
@ -36,7 +38,7 @@ SourceFiles
|
||||||
#ifndef compressibleMutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H
|
#ifndef compressibleMutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H
|
||||||
#define compressibleMutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H
|
#define compressibleMutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
#include "mutWallFunctionFvPatchScalarField.H"
|
#include "mutURoughWallFunctionFvPatchScalarField.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
@ -53,33 +55,8 @@ Class mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField Declaration
|
||||||
|
|
||||||
class mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
class mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
||||||
:
|
:
|
||||||
public mutWallFunctionFvPatchScalarField
|
public mutURoughWallFunctionFvPatchScalarField
|
||||||
{
|
{
|
||||||
protected:
|
|
||||||
|
|
||||||
// Protected data
|
|
||||||
|
|
||||||
// Roughness parameters
|
|
||||||
|
|
||||||
//- Height
|
|
||||||
scalar roughnessHeight_;
|
|
||||||
|
|
||||||
//- Constant
|
|
||||||
scalar roughnessConstant_;
|
|
||||||
|
|
||||||
//- Scale factor
|
|
||||||
scalar roughnessFudgeFactor_;
|
|
||||||
|
|
||||||
|
|
||||||
// Protected member functions
|
|
||||||
|
|
||||||
//- Calculate yPLus
|
|
||||||
virtual tmp<scalarField> calcYPlus(const scalarField& magUp) const;
|
|
||||||
|
|
||||||
//- Calculate the turbulence viscosity
|
|
||||||
virtual tmp<scalarField> calcMut() const;
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
|
@ -154,60 +131,6 @@ public:
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Member functions
|
|
||||||
|
|
||||||
// Access
|
|
||||||
|
|
||||||
//- Return the roughness height scale
|
|
||||||
const scalar& roughnessHeight() const
|
|
||||||
{
|
|
||||||
return roughnessHeight_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return reference to the roughness height to allow adjustment
|
|
||||||
scalar& roughnessHeight()
|
|
||||||
{
|
|
||||||
return roughnessHeight_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return the roughness constant scale
|
|
||||||
const scalar& roughnessConstant() const
|
|
||||||
{
|
|
||||||
return roughnessConstant_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return reference to the roughness constant to allow adjustment
|
|
||||||
scalar& roughnessConstant()
|
|
||||||
{
|
|
||||||
return roughnessConstant_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return the roughness scale factor
|
|
||||||
const scalar& roughnessFudgeFactor() const
|
|
||||||
{
|
|
||||||
return roughnessFudgeFactor_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return reference to the roughness scale factor to allow
|
|
||||||
// adjustment
|
|
||||||
scalar& roughnessFudgeFactor()
|
|
||||||
{
|
|
||||||
return roughnessFudgeFactor_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Evaluation functions
|
|
||||||
|
|
||||||
//- Calculate and return the yPlus at the boundary
|
|
||||||
virtual tmp<scalarField> yPlus() const;
|
|
||||||
|
|
||||||
|
|
||||||
// I-O
|
|
||||||
|
|
||||||
//- Write
|
|
||||||
virtual void write(Ostream& os) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -38,77 +38,6 @@ namespace compressible
|
||||||
namespace RASModels
|
namespace RASModels
|
||||||
{
|
{
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
|
||||||
|
|
||||||
tmp<scalarField>
|
|
||||||
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::calcYPlus
|
|
||||||
(
|
|
||||||
const scalarField& magUp
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
|
||||||
const fvPatchScalarField& rhow = rasModel.rho().boundaryField()[patchI];
|
|
||||||
const fvPatchScalarField& muw = rasModel.mu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
tmp<scalarField> tyPlus(new scalarField(patch().size(), 0.0));
|
|
||||||
scalarField& yPlus = tyPlus();
|
|
||||||
|
|
||||||
forAll(yPlus, faceI)
|
|
||||||
{
|
|
||||||
scalar kappaRe = kappa_*magUp[faceI]*y[faceI]/(muw[faceI]/rhow[faceI]);
|
|
||||||
|
|
||||||
scalar yp = yPlusLam_;
|
|
||||||
scalar ryPlusLam = 1.0/yp;
|
|
||||||
|
|
||||||
int iter = 0;
|
|
||||||
scalar yPlusLast = 0.0;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
yPlusLast = yp;
|
|
||||||
yp = (kappaRe + yp)/(1.0 + log(E_*yp));
|
|
||||||
|
|
||||||
} while (mag(ryPlusLam*(yp - yPlusLast)) > 0.01 && ++iter < 10);
|
|
||||||
|
|
||||||
yPlus[faceI] = max(0.0, yp);
|
|
||||||
}
|
|
||||||
|
|
||||||
return tyPlus;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField>
|
|
||||||
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::calcMut() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
|
|
||||||
const scalarField magUp = mag(Uw.patchInternalField() - Uw);
|
|
||||||
const fvPatchScalarField& muw = rasModel.mu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
tmp<scalarField> tyPlus = calcYPlus(magUp);
|
|
||||||
scalarField& yPlus = tyPlus();
|
|
||||||
|
|
||||||
tmp<scalarField> tmutw(new scalarField(patch().size(), 0.0));
|
|
||||||
scalarField& mutw = tmutw();
|
|
||||||
|
|
||||||
forAll(yPlus, faceI)
|
|
||||||
{
|
|
||||||
if (yPlus[faceI] > yPlusLam_)
|
|
||||||
{
|
|
||||||
mutw[faceI] =
|
|
||||||
muw[faceI]*(yPlus[faceI]*kappa_/log(E_*yPlus[faceI]) - 1.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return tmutw;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::
|
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::
|
||||||
|
@ -118,7 +47,19 @@ mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
mutWallFunctionFvPatchScalarField(p, iF)
|
mutUWallFunctionFvPatchScalarField(p, iF)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::
|
||||||
|
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mutUWallFunctionFvPatchScalarField(p, iF, dict)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -131,19 +72,7 @@ mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
||||||
const fvPatchFieldMapper& mapper
|
const fvPatchFieldMapper& mapper
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
mutWallFunctionFvPatchScalarField(ptf, p, iF, mapper)
|
mutUWallFunctionFvPatchScalarField(ptf, p, iF, mapper)
|
||||||
{}
|
|
||||||
|
|
||||||
|
|
||||||
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::
|
|
||||||
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
|
||||||
(
|
|
||||||
const fvPatch& p,
|
|
||||||
const DimensionedField<scalar, volMesh>& iF,
|
|
||||||
const dictionary& dict
|
|
||||||
)
|
|
||||||
:
|
|
||||||
mutWallFunctionFvPatchScalarField(p, iF, dict)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -153,7 +82,7 @@ mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
||||||
const mutSpalartAllmarasStandardWallFunctionFvPatchScalarField& sawfpsf
|
const mutSpalartAllmarasStandardWallFunctionFvPatchScalarField& sawfpsf
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
mutWallFunctionFvPatchScalarField(sawfpsf)
|
mutUWallFunctionFvPatchScalarField(sawfpsf)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -164,37 +93,10 @@ mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
mutWallFunctionFvPatchScalarField(sawfpsf, iF)
|
mutUWallFunctionFvPatchScalarField(sawfpsf, iF)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
tmp<scalarField>
|
|
||||||
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::yPlus() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
|
|
||||||
const scalarField magUp = mag(Uw.patchInternalField() - Uw);
|
|
||||||
|
|
||||||
return calcYPlus(magUp);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::write
|
|
||||||
(
|
|
||||||
Ostream& os
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
fvPatchField<scalar>::write(os);
|
|
||||||
writeLocalEntries(os);
|
|
||||||
writeEntry("value", os);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
makePatchTypeField
|
makePatchTypeField
|
||||||
(
|
(
|
||||||
fvPatchScalarField,
|
fvPatchScalarField,
|
||||||
|
|
|
@ -26,7 +26,9 @@ Class
|
||||||
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Wall function boundary condition for walls
|
This boundary condition is the same as mutUWallFunction. We will simply
|
||||||
|
derive from nutUWallFunctionFvPatchScalarField to enable backward
|
||||||
|
compatibility.
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField.C
|
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField.C
|
||||||
|
@ -36,7 +38,7 @@ SourceFiles
|
||||||
#ifndef compressibleMutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H
|
#ifndef compressibleMutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H
|
||||||
#define compressibleMutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H
|
#define compressibleMutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
#include "mutWallFunctionFvPatchScalarField.H"
|
#include "mutUWallFunctionFvPatchScalarField.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
@ -53,19 +55,8 @@ namespace RASModels
|
||||||
|
|
||||||
class mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
class mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
||||||
:
|
:
|
||||||
public mutWallFunctionFvPatchScalarField
|
public mutUWallFunctionFvPatchScalarField
|
||||||
{
|
{
|
||||||
protected:
|
|
||||||
|
|
||||||
// Protected member functions
|
|
||||||
|
|
||||||
//- Calculate yPLus
|
|
||||||
virtual tmp<scalarField> calcYPlus(const scalarField& magUp) const;
|
|
||||||
|
|
||||||
//- Calculate the turbulence viscosity
|
|
||||||
virtual tmp<scalarField> calcMut() const;
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
|
@ -140,20 +131,6 @@ public:
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Member functions
|
|
||||||
|
|
||||||
// Evaluation functions
|
|
||||||
|
|
||||||
//- Calculate and return the yPlus at the boundary
|
|
||||||
virtual tmp<scalarField> yPlus() const;
|
|
||||||
|
|
||||||
|
|
||||||
// I-O
|
|
||||||
|
|
||||||
//- Write
|
|
||||||
virtual void write(Ostream& os) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -40,24 +40,46 @@ namespace RASModels
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
|
tmp<scalarField>
|
||||||
|
mutSpalartAllmarasWallFunctionFvPatchScalarField::calcMut() const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchI];
|
||||||
|
const scalarField magGradU = mag(Uw.snGrad());
|
||||||
|
const scalarField& rhow = turbModel.rho().boundaryField()[patchI];
|
||||||
|
const scalarField& muw = turbModel.mu().boundaryField()[patchI];
|
||||||
|
|
||||||
|
return max
|
||||||
|
(
|
||||||
|
0.0,
|
||||||
|
rhow*sqr(calcUTau(magGradU))/(magGradU + ROOTVSMALL) - muw
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> mutSpalartAllmarasWallFunctionFvPatchScalarField::calcUTau
|
tmp<scalarField> mutSpalartAllmarasWallFunctionFvPatchScalarField::calcUTau
|
||||||
(
|
(
|
||||||
const scalarField& magGradU
|
const scalarField& magGradU
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
const label patchI = patch().index();
|
||||||
const scalarField& y = rasModel.y()[patch().index()];
|
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
|
||||||
const fvPatchVectorField& Uw =
|
const fvPatchVectorField& Uw =
|
||||||
rasModel.U().boundaryField()[patch().index()];
|
turbModel.U().boundaryField()[patchI];
|
||||||
|
const scalarField magUp = mag(Uw.patchInternalField() - Uw);
|
||||||
|
|
||||||
scalarField magUp = mag(Uw.patchInternalField() - Uw);
|
const fvPatchScalarField& rhow = turbModel.rho().boundaryField()[patchI];
|
||||||
|
|
||||||
const fvPatchScalarField& rhow =
|
const fvPatchScalarField& muw = turbModel.mu().boundaryField()[patchI];
|
||||||
rasModel.rho().boundaryField()[patch().index()];
|
|
||||||
|
|
||||||
const fvPatchScalarField& muw =
|
|
||||||
rasModel.mu().boundaryField()[patch().index()];
|
|
||||||
const scalarField& mutw = *this;
|
const scalarField& mutw = *this;
|
||||||
|
|
||||||
tmp<scalarField> tuTau(new scalarField(patch().size(), 0.0));
|
tmp<scalarField> tuTau(new scalarField(patch().size(), 0.0));
|
||||||
|
@ -65,32 +87,32 @@ tmp<scalarField> mutSpalartAllmarasWallFunctionFvPatchScalarField::calcUTau
|
||||||
|
|
||||||
forAll(mutw, faceI)
|
forAll(mutw, faceI)
|
||||||
{
|
{
|
||||||
scalar magUpara = magUp[faceI];
|
const scalar& magUpara = magUp[faceI];
|
||||||
|
|
||||||
scalar ut =
|
scalar ut =
|
||||||
sqrt((mutw[faceI] + muw[faceI])*magGradU[faceI]/rhow[faceI]);
|
sqrt((mutw[faceI] + muw[faceI])*magGradU[faceI]/rhow[faceI]);
|
||||||
|
|
||||||
if (ut > VSMALL)
|
if (ut > VSMALL)
|
||||||
{
|
{
|
||||||
int iter = 0;
|
label iter = 0;
|
||||||
scalar err = GREAT;
|
scalar err = GREAT;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
scalar kUu = min(kappa_*magUpara/ut, 50);
|
const scalar kUu = min(kappa_*magUpara/ut, 50);
|
||||||
scalar fkUu = exp(kUu) - 1 - kUu*(1 + 0.5*kUu);
|
const scalar fkUu = exp(kUu) - 1 - kUu*(1 + 0.5*kUu);
|
||||||
|
|
||||||
scalar f =
|
const scalar f =
|
||||||
- ut*y[faceI]/(muw[faceI]/rhow[faceI])
|
- ut*y[faceI]/(muw[faceI]/rhow[faceI])
|
||||||
+ magUpara/ut
|
+ magUpara/ut
|
||||||
+ 1/E_*(fkUu - 1.0/6.0*kUu*sqr(kUu));
|
+ 1/E_*(fkUu - 1.0/6.0*kUu*sqr(kUu));
|
||||||
|
|
||||||
scalar df =
|
const scalar df =
|
||||||
y[faceI]/(muw[faceI]/rhow[faceI])
|
y[faceI]/(muw[faceI]/rhow[faceI])
|
||||||
+ magUpara/sqr(ut)
|
+ magUpara/sqr(ut)
|
||||||
+ 1/E_*kUu*fkUu/ut;
|
+ 1/E_*kUu*fkUu/ut;
|
||||||
|
|
||||||
scalar uTauNew = ut + f/df;
|
const scalar uTauNew = ut + f/df;
|
||||||
err = mag((ut - uTauNew)/ut);
|
err = mag((ut - uTauNew)/ut);
|
||||||
ut = uTauNew;
|
ut = uTauNew;
|
||||||
|
|
||||||
|
@ -104,25 +126,6 @@ tmp<scalarField> mutSpalartAllmarasWallFunctionFvPatchScalarField::calcUTau
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField>
|
|
||||||
mutSpalartAllmarasWallFunctionFvPatchScalarField::calcMut() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
|
|
||||||
const scalarField magGradU = mag(Uw.snGrad());
|
|
||||||
const scalarField& rhow = rasModel.rho().boundaryField()[patchI];
|
|
||||||
const scalarField& muw = rasModel.mu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
return max
|
|
||||||
(
|
|
||||||
scalar(0),
|
|
||||||
rhow*sqr(calcUTau(magGradU))/(magGradU + ROOTVSMALL) - muw
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
mutSpalartAllmarasWallFunctionFvPatchScalarField::
|
mutSpalartAllmarasWallFunctionFvPatchScalarField::
|
||||||
|
@ -136,6 +139,18 @@ mutSpalartAllmarasWallFunctionFvPatchScalarField
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
mutSpalartAllmarasWallFunctionFvPatchScalarField::
|
||||||
|
mutSpalartAllmarasWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mutWallFunctionFvPatchScalarField(p, iF, dict)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
mutSpalartAllmarasWallFunctionFvPatchScalarField::
|
mutSpalartAllmarasWallFunctionFvPatchScalarField::
|
||||||
mutSpalartAllmarasWallFunctionFvPatchScalarField
|
mutSpalartAllmarasWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
|
@ -149,18 +164,6 @@ mutSpalartAllmarasWallFunctionFvPatchScalarField
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
mutSpalartAllmarasWallFunctionFvPatchScalarField::
|
|
||||||
mutSpalartAllmarasWallFunctionFvPatchScalarField
|
|
||||||
(
|
|
||||||
const fvPatch& p,
|
|
||||||
const DimensionedField<scalar, volMesh>& iF,
|
|
||||||
const dictionary& dict
|
|
||||||
)
|
|
||||||
:
|
|
||||||
mutWallFunctionFvPatchScalarField(p, iF, dict)
|
|
||||||
{}
|
|
||||||
|
|
||||||
|
|
||||||
mutSpalartAllmarasWallFunctionFvPatchScalarField::
|
mutSpalartAllmarasWallFunctionFvPatchScalarField::
|
||||||
mutSpalartAllmarasWallFunctionFvPatchScalarField
|
mutSpalartAllmarasWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
|
@ -189,30 +192,25 @@ mutSpalartAllmarasWallFunctionFvPatchScalarField::yPlus() const
|
||||||
{
|
{
|
||||||
const label patchI = patch().index();
|
const label patchI = patch().index();
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
const turbulenceModel& turbModel =
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
|
|
||||||
const scalarField& rhow = rasModel.rho().boundaryField()[patchI];
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
const scalarField& muw = rasModel.mu().boundaryField()[patchI];
|
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchI];
|
||||||
|
const scalarField& rhow = turbModel.rho().boundaryField()[patchI];
|
||||||
|
const scalarField& muw = turbModel.mu().boundaryField()[patchI];
|
||||||
|
|
||||||
return y*calcUTau(mag(Uw.snGrad()))/(muw/rhow);
|
return y*calcUTau(mag(Uw.snGrad()))/(muw/rhow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void mutSpalartAllmarasWallFunctionFvPatchScalarField::write
|
|
||||||
(
|
|
||||||
Ostream& os
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
fvPatchField<scalar>::write(os);
|
|
||||||
writeLocalEntries(os);
|
|
||||||
writeEntry("value", os);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makePatchTypeField(fvPatchScalarField, mutSpalartAllmarasWallFunctionFvPatchScalarField);
|
makePatchTypeField
|
||||||
|
(
|
||||||
|
fvPatchScalarField,
|
||||||
|
mutSpalartAllmarasWallFunctionFvPatchScalarField
|
||||||
|
);
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
|
@ -141,12 +141,6 @@ public:
|
||||||
|
|
||||||
//- Calculate and return the yPlus at the boundary
|
//- Calculate and return the yPlus at the boundary
|
||||||
virtual tmp<scalarField> yPlus() const;
|
virtual tmp<scalarField> yPlus() const;
|
||||||
|
|
||||||
|
|
||||||
// I-O
|
|
||||||
|
|
||||||
//- Write
|
|
||||||
virtual void write(Ostream& os) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,316 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "mutURoughWallFunctionFvPatchScalarField.H"
|
||||||
|
#include "RASModel.H"
|
||||||
|
#include "fvPatchFieldMapper.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace compressible
|
||||||
|
{
|
||||||
|
namespace RASModels
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
|
tmp<scalarField> mutURoughWallFunctionFvPatchScalarField::calcYPlus
|
||||||
|
(
|
||||||
|
const scalarField& magUp
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
const scalarField& muw = turbModel.mu().boundaryField()[patchI];
|
||||||
|
const fvPatchScalarField& rho = turbModel.rho().boundaryField()[patchI];
|
||||||
|
|
||||||
|
tmp<scalarField> tyPlus(new scalarField(patch().size(), 0.0));
|
||||||
|
scalarField& yPlus = tyPlus();
|
||||||
|
|
||||||
|
if (roughnessHeight_ > 0.0)
|
||||||
|
{
|
||||||
|
// Rough Walls
|
||||||
|
const scalar c_1 = 1/(90 - 2.25) + roughnessConstant_;
|
||||||
|
static const scalar c_2 = 2.25/(90 - 2.25);
|
||||||
|
static const scalar c_3 = 2.0*atan(1.0)/log(90/2.25);
|
||||||
|
static const scalar c_4 = c_3*log(2.25);
|
||||||
|
|
||||||
|
//if (KsPlusBasedOnYPlus_)
|
||||||
|
{
|
||||||
|
// If KsPlus is based on YPlus the extra term added to the law
|
||||||
|
// of the wall will depend on yPlus
|
||||||
|
forAll(yPlus, faceI)
|
||||||
|
{
|
||||||
|
const scalar magUpara = magUp[faceI];
|
||||||
|
const scalar Re = rho[faceI]*magUpara*y[faceI]/muw[faceI];
|
||||||
|
const scalar kappaRe = kappa_*Re;
|
||||||
|
|
||||||
|
scalar yp = yPlusLam_;
|
||||||
|
const scalar ryPlusLam = 1.0/yp;
|
||||||
|
|
||||||
|
label iter = 0;
|
||||||
|
scalar yPlusLast = 0.0;
|
||||||
|
scalar dKsPlusdYPlus = roughnessHeight_/y[faceI];
|
||||||
|
|
||||||
|
// Enforce the roughnessHeight to be less than the distance to
|
||||||
|
// the first cell centre.
|
||||||
|
if (dKsPlusdYPlus > 1)
|
||||||
|
{
|
||||||
|
dKsPlusdYPlus = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Additional tuning parameter (fudge factor) - nominally = 1
|
||||||
|
dKsPlusdYPlus *= roughnessFactor_;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
yPlusLast = yp;
|
||||||
|
|
||||||
|
// The non-dimensional roughness height
|
||||||
|
scalar KsPlus = yp*dKsPlusdYPlus;
|
||||||
|
|
||||||
|
// The extra term in the law-of-the-wall
|
||||||
|
scalar G = 0.0;
|
||||||
|
|
||||||
|
scalar yPlusGPrime = 0.0;
|
||||||
|
|
||||||
|
if (KsPlus >= 90)
|
||||||
|
{
|
||||||
|
const scalar t_1 = 1 + roughnessConstant_*KsPlus;
|
||||||
|
G = log(t_1);
|
||||||
|
yPlusGPrime = roughnessConstant_*KsPlus/t_1;
|
||||||
|
}
|
||||||
|
else if (KsPlus > 2.25)
|
||||||
|
{
|
||||||
|
const scalar t_1 = c_1*KsPlus - c_2;
|
||||||
|
const scalar t_2 = c_3*log(KsPlus) - c_4;
|
||||||
|
const scalar sint_2 = sin(t_2);
|
||||||
|
const scalar logt_1 = log(t_1);
|
||||||
|
G = logt_1*sint_2;
|
||||||
|
yPlusGPrime =
|
||||||
|
(c_1*sint_2*KsPlus/t_1) + (c_3*logt_1*cos(t_2));
|
||||||
|
}
|
||||||
|
|
||||||
|
scalar denom = 1.0 + log(E_*yp) - G - yPlusGPrime;
|
||||||
|
if (mag(denom) > VSMALL)
|
||||||
|
{
|
||||||
|
yp = (kappaRe + yp*(1 - yPlusGPrime))/denom;
|
||||||
|
}
|
||||||
|
} while
|
||||||
|
(
|
||||||
|
mag(ryPlusLam*(yp - yPlusLast)) > 0.0001
|
||||||
|
&& ++iter < 10
|
||||||
|
&& yp > VSMALL
|
||||||
|
);
|
||||||
|
|
||||||
|
yPlus[faceI] = max(0.0, yp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Smooth Walls
|
||||||
|
forAll(yPlus, faceI)
|
||||||
|
{
|
||||||
|
const scalar magUpara = magUp[faceI];
|
||||||
|
const scalar Re = rho[faceI]*magUpara*y[faceI]/muw[faceI];
|
||||||
|
const scalar kappaRe = kappa_*Re;
|
||||||
|
|
||||||
|
scalar yp = yPlusLam_;
|
||||||
|
const scalar ryPlusLam = 1.0/yp;
|
||||||
|
|
||||||
|
label iter = 0;
|
||||||
|
scalar yPlusLast = 0.0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
yPlusLast = yp;
|
||||||
|
yp = (kappaRe + yp)/(1.0 + log(E_*yp));
|
||||||
|
|
||||||
|
} while (mag(ryPlusLam*(yp - yPlusLast)) > 0.0001 && ++iter < 10);
|
||||||
|
|
||||||
|
yPlus[faceI] = max(0.0, yp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tyPlus;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
tmp<scalarField> mutURoughWallFunctionFvPatchScalarField::calcMut() const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchI];
|
||||||
|
const scalarField& muw = turbModel.mu().boundaryField()[patchI];
|
||||||
|
const fvPatchScalarField& rho = turbModel.rho().boundaryField()[patchI];
|
||||||
|
|
||||||
|
// The flow velocity at the adjacent cell centre
|
||||||
|
const scalarField magUp(mag(Uw.patchInternalField() - Uw));
|
||||||
|
|
||||||
|
tmp<scalarField> tyPlus = calcYPlus(magUp);
|
||||||
|
const scalarField& yPlus = tyPlus();
|
||||||
|
|
||||||
|
tmp<scalarField> tmutw(new scalarField(patch().size(), 0.0));
|
||||||
|
scalarField& mutw = tmutw();
|
||||||
|
|
||||||
|
forAll(yPlus, faceI)
|
||||||
|
{
|
||||||
|
if (yPlus[faceI] > yPlusLam_)
|
||||||
|
{
|
||||||
|
const scalar Re = rho[faceI]*magUp[faceI]*y[faceI]/muw[faceI] + ROOTVSMALL;
|
||||||
|
mutw[faceI] = muw[faceI]*(sqr(yPlus[faceI])/Re - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tmutw;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
mutURoughWallFunctionFvPatchScalarField::mutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mutWallFunctionFvPatchScalarField(p, iF),
|
||||||
|
roughnessHeight_(0.0),
|
||||||
|
roughnessConstant_(0.0),
|
||||||
|
roughnessFactor_(0.0)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
mutURoughWallFunctionFvPatchScalarField::mutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const mutURoughWallFunctionFvPatchScalarField& ptf,
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const fvPatchFieldMapper& mapper
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mutWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
|
||||||
|
roughnessHeight_(ptf.roughnessHeight_),
|
||||||
|
roughnessConstant_(ptf.roughnessConstant_),
|
||||||
|
roughnessFactor_(ptf.roughnessFactor_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
mutURoughWallFunctionFvPatchScalarField::mutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mutWallFunctionFvPatchScalarField(p, iF, dict),
|
||||||
|
roughnessHeight_(readScalar(dict.lookup("roughnessHeight"))),
|
||||||
|
roughnessConstant_(readScalar(dict.lookup("roughnessConstant"))),
|
||||||
|
roughnessFactor_(readScalar(dict.lookup("roughnessFactor")))
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
mutURoughWallFunctionFvPatchScalarField::mutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const mutURoughWallFunctionFvPatchScalarField& rwfpsf
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mutWallFunctionFvPatchScalarField(rwfpsf),
|
||||||
|
roughnessHeight_(rwfpsf.roughnessHeight_),
|
||||||
|
roughnessConstant_(rwfpsf.roughnessConstant_),
|
||||||
|
roughnessFactor_(rwfpsf.roughnessFactor_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
mutURoughWallFunctionFvPatchScalarField::mutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const mutURoughWallFunctionFvPatchScalarField& rwfpsf,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mutWallFunctionFvPatchScalarField(rwfpsf, iF),
|
||||||
|
roughnessHeight_(rwfpsf.roughnessHeight_),
|
||||||
|
roughnessConstant_(rwfpsf.roughnessConstant_),
|
||||||
|
roughnessFactor_(rwfpsf.roughnessFactor_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
tmp<scalarField> mutURoughWallFunctionFvPatchScalarField::yPlus() const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchI];
|
||||||
|
const scalarField magUp = mag(Uw.patchInternalField() - Uw);
|
||||||
|
|
||||||
|
return calcYPlus(magUp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void mutURoughWallFunctionFvPatchScalarField::write(Ostream& os) const
|
||||||
|
{
|
||||||
|
mutWallFunctionFvPatchScalarField::write(os);
|
||||||
|
writeLocalEntries(os);
|
||||||
|
os.writeKeyword("roughnessHeight")
|
||||||
|
<< roughnessHeight_ << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("roughnessConstant")
|
||||||
|
<< roughnessConstant_ << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("roughnessFactor")
|
||||||
|
<< roughnessFactor_ << token::END_STATEMENT << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
makePatchTypeField
|
||||||
|
(
|
||||||
|
fvPatchScalarField,
|
||||||
|
mutURoughWallFunctionFvPatchScalarField
|
||||||
|
);
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace RASModels
|
||||||
|
} // End namespace compressible
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,237 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::compressible::RASModels::mutURoughWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
|
Description
|
||||||
|
This boundary condition provides a turbulent (dynamic) viscosity condition
|
||||||
|
when using wall functions for rough walls, based on velocity.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
\table
|
||||||
|
Property | Description | Required | Default value
|
||||||
|
roughnessHeight | roughness height | yes |
|
||||||
|
roughnessConstant | roughness constanr | yes |
|
||||||
|
roughnessFactor | scaling factor | yes |
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
Example of the boundary condition specification:
|
||||||
|
\verbatim
|
||||||
|
<patchName>
|
||||||
|
{
|
||||||
|
type mutURoughWallFunction;
|
||||||
|
roughnessHeight 1e-5;
|
||||||
|
roughnessConstant 0.5;
|
||||||
|
roughnessFactor 1;
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
See also
|
||||||
|
Foam::mutWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
mutURoughWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef mutURoughWallFunctionFvPatchScalarField_H
|
||||||
|
#define mutURoughWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
|
#include "mutWallFunctionFvPatchScalarField.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace compressible
|
||||||
|
{
|
||||||
|
namespace RASModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class mutURoughWallFunctionFvPatchScalarField Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class mutURoughWallFunctionFvPatchScalarField
|
||||||
|
:
|
||||||
|
public mutWallFunctionFvPatchScalarField
|
||||||
|
{
|
||||||
|
// Private Data
|
||||||
|
|
||||||
|
// Roughness model parameters
|
||||||
|
|
||||||
|
//- Height
|
||||||
|
scalar roughnessHeight_;
|
||||||
|
|
||||||
|
//- Constant
|
||||||
|
scalar roughnessConstant_;
|
||||||
|
|
||||||
|
//- Scale factor
|
||||||
|
scalar roughnessFactor_;
|
||||||
|
|
||||||
|
|
||||||
|
// Protected Member Functions
|
||||||
|
|
||||||
|
//- Calculate yPLus
|
||||||
|
virtual tmp<scalarField> calcYPlus(const scalarField& magUp) const;
|
||||||
|
|
||||||
|
//- Calculate the turbulence viscosity
|
||||||
|
virtual tmp<scalarField> calcMut() const;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("mutURoughWallFunction");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from patch and internal field
|
||||||
|
mutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct from patch, internal field and dictionary
|
||||||
|
mutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&,
|
||||||
|
const dictionary&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct by mapping given
|
||||||
|
// mutURoughWallFunctionFvPatchScalarField
|
||||||
|
// onto a new patch
|
||||||
|
mutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const mutURoughWallFunctionFvPatchScalarField&,
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&,
|
||||||
|
const fvPatchFieldMapper&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct as copy
|
||||||
|
mutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const mutURoughWallFunctionFvPatchScalarField&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual tmp<fvPatchScalarField> clone() const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchScalarField>
|
||||||
|
(
|
||||||
|
new mutURoughWallFunctionFvPatchScalarField(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Construct as copy setting internal field reference
|
||||||
|
mutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const mutURoughWallFunctionFvPatchScalarField&,
|
||||||
|
const DimensionedField<scalar, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct and return a clone setting internal field reference
|
||||||
|
virtual tmp<fvPatchScalarField> clone
|
||||||
|
(
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchScalarField>
|
||||||
|
(
|
||||||
|
new mutURoughWallFunctionFvPatchScalarField(*this, iF)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
// Access
|
||||||
|
|
||||||
|
//- Return the roughness height scale
|
||||||
|
const scalar& roughnessHeight() const
|
||||||
|
{
|
||||||
|
return roughnessHeight_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return reference to the roughness height to allow adjustment
|
||||||
|
scalar& roughnessHeight()
|
||||||
|
{
|
||||||
|
return roughnessHeight_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return the roughness constant scale
|
||||||
|
const scalar& roughnessConstant() const
|
||||||
|
{
|
||||||
|
return roughnessConstant_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return reference to the roughness constant to allow adjustment
|
||||||
|
scalar& roughnessConstant()
|
||||||
|
{
|
||||||
|
return roughnessConstant_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return the roughness scale factor
|
||||||
|
const scalar& roughnessFudgeFactor() const
|
||||||
|
{
|
||||||
|
return roughnessFactor_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return reference to the roughness scale factor to allow
|
||||||
|
// adjustment
|
||||||
|
scalar& roughnessFactor()
|
||||||
|
{
|
||||||
|
return roughnessFactor_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Evaluation functions
|
||||||
|
|
||||||
|
//- Calculate and return the yPlus at the boundary
|
||||||
|
virtual tmp<scalarField> yPlus() const;
|
||||||
|
|
||||||
|
|
||||||
|
// I-O
|
||||||
|
|
||||||
|
//- Write
|
||||||
|
virtual void write(Ostream& os) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace RASModels
|
||||||
|
} // End namespace compressible
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,194 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "mutUWallFunctionFvPatchScalarField.H"
|
||||||
|
#include "RASModel.H"
|
||||||
|
#include "fvPatchFieldMapper.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace compressible
|
||||||
|
{
|
||||||
|
namespace RASModels
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
|
tmp<scalarField> mutUWallFunctionFvPatchScalarField::calcYPlus
|
||||||
|
(
|
||||||
|
const scalarField& magUp
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
const fvPatchScalarField& rhow = turbModel.rho().boundaryField()[patchI];
|
||||||
|
const fvPatchScalarField& muw = turbModel.mu().boundaryField()[patchI];
|
||||||
|
|
||||||
|
tmp<scalarField> tyPlus(new scalarField(patch().size(), 0.0));
|
||||||
|
scalarField& yPlus = tyPlus();
|
||||||
|
|
||||||
|
forAll(yPlus, faceI)
|
||||||
|
{
|
||||||
|
const scalar kappaRe =
|
||||||
|
kappa_*magUp[faceI]*y[faceI]/(muw[faceI]/rhow[faceI]);
|
||||||
|
|
||||||
|
scalar yp = yPlusLam_;
|
||||||
|
const scalar ryPlusLam = 1.0/yp;
|
||||||
|
|
||||||
|
label iter = 0;
|
||||||
|
scalar yPlusLast = 0.0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
yPlusLast = yp;
|
||||||
|
yp = (kappaRe + yp)/(1.0 + log(E_*yp));
|
||||||
|
|
||||||
|
} while (mag(ryPlusLam*(yp - yPlusLast)) > 0.01 && ++iter < 10);
|
||||||
|
|
||||||
|
yPlus[faceI] = max(0.0, yp);
|
||||||
|
}
|
||||||
|
|
||||||
|
return tyPlus;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
tmp<scalarField> mutUWallFunctionFvPatchScalarField::calcMut() const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchI];
|
||||||
|
const scalarField magUp(mag(Uw.patchInternalField() - Uw));
|
||||||
|
const fvPatchScalarField& muw = turbModel.mu().boundaryField()[patchI];
|
||||||
|
|
||||||
|
tmp<scalarField> tyPlus = calcYPlus(magUp);
|
||||||
|
scalarField& yPlus = tyPlus();
|
||||||
|
|
||||||
|
tmp<scalarField> tmutw(new scalarField(patch().size(), 0.0));
|
||||||
|
scalarField& mutw = tmutw();
|
||||||
|
|
||||||
|
forAll(yPlus, faceI)
|
||||||
|
{
|
||||||
|
if (yPlus[faceI] > yPlusLam_)
|
||||||
|
{
|
||||||
|
mutw[faceI] =
|
||||||
|
muw[faceI]*(yPlus[faceI]*kappa_/log(E_*yPlus[faceI]) - 1.0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tmutw;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
mutUWallFunctionFvPatchScalarField::mutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mutWallFunctionFvPatchScalarField(p, iF)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
mutUWallFunctionFvPatchScalarField::mutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mutWallFunctionFvPatchScalarField(p, iF, dict)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
mutUWallFunctionFvPatchScalarField::mutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const mutUWallFunctionFvPatchScalarField& ptf,
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const fvPatchFieldMapper& mapper
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mutWallFunctionFvPatchScalarField(ptf, p, iF, mapper)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
mutUWallFunctionFvPatchScalarField::mutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const mutUWallFunctionFvPatchScalarField& wfpsf
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mutWallFunctionFvPatchScalarField(wfpsf)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
mutUWallFunctionFvPatchScalarField::mutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const mutUWallFunctionFvPatchScalarField& wfpsf,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mutWallFunctionFvPatchScalarField(wfpsf, iF)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
tmp<scalarField> mutUWallFunctionFvPatchScalarField::yPlus() const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchI];
|
||||||
|
const scalarField magUp(mag(Uw.patchInternalField() - Uw));
|
||||||
|
|
||||||
|
return calcYPlus(magUp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
makePatchTypeField(fvPatchScalarField, mutUWallFunctionFvPatchScalarField);
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace RASModels
|
||||||
|
} // End namespace compressible
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,168 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::compressible::RASModels::mutkWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
|
Description
|
||||||
|
Boundary condition for turbulent (dynamic) viscosity when using wall
|
||||||
|
functions, based on velocity.
|
||||||
|
- replicates OpenFOAM v1.5 (and earlier) behaviour
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Example of the boundary condition specification:
|
||||||
|
\verbatim
|
||||||
|
<patchName>
|
||||||
|
{
|
||||||
|
type mutUWallFunction;
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
See also
|
||||||
|
Foam::mutWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
mutUWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef mutUWallFunctionFvPatchScalarField_H
|
||||||
|
#define mutUWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
|
#include "mutWallFunctionFvPatchScalarField.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace compressible
|
||||||
|
{
|
||||||
|
namespace RASModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class mutUWallFunctionFvPatchScalarField Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class mutUWallFunctionFvPatchScalarField
|
||||||
|
:
|
||||||
|
public mutWallFunctionFvPatchScalarField
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// Protected Member Functions
|
||||||
|
|
||||||
|
//- Calculate yPLus. Helper function
|
||||||
|
tmp<scalarField> calcYPlus(const scalarField& magUp) const;
|
||||||
|
|
||||||
|
//- Calculate the turbulence viscosity
|
||||||
|
virtual tmp<scalarField> calcMut() const;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("mutUWallFunction");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from patch and internal field
|
||||||
|
mutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct from patch, internal field and dictionary
|
||||||
|
mutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&,
|
||||||
|
const dictionary&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct by mapping given
|
||||||
|
// mutUWallFunctionFvPatchScalarField
|
||||||
|
// onto a new patch
|
||||||
|
mutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const mutUWallFunctionFvPatchScalarField&,
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&,
|
||||||
|
const fvPatchFieldMapper&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct as copy
|
||||||
|
mutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const mutUWallFunctionFvPatchScalarField&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual tmp<fvPatchScalarField> clone() const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchScalarField>
|
||||||
|
(
|
||||||
|
new mutUWallFunctionFvPatchScalarField(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Construct as copy setting internal field reference
|
||||||
|
mutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const mutUWallFunctionFvPatchScalarField&,
|
||||||
|
const DimensionedField<scalar, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct and return a clone setting internal field reference
|
||||||
|
virtual tmp<fvPatchScalarField> clone
|
||||||
|
(
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchScalarField>
|
||||||
|
(
|
||||||
|
new mutUWallFunctionFvPatchScalarField(*this, iF)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
//- Calculate and return the yPlus at the boundary
|
||||||
|
virtual tmp<scalarField> yPlus() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace RASModels
|
||||||
|
} // End namespace compressible
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -38,13 +38,15 @@ namespace compressible
|
||||||
namespace RASModels
|
namespace RASModels
|
||||||
{
|
{
|
||||||
|
|
||||||
|
defineTypeNameAndDebug(mutWallFunctionFvPatchScalarField, 0);
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
void mutWallFunctionFvPatchScalarField::checkType()
|
void mutWallFunctionFvPatchScalarField::checkType()
|
||||||
{
|
{
|
||||||
if (!patch().isWall())
|
if (!patch().isWall())
|
||||||
{
|
{
|
||||||
FatalErrorIn("mutWallFunctionFvPatchScalarField::checkType()")
|
FatalErrorIn(this->type() + "FvPatchScalarField::checkType()")
|
||||||
<< "Invalid wall function specification" << nl
|
<< "Invalid wall function specification" << nl
|
||||||
<< " Patch type for patch " << patch().name()
|
<< " Patch type for patch " << patch().name()
|
||||||
<< " must be wall" << nl
|
<< " must be wall" << nl
|
||||||
|
@ -62,7 +64,7 @@ scalar mutWallFunctionFvPatchScalarField::calcYPlusLam
|
||||||
{
|
{
|
||||||
scalar ypl = 11.0;
|
scalar ypl = 11.0;
|
||||||
|
|
||||||
for (int i=0; i<10; i++)
|
for (label i = 0; i < 10; ++i)
|
||||||
{
|
{
|
||||||
ypl = log(E*ypl)/kappa;
|
ypl = log(E*ypl)/kappa;
|
||||||
}
|
}
|
||||||
|
@ -71,38 +73,6 @@ scalar mutWallFunctionFvPatchScalarField::calcYPlusLam
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> mutWallFunctionFvPatchScalarField::calcMut() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
|
||||||
const scalarField& rhow = rasModel.rho().boundaryField()[patchI];
|
|
||||||
const tmp<volScalarField> tk = rasModel.k();
|
|
||||||
const volScalarField& k = tk();
|
|
||||||
const scalarField& muw = rasModel.mu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
const scalar Cmu25 = pow(Cmu_, 0.25);
|
|
||||||
|
|
||||||
tmp<scalarField> tmutw(new scalarField(patch().size(), 0.0));
|
|
||||||
scalarField& mutw = tmutw();
|
|
||||||
|
|
||||||
forAll(mutw, faceI)
|
|
||||||
{
|
|
||||||
label faceCellI = patch().faceCells()[faceI];
|
|
||||||
|
|
||||||
scalar yPlus =
|
|
||||||
Cmu25*y[faceI]*sqrt(k[faceCellI])/(muw[faceI]/rhow[faceI]);
|
|
||||||
|
|
||||||
if (yPlus > yPlusLam_)
|
|
||||||
{
|
|
||||||
mutw[faceI] = muw[faceI]*(yPlus*kappa_/log(E_*yPlus) - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return tmutw;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void mutWallFunctionFvPatchScalarField::writeLocalEntries(Ostream& os) const
|
void mutWallFunctionFvPatchScalarField::writeLocalEntries(Ostream& os) const
|
||||||
{
|
{
|
||||||
os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl;
|
os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl;
|
||||||
|
@ -124,7 +94,26 @@ mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
|
||||||
kappa_(0.41),
|
kappa_(0.41),
|
||||||
E_(9.8),
|
E_(9.8),
|
||||||
yPlusLam_(calcYPlusLam(kappa_, E_))
|
yPlusLam_(calcYPlusLam(kappa_, E_))
|
||||||
{}
|
{
|
||||||
|
checkType();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
fixedValueFvPatchScalarField(p, iF, dict),
|
||||||
|
Cmu_(dict.lookupOrDefault<scalar>("Cmu", 0.09)),
|
||||||
|
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
|
||||||
|
E_(dict.lookupOrDefault<scalar>("E", 9.8)),
|
||||||
|
yPlusLam_(calcYPlusLam(kappa_, E_))
|
||||||
|
{
|
||||||
|
checkType();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
|
mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
|
||||||
|
@ -140,22 +129,9 @@ mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
|
||||||
kappa_(ptf.kappa_),
|
kappa_(ptf.kappa_),
|
||||||
E_(ptf.E_),
|
E_(ptf.E_),
|
||||||
yPlusLam_(ptf.yPlusLam_)
|
yPlusLam_(ptf.yPlusLam_)
|
||||||
{}
|
{
|
||||||
|
checkType();
|
||||||
|
}
|
||||||
mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
|
|
||||||
(
|
|
||||||
const fvPatch& p,
|
|
||||||
const DimensionedField<scalar, volMesh>& iF,
|
|
||||||
const dictionary& dict
|
|
||||||
)
|
|
||||||
:
|
|
||||||
fixedValueFvPatchScalarField(p, iF, dict),
|
|
||||||
Cmu_(dict.lookupOrDefault<scalar>("Cmu", 0.09)),
|
|
||||||
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
|
|
||||||
E_(dict.lookupOrDefault<scalar>("E", 9.8)),
|
|
||||||
yPlusLam_(calcYPlusLam(kappa_, E_))
|
|
||||||
{}
|
|
||||||
|
|
||||||
|
|
||||||
mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
|
mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
|
||||||
|
@ -168,7 +144,9 @@ mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
|
||||||
kappa_(wfpsf.kappa_),
|
kappa_(wfpsf.kappa_),
|
||||||
E_(wfpsf.E_),
|
E_(wfpsf.E_),
|
||||||
yPlusLam_(wfpsf.yPlusLam_)
|
yPlusLam_(wfpsf.yPlusLam_)
|
||||||
{}
|
{
|
||||||
|
checkType();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
|
mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
|
||||||
|
@ -182,36 +160,26 @@ mutWallFunctionFvPatchScalarField::mutWallFunctionFvPatchScalarField
|
||||||
kappa_(wfpsf.kappa_),
|
kappa_(wfpsf.kappa_),
|
||||||
E_(wfpsf.E_),
|
E_(wfpsf.E_),
|
||||||
yPlusLam_(wfpsf.yPlusLam_)
|
yPlusLam_(wfpsf.yPlusLam_)
|
||||||
{}
|
{
|
||||||
|
checkType();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
void mutWallFunctionFvPatchScalarField::updateCoeffs()
|
void mutWallFunctionFvPatchScalarField::updateCoeffs()
|
||||||
{
|
{
|
||||||
|
if (updated())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
operator==(calcMut());
|
operator==(calcMut());
|
||||||
|
|
||||||
fixedValueFvPatchScalarField::updateCoeffs();
|
fixedValueFvPatchScalarField::updateCoeffs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> mutWallFunctionFvPatchScalarField::yPlus() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
|
||||||
|
|
||||||
const tmp<volScalarField> tk = rasModel.k();
|
|
||||||
const volScalarField& k = tk();
|
|
||||||
const scalarField kwc = k.boundaryField()[patchI].patchInternalField();
|
|
||||||
const scalarField& muw = rasModel.mu().boundaryField()[patchI];
|
|
||||||
const scalarField& rhow = rasModel.rho().boundaryField()[patchI];
|
|
||||||
|
|
||||||
return pow(Cmu_, 0.25)*y*sqrt(kwc)/(muw/rhow);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void mutWallFunctionFvPatchScalarField::write(Ostream& os) const
|
void mutWallFunctionFvPatchScalarField::write(Ostream& os) const
|
||||||
{
|
{
|
||||||
fvPatchField<scalar>::write(os);
|
fvPatchField<scalar>::write(os);
|
||||||
|
@ -220,10 +188,6 @@ void mutWallFunctionFvPatchScalarField::write(Ostream& os) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
makePatchTypeField(fvPatchScalarField, mutWallFunctionFvPatchScalarField);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
} // End namespace RASModels
|
} // End namespace RASModels
|
||||||
|
|
|
@ -25,8 +25,8 @@ Class
|
||||||
Foam::compressible::RASModels::mutWallFunctionFvPatchScalarField
|
Foam::compressible::RASModels::mutWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Boundary condition for turbulent (kinematic) viscosity when using wall
|
Abstract base class for boundary condition for turbulent (dynamic)
|
||||||
functions
|
viscosity when using wall functions
|
||||||
- replicates OpenFOAM v1.5 (and earlier) behaviour
|
- replicates OpenFOAM v1.5 (and earlier) behaviour
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
|
@ -73,7 +73,7 @@ protected:
|
||||||
scalar yPlusLam_;
|
scalar yPlusLam_;
|
||||||
|
|
||||||
|
|
||||||
// Protected member functions
|
// Protected Member Functions
|
||||||
|
|
||||||
//- Check the type of the patch
|
//- Check the type of the patch
|
||||||
virtual void checkType();
|
virtual void checkType();
|
||||||
|
@ -82,7 +82,7 @@ protected:
|
||||||
virtual scalar calcYPlusLam(const scalar kappa, const scalar E) const;
|
virtual scalar calcYPlusLam(const scalar kappa, const scalar E) const;
|
||||||
|
|
||||||
//- Calculate the turbulence viscosity
|
//- Calculate the turbulence viscosity
|
||||||
virtual tmp<scalarField> calcMut() const;
|
virtual tmp<scalarField> calcMut() const = 0;
|
||||||
|
|
||||||
//- Write local wall function variables
|
//- Write local wall function variables
|
||||||
virtual void writeLocalEntries(Ostream&) const;
|
virtual void writeLocalEntries(Ostream&) const;
|
||||||
|
@ -128,15 +128,6 @@ public:
|
||||||
const mutWallFunctionFvPatchScalarField&
|
const mutWallFunctionFvPatchScalarField&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct and return a clone
|
|
||||||
virtual tmp<fvPatchScalarField> clone() const
|
|
||||||
{
|
|
||||||
return tmp<fvPatchScalarField>
|
|
||||||
(
|
|
||||||
new mutWallFunctionFvPatchScalarField(*this)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Construct as copy setting internal field reference
|
//- Construct as copy setting internal field reference
|
||||||
mutWallFunctionFvPatchScalarField
|
mutWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
|
@ -144,25 +135,13 @@ public:
|
||||||
const DimensionedField<scalar, volMesh>&
|
const DimensionedField<scalar, volMesh>&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct and return a clone setting internal field reference
|
|
||||||
virtual tmp<fvPatchScalarField> clone
|
|
||||||
(
|
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
return tmp<fvPatchScalarField>
|
|
||||||
(
|
|
||||||
new mutWallFunctionFvPatchScalarField(*this, iF)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Member functions
|
// Member functions
|
||||||
|
|
||||||
// Evaluation functions
|
// Evaluation functions
|
||||||
|
|
||||||
//- Calculate and return the yPlus at the boundary
|
//- Calculate and return the yPlus at the boundary
|
||||||
virtual tmp<scalarField> yPlus() const;
|
virtual tmp<scalarField> yPlus() const = 0;
|
||||||
|
|
||||||
//- Update the coefficients associated with the patch field
|
//- Update the coefficients associated with the patch field
|
||||||
virtual void updateCoeffs();
|
virtual void updateCoeffs();
|
||||||
|
|
|
@ -23,7 +23,7 @@ License
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "mutRoughWallFunctionFvPatchScalarField.H"
|
#include "mutkRoughWallFunctionFvPatchScalarField.H"
|
||||||
#include "RASModel.H"
|
#include "RASModel.H"
|
||||||
#include "fvPatchFieldMapper.H"
|
#include "fvPatchFieldMapper.H"
|
||||||
#include "volFields.H"
|
#include "volFields.H"
|
||||||
|
@ -38,10 +38,9 @@ namespace compressible
|
||||||
namespace RASModels
|
namespace RASModels
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
scalar mutRoughWallFunctionFvPatchScalarField::fnRough
|
scalar mutkRoughWallFunctionFvPatchScalarField::fnRough
|
||||||
(
|
(
|
||||||
const scalar KsPlus,
|
const scalar KsPlus,
|
||||||
const scalar Cs
|
const scalar Cs
|
||||||
|
@ -64,38 +63,46 @@ scalar mutRoughWallFunctionFvPatchScalarField::fnRough
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> mutRoughWallFunctionFvPatchScalarField::calcMut() const
|
tmp<scalarField> mutkRoughWallFunctionFvPatchScalarField::calcMut() const
|
||||||
{
|
{
|
||||||
const label patchI = patch().index();
|
const label patchI = patch().index();
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
const turbulenceModel& turbModel =
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
const scalarField& rhow = rasModel.rho().boundaryField()[patchI];
|
|
||||||
const tmp<volScalarField> tk = rasModel.k();
|
|
||||||
const volScalarField& k = tk();
|
|
||||||
const scalarField& muw = rasModel.mu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
const scalar Cmu25 = pow(Cmu_, 0.25);
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
const scalarField& rhow = turbModel.rho().boundaryField()[patchI];
|
||||||
|
const tmp<volScalarField> tk = turbModel.k();
|
||||||
|
const volScalarField& k = tk();
|
||||||
|
const scalarField& muw = turbModel.mu().boundaryField()[patchI];
|
||||||
|
|
||||||
|
const scalar Cmu25 = pow025(Cmu_);
|
||||||
|
|
||||||
tmp<scalarField> tmutw(new scalarField(*this));
|
tmp<scalarField> tmutw(new scalarField(*this));
|
||||||
scalarField& mutw = tmutw();
|
scalarField& mutw = tmutw();
|
||||||
|
|
||||||
|
const unallocLabelList& fc = patch().faceCells();
|
||||||
|
|
||||||
forAll(mutw, faceI)
|
forAll(mutw, faceI)
|
||||||
{
|
{
|
||||||
label faceCellI = patch().faceCells()[faceI];
|
const label faceCellI = fc[faceI];
|
||||||
|
|
||||||
scalar uStar = Cmu25*sqrt(k[faceCellI]);
|
const scalar uStar = Cmu25*sqrt(k[faceCellI]);
|
||||||
|
const scalar yPlus = uStar*y[faceI]/(muw[faceI]/rhow[faceI]);
|
||||||
scalar yPlus = uStar*y[faceI]/(muw[faceI]/rhow[faceI]);
|
const scalar KsPlus = uStar*Ks_[faceI]/(muw[faceI]/rhow[faceI]);
|
||||||
|
|
||||||
scalar KsPlus = uStar*Ks_[faceI]/(muw[faceI]/rhow[faceI]);
|
|
||||||
|
|
||||||
scalar Edash = E_;
|
scalar Edash = E_;
|
||||||
scalar yPlusLamNew = yPlusLam_;
|
scalar yPlusLamNew = yPlusLam_;
|
||||||
if (KsPlus > 2.25)
|
if (KsPlus > 2.25)
|
||||||
{
|
{
|
||||||
Edash /= fnRough(KsPlus, Cs_[faceI]);
|
Edash /= fnRough(KsPlus, Cs_[faceI]);
|
||||||
yPlusLamNew = rasModel.yPlusLam(kappa_, Edash);
|
yPlusLamNew = turbModel.yPlusLam(kappa_, Edash);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (yPlus > yPlusLamNew)
|
||||||
|
{
|
||||||
|
mutw[faceI] =
|
||||||
|
muw[faceI]*(yPlus*kappa_/log(max(Edash*yPlus, 1 + 1e-4)) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
|
@ -104,14 +111,9 @@ tmp<scalarField> mutRoughWallFunctionFvPatchScalarField::calcMut() const
|
||||||
<< ", KsPlus = " << KsPlus
|
<< ", KsPlus = " << KsPlus
|
||||||
<< ", Edash = " << Edash
|
<< ", Edash = " << Edash
|
||||||
<< ", yPlusLam = " << yPlusLam_
|
<< ", yPlusLam = " << yPlusLam_
|
||||||
|
<< ", mutw = " << mutw[faceI]
|
||||||
<< endl;
|
<< endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (yPlus > yPlusLamNew)
|
|
||||||
{
|
|
||||||
mutw[faceI] =
|
|
||||||
muw[faceI]*(yPlus*kappa_/log(max(Edash*yPlus, 1+1e-4)) - 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return tmutw;
|
return tmutw;
|
||||||
|
@ -120,63 +122,63 @@ tmp<scalarField> mutRoughWallFunctionFvPatchScalarField::calcMut() const
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
mutRoughWallFunctionFvPatchScalarField::mutRoughWallFunctionFvPatchScalarField
|
mutkRoughWallFunctionFvPatchScalarField::mutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const fvPatch& p,
|
const fvPatch& p,
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
mutWallFunctionFvPatchScalarField(p, iF),
|
mutkWallFunctionFvPatchScalarField(p, iF),
|
||||||
Ks_(p.size(), 0.0),
|
Ks_(p.size(), 0.0),
|
||||||
Cs_(p.size(), 0.0)
|
Cs_(p.size(), 0.0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
mutRoughWallFunctionFvPatchScalarField::mutRoughWallFunctionFvPatchScalarField
|
mutkRoughWallFunctionFvPatchScalarField::mutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const mutRoughWallFunctionFvPatchScalarField& ptf,
|
const mutkRoughWallFunctionFvPatchScalarField& ptf,
|
||||||
const fvPatch& p,
|
const fvPatch& p,
|
||||||
const DimensionedField<scalar, volMesh>& iF,
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
const fvPatchFieldMapper& mapper
|
const fvPatchFieldMapper& mapper
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
mutWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
|
mutkWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
|
||||||
Ks_(ptf.Ks_, mapper),
|
Ks_(ptf.Ks_, mapper),
|
||||||
Cs_(ptf.Cs_, mapper)
|
Cs_(ptf.Cs_, mapper)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
mutRoughWallFunctionFvPatchScalarField::mutRoughWallFunctionFvPatchScalarField
|
mutkRoughWallFunctionFvPatchScalarField::mutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const fvPatch& p,
|
const fvPatch& p,
|
||||||
const DimensionedField<scalar, volMesh>& iF,
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
mutWallFunctionFvPatchScalarField(p, iF, dict),
|
mutkWallFunctionFvPatchScalarField(p, iF, dict),
|
||||||
Ks_("Ks", dict, p.size()),
|
Ks_("Ks", dict, p.size()),
|
||||||
Cs_("Cs", dict, p.size())
|
Cs_("Cs", dict, p.size())
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
mutRoughWallFunctionFvPatchScalarField::mutRoughWallFunctionFvPatchScalarField
|
mutkRoughWallFunctionFvPatchScalarField::mutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const mutRoughWallFunctionFvPatchScalarField& rwfpsf
|
const mutkRoughWallFunctionFvPatchScalarField& rwfpsf
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
mutWallFunctionFvPatchScalarField(rwfpsf),
|
mutkWallFunctionFvPatchScalarField(rwfpsf),
|
||||||
Ks_(rwfpsf.Ks_),
|
Ks_(rwfpsf.Ks_),
|
||||||
Cs_(rwfpsf.Cs_)
|
Cs_(rwfpsf.Cs_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
mutRoughWallFunctionFvPatchScalarField::mutRoughWallFunctionFvPatchScalarField
|
mutkRoughWallFunctionFvPatchScalarField::mutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const mutRoughWallFunctionFvPatchScalarField& rwfpsf,
|
const mutkRoughWallFunctionFvPatchScalarField& rwfpsf,
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
mutWallFunctionFvPatchScalarField(rwfpsf, iF),
|
mutkWallFunctionFvPatchScalarField(rwfpsf, iF),
|
||||||
Ks_(rwfpsf.Ks_),
|
Ks_(rwfpsf.Ks_),
|
||||||
Cs_(rwfpsf.Cs_)
|
Cs_(rwfpsf.Cs_)
|
||||||
{}
|
{}
|
||||||
|
@ -184,34 +186,34 @@ mutRoughWallFunctionFvPatchScalarField::mutRoughWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
void mutRoughWallFunctionFvPatchScalarField::autoMap
|
void mutkRoughWallFunctionFvPatchScalarField::autoMap
|
||||||
(
|
(
|
||||||
const fvPatchFieldMapper& m
|
const fvPatchFieldMapper& m
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
mutWallFunctionFvPatchScalarField::autoMap(m);
|
mutkWallFunctionFvPatchScalarField::autoMap(m);
|
||||||
Ks_.autoMap(m);
|
Ks_.autoMap(m);
|
||||||
Cs_.autoMap(m);
|
Cs_.autoMap(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void mutRoughWallFunctionFvPatchScalarField::rmap
|
void mutkRoughWallFunctionFvPatchScalarField::rmap
|
||||||
(
|
(
|
||||||
const fvPatchScalarField& ptf,
|
const fvPatchScalarField& ptf,
|
||||||
const labelList& addr
|
const labelList& addr
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
mutWallFunctionFvPatchScalarField::rmap(ptf, addr);
|
mutkWallFunctionFvPatchScalarField::rmap(ptf, addr);
|
||||||
|
|
||||||
const mutRoughWallFunctionFvPatchScalarField& nrwfpsf =
|
const mutkRoughWallFunctionFvPatchScalarField& nrwfpsf =
|
||||||
refCast<const mutRoughWallFunctionFvPatchScalarField>(ptf);
|
refCast<const mutkRoughWallFunctionFvPatchScalarField>(ptf);
|
||||||
|
|
||||||
Cs_.rmap(nrwfpsf.Cs_, addr);
|
|
||||||
Ks_.rmap(nrwfpsf.Ks_, addr);
|
Ks_.rmap(nrwfpsf.Ks_, addr);
|
||||||
|
Cs_.rmap(nrwfpsf.Cs_, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void mutRoughWallFunctionFvPatchScalarField::write(Ostream& os) const
|
void mutkRoughWallFunctionFvPatchScalarField::write(Ostream& os) const
|
||||||
{
|
{
|
||||||
fvPatchField<scalar>::write(os);
|
fvPatchField<scalar>::write(os);
|
||||||
writeLocalEntries(os);
|
writeLocalEntries(os);
|
||||||
|
@ -223,7 +225,7 @@ void mutRoughWallFunctionFvPatchScalarField::write(Ostream& os) const
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makePatchTypeField(fvPatchScalarField, mutRoughWallFunctionFvPatchScalarField);
|
makePatchTypeField(fvPatchScalarField, mutkRoughWallFunctionFvPatchScalarField);
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
|
@ -22,10 +22,10 @@ License
|
||||||
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
Class
|
Class
|
||||||
Foam::compressible::RASModels::mutRoughWallFunctionFvPatchScalarField
|
Foam::compressible::RASModels::mutkRoughWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Boundary condition for turbulent (kinematic) viscosity when using wall
|
Boundary condition for turbulent (dynamic) viscosity when using wall
|
||||||
functions for rough walls.
|
functions for rough walls.
|
||||||
|
|
||||||
Manipulates the E parameter to account for roughness effects, based on
|
Manipulates the E parameter to account for roughness effects, based on
|
||||||
|
@ -34,15 +34,32 @@ Description
|
||||||
- roughness height = sand-grain roughness (0 for smooth walls)
|
- roughness height = sand-grain roughness (0 for smooth walls)
|
||||||
- roughness constant = 0.5-1.0 (0.5 default)
|
- roughness constant = 0.5-1.0 (0.5 default)
|
||||||
|
|
||||||
|
Usage
|
||||||
|
\table
|
||||||
|
Property | Description | Required | Default value
|
||||||
|
Ks | sand-grain roughness height | yes |
|
||||||
|
Cs | roughness constant | yes |
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
Example of the boundary condition specification:
|
||||||
|
\verbatim
|
||||||
|
<patchName>
|
||||||
|
{
|
||||||
|
type mutkRoughWallFunction;
|
||||||
|
Ks uniform 0;
|
||||||
|
Cs uniform 0.5;
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
mutRoughWallFunctionFvPatchScalarField.C
|
mutkRoughWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef compressibleMutRoughWallFunctionFvPatchScalarField_H
|
#ifndef compressibleMutRoughWallFunctionFvPatchScalarField_H
|
||||||
#define compressibleMutRoughWallFunctionFvPatchScalarField_H
|
#define compressibleMutRoughWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
#include "mutWallFunctionFvPatchScalarField.H"
|
#include "mutkWallFunctionFvPatchScalarField.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
@ -54,12 +71,12 @@ namespace RASModels
|
||||||
{
|
{
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class mutRoughWallFunctionFvPatchScalarField Declaration
|
Class mutkRoughWallFunctionFvPatchScalarField Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class mutRoughWallFunctionFvPatchScalarField
|
class mutkRoughWallFunctionFvPatchScalarField
|
||||||
:
|
:
|
||||||
public mutWallFunctionFvPatchScalarField
|
public mutkWallFunctionFvPatchScalarField
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
@ -72,7 +89,7 @@ protected:
|
||||||
scalarField Cs_;
|
scalarField Cs_;
|
||||||
|
|
||||||
|
|
||||||
// Private member functions
|
// Protected Member Functions
|
||||||
|
|
||||||
//- Compute the roughness function
|
//- Compute the roughness function
|
||||||
virtual scalar fnRough(const scalar KsPlus, const scalar Cs) const;
|
virtual scalar fnRough(const scalar KsPlus, const scalar Cs) const;
|
||||||
|
@ -84,20 +101,20 @@ protected:
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
TypeName("mutRoughWallFunction");
|
TypeName("mutkRoughWallFunction");
|
||||||
|
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from patch and internal field
|
//- Construct from patch and internal field
|
||||||
mutRoughWallFunctionFvPatchScalarField
|
mutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const fvPatch&,
|
const fvPatch&,
|
||||||
const DimensionedField<scalar, volMesh>&
|
const DimensionedField<scalar, volMesh>&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct from patch, internal field and dictionary
|
//- Construct from patch, internal field and dictionary
|
||||||
mutRoughWallFunctionFvPatchScalarField
|
mutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const fvPatch&,
|
const fvPatch&,
|
||||||
const DimensionedField<scalar, volMesh>&,
|
const DimensionedField<scalar, volMesh>&,
|
||||||
|
@ -105,20 +122,20 @@ public:
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct by mapping given
|
//- Construct by mapping given
|
||||||
// mutRoughWallFunctionFvPatchScalarField
|
// mutkRoughWallFunctionFvPatchScalarField
|
||||||
// onto a new patch
|
// onto a new patch
|
||||||
mutRoughWallFunctionFvPatchScalarField
|
mutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const mutRoughWallFunctionFvPatchScalarField&,
|
const mutkRoughWallFunctionFvPatchScalarField&,
|
||||||
const fvPatch&,
|
const fvPatch&,
|
||||||
const DimensionedField<scalar, volMesh>&,
|
const DimensionedField<scalar, volMesh>&,
|
||||||
const fvPatchFieldMapper&
|
const fvPatchFieldMapper&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct as copy
|
//- Construct as copy
|
||||||
mutRoughWallFunctionFvPatchScalarField
|
mutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const mutRoughWallFunctionFvPatchScalarField&
|
const mutkRoughWallFunctionFvPatchScalarField&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct and return a clone
|
//- Construct and return a clone
|
||||||
|
@ -126,14 +143,14 @@ public:
|
||||||
{
|
{
|
||||||
return tmp<fvPatchScalarField>
|
return tmp<fvPatchScalarField>
|
||||||
(
|
(
|
||||||
new mutRoughWallFunctionFvPatchScalarField(*this)
|
new mutkRoughWallFunctionFvPatchScalarField(*this)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
//- Construct as copy setting internal field reference
|
//- Construct as copy setting internal field reference
|
||||||
mutRoughWallFunctionFvPatchScalarField
|
mutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const mutRoughWallFunctionFvPatchScalarField&,
|
const mutkRoughWallFunctionFvPatchScalarField&,
|
||||||
const DimensionedField<scalar, volMesh>&
|
const DimensionedField<scalar, volMesh>&
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -145,20 +162,32 @@ public:
|
||||||
{
|
{
|
||||||
return tmp<fvPatchScalarField>
|
return tmp<fvPatchScalarField>
|
||||||
(
|
(
|
||||||
new mutRoughWallFunctionFvPatchScalarField(*this, iF)
|
new mutkRoughWallFunctionFvPatchScalarField(*this, iF)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Member functions
|
// Member functions
|
||||||
|
|
||||||
|
// Acces functions
|
||||||
|
|
||||||
|
// Return Ks
|
||||||
|
scalarField& Ks()
|
||||||
|
{
|
||||||
|
return Ks_;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return Cs
|
||||||
|
scalarField& Cs()
|
||||||
|
{
|
||||||
|
return Cs_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Mapping functions
|
// Mapping functions
|
||||||
|
|
||||||
//- Map (and resize as needed) from self given a mapping object
|
//- Map (and resize as needed) from self given a mapping object
|
||||||
virtual void autoMap
|
virtual void autoMap(const fvPatchFieldMapper&);
|
||||||
(
|
|
||||||
const fvPatchFieldMapper&
|
|
||||||
);
|
|
||||||
|
|
||||||
//- Reverse map the given fvPatchField onto this fvPatchField
|
//- Reverse map the given fvPatchField onto this fvPatchField
|
||||||
virtual void rmap
|
virtual void rmap
|
|
@ -40,63 +40,37 @@ namespace RASModels
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
void mutkWallFunctionFvPatchScalarField::checkType()
|
|
||||||
{
|
|
||||||
if (!patch().isWall())
|
|
||||||
{
|
|
||||||
FatalErrorIn("mutkWallFunctionFvPatchScalarField::checkType()")
|
|
||||||
<< "Invalid wall function specification" << nl
|
|
||||||
<< " Patch type for patch " << patch().name()
|
|
||||||
<< " must be wall" << nl
|
|
||||||
<< " Current patch type is " << patch().type() << nl << endl
|
|
||||||
<< abort(FatalError);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
scalar mutkWallFunctionFvPatchScalarField::calcYPlusLam
|
|
||||||
(
|
|
||||||
const scalar kappa,
|
|
||||||
const scalar E
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
scalar ypl = 11.0;
|
|
||||||
|
|
||||||
for (int i=0; i<10; i++)
|
|
||||||
{
|
|
||||||
ypl = log(E*ypl)/kappa;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ypl;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> mutkWallFunctionFvPatchScalarField::calcMut() const
|
tmp<scalarField> mutkWallFunctionFvPatchScalarField::calcMut() const
|
||||||
{
|
{
|
||||||
const label patchi = patch().index();
|
const label patchI = patch().index();
|
||||||
|
|
||||||
const turbulenceModel& turbModel =
|
const turbulenceModel& turbModel =
|
||||||
db().lookupObject<turbulenceModel>("turbulenceModel");
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
const scalarField& y = turbModel.y()[patchi];
|
|
||||||
const scalarField& rhow = turbModel.rho().boundaryField()[patchi];
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
const scalarField& rhow = turbModel.rho().boundaryField()[patchI];
|
||||||
const tmp<volScalarField> tk = turbModel.k();
|
const tmp<volScalarField> tk = turbModel.k();
|
||||||
const volScalarField& k = tk();
|
const volScalarField& k = tk();
|
||||||
const scalarField& muw = turbModel.mu().boundaryField()[patchi];
|
const scalarField& muw = turbModel.mu().boundaryField()[patchI];
|
||||||
|
|
||||||
const scalar Cmu25 = pow025(Cmu_);
|
const scalar Cmu25 = pow025(Cmu_);
|
||||||
|
|
||||||
tmp<scalarField> tmutw(new scalarField(patch().size(), 0.0));
|
tmp<scalarField> tmutw(new scalarField(patch().size(), 0.0));
|
||||||
scalarField& mutw = tmutw();
|
scalarField& mutw = tmutw();
|
||||||
|
|
||||||
|
// Get face cells
|
||||||
|
const unallocLabelList& fc = patch().faceCells();
|
||||||
|
|
||||||
forAll(mutw, faceI)
|
forAll(mutw, faceI)
|
||||||
{
|
{
|
||||||
label faceCellI = patch().faceCells()[faceI];
|
const label faceCellI = fc[faceI];
|
||||||
|
|
||||||
scalar yPlus =
|
const scalar yPlus =
|
||||||
Cmu25*y[faceI]*sqrt(k[faceCellI])/(muw[faceI]/rhow[faceI]);
|
Cmu25*y[faceI]*sqrt(k[faceCellI])/(muw[faceI]/rhow[faceI]);
|
||||||
|
|
||||||
if (yPlus > yPlusLam_)
|
if (yPlus > yPlusLam_)
|
||||||
{
|
{
|
||||||
mutw[faceI] = muw[faceI]*(yPlus*kappa_/log(E_*yPlus) - 1);
|
mutw[faceI] = muw[faceI]*(yPlus*kappa_/log(E_*yPlus) - 1.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,14 +78,6 @@ tmp<scalarField> mutkWallFunctionFvPatchScalarField::calcMut() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void mutkWallFunctionFvPatchScalarField::writeLocalEntries(Ostream& os) const
|
|
||||||
{
|
|
||||||
os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl;
|
|
||||||
os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
|
|
||||||
os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
mutkWallFunctionFvPatchScalarField::mutkWallFunctionFvPatchScalarField
|
mutkWallFunctionFvPatchScalarField::mutkWallFunctionFvPatchScalarField
|
||||||
|
@ -120,11 +86,18 @@ mutkWallFunctionFvPatchScalarField::mutkWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(p, iF),
|
mutWallFunctionFvPatchScalarField(p, iF)
|
||||||
Cmu_(0.09),
|
{}
|
||||||
kappa_(0.41),
|
|
||||||
E_(9.8),
|
|
||||||
yPlusLam_(calcYPlusLam(kappa_, E_))
|
mutkWallFunctionFvPatchScalarField::mutkWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mutWallFunctionFvPatchScalarField(p, iF, dict)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -136,26 +109,7 @@ mutkWallFunctionFvPatchScalarField::mutkWallFunctionFvPatchScalarField
|
||||||
const fvPatchFieldMapper& mapper
|
const fvPatchFieldMapper& mapper
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(ptf, p, iF, mapper),
|
mutWallFunctionFvPatchScalarField(ptf, p, iF, mapper)
|
||||||
Cmu_(ptf.Cmu_),
|
|
||||||
kappa_(ptf.kappa_),
|
|
||||||
E_(ptf.E_),
|
|
||||||
yPlusLam_(ptf.yPlusLam_)
|
|
||||||
{}
|
|
||||||
|
|
||||||
|
|
||||||
mutkWallFunctionFvPatchScalarField::mutkWallFunctionFvPatchScalarField
|
|
||||||
(
|
|
||||||
const fvPatch& p,
|
|
||||||
const DimensionedField<scalar, volMesh>& iF,
|
|
||||||
const dictionary& dict
|
|
||||||
)
|
|
||||||
:
|
|
||||||
fixedValueFvPatchScalarField(p, iF, dict),
|
|
||||||
Cmu_(dict.lookupOrDefault<scalar>("Cmu", 0.09)),
|
|
||||||
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
|
|
||||||
E_(dict.lookupOrDefault<scalar>("E", 9.8)),
|
|
||||||
yPlusLam_(calcYPlusLam(kappa_, E_))
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -164,11 +118,7 @@ mutkWallFunctionFvPatchScalarField::mutkWallFunctionFvPatchScalarField
|
||||||
const mutkWallFunctionFvPatchScalarField& wfpsf
|
const mutkWallFunctionFvPatchScalarField& wfpsf
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(wfpsf),
|
mutWallFunctionFvPatchScalarField(wfpsf)
|
||||||
Cmu_(wfpsf.Cmu_),
|
|
||||||
kappa_(wfpsf.kappa_),
|
|
||||||
E_(wfpsf.E_),
|
|
||||||
yPlusLam_(wfpsf.yPlusLam_)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -178,55 +128,30 @@ mutkWallFunctionFvPatchScalarField::mutkWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(wfpsf, iF),
|
mutWallFunctionFvPatchScalarField(wfpsf, iF)
|
||||||
Cmu_(wfpsf.Cmu_),
|
|
||||||
kappa_(wfpsf.kappa_),
|
|
||||||
E_(wfpsf.E_),
|
|
||||||
yPlusLam_(wfpsf.yPlusLam_)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
void mutkWallFunctionFvPatchScalarField::updateCoeffs()
|
|
||||||
{
|
|
||||||
if (updated())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
operator==(calcMut());
|
|
||||||
|
|
||||||
fixedValueFvPatchScalarField::updateCoeffs();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> mutkWallFunctionFvPatchScalarField::yPlus() const
|
tmp<scalarField> mutkWallFunctionFvPatchScalarField::yPlus() const
|
||||||
{
|
{
|
||||||
const label patchi = patch().index();
|
const label patchI = patch().index();
|
||||||
|
|
||||||
const turbulenceModel& turbModel =
|
const turbulenceModel& turbModel =
|
||||||
db().lookupObject<turbulenceModel>("turbulenceModel");
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
const scalarField& y = turbModel.y()[patchi];
|
|
||||||
|
|
||||||
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
const tmp<volScalarField> tk = turbModel.k();
|
const tmp<volScalarField> tk = turbModel.k();
|
||||||
const volScalarField& k = tk();
|
const volScalarField& k = tk();
|
||||||
const scalarField kwc(k.boundaryField()[patchi].patchInternalField());
|
const scalarField kwc(k.boundaryField()[patchI].patchInternalField());
|
||||||
const scalarField& muw = turbModel.mu().boundaryField()[patchi];
|
const scalarField& muw = turbModel.mu().boundaryField()[patchI];
|
||||||
const scalarField& rhow = turbModel.rho().boundaryField()[patchi];
|
const scalarField& rhow = turbModel.rho().boundaryField()[patchI];
|
||||||
|
|
||||||
return pow025(Cmu_)*y*sqrt(kwc)/(muw/rhow);
|
return pow025(Cmu_)*y*sqrt(kwc)/(muw/rhow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void mutkWallFunctionFvPatchScalarField::write(Ostream& os) const
|
|
||||||
{
|
|
||||||
fvPatchField<scalar>::write(os);
|
|
||||||
writeLocalEntries(os);
|
|
||||||
writeEntry("value", os);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makePatchTypeField(fvPatchScalarField, mutkWallFunctionFvPatchScalarField);
|
makePatchTypeField(fvPatchScalarField, mutkWallFunctionFvPatchScalarField);
|
||||||
|
|
|
@ -25,10 +25,22 @@ Class
|
||||||
Foam::compressible::RASModels::mutkWallFunctionFvPatchScalarField
|
Foam::compressible::RASModels::mutkWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Boundary condition for turbulent (kinematic) viscosity when using wall
|
Boundary condition for turbulent (dynamic) viscosity when using wall
|
||||||
functions, based on turbulence kinetic energy.
|
functions, based on turbulence kinetic energy.
|
||||||
- replicates OpenFOAM v1.5 (and earlier) behaviour
|
- replicates OpenFOAM v1.5 (and earlier) behaviour
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Example of the boundary condition specification:
|
||||||
|
\verbatim
|
||||||
|
<patchName>
|
||||||
|
{
|
||||||
|
type mutkWallFunction;
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
See also
|
||||||
|
Foam::mutWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
mutkWallFunctionFvPatchScalarField.C
|
mutkWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
|
@ -37,7 +49,7 @@ SourceFiles
|
||||||
#ifndef compressibleMutkWallFunctionFvPatchScalarField_H
|
#ifndef compressibleMutkWallFunctionFvPatchScalarField_H
|
||||||
#define compressibleMutkWallFunctionFvPatchScalarField_H
|
#define compressibleMutkWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
#include "fixedValueFvPatchFields.H"
|
#include "mutWallFunctionFvPatchScalarField.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
@ -54,39 +66,15 @@ namespace RASModels
|
||||||
|
|
||||||
class mutkWallFunctionFvPatchScalarField
|
class mutkWallFunctionFvPatchScalarField
|
||||||
:
|
:
|
||||||
public fixedValueFvPatchScalarField
|
public mutWallFunctionFvPatchScalarField
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
// Protected data
|
// Protected Member Functions
|
||||||
|
|
||||||
//- Cmu coefficient
|
|
||||||
scalar Cmu_;
|
|
||||||
|
|
||||||
//- Von Karman constant
|
|
||||||
scalar kappa_;
|
|
||||||
|
|
||||||
//- E coefficient
|
|
||||||
scalar E_;
|
|
||||||
|
|
||||||
//- Y+ at the edge of the laminar sublayer
|
|
||||||
scalar yPlusLam_;
|
|
||||||
|
|
||||||
|
|
||||||
// Protected member functions
|
|
||||||
|
|
||||||
//- Check the type of the patch
|
|
||||||
virtual void checkType();
|
|
||||||
|
|
||||||
//- Calculate the Y+ at the edge of the laminar sublayer
|
|
||||||
virtual scalar calcYPlusLam(const scalar kappa, const scalar E) const;
|
|
||||||
|
|
||||||
//- Calculate the turbulence viscosity
|
//- Calculate the turbulence viscosity
|
||||||
virtual tmp<scalarField> calcMut() const;
|
virtual tmp<scalarField> calcMut() const;
|
||||||
|
|
||||||
//- Write local wall function variables
|
|
||||||
virtual void writeLocalEntries(Ostream&) const;
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -159,19 +147,8 @@ public:
|
||||||
|
|
||||||
// Member functions
|
// Member functions
|
||||||
|
|
||||||
// Evaluation functions
|
|
||||||
|
|
||||||
//- Calculate and return the yPlus at the boundary
|
//- Calculate and return the yPlus at the boundary
|
||||||
virtual tmp<scalarField> yPlus() const;
|
virtual tmp<scalarField> yPlus() const;
|
||||||
|
|
||||||
//- Update the coefficients associated with the patch field
|
|
||||||
virtual void updateCoeffs();
|
|
||||||
|
|
||||||
|
|
||||||
// I-O
|
|
||||||
|
|
||||||
//- Write
|
|
||||||
virtual void write(Ostream&) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -25,13 +25,15 @@ coupledKOmegaSST/coupledKOmegaSST.C
|
||||||
wallFunctions = derivedFvPatchFields/wallFunctions
|
wallFunctions = derivedFvPatchFields/wallFunctions
|
||||||
|
|
||||||
nutWallFunctions = $(wallFunctions)/nutWallFunctions
|
nutWallFunctions = $(wallFunctions)/nutWallFunctions
|
||||||
$(nutWallFunctions)/nutkWallFunction/nutkWallFunctionFvPatchScalarField.C
|
|
||||||
$(nutWallFunctions)/nutWallFunction/nutWallFunctionFvPatchScalarField.C
|
$(nutWallFunctions)/nutWallFunction/nutWallFunctionFvPatchScalarField.C
|
||||||
$(nutWallFunctions)/nutRoughWallFunction/nutRoughWallFunctionFvPatchScalarField.C
|
$(nutWallFunctions)/nutLowReWallFunction/nutLowReWallFunctionFvPatchScalarField.C
|
||||||
$(nutWallFunctions)/nutSpalartAllmarasWallFunction/nutSpalartAllmarasWallFunctionFvPatchScalarField.C
|
$(nutWallFunctions)/nutkWallFunction/nutkWallFunctionFvPatchScalarField.C
|
||||||
|
$(nutWallFunctions)/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.C
|
||||||
|
$(nutWallFunctions)/nutUWallFunction/nutUWallFunctionFvPatchScalarField.C
|
||||||
|
$(nutWallFunctions)/nutURoughWallFunction/nutURoughWallFunctionFvPatchScalarField.C
|
||||||
$(nutWallFunctions)/nutSpalartAllmarasStandardWallFunction/nutSpalartAllmarasStandardWallFunctionFvPatchScalarField.C
|
$(nutWallFunctions)/nutSpalartAllmarasStandardWallFunction/nutSpalartAllmarasStandardWallFunctionFvPatchScalarField.C
|
||||||
$(nutWallFunctions)/nutSpalartAllmarasStandardRoughWallFunction/nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField.C
|
$(nutWallFunctions)/nutSpalartAllmarasStandardRoughWallFunction/nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField.C
|
||||||
$(nutWallFunctions)/nutLowReWallFunction/nutLowReWallFunctionFvPatchScalarField.C
|
$(nutWallFunctions)/nutSpalartAllmarasWallFunction/nutSpalartAllmarasWallFunctionFvPatchScalarField.C
|
||||||
$(nutWallFunctions)/nutCWTWallFunction/nutCWTWallFunctionFvPatchScalarField.C
|
$(nutWallFunctions)/nutCWTWallFunction/nutCWTWallFunctionFvPatchScalarField.C
|
||||||
$(nutWallFunctions)/nutMEWTWallFunction/nutMEWTWallFunctionFvPatchScalarField.C
|
$(nutWallFunctions)/nutMEWTWallFunction/nutMEWTWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ License
|
||||||
#include "backwardsCompatibilityWallFunctions.H"
|
#include "backwardsCompatibilityWallFunctions.H"
|
||||||
|
|
||||||
#include "calculatedFvPatchField.H"
|
#include "calculatedFvPatchField.H"
|
||||||
#include "nutWallFunctionFvPatchScalarField.H"
|
#include "nutkWallFunctionFvPatchScalarField.H"
|
||||||
#include "nutLowReWallFunctionFvPatchScalarField.H"
|
#include "nutLowReWallFunctionFvPatchScalarField.H"
|
||||||
#include "epsilonWallFunctionFvPatchScalarField.H"
|
#include "epsilonWallFunctionFvPatchScalarField.H"
|
||||||
#include "kqRWallFunctionFvPatchField.H"
|
#include "kqRWallFunctionFvPatchField.H"
|
||||||
|
@ -77,7 +77,7 @@ tmp<volScalarField> autoCreateNut
|
||||||
if (bm[patchI].isWall())
|
if (bm[patchI].isWall())
|
||||||
{
|
{
|
||||||
nutBoundaryTypes[patchI] =
|
nutBoundaryTypes[patchI] =
|
||||||
RASModels::nutWallFunctionFvPatchScalarField::typeName;
|
RASModels::nutkWallFunctionFvPatchScalarField::typeName;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -40,48 +40,19 @@ namespace RASModels
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
void nutCWTWallFunctionFvPatchScalarField::checkType()
|
|
||||||
{
|
|
||||||
if (!patch().isWall())
|
|
||||||
{
|
|
||||||
FatalErrorIn("nutCWTWallFunctionFvPatchScalarField::checkType()")
|
|
||||||
<< "Invalid wall function specification" << nl
|
|
||||||
<< " Patch type for patch " << patch().name()
|
|
||||||
<< " must be wall" << nl
|
|
||||||
<< " Current patch type is " << patch().type() << nl << endl
|
|
||||||
<< abort(FatalError);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
scalar nutCWTWallFunctionFvPatchScalarField::calcYPlusLam
|
|
||||||
(
|
|
||||||
const scalar kappa,
|
|
||||||
const scalar E
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
scalar ypl = 11.0;
|
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++)
|
|
||||||
{
|
|
||||||
ypl = log(E*ypl)/kappa;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ypl;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> nutCWTWallFunctionFvPatchScalarField::calcNut() const
|
tmp<scalarField> nutCWTWallFunctionFvPatchScalarField::calcNut() const
|
||||||
{
|
{
|
||||||
const label patchI = patch().index();
|
const label patchI = patch().index();
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
const turbulenceModel& turbModel =
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
const tmp<volScalarField> tk = rasModel.k();
|
|
||||||
const volScalarField& k = tk();
|
|
||||||
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
const scalar Cmu25 = pow(Cmu_, 0.25);
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
const tmp<volScalarField> tk = turbModel.k();
|
||||||
|
const volScalarField& k = tk();
|
||||||
|
const scalarField& nuw = turbModel.nu().boundaryField()[patchI];
|
||||||
|
|
||||||
|
const scalar Cmu25 = pow025(Cmu_);
|
||||||
|
|
||||||
// Get normals
|
// Get normals
|
||||||
const vectorField n = patch().nf();
|
const vectorField n = patch().nf();
|
||||||
|
@ -130,8 +101,15 @@ tmp<scalarField> nutCWTWallFunctionFvPatchScalarField::calcNut() const
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Info<< "Field pressureGradient not found. Neglecting pressure gradient "
|
InfoIn
|
||||||
|
(
|
||||||
|
"tmp<scalarField>"
|
||||||
|
"nutCWTWallFunctionFvPatchScalarField::calcNut() const"
|
||||||
|
) << "Field pressureGradient not found. Neglecting pressure gradient "
|
||||||
<< "effects for wall functions at patch: " << patch().name()
|
<< "effects for wall functions at patch: " << patch().name()
|
||||||
|
<< nl
|
||||||
|
<< "If you would like to include pressure gradient effects, set up"
|
||||||
|
<< " pressureGradient function object."
|
||||||
<< endl;
|
<< endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,8 +142,15 @@ tmp<scalarField> nutCWTWallFunctionFvPatchScalarField::calcNut() const
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Info<< "Field velocityConvection not found. Neglecting convection "
|
InfoIn
|
||||||
|
(
|
||||||
|
"tmp<scalarField>"
|
||||||
|
"nutCWTWallFunctionFvPatchScalarField::calcNut() const"
|
||||||
|
) << "Field velocityConvection not found. Neglecting convection "
|
||||||
<< "effects for wall functions at patch: " << patch().name()
|
<< "effects for wall functions at patch: " << patch().name()
|
||||||
|
<< nl
|
||||||
|
<< "If you would like to include convection effects, set up"
|
||||||
|
<< " velocityConvection function object."
|
||||||
<< endl;
|
<< endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,12 +191,11 @@ tmp<scalarField> nutCWTWallFunctionFvPatchScalarField::calcNut() const
|
||||||
|
|
||||||
void nutCWTWallFunctionFvPatchScalarField::writeLocalEntries(Ostream& os) const
|
void nutCWTWallFunctionFvPatchScalarField::writeLocalEntries(Ostream& os) const
|
||||||
{
|
{
|
||||||
|
nutkWallFunctionFvPatchScalarField::writeLocalEntries(os);
|
||||||
|
|
||||||
writeEntryIfDifferent<word>(os, "U", "U", UName_);
|
writeEntryIfDifferent<word>(os, "U", "U", UName_);
|
||||||
writeEntryIfDifferent<word>(os, "p", "p", pName_);
|
writeEntryIfDifferent<word>(os, "p", "p", pName_);
|
||||||
writeEntryIfDifferent<word>(os, "nut", "nut", nutName_);
|
writeEntryIfDifferent<word>(os, "nut", "nut", nutName_);
|
||||||
os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl;
|
|
||||||
os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
|
|
||||||
os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -223,17 +207,11 @@ nutCWTWallFunctionFvPatchScalarField::nutCWTWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(p, iF),
|
nutkWallFunctionFvPatchScalarField(p, iF),
|
||||||
UName_("U"),
|
UName_("U"),
|
||||||
pName_("p"),
|
pName_("p"),
|
||||||
nutName_("nut"),
|
nutName_("nut")
|
||||||
Cmu_(0.09),
|
{}
|
||||||
kappa_(0.41),
|
|
||||||
E_(9.8),
|
|
||||||
yPlusLam_(calcYPlusLam(kappa_, E_))
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nutCWTWallFunctionFvPatchScalarField::nutCWTWallFunctionFvPatchScalarField
|
nutCWTWallFunctionFvPatchScalarField::nutCWTWallFunctionFvPatchScalarField
|
||||||
|
@ -243,17 +221,11 @@ nutCWTWallFunctionFvPatchScalarField::nutCWTWallFunctionFvPatchScalarField
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(p, iF, dict),
|
nutkWallFunctionFvPatchScalarField(p, iF, dict),
|
||||||
UName_(dict.lookupOrDefault<word>("U", "U")),
|
UName_(dict.lookupOrDefault<word>("U", "U")),
|
||||||
pName_(dict.lookupOrDefault<word>("p", "p")),
|
pName_(dict.lookupOrDefault<word>("p", "p")),
|
||||||
nutName_(dict.lookupOrDefault<word>("nut", "nut")),
|
nutName_(dict.lookupOrDefault<word>("nut", "nut"))
|
||||||
Cmu_(dict.lookupOrDefault<scalar>("Cmu", 0.09)),
|
{}
|
||||||
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
|
|
||||||
E_(dict.lookupOrDefault<scalar>("E", 9.8)),
|
|
||||||
yPlusLam_(calcYPlusLam(kappa_, E_))
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nutCWTWallFunctionFvPatchScalarField::nutCWTWallFunctionFvPatchScalarField
|
nutCWTWallFunctionFvPatchScalarField::nutCWTWallFunctionFvPatchScalarField
|
||||||
|
@ -264,17 +236,11 @@ nutCWTWallFunctionFvPatchScalarField::nutCWTWallFunctionFvPatchScalarField
|
||||||
const fvPatchFieldMapper& mapper
|
const fvPatchFieldMapper& mapper
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(ptf, p, iF, mapper),
|
nutkWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
|
||||||
UName_(ptf.UName_),
|
UName_(ptf.UName_),
|
||||||
pName_(ptf.pName_),
|
pName_(ptf.pName_),
|
||||||
nutName_(ptf.nutName_),
|
nutName_(ptf.nutName_)
|
||||||
Cmu_(ptf.Cmu_),
|
{}
|
||||||
kappa_(ptf.kappa_),
|
|
||||||
E_(ptf.E_),
|
|
||||||
yPlusLam_(ptf.yPlusLam_)
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nutCWTWallFunctionFvPatchScalarField::nutCWTWallFunctionFvPatchScalarField
|
nutCWTWallFunctionFvPatchScalarField::nutCWTWallFunctionFvPatchScalarField
|
||||||
|
@ -282,17 +248,11 @@ nutCWTWallFunctionFvPatchScalarField::nutCWTWallFunctionFvPatchScalarField
|
||||||
const nutCWTWallFunctionFvPatchScalarField& wfpsf
|
const nutCWTWallFunctionFvPatchScalarField& wfpsf
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(wfpsf),
|
nutkWallFunctionFvPatchScalarField(wfpsf),
|
||||||
UName_(wfpsf.UName_),
|
UName_(wfpsf.UName_),
|
||||||
pName_(wfpsf.pName_),
|
pName_(wfpsf.pName_),
|
||||||
nutName_(wfpsf.nutName_),
|
nutName_(wfpsf.nutName_)
|
||||||
Cmu_(wfpsf.Cmu_),
|
{}
|
||||||
kappa_(wfpsf.kappa_),
|
|
||||||
E_(wfpsf.E_),
|
|
||||||
yPlusLam_(wfpsf.yPlusLam_)
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nutCWTWallFunctionFvPatchScalarField::nutCWTWallFunctionFvPatchScalarField
|
nutCWTWallFunctionFvPatchScalarField::nutCWTWallFunctionFvPatchScalarField
|
||||||
|
@ -301,51 +261,11 @@ nutCWTWallFunctionFvPatchScalarField::nutCWTWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(wfpsf, iF),
|
nutkWallFunctionFvPatchScalarField(wfpsf, iF),
|
||||||
UName_(wfpsf.UName_),
|
UName_(wfpsf.UName_),
|
||||||
pName_(wfpsf.pName_),
|
pName_(wfpsf.pName_),
|
||||||
nutName_(wfpsf.nutName_),
|
nutName_(wfpsf.nutName_)
|
||||||
Cmu_(wfpsf.Cmu_),
|
{}
|
||||||
kappa_(wfpsf.kappa_),
|
|
||||||
E_(wfpsf.E_),
|
|
||||||
yPlusLam_(wfpsf.yPlusLam_)
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
void nutCWTWallFunctionFvPatchScalarField::updateCoeffs()
|
|
||||||
{
|
|
||||||
operator==(calcNut());
|
|
||||||
|
|
||||||
fixedValueFvPatchScalarField::updateCoeffs();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> nutCWTWallFunctionFvPatchScalarField::yPlus() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
|
||||||
|
|
||||||
const tmp<volScalarField> tk = rasModel.k();
|
|
||||||
const volScalarField& k = tk();
|
|
||||||
const scalarField kwc = k.boundaryField()[patchI].patchInternalField();
|
|
||||||
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
return pow(Cmu_, 0.25)*y*sqrt(kwc)/nuw;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void nutCWTWallFunctionFvPatchScalarField::write(Ostream& os) const
|
|
||||||
{
|
|
||||||
fvPatchField<scalar>::write(os);
|
|
||||||
writeLocalEntries(os);
|
|
||||||
writeEntry("value", os);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
|
@ -41,6 +41,18 @@ Description
|
||||||
DOI = {10.1007/s10494-006-9067-x}
|
DOI = {10.1007/s10494-006-9067-x}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Example of the boundary condition specification:
|
||||||
|
\verbatim
|
||||||
|
<patchName>
|
||||||
|
{
|
||||||
|
type nutCWTWallFunction;
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
See also
|
||||||
|
Foam::nutkWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
nutCWTWallFunctionFvPatchScalarField.C
|
nutCWTWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
|
@ -52,7 +64,7 @@ Author
|
||||||
#ifndef nutCWTWallFunctionFvPatchScalarField_H
|
#ifndef nutCWTWallFunctionFvPatchScalarField_H
|
||||||
#define nutCWTWallFunctionFvPatchScalarField_H
|
#define nutCWTWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
#include "fixedValueFvPatchFields.H"
|
#include "nutkWallFunctionFvPatchScalarField.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
@ -69,11 +81,9 @@ namespace RASModels
|
||||||
|
|
||||||
class nutCWTWallFunctionFvPatchScalarField
|
class nutCWTWallFunctionFvPatchScalarField
|
||||||
:
|
:
|
||||||
public fixedValueFvPatchScalarField
|
public nutkWallFunctionFvPatchScalarField
|
||||||
{
|
{
|
||||||
protected:
|
// Private Data Members
|
||||||
|
|
||||||
// Protected data
|
|
||||||
|
|
||||||
//- Name of velocity field
|
//- Name of velocity field
|
||||||
word UName_;
|
word UName_;
|
||||||
|
@ -84,29 +94,10 @@ protected:
|
||||||
//- Name of eddy viscosity field
|
//- Name of eddy viscosity field
|
||||||
word nutName_;
|
word nutName_;
|
||||||
|
|
||||||
//- Name of omega field
|
|
||||||
word omegaName_;
|
|
||||||
|
|
||||||
//- Cmu coefficient
|
protected:
|
||||||
scalar Cmu_;
|
|
||||||
|
|
||||||
//- Von Karman constant
|
// Protected Member Functions
|
||||||
scalar kappa_;
|
|
||||||
|
|
||||||
//- E coefficient
|
|
||||||
scalar E_;
|
|
||||||
|
|
||||||
//- Y+ at the edge of the laminar sublayer
|
|
||||||
scalar yPlusLam_;
|
|
||||||
|
|
||||||
|
|
||||||
// Protected member functions
|
|
||||||
|
|
||||||
//- Check the type of the patch
|
|
||||||
virtual void checkType();
|
|
||||||
|
|
||||||
//- Calculate the Y+ at the edge of the laminar sublayer
|
|
||||||
virtual scalar calcYPlusLam(const scalar kappa, const scalar E) const;
|
|
||||||
|
|
||||||
//- Calculate the turbulence viscosity
|
//- Calculate the turbulence viscosity
|
||||||
virtual tmp<scalarField> calcNut() const;
|
virtual tmp<scalarField> calcNut() const;
|
||||||
|
@ -182,23 +173,6 @@ public:
|
||||||
new nutCWTWallFunctionFvPatchScalarField(*this, iF)
|
new nutCWTWallFunctionFvPatchScalarField(*this, iF)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Member functions
|
|
||||||
|
|
||||||
// Evaluation functions
|
|
||||||
|
|
||||||
//- Calculate and return the yPlus at the boundary
|
|
||||||
virtual tmp<scalarField> yPlus() const;
|
|
||||||
|
|
||||||
//- Update the coefficients associated with the patch field
|
|
||||||
virtual void updateCoeffs();
|
|
||||||
|
|
||||||
|
|
||||||
// I-O
|
|
||||||
|
|
||||||
//- Write
|
|
||||||
virtual void write(Ostream&) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -100,6 +100,22 @@ nutLowReWallFunctionFvPatchScalarField::nutLowReWallFunctionFvPatchScalarField
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
tmp<scalarField> nutLowReWallFunctionFvPatchScalarField::yPlus() const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
const scalarField& nuw = turbModel.nu().boundaryField()[patchI];
|
||||||
|
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchI];
|
||||||
|
|
||||||
|
return y*sqrt(nuw*mag(Uw.snGrad()))/nuw;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makePatchTypeField(fvPatchScalarField, nutLowReWallFunctionFvPatchScalarField);
|
makePatchTypeField(fvPatchScalarField, nutLowReWallFunctionFvPatchScalarField);
|
||||||
|
|
|
@ -30,6 +30,18 @@ Description
|
||||||
|
|
||||||
Sets nut to zero, and provides an access function to calculate y+.
|
Sets nut to zero, and provides an access function to calculate y+.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Example of the boundary condition specification:
|
||||||
|
\verbatim
|
||||||
|
<patchName>
|
||||||
|
{
|
||||||
|
type nutLowReWallFunction;
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
See also
|
||||||
|
Foam::nutWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
nutLowReWallFunctionFvPatchScalarField.C
|
nutLowReWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
|
@ -59,7 +71,7 @@ class nutLowReWallFunctionFvPatchScalarField
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
// Protected member functions
|
// Protected Member Functions
|
||||||
|
|
||||||
//- Calculate the turbulence viscosity
|
//- Calculate the turbulence viscosity
|
||||||
virtual tmp<scalarField> calcNut() const;
|
virtual tmp<scalarField> calcNut() const;
|
||||||
|
@ -132,6 +144,12 @@ public:
|
||||||
new nutLowReWallFunctionFvPatchScalarField(*this, iF)
|
new nutLowReWallFunctionFvPatchScalarField(*this, iF)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
//- Calculate and return the yPlus at the boundary
|
||||||
|
virtual tmp<scalarField> yPlus() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -51,48 +51,19 @@ namespace RASModels
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
void nutMEWTWallFunctionFvPatchScalarField::checkType()
|
|
||||||
{
|
|
||||||
if (!patch().isWall())
|
|
||||||
{
|
|
||||||
FatalErrorIn("nutMEWTWallFunctionFvPatchScalarField::checkType()")
|
|
||||||
<< "Invalid wall function specification" << nl
|
|
||||||
<< " Patch type for patch " << patch().name()
|
|
||||||
<< " must be wall" << nl
|
|
||||||
<< " Current patch type is " << patch().type() << nl << endl
|
|
||||||
<< abort(FatalError);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
scalar nutMEWTWallFunctionFvPatchScalarField::calcYPlusLam
|
|
||||||
(
|
|
||||||
const scalar kappa,
|
|
||||||
const scalar E
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
scalar ypl = 11.0;
|
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++)
|
|
||||||
{
|
|
||||||
ypl = log(E*ypl)/kappa;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ypl;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> nutMEWTWallFunctionFvPatchScalarField::calcNut() const
|
tmp<scalarField> nutMEWTWallFunctionFvPatchScalarField::calcNut() const
|
||||||
{
|
{
|
||||||
const label patchI = patch().index();
|
const label patchI = patch().index();
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
const turbulenceModel& turbModel =
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
const tmp<volScalarField> tk = rasModel.k();
|
|
||||||
const volScalarField& k = tk();
|
|
||||||
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
const scalar Cmu25 = pow(Cmu_, 0.25);
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
const tmp<volScalarField> tk = turbModel.k();
|
||||||
|
const volScalarField& k = tk();
|
||||||
|
const scalarField& nuw = turbModel.nu().boundaryField()[patchI];
|
||||||
|
|
||||||
|
const scalar Cmu25 = pow025(Cmu_);
|
||||||
|
|
||||||
// Get normals
|
// Get normals
|
||||||
const vectorField n = patch().nf();
|
const vectorField n = patch().nf();
|
||||||
|
@ -141,8 +112,15 @@ tmp<scalarField> nutMEWTWallFunctionFvPatchScalarField::calcNut() const
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Info<< "Field pressureGradient not found. Neglecting pressure gradient "
|
InfoIn
|
||||||
|
(
|
||||||
|
"tmp<scalarField>"
|
||||||
|
"nutCWTWallFunctionFvPatchScalarField::calcNut() const"
|
||||||
|
) << "Field pressureGradient not found. Neglecting pressure gradient "
|
||||||
<< "effects for wall functions at patch: " << patch().name()
|
<< "effects for wall functions at patch: " << patch().name()
|
||||||
|
<< nl
|
||||||
|
<< "If you would like to include pressure gradient effects, set up"
|
||||||
|
<< " pressureGradient function object."
|
||||||
<< endl;
|
<< endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,8 +153,15 @@ tmp<scalarField> nutMEWTWallFunctionFvPatchScalarField::calcNut() const
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Info<< "Field velocityConvection not found. Neglecting convection "
|
InfoIn
|
||||||
|
(
|
||||||
|
"tmp<scalarField>"
|
||||||
|
"nutCWTWallFunctionFvPatchScalarField::calcNut() const"
|
||||||
|
) << "Field velocityConvection not found. Neglecting convection "
|
||||||
<< "effects for wall functions at patch: " << patch().name()
|
<< "effects for wall functions at patch: " << patch().name()
|
||||||
|
<< nl
|
||||||
|
<< "If you would like to include convection effects, set up"
|
||||||
|
<< " velocityConvection function object."
|
||||||
<< endl;
|
<< endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,12 +239,11 @@ tmp<scalarField> nutMEWTWallFunctionFvPatchScalarField::calcNut() const
|
||||||
|
|
||||||
void nutMEWTWallFunctionFvPatchScalarField::writeLocalEntries(Ostream& os) const
|
void nutMEWTWallFunctionFvPatchScalarField::writeLocalEntries(Ostream& os) const
|
||||||
{
|
{
|
||||||
|
nutkWallFunctionFvPatchScalarField::writeLocalEntries(os);
|
||||||
|
|
||||||
writeEntryIfDifferent<word>(os, "U", "U", UName_);
|
writeEntryIfDifferent<word>(os, "U", "U", UName_);
|
||||||
writeEntryIfDifferent<word>(os, "p", "p", pName_);
|
writeEntryIfDifferent<word>(os, "p", "p", pName_);
|
||||||
writeEntryIfDifferent<word>(os, "nut", "nut", nutName_);
|
writeEntryIfDifferent<word>(os, "nut", "nut", nutName_);
|
||||||
os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl;
|
|
||||||
os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
|
|
||||||
os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -271,17 +255,11 @@ nutMEWTWallFunctionFvPatchScalarField::nutMEWTWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(p, iF),
|
nutkWallFunctionFvPatchScalarField(p, iF),
|
||||||
UName_("U"),
|
UName_("U"),
|
||||||
pName_("p"),
|
pName_("p"),
|
||||||
nutName_("nut"),
|
nutName_("nut")
|
||||||
Cmu_(0.09),
|
{}
|
||||||
kappa_(0.41),
|
|
||||||
E_(9.8),
|
|
||||||
yPlusLam_(calcYPlusLam(kappa_, E_))
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nutMEWTWallFunctionFvPatchScalarField::nutMEWTWallFunctionFvPatchScalarField
|
nutMEWTWallFunctionFvPatchScalarField::nutMEWTWallFunctionFvPatchScalarField
|
||||||
|
@ -291,17 +269,11 @@ nutMEWTWallFunctionFvPatchScalarField::nutMEWTWallFunctionFvPatchScalarField
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(p, iF, dict),
|
nutkWallFunctionFvPatchScalarField(p, iF, dict),
|
||||||
UName_(dict.lookupOrDefault<word>("U", "U")),
|
UName_(dict.lookupOrDefault<word>("U", "U")),
|
||||||
pName_(dict.lookupOrDefault<word>("p", "p")),
|
pName_(dict.lookupOrDefault<word>("p", "p")),
|
||||||
nutName_(dict.lookupOrDefault<word>("nut", "nut")),
|
nutName_(dict.lookupOrDefault<word>("nut", "nut"))
|
||||||
Cmu_(dict.lookupOrDefault<scalar>("Cmu", 0.09)),
|
{}
|
||||||
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
|
|
||||||
E_(dict.lookupOrDefault<scalar>("E", 9.8)),
|
|
||||||
yPlusLam_(calcYPlusLam(kappa_, E_))
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nutMEWTWallFunctionFvPatchScalarField::nutMEWTWallFunctionFvPatchScalarField
|
nutMEWTWallFunctionFvPatchScalarField::nutMEWTWallFunctionFvPatchScalarField
|
||||||
|
@ -312,17 +284,11 @@ nutMEWTWallFunctionFvPatchScalarField::nutMEWTWallFunctionFvPatchScalarField
|
||||||
const fvPatchFieldMapper& mapper
|
const fvPatchFieldMapper& mapper
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(ptf, p, iF, mapper),
|
nutkWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
|
||||||
UName_(ptf.UName_),
|
UName_(ptf.UName_),
|
||||||
pName_(ptf.pName_),
|
pName_(ptf.pName_),
|
||||||
nutName_(ptf.nutName_),
|
nutName_(ptf.nutName_)
|
||||||
Cmu_(ptf.Cmu_),
|
{}
|
||||||
kappa_(ptf.kappa_),
|
|
||||||
E_(ptf.E_),
|
|
||||||
yPlusLam_(ptf.yPlusLam_)
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nutMEWTWallFunctionFvPatchScalarField::nutMEWTWallFunctionFvPatchScalarField
|
nutMEWTWallFunctionFvPatchScalarField::nutMEWTWallFunctionFvPatchScalarField
|
||||||
|
@ -330,17 +296,11 @@ nutMEWTWallFunctionFvPatchScalarField::nutMEWTWallFunctionFvPatchScalarField
|
||||||
const nutMEWTWallFunctionFvPatchScalarField& wfpsf
|
const nutMEWTWallFunctionFvPatchScalarField& wfpsf
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(wfpsf),
|
nutkWallFunctionFvPatchScalarField(wfpsf),
|
||||||
UName_(wfpsf.UName_),
|
UName_(wfpsf.UName_),
|
||||||
pName_(wfpsf.pName_),
|
pName_(wfpsf.pName_),
|
||||||
nutName_(wfpsf.nutName_),
|
nutName_(wfpsf.nutName_)
|
||||||
Cmu_(wfpsf.Cmu_),
|
{}
|
||||||
kappa_(wfpsf.kappa_),
|
|
||||||
E_(wfpsf.E_),
|
|
||||||
yPlusLam_(wfpsf.yPlusLam_)
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nutMEWTWallFunctionFvPatchScalarField::nutMEWTWallFunctionFvPatchScalarField
|
nutMEWTWallFunctionFvPatchScalarField::nutMEWTWallFunctionFvPatchScalarField
|
||||||
|
@ -349,51 +309,11 @@ nutMEWTWallFunctionFvPatchScalarField::nutMEWTWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(wfpsf, iF),
|
nutkWallFunctionFvPatchScalarField(wfpsf, iF),
|
||||||
UName_(wfpsf.UName_),
|
UName_(wfpsf.UName_),
|
||||||
pName_(wfpsf.pName_),
|
pName_(wfpsf.pName_),
|
||||||
nutName_(wfpsf.nutName_),
|
nutName_(wfpsf.nutName_)
|
||||||
Cmu_(wfpsf.Cmu_),
|
{}
|
||||||
kappa_(wfpsf.kappa_),
|
|
||||||
E_(wfpsf.E_),
|
|
||||||
yPlusLam_(wfpsf.yPlusLam_)
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
void nutMEWTWallFunctionFvPatchScalarField::updateCoeffs()
|
|
||||||
{
|
|
||||||
operator==(calcNut());
|
|
||||||
|
|
||||||
fixedValueFvPatchScalarField::updateCoeffs();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> nutMEWTWallFunctionFvPatchScalarField::yPlus() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
|
||||||
|
|
||||||
const tmp<volScalarField> tk = rasModel.k();
|
|
||||||
const volScalarField& k = tk();
|
|
||||||
const scalarField kwc = k.boundaryField()[patchI].patchInternalField();
|
|
||||||
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
return pow(Cmu_, 0.25)*y*sqrt(kwc)/nuw;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void nutMEWTWallFunctionFvPatchScalarField::write(Ostream& os) const
|
|
||||||
{
|
|
||||||
fvPatchField<scalar>::write(os);
|
|
||||||
writeLocalEntries(os);
|
|
||||||
writeEntry("value", os);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
|
@ -39,6 +39,18 @@ Description
|
||||||
year = {2017},
|
year = {2017},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Example of the boundary condition specification:
|
||||||
|
\verbatim
|
||||||
|
<patchName>
|
||||||
|
{
|
||||||
|
type nutCWTWallFunction;
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
See also
|
||||||
|
Foam::nutkWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
nutMEWTWallFunctionFvPatchScalarField.C
|
nutMEWTWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
|
@ -50,7 +62,7 @@ Author
|
||||||
#ifndef nutMEWTWallFunctionFvPatchScalarField_H
|
#ifndef nutMEWTWallFunctionFvPatchScalarField_H
|
||||||
#define nutMEWTWallFunctionFvPatchScalarField_H
|
#define nutMEWTWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
#include "fixedValueFvPatchFields.H"
|
#include "nutkWallFunctionFvPatchScalarField.H"
|
||||||
#include "tolerancesSwitch.H"
|
#include "tolerancesSwitch.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
@ -68,19 +80,13 @@ namespace RASModels
|
||||||
|
|
||||||
class nutMEWTWallFunctionFvPatchScalarField
|
class nutMEWTWallFunctionFvPatchScalarField
|
||||||
:
|
:
|
||||||
public fixedValueFvPatchScalarField
|
public nutkWallFunctionFvPatchScalarField
|
||||||
{
|
{
|
||||||
|
// Private Data Members
|
||||||
|
|
||||||
// Private static data member
|
//- Static tolerance for the A dimensionless parameter
|
||||||
|
|
||||||
//- Tolerance for the A dimensionless parameter
|
|
||||||
static const debug::tolerancesSwitch dimlessAFactorTol_;
|
static const debug::tolerancesSwitch dimlessAFactorTol_;
|
||||||
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
// Protected data
|
|
||||||
|
|
||||||
//- Name of velocity field
|
//- Name of velocity field
|
||||||
word UName_;
|
word UName_;
|
||||||
|
|
||||||
|
@ -90,29 +96,10 @@ protected:
|
||||||
//- Name of eddy viscosity field
|
//- Name of eddy viscosity field
|
||||||
word nutName_;
|
word nutName_;
|
||||||
|
|
||||||
//- Name of omega field
|
|
||||||
word omegaName_;
|
|
||||||
|
|
||||||
//- Cmu coefficient
|
protected:
|
||||||
scalar Cmu_;
|
|
||||||
|
|
||||||
//- Von Karman constant
|
// Protected Member Functions
|
||||||
scalar kappa_;
|
|
||||||
|
|
||||||
//- E coefficient
|
|
||||||
scalar E_;
|
|
||||||
|
|
||||||
//- Y+ at the edge of the laminar sublayer
|
|
||||||
scalar yPlusLam_;
|
|
||||||
|
|
||||||
|
|
||||||
// Protected member functions
|
|
||||||
|
|
||||||
//- Check the type of the patch
|
|
||||||
virtual void checkType();
|
|
||||||
|
|
||||||
//- Calculate the Y+ at the edge of the laminar sublayer
|
|
||||||
virtual scalar calcYPlusLam(const scalar kappa, const scalar E) const;
|
|
||||||
|
|
||||||
//- Calculate the turbulence viscosity
|
//- Calculate the turbulence viscosity
|
||||||
virtual tmp<scalarField> calcNut() const;
|
virtual tmp<scalarField> calcNut() const;
|
||||||
|
@ -144,8 +131,7 @@ public:
|
||||||
const dictionary&
|
const dictionary&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct by mapping given
|
//- Construct by mapping given nutMEWTWallFunctionFvPatchScalarField
|
||||||
// nutMEWTWallFunctionFvPatchScalarField
|
|
||||||
// onto a new patch
|
// onto a new patch
|
||||||
nutMEWTWallFunctionFvPatchScalarField
|
nutMEWTWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
|
@ -188,23 +174,6 @@ public:
|
||||||
new nutMEWTWallFunctionFvPatchScalarField(*this, iF)
|
new nutMEWTWallFunctionFvPatchScalarField(*this, iF)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Member functions
|
|
||||||
|
|
||||||
// Evaluation functions
|
|
||||||
|
|
||||||
//- Calculate and return the yPlus at the boundary
|
|
||||||
virtual tmp<scalarField> yPlus() const;
|
|
||||||
|
|
||||||
//- Update the coefficients associated with the patch field
|
|
||||||
virtual void updateCoeffs();
|
|
||||||
|
|
||||||
|
|
||||||
// I-O
|
|
||||||
|
|
||||||
//- Write
|
|
||||||
virtual void write(Ostream&) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -38,165 +38,6 @@ namespace incompressible
|
||||||
namespace RASModels
|
namespace RASModels
|
||||||
{
|
{
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
|
||||||
|
|
||||||
tmp<scalarField>
|
|
||||||
nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::calcNut() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
|
||||||
const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
|
|
||||||
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
// The flow velocity at the adjacent cell centre
|
|
||||||
const scalarField magUp = mag(Uw.patchInternalField() - Uw);
|
|
||||||
|
|
||||||
tmp<scalarField> tyPlus = calcYPlus(magUp);
|
|
||||||
scalarField& yPlus = tyPlus();
|
|
||||||
|
|
||||||
tmp<scalarField> tnutw(new scalarField(patch().size(), 0.0));
|
|
||||||
scalarField& nutw = tnutw();
|
|
||||||
|
|
||||||
forAll(yPlus, facei)
|
|
||||||
{
|
|
||||||
if (yPlus[facei] > yPlusLam_)
|
|
||||||
{
|
|
||||||
const scalar Re = magUp[facei]*y[facei]/nuw[facei];
|
|
||||||
nutw[facei] = nuw[facei]*(sqr(yPlus[facei])/Re - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return tnutw;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField>
|
|
||||||
nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::calcYPlus
|
|
||||||
(
|
|
||||||
const scalarField& magUp
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
|
||||||
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
tmp<scalarField> tyPlus(new scalarField(patch().size(), 0.0));
|
|
||||||
scalarField& yPlus = tyPlus();
|
|
||||||
|
|
||||||
if (roughnessHeight_ > 0.0)
|
|
||||||
{
|
|
||||||
// Rough Walls
|
|
||||||
const scalar c_1 = 1/(90 - 2.25) + roughnessConstant_;
|
|
||||||
static const scalar c_2 = 2.25/(90 - 2.25);
|
|
||||||
static const scalar c_3 = 2.0*atan(1.0)/log(90/2.25);
|
|
||||||
static const scalar c_4 = c_3*log(2.25);
|
|
||||||
|
|
||||||
//if (KsPlusBasedOnYPlus_)
|
|
||||||
{
|
|
||||||
// If KsPlus is based on YPlus the extra term added to the law
|
|
||||||
// of the wall will depend on yPlus
|
|
||||||
forAll(yPlus, facei)
|
|
||||||
{
|
|
||||||
const scalar magUpara = magUp[facei];
|
|
||||||
const scalar Re = magUpara*y[facei]/nuw[facei];
|
|
||||||
const scalar kappaRe = kappa_*Re;
|
|
||||||
|
|
||||||
scalar yp = yPlusLam_;
|
|
||||||
const scalar ryPlusLam = 1.0/yp;
|
|
||||||
|
|
||||||
int iter = 0;
|
|
||||||
scalar yPlusLast = 0.0;
|
|
||||||
scalar dKsPlusdYPlus = roughnessHeight_/y[facei];
|
|
||||||
|
|
||||||
// Enforce the roughnessHeight to be less than the distance to
|
|
||||||
// the first cell centre
|
|
||||||
if (dKsPlusdYPlus > 1)
|
|
||||||
{
|
|
||||||
dKsPlusdYPlus = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Additional tuning parameter (fudge factor) - nominally = 1
|
|
||||||
dKsPlusdYPlus *= roughnessFudgeFactor_;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
yPlusLast = yp;
|
|
||||||
|
|
||||||
// The non-dimensional roughness height
|
|
||||||
scalar KsPlus = yp*dKsPlusdYPlus;
|
|
||||||
|
|
||||||
// The extra term in the law-of-the-wall
|
|
||||||
scalar G = 0.0;
|
|
||||||
|
|
||||||
scalar yPlusGPrime = 0.0;
|
|
||||||
|
|
||||||
if (KsPlus >= 90)
|
|
||||||
{
|
|
||||||
const scalar t_1 = 1 + roughnessConstant_*KsPlus;
|
|
||||||
G = log(t_1);
|
|
||||||
yPlusGPrime = roughnessConstant_*KsPlus/t_1;
|
|
||||||
}
|
|
||||||
else if (KsPlus > 2.25)
|
|
||||||
{
|
|
||||||
const scalar t_1 = c_1*KsPlus - c_2;
|
|
||||||
const scalar t_2 = c_3*log(KsPlus) - c_4;
|
|
||||||
const scalar sint_2 = sin(t_2);
|
|
||||||
const scalar logt_1 = log(t_1);
|
|
||||||
G = logt_1*sint_2;
|
|
||||||
yPlusGPrime =
|
|
||||||
(c_1*sint_2*KsPlus/t_1) + (c_3*logt_1*cos(t_2));
|
|
||||||
}
|
|
||||||
|
|
||||||
scalar denom = 1.0 + log(E_*yp) - G - yPlusGPrime;
|
|
||||||
if (mag(denom) > VSMALL)
|
|
||||||
{
|
|
||||||
yp = (kappaRe + yp*(1 - yPlusGPrime))/denom;
|
|
||||||
}
|
|
||||||
} while
|
|
||||||
(
|
|
||||||
mag(ryPlusLam*(yp - yPlusLast)) > 0.0001
|
|
||||||
&& ++iter < 10
|
|
||||||
&& yp > VSMALL
|
|
||||||
);
|
|
||||||
|
|
||||||
yPlus[facei] = max(0.0, yp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Smooth Walls
|
|
||||||
forAll(yPlus, facei)
|
|
||||||
{
|
|
||||||
const scalar magUpara = magUp[facei];
|
|
||||||
const scalar Re = magUpara*y[facei]/nuw[facei];
|
|
||||||
const scalar kappaRe = kappa_*Re;
|
|
||||||
|
|
||||||
scalar yp = yPlusLam_;
|
|
||||||
const scalar ryPlusLam = 1.0/yp;
|
|
||||||
|
|
||||||
int iter = 0;
|
|
||||||
scalar yPlusLast = 0.0;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
yPlusLast = yp;
|
|
||||||
yp = (kappaRe + yp)/(1.0 + log(E_*yp));
|
|
||||||
|
|
||||||
} while(mag(ryPlusLam*(yp - yPlusLast)) > 0.0001 && ++iter < 10);
|
|
||||||
|
|
||||||
yPlus[facei] = max(0.0, yp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return tyPlus;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::
|
nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::
|
||||||
|
@ -206,10 +47,7 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(p, iF),
|
nutURoughWallFunctionFvPatchScalarField(p, iF)
|
||||||
roughnessHeight_(pTraits<scalar>::zero),
|
|
||||||
roughnessConstant_(pTraits<scalar>::zero),
|
|
||||||
roughnessFudgeFactor_(pTraits<scalar>::zero)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -222,10 +60,7 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
||||||
const fvPatchFieldMapper& mapper
|
const fvPatchFieldMapper& mapper
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
|
nutURoughWallFunctionFvPatchScalarField(ptf, p, iF, mapper)
|
||||||
roughnessHeight_(ptf.roughnessHeight_),
|
|
||||||
roughnessConstant_(ptf.roughnessConstant_),
|
|
||||||
roughnessFudgeFactor_(ptf.roughnessFudgeFactor_)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -237,10 +72,7 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(p, iF, dict),
|
nutURoughWallFunctionFvPatchScalarField(p, iF, dict)
|
||||||
roughnessHeight_(readScalar(dict.lookup("roughnessHeight"))),
|
|
||||||
roughnessConstant_(readScalar(dict.lookup("roughnessConstant"))),
|
|
||||||
roughnessFudgeFactor_(readScalar(dict.lookup("roughnessFudgeFactor")))
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -250,10 +82,7 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
||||||
const nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField& rwfpsf
|
const nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField& rwfpsf
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(rwfpsf),
|
nutURoughWallFunctionFvPatchScalarField(rwfpsf)
|
||||||
roughnessHeight_(rwfpsf.roughnessHeight_),
|
|
||||||
roughnessConstant_(rwfpsf.roughnessConstant_),
|
|
||||||
roughnessFudgeFactor_(rwfpsf.roughnessFudgeFactor_)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -264,45 +93,10 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(rwfpsf, iF),
|
nutURoughWallFunctionFvPatchScalarField(rwfpsf, iF)
|
||||||
roughnessHeight_(rwfpsf.roughnessHeight_),
|
|
||||||
roughnessConstant_(rwfpsf.roughnessConstant_),
|
|
||||||
roughnessFudgeFactor_(rwfpsf.roughnessFudgeFactor_)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
tmp<scalarField>
|
|
||||||
nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::yPlus() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
|
|
||||||
const scalarField magUp = mag(Uw.patchInternalField() - Uw);
|
|
||||||
|
|
||||||
return calcYPlus(magUp);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::write
|
|
||||||
(
|
|
||||||
Ostream& os
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
fvPatchField<scalar>::write(os);
|
|
||||||
writeLocalEntries(os);
|
|
||||||
os.writeKeyword("roughnessHeight")
|
|
||||||
<< roughnessHeight_ << token::END_STATEMENT << nl;
|
|
||||||
os.writeKeyword("roughnessConstant")
|
|
||||||
<< roughnessConstant_ << token::END_STATEMENT << nl;
|
|
||||||
os.writeKeyword("roughnessFudgeFactor")
|
|
||||||
<< roughnessFudgeFactor_ << token::END_STATEMENT << nl;
|
|
||||||
writeEntry("value", os);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makePatchTypeField
|
makePatchTypeField
|
||||||
|
|
|
@ -26,7 +26,9 @@ Class
|
||||||
nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Wall function boundary condition for rough walls
|
This boundary condition is the same as nutURoughWallFunction. We will simply
|
||||||
|
derive from nutURoughWallFunctionFvPatchScalarField to enable backward
|
||||||
|
compatibility.
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
nutSpalartAllmarasStandardWallFunctionFvPatchScalarField.C
|
nutSpalartAllmarasStandardWallFunctionFvPatchScalarField.C
|
||||||
|
@ -36,7 +38,7 @@ SourceFiles
|
||||||
#ifndef nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H
|
#ifndef nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H
|
||||||
#define nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H
|
#define nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
#include "nutWallFunctionFvPatchScalarField.H"
|
#include "nutURoughWallFunctionFvPatchScalarField.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
@ -53,31 +55,8 @@ Class nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField Declaration
|
||||||
|
|
||||||
class nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
class nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
|
||||||
:
|
:
|
||||||
public nutWallFunctionFvPatchScalarField
|
public nutURoughWallFunctionFvPatchScalarField
|
||||||
{
|
{
|
||||||
// Private data
|
|
||||||
|
|
||||||
// Roughness model parameters
|
|
||||||
|
|
||||||
//- Height
|
|
||||||
scalar roughnessHeight_;
|
|
||||||
|
|
||||||
//- Constant
|
|
||||||
scalar roughnessConstant_;
|
|
||||||
|
|
||||||
//- Scale factor
|
|
||||||
scalar roughnessFudgeFactor_;
|
|
||||||
|
|
||||||
|
|
||||||
// Protected member functions
|
|
||||||
|
|
||||||
//- Calculate yPLus
|
|
||||||
virtual tmp<scalarField> calcYPlus(const scalarField& magUp) const;
|
|
||||||
|
|
||||||
//- Calculate the turbulence viscosity
|
|
||||||
virtual tmp<scalarField> calcNut() const;
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
|
@ -152,63 +131,6 @@ public:
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Member functions
|
|
||||||
|
|
||||||
// Access
|
|
||||||
|
|
||||||
//- Return the roughness height
|
|
||||||
const scalar& roughnessHeight() const
|
|
||||||
{
|
|
||||||
return roughnessHeight_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return reference to the roughness height to allow adjustment
|
|
||||||
scalar& roughnessHeight()
|
|
||||||
{
|
|
||||||
return roughnessHeight_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//- Return the roughness constant scale
|
|
||||||
const scalar& roughnessConstant() const
|
|
||||||
{
|
|
||||||
return roughnessConstant_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return reference to the roughness constant to allow adjustment
|
|
||||||
scalar& roughnessConstant()
|
|
||||||
{
|
|
||||||
return roughnessConstant_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return the roughness scale factor
|
|
||||||
const scalar& roughnessFudgeFactor() const
|
|
||||||
{
|
|
||||||
return roughnessFudgeFactor_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return reference to the roughness scale factor to allow
|
|
||||||
// adjustment
|
|
||||||
scalar& roughnessFudgeFactor()
|
|
||||||
{
|
|
||||||
return roughnessFudgeFactor_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// I-O
|
|
||||||
|
|
||||||
// Evaluation functions
|
|
||||||
|
|
||||||
//- Calculate and return the yPlus at the boundary
|
|
||||||
virtual tmp<scalarField> yPlus() const;
|
|
||||||
|
|
||||||
|
|
||||||
// I-O
|
|
||||||
|
|
||||||
//- Write
|
|
||||||
virtual void write(Ostream& os) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -38,76 +38,6 @@ namespace incompressible
|
||||||
namespace RASModels
|
namespace RASModels
|
||||||
{
|
{
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
|
||||||
|
|
||||||
tmp<scalarField>
|
|
||||||
nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::calcNut() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
|
|
||||||
const scalarField magUp = mag(Uw.patchInternalField() - Uw);
|
|
||||||
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
tmp<scalarField> tyPlus = calcYPlus(magUp);
|
|
||||||
scalarField& yPlus = tyPlus();
|
|
||||||
|
|
||||||
tmp<scalarField> tnutw(new scalarField(patch().size(), 0.0));
|
|
||||||
scalarField& nutw = tnutw();
|
|
||||||
|
|
||||||
forAll(yPlus, facei)
|
|
||||||
{
|
|
||||||
if (yPlus[facei] > yPlusLam_)
|
|
||||||
{
|
|
||||||
nutw[facei] =
|
|
||||||
nuw[facei]*(yPlus[facei]*kappa_/log(E_*yPlus[facei]) - 1.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return tnutw;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField>
|
|
||||||
nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::calcYPlus
|
|
||||||
(
|
|
||||||
const scalarField& magUp
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
|
||||||
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
tmp<scalarField> tyPlus(new scalarField(patch().size(), 0.0));
|
|
||||||
scalarField& yPlus = tyPlus();
|
|
||||||
|
|
||||||
forAll(yPlus, facei)
|
|
||||||
{
|
|
||||||
scalar kappaRe = kappa_*magUp[facei]*y[facei]/nuw[facei];
|
|
||||||
|
|
||||||
scalar yp = yPlusLam_;
|
|
||||||
scalar ryPlusLam = 1.0/yp;
|
|
||||||
|
|
||||||
int iter = 0;
|
|
||||||
scalar yPlusLast = 0.0;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
yPlusLast = yp;
|
|
||||||
yp = (kappaRe + yp)/(1.0 + log(E_*yp));
|
|
||||||
|
|
||||||
} while(mag(ryPlusLam*(yp - yPlusLast)) > 0.01 && ++iter < 10 );
|
|
||||||
|
|
||||||
yPlus[facei] = max(0.0, yp);
|
|
||||||
}
|
|
||||||
|
|
||||||
return tyPlus;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::
|
nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::
|
||||||
|
@ -117,7 +47,7 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(p, iF)
|
nutUWallFunctionFvPatchScalarField(p, iF)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -130,7 +60,7 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
||||||
const fvPatchFieldMapper& mapper
|
const fvPatchFieldMapper& mapper
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(ptf, p, iF, mapper)
|
nutUWallFunctionFvPatchScalarField(ptf, p, iF, mapper)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -142,7 +72,7 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(p, iF, dict)
|
nutUWallFunctionFvPatchScalarField(p, iF, dict)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -152,7 +82,7 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
||||||
const nutSpalartAllmarasStandardWallFunctionFvPatchScalarField& sawfpsf
|
const nutSpalartAllmarasStandardWallFunctionFvPatchScalarField& sawfpsf
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(sawfpsf)
|
nutUWallFunctionFvPatchScalarField(sawfpsf)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
@ -163,35 +93,10 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(sawfpsf, iF)
|
nutUWallFunctionFvPatchScalarField(sawfpsf, iF)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
tmp<scalarField>
|
|
||||||
nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::yPlus() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
|
|
||||||
const scalarField magUp = mag(Uw.patchInternalField() - Uw);
|
|
||||||
|
|
||||||
return calcYPlus(magUp);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::write
|
|
||||||
(
|
|
||||||
Ostream& os
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
fvPatchField<scalar>::write(os);
|
|
||||||
writeLocalEntries(os);
|
|
||||||
writeEntry("value", os);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makePatchTypeField
|
makePatchTypeField
|
||||||
|
|
|
@ -26,7 +26,9 @@ Class
|
||||||
nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Wall function boundary condition for walls
|
This boundary condition is the same as nutUWallFunction. We will simply
|
||||||
|
derive from nutUWallFunctionFvPatchScalarField to enable backward
|
||||||
|
compatibility.
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
nutSpalartAllmarasStandardWallFunctionFvPatchScalarField.C
|
nutSpalartAllmarasStandardWallFunctionFvPatchScalarField.C
|
||||||
|
@ -36,7 +38,7 @@ SourceFiles
|
||||||
#ifndef nutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H
|
#ifndef nutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H
|
||||||
#define nutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H
|
#define nutSpalartAllmarasStandardWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
#include "nutWallFunctionFvPatchScalarField.H"
|
#include "nutUWallFunctionFvPatchScalarField.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
@ -53,19 +55,8 @@ namespace RASModels
|
||||||
|
|
||||||
class nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
class nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
|
||||||
:
|
:
|
||||||
public nutWallFunctionFvPatchScalarField
|
public nutUWallFunctionFvPatchScalarField
|
||||||
{
|
{
|
||||||
protected:
|
|
||||||
|
|
||||||
// Protected member functions
|
|
||||||
|
|
||||||
//- Calculate yPLus
|
|
||||||
virtual tmp<scalarField> calcYPlus(const scalarField& magUp) const;
|
|
||||||
|
|
||||||
//- Calculate the turbulence viscosity
|
|
||||||
virtual tmp<scalarField> calcNut() const;
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
|
@ -140,20 +131,6 @@ public:
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Member functions
|
|
||||||
|
|
||||||
// Evaluation functions
|
|
||||||
|
|
||||||
//- Calculate and return the yPlus at the boundary
|
|
||||||
virtual tmp<scalarField> yPlus() const;
|
|
||||||
|
|
||||||
|
|
||||||
// I-O
|
|
||||||
|
|
||||||
//- Write
|
|
||||||
virtual void write(Ostream& os) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -45,14 +45,16 @@ nutSpalartAllmarasWallFunctionFvPatchScalarField::calcNut() const
|
||||||
{
|
{
|
||||||
const label patchI = patch().index();
|
const label patchI = patch().index();
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
const turbulenceModel& turbModel =
|
||||||
const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchI];
|
||||||
const scalarField magGradU = mag(Uw.snGrad());
|
const scalarField magGradU = mag(Uw.snGrad());
|
||||||
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
|
const scalarField& nuw = turbModel.nu().boundaryField()[patchI];
|
||||||
|
|
||||||
return max
|
return max
|
||||||
(
|
(
|
||||||
scalar(0),
|
0.0,
|
||||||
sqr(calcUTau(magGradU))/(magGradU + ROOTVSMALL) - nuw
|
sqr(calcUTau(magGradU))/(magGradU + ROOTVSMALL) - nuw
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -63,51 +65,56 @@ tmp<scalarField> nutSpalartAllmarasWallFunctionFvPatchScalarField::calcUTau
|
||||||
const scalarField& magGradU
|
const scalarField& magGradU
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
const label patchI = patch().index();
|
||||||
const scalarField& y = rasModel.y()[patch().index()];
|
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
|
||||||
const fvPatchVectorField& Uw =
|
const fvPatchVectorField& Uw =
|
||||||
rasModel.U().boundaryField()[patch().index()];
|
turbModel.U().boundaryField()[patchI];
|
||||||
const scalarField magUp = mag(Uw.patchInternalField() - Uw);
|
const scalarField magUp = mag(Uw.patchInternalField() - Uw);
|
||||||
|
|
||||||
const scalarField& nuw = rasModel.nu().boundaryField()[patch().index()];
|
const scalarField& nuw = turbModel.nu().boundaryField()[patchI];
|
||||||
const scalarField& nutw = *this;
|
const scalarField& nutw = *this;
|
||||||
|
|
||||||
tmp<scalarField> tuTau(new scalarField(patch().size(), 0.0));
|
tmp<scalarField> tuTau(new scalarField(patch().size(), 0.0));
|
||||||
scalarField& uTau = tuTau();
|
scalarField& uTau = tuTau();
|
||||||
|
|
||||||
forAll(uTau, facei)
|
forAll(uTau, faceI)
|
||||||
{
|
{
|
||||||
scalar magUpara = magUp[facei];
|
const scalar& magUpara = magUp[faceI];
|
||||||
|
|
||||||
scalar ut = sqrt((nutw[facei] + nuw[facei])*magGradU[facei]);
|
scalar ut = sqrt((nutw[faceI] + nuw[faceI])*magGradU[faceI]);
|
||||||
|
|
||||||
if (ut > VSMALL)
|
if (ut > VSMALL)
|
||||||
{
|
{
|
||||||
int iter = 0;
|
label iter = 0;
|
||||||
scalar err = GREAT;
|
scalar err = GREAT;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
scalar kUu = min(kappa_*magUpara/ut, 50);
|
const scalar kUu = min(kappa_*magUpara/ut, 50);
|
||||||
scalar fkUu = exp(kUu) - 1 - kUu*(1 + 0.5*kUu);
|
const scalar fkUu = exp(kUu) - 1 - kUu*(1 + 0.5*kUu);
|
||||||
|
|
||||||
scalar f =
|
const scalar f =
|
||||||
- ut*y[facei]/nuw[facei]
|
- ut*y[faceI]/nuw[faceI]
|
||||||
+ magUpara/ut
|
+ magUpara/ut
|
||||||
+ 1/E_*(fkUu - 1.0/6.0*kUu*sqr(kUu));
|
+ 1/E_*(fkUu - 1.0/6.0*kUu*sqr(kUu));
|
||||||
|
|
||||||
scalar df =
|
const scalar df =
|
||||||
y[facei]/nuw[facei]
|
y[faceI]/nuw[faceI]
|
||||||
+ magUpara/sqr(ut)
|
+ magUpara/sqr(ut)
|
||||||
+ 1/E_*kUu*fkUu/ut;
|
+ 1/E_*kUu*fkUu/ut;
|
||||||
|
|
||||||
scalar uTauNew = ut + f/df;
|
const scalar uTauNew = ut + f/df;
|
||||||
err = mag((ut - uTauNew)/ut);
|
err = mag((ut - uTauNew)/ut);
|
||||||
ut = uTauNew;
|
ut = uTauNew;
|
||||||
|
|
||||||
} while (ut > VSMALL && err > 0.01 && ++iter < 10);
|
} while (ut > VSMALL && err > 0.01 && ++iter < 10);
|
||||||
uTau[facei] = max(0.0, ut);
|
|
||||||
|
uTau[faceI] = max(0.0, ut);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,6 +135,18 @@ nutSpalartAllmarasWallFunctionFvPatchScalarField
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
nutSpalartAllmarasWallFunctionFvPatchScalarField::
|
||||||
|
nutSpalartAllmarasWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
nutWallFunctionFvPatchScalarField(p, iF, dict)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
nutSpalartAllmarasWallFunctionFvPatchScalarField::
|
nutSpalartAllmarasWallFunctionFvPatchScalarField::
|
||||||
nutSpalartAllmarasWallFunctionFvPatchScalarField
|
nutSpalartAllmarasWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
|
@ -141,18 +160,6 @@ nutSpalartAllmarasWallFunctionFvPatchScalarField
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
nutSpalartAllmarasWallFunctionFvPatchScalarField::
|
|
||||||
nutSpalartAllmarasWallFunctionFvPatchScalarField
|
|
||||||
(
|
|
||||||
const fvPatch& p,
|
|
||||||
const DimensionedField<scalar, volMesh>& iF,
|
|
||||||
const dictionary& dict
|
|
||||||
)
|
|
||||||
:
|
|
||||||
nutWallFunctionFvPatchScalarField(p, iF, dict)
|
|
||||||
{}
|
|
||||||
|
|
||||||
|
|
||||||
nutSpalartAllmarasWallFunctionFvPatchScalarField::
|
nutSpalartAllmarasWallFunctionFvPatchScalarField::
|
||||||
nutSpalartAllmarasWallFunctionFvPatchScalarField
|
nutSpalartAllmarasWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
|
@ -181,26 +188,17 @@ nutSpalartAllmarasWallFunctionFvPatchScalarField::yPlus() const
|
||||||
{
|
{
|
||||||
const label patchI = patch().index();
|
const label patchI = patch().index();
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
const turbulenceModel& turbModel =
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
const fvPatchVectorField& Uw = rasModel.U().boundaryField()[patchI];
|
|
||||||
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchI];
|
||||||
|
const scalarField& nuw = turbModel.nu().boundaryField()[patchI];
|
||||||
|
|
||||||
return y*calcUTau(mag(Uw.snGrad()))/nuw;
|
return y*calcUTau(mag(Uw.snGrad()))/nuw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void nutSpalartAllmarasWallFunctionFvPatchScalarField::write
|
|
||||||
(
|
|
||||||
Ostream& os
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
fvPatchField<scalar>::write(os);
|
|
||||||
writeLocalEntries(os);
|
|
||||||
writeEntry("value", os);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makePatchTypeField
|
makePatchTypeField
|
||||||
|
|
|
@ -141,12 +141,6 @@ public:
|
||||||
|
|
||||||
//- Calculate and return the yPlus at the boundary
|
//- Calculate and return the yPlus at the boundary
|
||||||
virtual tmp<scalarField> yPlus() const;
|
virtual tmp<scalarField> yPlus() const;
|
||||||
|
|
||||||
|
|
||||||
// I-O
|
|
||||||
|
|
||||||
//- Write
|
|
||||||
virtual void write(Ostream& os) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,308 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "nutURoughWallFunctionFvPatchScalarField.H"
|
||||||
|
#include "RASModel.H"
|
||||||
|
#include "fvPatchFieldMapper.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace incompressible
|
||||||
|
{
|
||||||
|
namespace RASModels
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
|
tmp<scalarField> nutURoughWallFunctionFvPatchScalarField::calcNut() const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchI];
|
||||||
|
const scalarField& nuw = turbModel.nu().boundaryField()[patchI];
|
||||||
|
|
||||||
|
// The flow velocity at the adjacent cell centre
|
||||||
|
const scalarField magUp(mag(Uw.patchInternalField() - Uw));
|
||||||
|
|
||||||
|
tmp<scalarField> tyPlus = calcYPlus(magUp);
|
||||||
|
const scalarField& yPlus = tyPlus();
|
||||||
|
|
||||||
|
tmp<scalarField> tnutw(new scalarField(patch().size(), 0.0));
|
||||||
|
scalarField& nutw = tnutw();
|
||||||
|
|
||||||
|
forAll(yPlus, faceI)
|
||||||
|
{
|
||||||
|
if (yPlus[faceI] > yPlusLam_)
|
||||||
|
{
|
||||||
|
const scalar Re = magUp[faceI]*y[faceI]/nuw[faceI] + ROOTVSMALL;
|
||||||
|
nutw[faceI] = nuw[faceI]*(sqr(yPlus[faceI])/Re - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tnutw;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
tmp<scalarField> nutURoughWallFunctionFvPatchScalarField::calcYPlus
|
||||||
|
(
|
||||||
|
const scalarField& magUp
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
const scalarField& nuw = turbModel.nu().boundaryField()[patchI];
|
||||||
|
|
||||||
|
tmp<scalarField> tyPlus(new scalarField(patch().size(), 0.0));
|
||||||
|
scalarField& yPlus = tyPlus();
|
||||||
|
|
||||||
|
if (roughnessHeight_ > 0.0)
|
||||||
|
{
|
||||||
|
// Rough Walls
|
||||||
|
const scalar c_1 = 1/(90 - 2.25) + roughnessConstant_;
|
||||||
|
static const scalar c_2 = 2.25/(90 - 2.25);
|
||||||
|
static const scalar c_3 = 2.0*atan(1.0)/log(90/2.25);
|
||||||
|
static const scalar c_4 = c_3*log(2.25);
|
||||||
|
|
||||||
|
//if (KsPlusBasedOnYPlus_)
|
||||||
|
{
|
||||||
|
// If KsPlus is based on YPlus the extra term added to the law
|
||||||
|
// of the wall will depend on yPlus
|
||||||
|
forAll(yPlus, faceI)
|
||||||
|
{
|
||||||
|
const scalar magUpara = magUp[faceI];
|
||||||
|
const scalar Re = magUpara*y[faceI]/nuw[faceI];
|
||||||
|
const scalar kappaRe = kappa_*Re;
|
||||||
|
|
||||||
|
scalar yp = yPlusLam_;
|
||||||
|
const scalar ryPlusLam = 1.0/yp;
|
||||||
|
|
||||||
|
label iter = 0;
|
||||||
|
scalar yPlusLast = 0.0;
|
||||||
|
scalar dKsPlusdYPlus = roughnessHeight_/y[faceI];
|
||||||
|
|
||||||
|
// Additional tuning parameter - nominally = 1
|
||||||
|
dKsPlusdYPlus *= roughnessFactor_;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
yPlusLast = yp;
|
||||||
|
|
||||||
|
// The non-dimensional roughness height
|
||||||
|
scalar KsPlus = yp*dKsPlusdYPlus;
|
||||||
|
|
||||||
|
// The extra term in the law-of-the-wall
|
||||||
|
scalar G = 0.0;
|
||||||
|
|
||||||
|
scalar yPlusGPrime = 0.0;
|
||||||
|
|
||||||
|
if (KsPlus >= 90)
|
||||||
|
{
|
||||||
|
const scalar t_1 = 1 + roughnessConstant_*KsPlus;
|
||||||
|
G = log(t_1);
|
||||||
|
yPlusGPrime = roughnessConstant_*KsPlus/t_1;
|
||||||
|
}
|
||||||
|
else if (KsPlus > 2.25)
|
||||||
|
{
|
||||||
|
const scalar t_1 = c_1*KsPlus - c_2;
|
||||||
|
const scalar t_2 = c_3*log(KsPlus) - c_4;
|
||||||
|
const scalar sint_2 = sin(t_2);
|
||||||
|
const scalar logt_1 = log(t_1);
|
||||||
|
G = logt_1*sint_2;
|
||||||
|
yPlusGPrime =
|
||||||
|
(c_1*sint_2*KsPlus/t_1) + (c_3*logt_1*cos(t_2));
|
||||||
|
}
|
||||||
|
|
||||||
|
scalar denom = 1.0 + log(E_*yp) - G - yPlusGPrime;
|
||||||
|
if (mag(denom) > VSMALL)
|
||||||
|
{
|
||||||
|
yp = (kappaRe + yp*(1 - yPlusGPrime))/denom;
|
||||||
|
}
|
||||||
|
} while
|
||||||
|
(
|
||||||
|
mag(ryPlusLam*(yp - yPlusLast)) > 0.0001
|
||||||
|
&& ++iter < 10
|
||||||
|
&& yp > VSMALL
|
||||||
|
);
|
||||||
|
|
||||||
|
yPlus[faceI] = max(0.0, yp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Smooth Walls
|
||||||
|
forAll(yPlus, faceI)
|
||||||
|
{
|
||||||
|
const scalar magUpara = magUp[faceI];
|
||||||
|
const scalar Re = magUpara*y[faceI]/nuw[faceI];
|
||||||
|
const scalar kappaRe = kappa_*Re;
|
||||||
|
|
||||||
|
scalar yp = yPlusLam_;
|
||||||
|
const scalar ryPlusLam = 1.0/yp;
|
||||||
|
|
||||||
|
label iter = 0;
|
||||||
|
scalar yPlusLast = 0.0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
yPlusLast = yp;
|
||||||
|
yp = (kappaRe + yp)/(1.0 + log(E_*yp));
|
||||||
|
|
||||||
|
} while (mag(ryPlusLam*(yp - yPlusLast)) > 0.0001 && ++iter < 10);
|
||||||
|
|
||||||
|
yPlus[faceI] = max(0.0, yp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tyPlus;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
nutURoughWallFunctionFvPatchScalarField::nutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
nutWallFunctionFvPatchScalarField(p, iF),
|
||||||
|
roughnessHeight_(0.0),
|
||||||
|
roughnessConstant_(0.0),
|
||||||
|
roughnessFactor_(0.0)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
nutURoughWallFunctionFvPatchScalarField::nutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const nutURoughWallFunctionFvPatchScalarField& ptf,
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const fvPatchFieldMapper& mapper
|
||||||
|
)
|
||||||
|
:
|
||||||
|
nutWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
|
||||||
|
roughnessHeight_(ptf.roughnessHeight_),
|
||||||
|
roughnessConstant_(ptf.roughnessConstant_),
|
||||||
|
roughnessFactor_(ptf.roughnessFactor_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
nutURoughWallFunctionFvPatchScalarField::nutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
nutWallFunctionFvPatchScalarField(p, iF, dict),
|
||||||
|
roughnessHeight_(readScalar(dict.lookup("roughnessHeight"))),
|
||||||
|
roughnessConstant_(readScalar(dict.lookup("roughnessConstant"))),
|
||||||
|
roughnessFactor_(readScalar(dict.lookup("roughnessFactor")))
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
nutURoughWallFunctionFvPatchScalarField::nutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const nutURoughWallFunctionFvPatchScalarField& rwfpsf
|
||||||
|
)
|
||||||
|
:
|
||||||
|
nutWallFunctionFvPatchScalarField(rwfpsf),
|
||||||
|
roughnessHeight_(rwfpsf.roughnessHeight_),
|
||||||
|
roughnessConstant_(rwfpsf.roughnessConstant_),
|
||||||
|
roughnessFactor_(rwfpsf.roughnessFactor_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
nutURoughWallFunctionFvPatchScalarField::nutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const nutURoughWallFunctionFvPatchScalarField& rwfpsf,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
nutWallFunctionFvPatchScalarField(rwfpsf, iF),
|
||||||
|
roughnessHeight_(rwfpsf.roughnessHeight_),
|
||||||
|
roughnessConstant_(rwfpsf.roughnessConstant_),
|
||||||
|
roughnessFactor_(rwfpsf.roughnessFactor_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
tmp<scalarField> nutURoughWallFunctionFvPatchScalarField::yPlus() const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchI];
|
||||||
|
tmp<scalarField> magUp = mag(Uw.patchInternalField() - Uw);
|
||||||
|
|
||||||
|
return calcYPlus(magUp());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void nutURoughWallFunctionFvPatchScalarField::write(Ostream& os) const
|
||||||
|
{
|
||||||
|
fvPatchField<scalar>::write(os);
|
||||||
|
writeLocalEntries(os);
|
||||||
|
os.writeKeyword("roughnessHeight")
|
||||||
|
<< roughnessHeight_ << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("roughnessConstant")
|
||||||
|
<< roughnessConstant_ << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("roughnessFactor")
|
||||||
|
<< roughnessFactor_ << token::END_STATEMENT << nl;
|
||||||
|
writeEntry("value", os);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
makePatchTypeField
|
||||||
|
(
|
||||||
|
fvPatchScalarField,
|
||||||
|
nutURoughWallFunctionFvPatchScalarField
|
||||||
|
);
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace RASModels
|
||||||
|
} // End namespace incompressible
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,238 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::incompressible::RASModels::nutURoughWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
|
Description
|
||||||
|
This boundary condition provides a turbulent kinematic viscosity condition
|
||||||
|
when using wall functions for rough walls, based on velocity.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
\table
|
||||||
|
Property | Description | Required | Default value
|
||||||
|
roughnessHeight | roughness height | yes |
|
||||||
|
roughnessConstant | roughness constanr | yes |
|
||||||
|
roughnessFactor | scaling factor | yes |
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
Example of the boundary condition specification:
|
||||||
|
\verbatim
|
||||||
|
<patchName>
|
||||||
|
{
|
||||||
|
type nutURoughWallFunction;
|
||||||
|
roughnessHeight 1e-5;
|
||||||
|
roughnessConstant 0.5;
|
||||||
|
roughnessFactor 1;
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
See also
|
||||||
|
Foam::nutWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
nutURoughWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef nutURoughWallFunctionFvPatchScalarField_H
|
||||||
|
#define nutURoughWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
|
#include "nutWallFunctionFvPatchScalarField.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace incompressible
|
||||||
|
{
|
||||||
|
namespace RASModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class nutURoughWallFunctionFvPatchScalarField Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class nutURoughWallFunctionFvPatchScalarField
|
||||||
|
:
|
||||||
|
public nutWallFunctionFvPatchScalarField
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
// Roughness model parameters
|
||||||
|
|
||||||
|
//- Height
|
||||||
|
scalar roughnessHeight_;
|
||||||
|
|
||||||
|
//- Constant
|
||||||
|
scalar roughnessConstant_;
|
||||||
|
|
||||||
|
//- Scale factor
|
||||||
|
scalar roughnessFactor_;
|
||||||
|
|
||||||
|
|
||||||
|
// Protected Member Functions
|
||||||
|
|
||||||
|
//- Calculate yPLus
|
||||||
|
virtual tmp<scalarField> calcYPlus(const scalarField& magUp) const;
|
||||||
|
|
||||||
|
//- Calculate the turbulence viscosity
|
||||||
|
virtual tmp<scalarField> calcNut() const;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("nutURoughWallFunction");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from patch and internal field
|
||||||
|
nutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct from patch, internal field and dictionary
|
||||||
|
nutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&,
|
||||||
|
const dictionary&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct by mapping given
|
||||||
|
// nutURoughWallFunctionFvPatchScalarField
|
||||||
|
// onto a new patch
|
||||||
|
nutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const nutURoughWallFunctionFvPatchScalarField&,
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&,
|
||||||
|
const fvPatchFieldMapper&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct as copy
|
||||||
|
nutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const nutURoughWallFunctionFvPatchScalarField&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual tmp<fvPatchScalarField> clone() const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchScalarField>
|
||||||
|
(
|
||||||
|
new nutURoughWallFunctionFvPatchScalarField(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Construct as copy setting internal field reference
|
||||||
|
nutURoughWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const nutURoughWallFunctionFvPatchScalarField&,
|
||||||
|
const DimensionedField<scalar, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct and return a clone setting internal field reference
|
||||||
|
virtual tmp<fvPatchScalarField> clone
|
||||||
|
(
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchScalarField>
|
||||||
|
(
|
||||||
|
new nutURoughWallFunctionFvPatchScalarField(*this, iF)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
// Access
|
||||||
|
|
||||||
|
//- Return the roughness height
|
||||||
|
scalar roughnessHeight() const
|
||||||
|
{
|
||||||
|
return roughnessHeight_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return reference to the roughness height to allow adjustment
|
||||||
|
scalar& roughnessHeight()
|
||||||
|
{
|
||||||
|
return roughnessHeight_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//- Return the roughness constant scale
|
||||||
|
scalar roughnessConstant() const
|
||||||
|
{
|
||||||
|
return roughnessConstant_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return reference to the roughness constant to allow adjustment
|
||||||
|
scalar& roughnessConstant()
|
||||||
|
{
|
||||||
|
return roughnessConstant_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return the roughness scale factor
|
||||||
|
scalar roughnessFactor() const
|
||||||
|
{
|
||||||
|
return roughnessFactor_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return reference to the roughness scale factor to allow
|
||||||
|
// adjustment
|
||||||
|
scalar& roughnessFactor()
|
||||||
|
{
|
||||||
|
return roughnessFactor_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Evaluation functions
|
||||||
|
|
||||||
|
//- Calculate and return the yPlus at the boundary
|
||||||
|
virtual tmp<scalarField> yPlus() const;
|
||||||
|
|
||||||
|
|
||||||
|
// I-O
|
||||||
|
|
||||||
|
//- Write
|
||||||
|
virtual void write(Ostream& os) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace RASModels
|
||||||
|
} // End namespace incompressible
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,192 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "nutUWallFunctionFvPatchScalarField.H"
|
||||||
|
#include "RASModel.H"
|
||||||
|
#include "fvPatchFieldMapper.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace incompressible
|
||||||
|
{
|
||||||
|
namespace RASModels
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
|
tmp<scalarField> nutUWallFunctionFvPatchScalarField::calcYPlus
|
||||||
|
(
|
||||||
|
const scalarField& magUp
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
const scalarField& nuw = turbModel.nu().boundaryField()[patchI];
|
||||||
|
|
||||||
|
tmp<scalarField> tyPlus(new scalarField(patch().size(), 0.0));
|
||||||
|
scalarField& yPlus = tyPlus();
|
||||||
|
|
||||||
|
forAll(yPlus, faceI)
|
||||||
|
{
|
||||||
|
const scalar kappaRe = kappa_*magUp[faceI]*y[faceI]/nuw[faceI];
|
||||||
|
|
||||||
|
scalar yp = yPlusLam_;
|
||||||
|
const scalar ryPlusLam = 1.0/yp;
|
||||||
|
|
||||||
|
label iter = 0;
|
||||||
|
scalar yPlusLast = 0.0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
yPlusLast = yp;
|
||||||
|
yp = (kappaRe + yp)/(1.0 + log(E_*yp));
|
||||||
|
|
||||||
|
} while (mag(ryPlusLam*(yp - yPlusLast)) > 0.01 && ++iter < 10);
|
||||||
|
|
||||||
|
yPlus[faceI] = max(0.0, yp);
|
||||||
|
}
|
||||||
|
|
||||||
|
return tyPlus;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
tmp<scalarField> nutUWallFunctionFvPatchScalarField::calcNut() const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchI];
|
||||||
|
const scalarField magUp(mag(Uw.patchInternalField() - Uw));
|
||||||
|
const scalarField& nuw = turbModel.nu().boundaryField()[patchI];
|
||||||
|
|
||||||
|
tmp<scalarField> tyPlus = calcYPlus(magUp);
|
||||||
|
scalarField& yPlus = tyPlus();
|
||||||
|
|
||||||
|
tmp<scalarField> tnutw(new scalarField(patch().size(), 0.0));
|
||||||
|
scalarField& nutw = tnutw();
|
||||||
|
|
||||||
|
forAll(yPlus, faceI)
|
||||||
|
{
|
||||||
|
if (yPlus[faceI] > yPlusLam_)
|
||||||
|
{
|
||||||
|
nutw[faceI] =
|
||||||
|
nuw[faceI]*(yPlus[faceI]*kappa_/log(E_*yPlus[faceI]) - 1.0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tnutw;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
nutUWallFunctionFvPatchScalarField::nutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
nutWallFunctionFvPatchScalarField(p, iF)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
nutUWallFunctionFvPatchScalarField::nutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
nutWallFunctionFvPatchScalarField(p, iF, dict)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
nutUWallFunctionFvPatchScalarField::nutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const nutUWallFunctionFvPatchScalarField& ptf,
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const fvPatchFieldMapper& mapper
|
||||||
|
)
|
||||||
|
:
|
||||||
|
nutWallFunctionFvPatchScalarField(ptf, p, iF, mapper)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
nutUWallFunctionFvPatchScalarField::nutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const nutUWallFunctionFvPatchScalarField& wfpsf
|
||||||
|
)
|
||||||
|
:
|
||||||
|
nutWallFunctionFvPatchScalarField(wfpsf)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
nutUWallFunctionFvPatchScalarField::nutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const nutUWallFunctionFvPatchScalarField& wfpsf,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
nutWallFunctionFvPatchScalarField(wfpsf, iF)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
tmp<scalarField> nutUWallFunctionFvPatchScalarField::yPlus() const
|
||||||
|
{
|
||||||
|
const label patchI = patch().index();
|
||||||
|
const turbulenceModel& turbModel =
|
||||||
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
|
|
||||||
|
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchI];
|
||||||
|
const scalarField magUp(mag(Uw.patchInternalField() - Uw));
|
||||||
|
|
||||||
|
return calcYPlus(magUp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
makePatchTypeField(fvPatchScalarField, nutUWallFunctionFvPatchScalarField);
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace RASModels
|
||||||
|
} // End namespace incompressible
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,168 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::incompressible::RASModels::nutkWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
|
Description
|
||||||
|
Boundary condition for turbulent (kinematic) viscosity when using wall
|
||||||
|
functions, based on velocity.
|
||||||
|
- replicates OpenFOAM v1.5 (and earlier) behaviour
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Example of the boundary condition specification:
|
||||||
|
\verbatim
|
||||||
|
<patchName>
|
||||||
|
{
|
||||||
|
type nutUWallFunction;
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
See also
|
||||||
|
Foam::nutWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
nutUWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef nutUWallFunctionFvPatchScalarField_H
|
||||||
|
#define nutUWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
|
#include "nutWallFunctionFvPatchScalarField.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace incompressible
|
||||||
|
{
|
||||||
|
namespace RASModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class nutUWallFunctionFvPatchScalarField Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class nutUWallFunctionFvPatchScalarField
|
||||||
|
:
|
||||||
|
public nutWallFunctionFvPatchScalarField
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// Protected Member Functions
|
||||||
|
|
||||||
|
//- Calculate yPLus. Helper function
|
||||||
|
tmp<scalarField> calcYPlus(const scalarField& magUp) const;
|
||||||
|
|
||||||
|
//- Calculate the turbulence viscosity
|
||||||
|
virtual tmp<scalarField> calcNut() const;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("nutUWallFunction");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from patch and internal field
|
||||||
|
nutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct from patch, internal field and dictionary
|
||||||
|
nutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&,
|
||||||
|
const dictionary&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct by mapping given
|
||||||
|
// nutUWallFunctionFvPatchScalarField
|
||||||
|
// onto a new patch
|
||||||
|
nutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const nutUWallFunctionFvPatchScalarField&,
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&,
|
||||||
|
const fvPatchFieldMapper&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct as copy
|
||||||
|
nutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const nutUWallFunctionFvPatchScalarField&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual tmp<fvPatchScalarField> clone() const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchScalarField>
|
||||||
|
(
|
||||||
|
new nutUWallFunctionFvPatchScalarField(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Construct as copy setting internal field reference
|
||||||
|
nutUWallFunctionFvPatchScalarField
|
||||||
|
(
|
||||||
|
const nutUWallFunctionFvPatchScalarField&,
|
||||||
|
const DimensionedField<scalar, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct and return a clone setting internal field reference
|
||||||
|
virtual tmp<fvPatchScalarField> clone
|
||||||
|
(
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchScalarField>
|
||||||
|
(
|
||||||
|
new nutUWallFunctionFvPatchScalarField(*this, iF)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
//- Calculate and return the yPlus at the boundary
|
||||||
|
virtual tmp<scalarField> yPlus() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace RASModels
|
||||||
|
} // End namespace incompressible
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -38,13 +38,15 @@ namespace incompressible
|
||||||
namespace RASModels
|
namespace RASModels
|
||||||
{
|
{
|
||||||
|
|
||||||
|
defineTypeNameAndDebug(nutWallFunctionFvPatchScalarField, 0);
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
void nutWallFunctionFvPatchScalarField::checkType()
|
void nutWallFunctionFvPatchScalarField::checkType()
|
||||||
{
|
{
|
||||||
if (!patch().isWall())
|
if (!patch().isWall())
|
||||||
{
|
{
|
||||||
FatalErrorIn("nutWallFunctionFvPatchScalarField::checkType()")
|
FatalErrorIn(this->type() + "FvPatchScalarField::checkType()")
|
||||||
<< "Invalid wall function specification" << nl
|
<< "Invalid wall function specification" << nl
|
||||||
<< " Patch type for patch " << patch().name()
|
<< " Patch type for patch " << patch().name()
|
||||||
<< " must be wall" << nl
|
<< " must be wall" << nl
|
||||||
|
@ -62,7 +64,7 @@ scalar nutWallFunctionFvPatchScalarField::calcYPlusLam
|
||||||
{
|
{
|
||||||
scalar ypl = 11.0;
|
scalar ypl = 11.0;
|
||||||
|
|
||||||
for (int i=0; i<10; i++)
|
for (label i = 0; i < 10; ++i)
|
||||||
{
|
{
|
||||||
ypl = log(E*ypl)/kappa;
|
ypl = log(E*ypl)/kappa;
|
||||||
}
|
}
|
||||||
|
@ -71,37 +73,6 @@ scalar nutWallFunctionFvPatchScalarField::calcYPlusLam
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> nutWallFunctionFvPatchScalarField::calcNut() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
|
||||||
const tmp<volScalarField> tk = rasModel.k();
|
|
||||||
const volScalarField& k = tk();
|
|
||||||
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
const scalar Cmu25 = pow(Cmu_, 0.25);
|
|
||||||
|
|
||||||
tmp<scalarField> tnutw(new scalarField(patch().size(), 0.0));
|
|
||||||
scalarField& nutw = tnutw();
|
|
||||||
|
|
||||||
forAll(nutw, faceI)
|
|
||||||
{
|
|
||||||
label faceCellI = patch().faceCells()[faceI];
|
|
||||||
|
|
||||||
scalar yPlus = Cmu25*y[faceI]*sqrt(k[faceCellI])/nuw[faceI];
|
|
||||||
|
|
||||||
if (yPlus > yPlusLam_)
|
|
||||||
{
|
|
||||||
nutw[faceI] = nuw[faceI]*(yPlus*kappa_/log(E_*yPlus) - 1.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return tnutw;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void nutWallFunctionFvPatchScalarField::writeLocalEntries(Ostream& os) const
|
void nutWallFunctionFvPatchScalarField::writeLocalEntries(Ostream& os) const
|
||||||
{
|
{
|
||||||
os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl;
|
os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl;
|
||||||
|
@ -198,28 +169,17 @@ nutWallFunctionFvPatchScalarField::nutWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
void nutWallFunctionFvPatchScalarField::updateCoeffs()
|
void nutWallFunctionFvPatchScalarField::updateCoeffs()
|
||||||
{
|
{
|
||||||
|
if (updated())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
operator==(calcNut());
|
operator==(calcNut());
|
||||||
|
|
||||||
fixedValueFvPatchScalarField::updateCoeffs();
|
fixedValueFvPatchScalarField::updateCoeffs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> nutWallFunctionFvPatchScalarField::yPlus() const
|
|
||||||
{
|
|
||||||
const label patchI = patch().index();
|
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
|
||||||
|
|
||||||
const tmp<volScalarField> tk = rasModel.k();
|
|
||||||
const volScalarField& k = tk();
|
|
||||||
const scalarField kwc = k.boundaryField()[patchI].patchInternalField();
|
|
||||||
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
return pow(Cmu_, 0.25)*y*sqrt(kwc)/nuw;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void nutWallFunctionFvPatchScalarField::write(Ostream& os) const
|
void nutWallFunctionFvPatchScalarField::write(Ostream& os) const
|
||||||
{
|
{
|
||||||
fvPatchField<scalar>::write(os);
|
fvPatchField<scalar>::write(os);
|
||||||
|
@ -228,10 +188,6 @@ void nutWallFunctionFvPatchScalarField::write(Ostream& os) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
makePatchTypeField(fvPatchScalarField, nutWallFunctionFvPatchScalarField);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
} // End namespace RASModels
|
} // End namespace RASModels
|
||||||
|
|
|
@ -25,10 +25,37 @@ Class
|
||||||
Foam::incompressible::RASModels::nutWallFunctionFvPatchScalarField
|
Foam::incompressible::RASModels::nutWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Boundary condition for turbulent (kinematic) viscosity when using wall
|
Abstract base class for boundary condition for turbulent (kinematic)
|
||||||
functions
|
viscosity when using wall functions
|
||||||
- replicates OpenFOAM v1.5 (and earlier) behaviour
|
- replicates OpenFOAM v1.5 (and earlier) behaviour
|
||||||
|
|
||||||
|
Usage
|
||||||
|
\table
|
||||||
|
Property | Description | Required | Default value
|
||||||
|
Cmu | Cmu coefficient | no | 0.09
|
||||||
|
kappa | Von Karman constant | no | 0.41
|
||||||
|
E | E coefficient | no | 9.8
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
Examples of the boundary condition specification:
|
||||||
|
\verbatim
|
||||||
|
<patchName>
|
||||||
|
{
|
||||||
|
type nutWallFunction;
|
||||||
|
value uniform 0.0;
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
Reference for the default model coefficients:
|
||||||
|
\verbatim
|
||||||
|
H. Versteeg, W. Malalasekera
|
||||||
|
An Introduction to Computational Fluid Dynamics: The Finite Volume
|
||||||
|
Method, subsection "3.5.2 k-epsilon model"
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
See also
|
||||||
|
Foam::fixedValueFvPatchField
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
nutWallFunctionFvPatchScalarField.C
|
nutWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
|
@ -73,7 +100,7 @@ protected:
|
||||||
scalar yPlusLam_;
|
scalar yPlusLam_;
|
||||||
|
|
||||||
|
|
||||||
// Protected member functions
|
// Protected Member Functions
|
||||||
|
|
||||||
//- Check the type of the patch
|
//- Check the type of the patch
|
||||||
virtual void checkType();
|
virtual void checkType();
|
||||||
|
@ -82,7 +109,7 @@ protected:
|
||||||
virtual scalar calcYPlusLam(const scalar kappa, const scalar E) const;
|
virtual scalar calcYPlusLam(const scalar kappa, const scalar E) const;
|
||||||
|
|
||||||
//- Calculate the turbulence viscosity
|
//- Calculate the turbulence viscosity
|
||||||
virtual tmp<scalarField> calcNut() const;
|
virtual tmp<scalarField> calcNut() const = 0;
|
||||||
|
|
||||||
//- Write local wall function variables
|
//- Write local wall function variables
|
||||||
virtual void writeLocalEntries(Ostream&) const;
|
virtual void writeLocalEntries(Ostream&) const;
|
||||||
|
@ -128,15 +155,6 @@ public:
|
||||||
const nutWallFunctionFvPatchScalarField&
|
const nutWallFunctionFvPatchScalarField&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct and return a clone
|
|
||||||
virtual tmp<fvPatchScalarField> clone() const
|
|
||||||
{
|
|
||||||
return tmp<fvPatchScalarField>
|
|
||||||
(
|
|
||||||
new nutWallFunctionFvPatchScalarField(*this)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Construct as copy setting internal field reference
|
//- Construct as copy setting internal field reference
|
||||||
nutWallFunctionFvPatchScalarField
|
nutWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
|
@ -144,25 +162,13 @@ public:
|
||||||
const DimensionedField<scalar, volMesh>&
|
const DimensionedField<scalar, volMesh>&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct and return a clone setting internal field reference
|
|
||||||
virtual tmp<fvPatchScalarField> clone
|
|
||||||
(
|
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
return tmp<fvPatchScalarField>
|
|
||||||
(
|
|
||||||
new nutWallFunctionFvPatchScalarField(*this, iF)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Member functions
|
// Member functions
|
||||||
|
|
||||||
// Evaluation functions
|
// Evaluation functions
|
||||||
|
|
||||||
//- Calculate and return the yPlus at the boundary
|
//- Calculate and return the yPlus at the boundary
|
||||||
virtual tmp<scalarField> yPlus() const;
|
virtual tmp<scalarField> yPlus() const = 0;
|
||||||
|
|
||||||
//- Update the coefficients associated with the patch field
|
//- Update the coefficients associated with the patch field
|
||||||
virtual void updateCoeffs();
|
virtual void updateCoeffs();
|
||||||
|
|
|
@ -23,7 +23,7 @@ License
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "nutRoughWallFunctionFvPatchScalarField.H"
|
#include "nutkRoughWallFunctionFvPatchScalarField.H"
|
||||||
#include "RASModel.H"
|
#include "RASModel.H"
|
||||||
#include "fvPatchFieldMapper.H"
|
#include "fvPatchFieldMapper.H"
|
||||||
#include "volFields.H"
|
#include "volFields.H"
|
||||||
|
@ -40,7 +40,7 @@ namespace RASModels
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
scalar nutRoughWallFunctionFvPatchScalarField::fnRough
|
scalar nutkRoughWallFunctionFvPatchScalarField::fnRough
|
||||||
(
|
(
|
||||||
const scalar KsPlus,
|
const scalar KsPlus,
|
||||||
const scalar Cs
|
const scalar Cs
|
||||||
|
@ -63,28 +63,32 @@ scalar nutRoughWallFunctionFvPatchScalarField::fnRough
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> nutRoughWallFunctionFvPatchScalarField::calcNut() const
|
tmp<scalarField> nutkRoughWallFunctionFvPatchScalarField::calcNut() const
|
||||||
{
|
{
|
||||||
const label patchI = patch().index();
|
const label patchI = patch().index();
|
||||||
|
|
||||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
const turbulenceModel& turbModel =
|
||||||
const scalarField& y = rasModel.y()[patchI];
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
const tmp<volScalarField> tk = rasModel.k();
|
|
||||||
const volScalarField& k = tk();
|
|
||||||
const scalarField& nuw = rasModel.nu().boundaryField()[patchI];
|
|
||||||
|
|
||||||
const scalar Cmu25 = pow(Cmu_, 0.25);
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
|
const tmp<volScalarField> tk = turbModel.k();
|
||||||
|
const volScalarField& k = tk();
|
||||||
|
const scalarField& nuw = turbModel.nu().boundaryField()[patchI];
|
||||||
|
|
||||||
|
const scalar Cmu25 = pow025(Cmu_);
|
||||||
|
|
||||||
tmp<scalarField> tnutw(new scalarField(*this));
|
tmp<scalarField> tnutw(new scalarField(*this));
|
||||||
scalarField& nutw = tnutw();
|
scalarField& nutw = tnutw();
|
||||||
|
|
||||||
|
const unallocLabelList& fc = patch().faceCells();
|
||||||
|
|
||||||
forAll(nutw, faceI)
|
forAll(nutw, faceI)
|
||||||
{
|
{
|
||||||
label faceCellI = patch().faceCells()[faceI];
|
const label faceCellI = fc[faceI];
|
||||||
|
|
||||||
scalar uStar = Cmu25*sqrt(k[faceCellI]);
|
const scalar uStar = Cmu25*sqrt(k[faceCellI]);
|
||||||
scalar yPlus = uStar*y[faceI]/nuw[faceI];
|
const scalar yPlus = uStar*y[faceI]/nuw[faceI];
|
||||||
scalar KsPlus = uStar*Ks_[faceI]/nuw[faceI];
|
const scalar KsPlus = uStar*Ks_[faceI]/nuw[faceI];
|
||||||
|
|
||||||
scalar Edash = E_;
|
scalar Edash = E_;
|
||||||
|
|
||||||
|
@ -105,7 +109,7 @@ tmp<scalarField> nutRoughWallFunctionFvPatchScalarField::calcNut() const
|
||||||
min
|
min
|
||||||
(
|
(
|
||||||
nuw[faceI]
|
nuw[faceI]
|
||||||
*(yPlus*kappa_/log(max(Edash*yPlus, 1+1e-4)) - 1),
|
*(yPlus*kappa_/log(max(Edash*yPlus, 1 + 1e-4)) - 1.0),
|
||||||
2*limitingNutw
|
2*limitingNutw
|
||||||
), 0.5*limitingNutw
|
), 0.5*limitingNutw
|
||||||
);
|
);
|
||||||
|
@ -127,63 +131,63 @@ tmp<scalarField> nutRoughWallFunctionFvPatchScalarField::calcNut() const
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
nutRoughWallFunctionFvPatchScalarField::nutRoughWallFunctionFvPatchScalarField
|
nutkRoughWallFunctionFvPatchScalarField::nutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const fvPatch& p,
|
const fvPatch& p,
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(p, iF),
|
nutkWallFunctionFvPatchScalarField(p, iF),
|
||||||
Ks_(p.size(), 0.0),
|
Ks_(p.size(), 0.0),
|
||||||
Cs_(p.size(), 0.0)
|
Cs_(p.size(), 0.0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
nutRoughWallFunctionFvPatchScalarField::nutRoughWallFunctionFvPatchScalarField
|
nutkRoughWallFunctionFvPatchScalarField::nutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const nutRoughWallFunctionFvPatchScalarField& ptf,
|
const nutkRoughWallFunctionFvPatchScalarField& ptf,
|
||||||
const fvPatch& p,
|
const fvPatch& p,
|
||||||
const DimensionedField<scalar, volMesh>& iF,
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
const fvPatchFieldMapper& mapper
|
const fvPatchFieldMapper& mapper
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
|
nutkWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
|
||||||
Ks_(ptf.Ks_, mapper),
|
Ks_(ptf.Ks_, mapper),
|
||||||
Cs_(ptf.Cs_, mapper)
|
Cs_(ptf.Cs_, mapper)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
nutRoughWallFunctionFvPatchScalarField::nutRoughWallFunctionFvPatchScalarField
|
nutkRoughWallFunctionFvPatchScalarField::nutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const fvPatch& p,
|
const fvPatch& p,
|
||||||
const DimensionedField<scalar, volMesh>& iF,
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(p, iF, dict),
|
nutkWallFunctionFvPatchScalarField(p, iF, dict),
|
||||||
Ks_("Ks", dict, p.size()),
|
Ks_("Ks", dict, p.size()),
|
||||||
Cs_("Cs", dict, p.size())
|
Cs_("Cs", dict, p.size())
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
nutRoughWallFunctionFvPatchScalarField::nutRoughWallFunctionFvPatchScalarField
|
nutkRoughWallFunctionFvPatchScalarField::nutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const nutRoughWallFunctionFvPatchScalarField& rwfpsf
|
const nutkRoughWallFunctionFvPatchScalarField& rwfpsf
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(rwfpsf),
|
nutkWallFunctionFvPatchScalarField(rwfpsf),
|
||||||
Ks_(rwfpsf.Ks_),
|
Ks_(rwfpsf.Ks_),
|
||||||
Cs_(rwfpsf.Cs_)
|
Cs_(rwfpsf.Cs_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
nutRoughWallFunctionFvPatchScalarField::nutRoughWallFunctionFvPatchScalarField
|
nutkRoughWallFunctionFvPatchScalarField::nutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const nutRoughWallFunctionFvPatchScalarField& rwfpsf,
|
const nutkRoughWallFunctionFvPatchScalarField& rwfpsf,
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
nutWallFunctionFvPatchScalarField(rwfpsf, iF),
|
nutkWallFunctionFvPatchScalarField(rwfpsf, iF),
|
||||||
Ks_(rwfpsf.Ks_),
|
Ks_(rwfpsf.Ks_),
|
||||||
Cs_(rwfpsf.Cs_)
|
Cs_(rwfpsf.Cs_)
|
||||||
{}
|
{}
|
||||||
|
@ -191,34 +195,34 @@ nutRoughWallFunctionFvPatchScalarField::nutRoughWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
void nutRoughWallFunctionFvPatchScalarField::autoMap
|
void nutkRoughWallFunctionFvPatchScalarField::autoMap
|
||||||
(
|
(
|
||||||
const fvPatchFieldMapper& m
|
const fvPatchFieldMapper& m
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
nutWallFunctionFvPatchScalarField::autoMap(m);
|
nutkWallFunctionFvPatchScalarField::autoMap(m);
|
||||||
Ks_.autoMap(m);
|
Ks_.autoMap(m);
|
||||||
Cs_.autoMap(m);
|
Cs_.autoMap(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void nutRoughWallFunctionFvPatchScalarField::rmap
|
void nutkRoughWallFunctionFvPatchScalarField::rmap
|
||||||
(
|
(
|
||||||
const fvPatchScalarField& ptf,
|
const fvPatchScalarField& ptf,
|
||||||
const labelList& addr
|
const labelList& addr
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
nutWallFunctionFvPatchScalarField::rmap(ptf, addr);
|
nutkWallFunctionFvPatchScalarField::rmap(ptf, addr);
|
||||||
|
|
||||||
const nutRoughWallFunctionFvPatchScalarField& nrwfpsf =
|
const nutkRoughWallFunctionFvPatchScalarField& nrwfpsf =
|
||||||
refCast<const nutRoughWallFunctionFvPatchScalarField>(ptf);
|
refCast<const nutkRoughWallFunctionFvPatchScalarField>(ptf);
|
||||||
|
|
||||||
Ks_.rmap(nrwfpsf.Ks_, addr);
|
Ks_.rmap(nrwfpsf.Ks_, addr);
|
||||||
Cs_.rmap(nrwfpsf.Cs_, addr);
|
Cs_.rmap(nrwfpsf.Cs_, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void nutRoughWallFunctionFvPatchScalarField::write(Ostream& os) const
|
void nutkRoughWallFunctionFvPatchScalarField::write(Ostream& os) const
|
||||||
{
|
{
|
||||||
fvPatchField<scalar>::write(os);
|
fvPatchField<scalar>::write(os);
|
||||||
writeLocalEntries(os);
|
writeLocalEntries(os);
|
||||||
|
@ -230,7 +234,11 @@ void nutRoughWallFunctionFvPatchScalarField::write(Ostream& os) const
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makePatchTypeField(fvPatchScalarField, nutRoughWallFunctionFvPatchScalarField);
|
makePatchTypeField
|
||||||
|
(
|
||||||
|
fvPatchScalarField,
|
||||||
|
nutkRoughWallFunctionFvPatchScalarField
|
||||||
|
);
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
|
@ -22,7 +22,7 @@ License
|
||||||
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
Class
|
Class
|
||||||
Foam::incompressible::RASModels::nutRoughWallFunctionFvPatchScalarField
|
Foam::incompressible::RASModels::nutkRoughWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Boundary condition for turbulent (kinematic) viscosity when using wall
|
Boundary condition for turbulent (kinematic) viscosity when using wall
|
||||||
|
@ -34,15 +34,32 @@ Description
|
||||||
- roughness height = sand-grain roughness (0 for smooth walls)
|
- roughness height = sand-grain roughness (0 for smooth walls)
|
||||||
- roughness constant = 0.5-1.0 (0.5 default)
|
- roughness constant = 0.5-1.0 (0.5 default)
|
||||||
|
|
||||||
|
Usage
|
||||||
|
\table
|
||||||
|
Property | Description | Required | Default value
|
||||||
|
Ks | sand-grain roughness height | yes |
|
||||||
|
Cs | roughness constant | yes |
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
Example of the boundary condition specification:
|
||||||
|
\verbatim
|
||||||
|
<patchName>
|
||||||
|
{
|
||||||
|
type nutkRoughWallFunction;
|
||||||
|
Ks uniform 0;
|
||||||
|
Cs uniform 0.5;
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
nutRoughWallFunctionFvPatchScalarField.C
|
nutkRoughWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef nutRoughWallFunctionFvPatchScalarField_H
|
#ifndef nutkRoughWallFunctionFvPatchScalarField_H
|
||||||
#define nutRoughWallFunctionFvPatchScalarField_H
|
#define nutkRoughWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
#include "nutWallFunctionFvPatchScalarField.H"
|
#include "nutkWallFunctionFvPatchScalarField.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
@ -54,12 +71,12 @@ namespace RASModels
|
||||||
{
|
{
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class nutRoughWallFunctionFvPatchScalarField Declaration
|
Class nutkRoughWallFunctionFvPatchScalarField Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class nutRoughWallFunctionFvPatchScalarField
|
class nutkRoughWallFunctionFvPatchScalarField
|
||||||
:
|
:
|
||||||
public nutWallFunctionFvPatchScalarField
|
public nutkWallFunctionFvPatchScalarField
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
@ -72,7 +89,7 @@ protected:
|
||||||
scalarField Cs_;
|
scalarField Cs_;
|
||||||
|
|
||||||
|
|
||||||
// Protected member functions
|
// Protected Member Functions
|
||||||
|
|
||||||
//- Compute the roughness function
|
//- Compute the roughness function
|
||||||
virtual scalar fnRough(const scalar KsPlus, const scalar Cs) const;
|
virtual scalar fnRough(const scalar KsPlus, const scalar Cs) const;
|
||||||
|
@ -84,20 +101,20 @@ protected:
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
TypeName("nutRoughWallFunction");
|
TypeName("nutkRoughWallFunction");
|
||||||
|
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from patch and internal field
|
//- Construct from patch and internal field
|
||||||
nutRoughWallFunctionFvPatchScalarField
|
nutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const fvPatch&,
|
const fvPatch&,
|
||||||
const DimensionedField<scalar, volMesh>&
|
const DimensionedField<scalar, volMesh>&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct from patch, internal field and dictionary
|
//- Construct from patch, internal field and dictionary
|
||||||
nutRoughWallFunctionFvPatchScalarField
|
nutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const fvPatch&,
|
const fvPatch&,
|
||||||
const DimensionedField<scalar, volMesh>&,
|
const DimensionedField<scalar, volMesh>&,
|
||||||
|
@ -105,20 +122,20 @@ public:
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct by mapping given
|
//- Construct by mapping given
|
||||||
// nutRoughWallFunctionFvPatchScalarField
|
// nutkRoughWallFunctionFvPatchScalarField
|
||||||
// onto a new patch
|
// onto a new patch
|
||||||
nutRoughWallFunctionFvPatchScalarField
|
nutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const nutRoughWallFunctionFvPatchScalarField&,
|
const nutkRoughWallFunctionFvPatchScalarField&,
|
||||||
const fvPatch&,
|
const fvPatch&,
|
||||||
const DimensionedField<scalar, volMesh>&,
|
const DimensionedField<scalar, volMesh>&,
|
||||||
const fvPatchFieldMapper&
|
const fvPatchFieldMapper&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct as copy
|
//- Construct as copy
|
||||||
nutRoughWallFunctionFvPatchScalarField
|
nutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const nutRoughWallFunctionFvPatchScalarField&
|
const nutkRoughWallFunctionFvPatchScalarField&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct and return a clone
|
//- Construct and return a clone
|
||||||
|
@ -126,14 +143,14 @@ public:
|
||||||
{
|
{
|
||||||
return tmp<fvPatchScalarField>
|
return tmp<fvPatchScalarField>
|
||||||
(
|
(
|
||||||
new nutRoughWallFunctionFvPatchScalarField(*this)
|
new nutkRoughWallFunctionFvPatchScalarField(*this)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
//- Construct as copy setting internal field reference
|
//- Construct as copy setting internal field reference
|
||||||
nutRoughWallFunctionFvPatchScalarField
|
nutkRoughWallFunctionFvPatchScalarField
|
||||||
(
|
(
|
||||||
const nutRoughWallFunctionFvPatchScalarField&,
|
const nutkRoughWallFunctionFvPatchScalarField&,
|
||||||
const DimensionedField<scalar, volMesh>&
|
const DimensionedField<scalar, volMesh>&
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -145,13 +162,28 @@ public:
|
||||||
{
|
{
|
||||||
return tmp<fvPatchScalarField>
|
return tmp<fvPatchScalarField>
|
||||||
(
|
(
|
||||||
new nutRoughWallFunctionFvPatchScalarField(*this, iF)
|
new nutkRoughWallFunctionFvPatchScalarField(*this, iF)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Member functions
|
// Member functions
|
||||||
|
|
||||||
|
// Acces functions
|
||||||
|
|
||||||
|
// Return Ks
|
||||||
|
scalarField& Ks()
|
||||||
|
{
|
||||||
|
return Ks_;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return Cs
|
||||||
|
scalarField& Cs()
|
||||||
|
{
|
||||||
|
return Cs_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Mapping functions
|
// Mapping functions
|
||||||
|
|
||||||
//- Map (and resize as needed) from self given a mapping object
|
//- Map (and resize as needed) from self given a mapping object
|
|
@ -40,58 +40,31 @@ namespace RASModels
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
void nutkWallFunctionFvPatchScalarField::checkType()
|
|
||||||
{
|
|
||||||
if (!patch().isWall())
|
|
||||||
{
|
|
||||||
FatalErrorIn("nutkWallFunctionFvPatchScalarField::checkType()")
|
|
||||||
<< "Invalid wall function specification" << nl
|
|
||||||
<< " Patch type for patch " << patch().name()
|
|
||||||
<< " must be wall" << nl
|
|
||||||
<< " Current patch type is " << patch().type() << nl << endl
|
|
||||||
<< abort(FatalError);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
scalar nutkWallFunctionFvPatchScalarField::calcYPlusLam
|
|
||||||
(
|
|
||||||
const scalar kappa,
|
|
||||||
const scalar E
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
scalar ypl = 11.0;
|
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++)
|
|
||||||
{
|
|
||||||
ypl = log(E*ypl)/kappa;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ypl;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> nutkWallFunctionFvPatchScalarField::calcNut() const
|
tmp<scalarField> nutkWallFunctionFvPatchScalarField::calcNut() const
|
||||||
{
|
{
|
||||||
const label patchi = patch().index();
|
const label patchI = patch().index();
|
||||||
|
|
||||||
const turbulenceModel& turbModel =
|
const turbulenceModel& turbModel =
|
||||||
db().lookupObject<turbulenceModel>("turbulenceModel");
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
const scalarField& y = turbModel.y()[patchi];
|
|
||||||
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
const tmp<volScalarField> tk = turbModel.k();
|
const tmp<volScalarField> tk = turbModel.k();
|
||||||
const volScalarField& k = tk();
|
const volScalarField& k = tk();
|
||||||
const scalarField& nuw = turbModel.nu().boundaryField()[patchi];
|
const scalarField& nuw = turbModel.nu().boundaryField()[patchI];
|
||||||
|
|
||||||
const scalar Cmu25 = pow025(Cmu_);
|
const scalar Cmu25 = pow025(Cmu_);
|
||||||
|
|
||||||
tmp<scalarField> tnutw(new scalarField(patch().size(), 0.0));
|
tmp<scalarField> tnutw(new scalarField(patch().size(), 0.0));
|
||||||
scalarField& nutw = tnutw();
|
scalarField& nutw = tnutw();
|
||||||
|
|
||||||
|
// Get face cells
|
||||||
|
const unallocLabelList& fc = patch().faceCells();
|
||||||
|
|
||||||
forAll(nutw, faceI)
|
forAll(nutw, faceI)
|
||||||
{
|
{
|
||||||
label faceCellI = patch().faceCells()[faceI];
|
const label faceCellI = fc[faceI];
|
||||||
|
|
||||||
scalar yPlus = Cmu25*y[faceI]*sqrt(k[faceCellI])/nuw[faceI];
|
const scalar yPlus = Cmu25*y[faceI]*sqrt(k[faceCellI])/nuw[faceI];
|
||||||
|
|
||||||
if (yPlus > yPlusLam_)
|
if (yPlus > yPlusLam_)
|
||||||
{
|
{
|
||||||
|
@ -103,14 +76,6 @@ tmp<scalarField> nutkWallFunctionFvPatchScalarField::calcNut() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void nutkWallFunctionFvPatchScalarField::writeLocalEntries(Ostream& os) const
|
|
||||||
{
|
|
||||||
os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl;
|
|
||||||
os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
|
|
||||||
os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
||||||
|
@ -119,14 +84,8 @@ nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(p, iF),
|
nutWallFunctionFvPatchScalarField(p, iF)
|
||||||
Cmu_(0.09),
|
{}
|
||||||
kappa_(0.41),
|
|
||||||
E_(9.8),
|
|
||||||
yPlusLam_(calcYPlusLam(kappa_, E_))
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
||||||
|
@ -136,14 +95,8 @@ nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(p, iF, dict),
|
nutWallFunctionFvPatchScalarField(p, iF, dict)
|
||||||
Cmu_(dict.lookupOrDefault<scalar>("Cmu", 0.09)),
|
{}
|
||||||
kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
|
|
||||||
E_(dict.lookupOrDefault<scalar>("E", 9.8)),
|
|
||||||
yPlusLam_(calcYPlusLam(kappa_, E_))
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
||||||
|
@ -154,14 +107,8 @@ nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
||||||
const fvPatchFieldMapper& mapper
|
const fvPatchFieldMapper& mapper
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(ptf, p, iF, mapper),
|
nutWallFunctionFvPatchScalarField(ptf, p, iF, mapper)
|
||||||
Cmu_(ptf.Cmu_),
|
{}
|
||||||
kappa_(ptf.kappa_),
|
|
||||||
E_(ptf.E_),
|
|
||||||
yPlusLam_(ptf.yPlusLam_)
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
||||||
|
@ -169,14 +116,8 @@ nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
||||||
const nutkWallFunctionFvPatchScalarField& wfpsf
|
const nutkWallFunctionFvPatchScalarField& wfpsf
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(wfpsf),
|
nutWallFunctionFvPatchScalarField(wfpsf)
|
||||||
Cmu_(wfpsf.Cmu_),
|
{}
|
||||||
kappa_(wfpsf.kappa_),
|
|
||||||
E_(wfpsf.E_),
|
|
||||||
yPlusLam_(wfpsf.yPlusLam_)
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
||||||
|
@ -185,56 +126,29 @@ nutkWallFunctionFvPatchScalarField::nutkWallFunctionFvPatchScalarField
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
fixedValueFvPatchScalarField(wfpsf, iF),
|
nutWallFunctionFvPatchScalarField(wfpsf, iF)
|
||||||
Cmu_(wfpsf.Cmu_),
|
{}
|
||||||
kappa_(wfpsf.kappa_),
|
|
||||||
E_(wfpsf.E_),
|
|
||||||
yPlusLam_(wfpsf.yPlusLam_)
|
|
||||||
{
|
|
||||||
checkType();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
void nutkWallFunctionFvPatchScalarField::updateCoeffs()
|
|
||||||
{
|
|
||||||
if (updated())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
operator==(calcNut());
|
|
||||||
|
|
||||||
fixedValueFvPatchScalarField::updateCoeffs();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tmp<scalarField> nutkWallFunctionFvPatchScalarField::yPlus() const
|
tmp<scalarField> nutkWallFunctionFvPatchScalarField::yPlus() const
|
||||||
{
|
{
|
||||||
const label patchi = patch().index();
|
const label patchI = patch().index();
|
||||||
|
|
||||||
const turbulenceModel& turbModel =
|
const turbulenceModel& turbModel =
|
||||||
db().lookupObject<turbulenceModel>("turbulenceModel");
|
db().lookupObject<turbulenceModel>("turbulenceModel");
|
||||||
const scalarField& y = turbModel.y()[patchi];
|
|
||||||
|
|
||||||
|
const scalarField& y = turbModel.y()[patchI];
|
||||||
const tmp<volScalarField> tk = turbModel.k();
|
const tmp<volScalarField> tk = turbModel.k();
|
||||||
const volScalarField& k = tk();
|
const volScalarField& k = tk();
|
||||||
const scalarField kwc = k.boundaryField()[patchi].patchInternalField();
|
const scalarField kwc = k.boundaryField()[patchI].patchInternalField();
|
||||||
const scalarField& nuw = turbModel.nu().boundaryField()[patchi];
|
const scalarField& nuw = turbModel.nu().boundaryField()[patchI];
|
||||||
|
|
||||||
return pow025(Cmu_)*y*sqrt(kwc)/nuw;
|
return pow025(Cmu_)*y*sqrt(kwc)/nuw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void nutkWallFunctionFvPatchScalarField::write(Ostream& os) const
|
|
||||||
{
|
|
||||||
fvPatchField<scalar>::write(os);
|
|
||||||
writeLocalEntries(os);
|
|
||||||
writeEntry("value", os);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makePatchTypeField(fvPatchScalarField, nutkWallFunctionFvPatchScalarField);
|
makePatchTypeField(fvPatchScalarField, nutkWallFunctionFvPatchScalarField);
|
||||||
|
|
|
@ -29,6 +29,18 @@ Description
|
||||||
functions, based on turbulence kinetic energy.
|
functions, based on turbulence kinetic energy.
|
||||||
- replicates OpenFOAM v1.5 (and earlier) behaviour
|
- replicates OpenFOAM v1.5 (and earlier) behaviour
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Example of the boundary condition specification:
|
||||||
|
\verbatim
|
||||||
|
<patchName>
|
||||||
|
{
|
||||||
|
type nutkWallFunction;
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
See also
|
||||||
|
Foam::nutWallFunctionFvPatchScalarField
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
nutkWallFunctionFvPatchScalarField.C
|
nutkWallFunctionFvPatchScalarField.C
|
||||||
|
|
||||||
|
@ -37,7 +49,7 @@ SourceFiles
|
||||||
#ifndef nutkWallFunctionFvPatchScalarField_H
|
#ifndef nutkWallFunctionFvPatchScalarField_H
|
||||||
#define nutkWallFunctionFvPatchScalarField_H
|
#define nutkWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
#include "fixedValueFvPatchFields.H"
|
#include "nutWallFunctionFvPatchScalarField.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
@ -54,39 +66,15 @@ namespace RASModels
|
||||||
|
|
||||||
class nutkWallFunctionFvPatchScalarField
|
class nutkWallFunctionFvPatchScalarField
|
||||||
:
|
:
|
||||||
public fixedValueFvPatchScalarField
|
public nutWallFunctionFvPatchScalarField
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
// Protected data
|
// Protected Member Functions
|
||||||
|
|
||||||
//- Cmu coefficient
|
|
||||||
scalar Cmu_;
|
|
||||||
|
|
||||||
//- Von Karman constant
|
|
||||||
scalar kappa_;
|
|
||||||
|
|
||||||
//- E coefficient
|
|
||||||
scalar E_;
|
|
||||||
|
|
||||||
//- Y+ at the edge of the laminar sublayer
|
|
||||||
scalar yPlusLam_;
|
|
||||||
|
|
||||||
|
|
||||||
// Protected member functions
|
|
||||||
|
|
||||||
//- Check the type of the patch
|
|
||||||
virtual void checkType();
|
|
||||||
|
|
||||||
//- Calculate the Y+ at the edge of the laminar sublayer
|
|
||||||
virtual scalar calcYPlusLam(const scalar kappa, const scalar E) const;
|
|
||||||
|
|
||||||
//- Calculate the turbulence viscosity
|
//- Calculate the turbulence viscosity
|
||||||
virtual tmp<scalarField> calcNut() const;
|
virtual tmp<scalarField> calcNut() const;
|
||||||
|
|
||||||
//- Write local wall function variables
|
|
||||||
virtual void writeLocalEntries(Ostream&) const;
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -159,19 +147,8 @@ public:
|
||||||
|
|
||||||
// Member functions
|
// Member functions
|
||||||
|
|
||||||
// Evaluation functions
|
|
||||||
|
|
||||||
//- Calculate and return the yPlus at the boundary
|
//- Calculate and return the yPlus at the boundary
|
||||||
virtual tmp<scalarField> yPlus() const;
|
virtual tmp<scalarField> yPlus() const;
|
||||||
|
|
||||||
//- Update the coefficients associated with the patch field
|
|
||||||
virtual void updateCoeffs();
|
|
||||||
|
|
||||||
|
|
||||||
// I-O
|
|
||||||
|
|
||||||
//- Write
|
|
||||||
virtual void write(Ostream&) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ boundaryField
|
||||||
{
|
{
|
||||||
walls
|
walls
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ boundaryField
|
||||||
{
|
{
|
||||||
piston
|
piston
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -31,7 +31,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
liner
|
liner
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -39,7 +39,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
cylinderHead
|
cylinderHead
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -23,7 +23,7 @@ boundaryField
|
||||||
{
|
{
|
||||||
wall
|
wall
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -23,22 +23,22 @@ boundaryField
|
||||||
{
|
{
|
||||||
front
|
front
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
back
|
back
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
wall
|
wall
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
porosityWall
|
porosityWall
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
inlet
|
inlet
|
||||||
|
|
|
@ -23,7 +23,7 @@ boundaryField
|
||||||
{
|
{
|
||||||
movingWall
|
movingWall
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -31,7 +31,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
fixedWalls
|
fixedWalls
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -23,13 +23,13 @@ boundaryField
|
||||||
{
|
{
|
||||||
rotor
|
rotor
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
stator
|
stator
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,25 +23,25 @@ boundaryField
|
||||||
{
|
{
|
||||||
front
|
front
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
back
|
back
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wall
|
wall
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
porosityWall
|
porosityWall
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,25 +23,25 @@ boundaryField
|
||||||
{
|
{
|
||||||
front
|
front
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
back
|
back
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wall
|
wall
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
porosityWall
|
porosityWall
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
prismWall
|
prismWall
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
defaultFaces
|
defaultFaces
|
||||||
|
|
|
@ -33,7 +33,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
bladeRotor
|
bladeRotor
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -41,7 +41,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
shaftRotor
|
shaftRotor
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -49,7 +49,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
shroudRotor
|
shroudRotor
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -57,7 +57,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
bladeStator
|
bladeStator
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -65,7 +65,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
shaftStator
|
shaftStator
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -73,7 +73,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
shroudStator
|
shroudStator
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -33,7 +33,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
bladeRotor
|
bladeRotor
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -41,7 +41,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
shaftRotor
|
shaftRotor
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -49,7 +49,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
shroudRotor
|
shroudRotor
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -57,7 +57,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
bladeStator
|
bladeStator
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -65,7 +65,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
shaftStator
|
shaftStator
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -73,7 +73,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
shroudStator
|
shroudStator
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -33,7 +33,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
blade
|
blade
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -41,7 +41,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
shaft
|
shaft
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -49,7 +49,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
shroud
|
shroud
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -33,7 +33,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
blade
|
blade
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -41,7 +41,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
shaft
|
shaft
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -49,7 +49,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
shroud
|
shroud
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -38,7 +38,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVBLADE
|
GVBLADE
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -46,7 +46,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVHUB
|
GVHUB
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -54,7 +54,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVSHROUD
|
GVSHROUD
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -82,7 +82,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUBLADE
|
RUBLADE
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -90,7 +90,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUHUB
|
RUHUB
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -98,7 +98,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUSHROUD
|
RUSHROUD
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -126,7 +126,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
DTHUB
|
DTHUB
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -134,7 +134,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
DTSHROUD
|
DTSHROUD
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -38,7 +38,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVBLADE
|
GVBLADE
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -46,7 +46,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVHUB
|
GVHUB
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -54,7 +54,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVSHROUD
|
GVSHROUD
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -82,7 +82,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUBLADE
|
RUBLADE
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -90,7 +90,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUHUB
|
RUHUB
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -98,7 +98,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUSHROUD
|
RUSHROUD
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -126,7 +126,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
DTHUB
|
DTHUB
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -134,7 +134,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
DTSHROUD
|
DTSHROUD
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -38,7 +38,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVBLADE
|
GVBLADE
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -46,7 +46,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVHUB
|
GVHUB
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -54,7 +54,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVSHROUD
|
GVSHROUD
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -82,7 +82,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUBLADE
|
RUBLADE
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -90,7 +90,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUHUB
|
RUHUB
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -98,7 +98,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUSHROUD
|
RUSHROUD
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -126,7 +126,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
DTHUB
|
DTHUB
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -134,7 +134,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
DTSHROUD
|
DTSHROUD
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -38,7 +38,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVBLADE
|
GVBLADE
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -46,7 +46,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVHUB
|
GVHUB
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -54,7 +54,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVSHROUD
|
GVSHROUD
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -82,7 +82,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUBLADE
|
RUBLADE
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -90,7 +90,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUHUB
|
RUHUB
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -98,7 +98,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUSHROUD
|
RUSHROUD
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -126,7 +126,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
DTHUB
|
DTHUB
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -134,7 +134,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
DTSHROUD
|
DTSHROUD
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -127,7 +127,7 @@ boundaryField
|
||||||
{
|
{
|
||||||
movingWall
|
movingWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -135,7 +135,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
left
|
left
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -143,7 +143,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
right
|
right
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -151,7 +151,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
bottom
|
bottom
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -127,7 +127,7 @@ boundaryField
|
||||||
{
|
{
|
||||||
movingWall
|
movingWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -135,7 +135,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
left
|
left
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -143,7 +143,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
right
|
right
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -151,7 +151,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
bottom
|
bottom
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -23,17 +23,17 @@ boundaryField
|
||||||
{
|
{
|
||||||
floor
|
floor
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
ceiling
|
ceiling
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
fixedWalls
|
fixedWalls
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,17 +23,17 @@ boundaryField
|
||||||
{
|
{
|
||||||
floor
|
floor
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
ceiling
|
ceiling
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
fixedWalls
|
fixedWalls
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,25 +23,25 @@ boundaryField
|
||||||
{
|
{
|
||||||
ground
|
ground
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
igloo_region0
|
igloo_region0
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
twoFridgeFreezers_seal_0
|
twoFridgeFreezers_seal_0
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
twoFridgeFreezers_herring_1
|
twoFridgeFreezers_herring_1
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,17 +23,17 @@ boundaryField
|
||||||
{
|
{
|
||||||
floor
|
floor
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
ceiling
|
ceiling
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
fixedWalls
|
fixedWalls
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ boundaryField
|
||||||
{
|
{
|
||||||
box
|
box
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -31,7 +31,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
floor
|
floor
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -39,7 +39,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
ceiling
|
ceiling
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -47,7 +47,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
fixedWalls
|
fixedWalls
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -23,7 +23,7 @@ boundaryField
|
||||||
{
|
{
|
||||||
box
|
box
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -31,7 +31,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
floor
|
floor
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -39,7 +39,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
ceiling
|
ceiling
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -47,7 +47,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
fixedWalls
|
fixedWalls
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | foam-extend: Open Source CFD |
|
||||||
|
| \\ / O peration | Version: 4.1 |
|
||||||
|
| \\ / A nd | Web: http://www.foam-extend.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class polyBoundaryMesh;
|
||||||
|
location "constant/polyMesh";
|
||||||
|
object boundary;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
5
|
||||||
|
(
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type patch;
|
||||||
|
nFaces 30;
|
||||||
|
startFace 24170;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type patch;
|
||||||
|
nFaces 57;
|
||||||
|
startFace 24200;
|
||||||
|
}
|
||||||
|
upperWall
|
||||||
|
{
|
||||||
|
type wall;
|
||||||
|
nFaces 223;
|
||||||
|
startFace 24257;
|
||||||
|
}
|
||||||
|
lowerWall
|
||||||
|
{
|
||||||
|
type wall;
|
||||||
|
nFaces 250;
|
||||||
|
startFace 24480;
|
||||||
|
}
|
||||||
|
frontAndBack
|
||||||
|
{
|
||||||
|
type empty;
|
||||||
|
nFaces 24450;
|
||||||
|
startFace 24730;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -23,7 +23,7 @@ boundaryField
|
||||||
{
|
{
|
||||||
pitzDailyIB
|
pitzDailyIB
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
patchType immersedBoundary;
|
patchType immersedBoundary;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVBLADE
|
GVBLADE
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -46,7 +46,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVHUB
|
GVHUB
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -54,7 +54,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVSHROUD
|
GVSHROUD
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -82,7 +82,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUBLADE
|
RUBLADE
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -90,7 +90,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUHUB
|
RUHUB
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -98,7 +98,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUSHROUD
|
RUSHROUD
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -126,7 +126,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
DTHUB
|
DTHUB
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -134,7 +134,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
DTSHROUD
|
DTSHROUD
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -38,7 +38,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVBLADE
|
GVBLADE
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -46,7 +46,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVHUB
|
GVHUB
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -54,7 +54,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVSHROUD
|
GVSHROUD
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -82,7 +82,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUBLADE
|
RUBLADE
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -90,7 +90,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUHUB
|
RUHUB
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -98,7 +98,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUSHROUD
|
RUSHROUD
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -126,7 +126,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
DTHUB
|
DTHUB
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -134,7 +134,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
DTSHROUD
|
DTSHROUD
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -23,7 +23,7 @@ boundaryField
|
||||||
{
|
{
|
||||||
lowerWall
|
lowerWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -31,7 +31,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
upperWall
|
upperWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -23,7 +23,7 @@ boundaryField
|
||||||
{
|
{
|
||||||
lowerWall
|
lowerWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -31,7 +31,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
upperWall
|
upperWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -33,7 +33,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
upperWall
|
upperWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -41,7 +41,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
lowerWall
|
lowerWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -33,7 +33,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
upperWall
|
upperWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -41,7 +41,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
lowerWall
|
lowerWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -43,7 +43,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVBLADE
|
GVBLADE
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -51,7 +51,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVHUB
|
GVHUB
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -59,7 +59,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
GVSHROUD
|
GVSHROUD
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -87,7 +87,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUBLADE
|
RUBLADE
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -95,7 +95,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUHUB
|
RUHUB
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -103,7 +103,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUSHROUD
|
RUSHROUD
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -131,7 +131,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
DTHUB
|
DTHUB
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -139,7 +139,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
DTSHROUD
|
DTSHROUD
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -42,8 +42,7 @@ boundaryField
|
||||||
|
|
||||||
defaultFaces
|
defaultFaces
|
||||||
{
|
{
|
||||||
type epsilonWallFunction;
|
type empty;
|
||||||
value uniform 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,8 +42,7 @@ boundaryField
|
||||||
|
|
||||||
defaultFaces
|
defaultFaces
|
||||||
{
|
{
|
||||||
type kqRWallFunction;
|
type empty;
|
||||||
value uniform 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,8 +41,7 @@ boundaryField
|
||||||
|
|
||||||
defaultFaces
|
defaultFaces
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type empty;
|
||||||
value uniform 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,12 +23,12 @@ boundaryField
|
||||||
{
|
{
|
||||||
movingWall
|
movingWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
fixedWalls
|
fixedWalls
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
frontAndBack
|
frontAndBack
|
||||||
|
|
|
@ -23,25 +23,25 @@ boundaryField
|
||||||
{
|
{
|
||||||
front
|
front
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
back
|
back
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wall
|
wall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
porosityWall
|
porosityWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,25 +23,25 @@ boundaryField
|
||||||
{
|
{
|
||||||
front
|
front
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
back
|
back
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wall
|
wall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
porosityWall
|
porosityWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ boundaryField
|
||||||
|
|
||||||
lowerWall
|
lowerWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ boundaryField
|
||||||
|
|
||||||
"motorBike_.*"
|
"motorBike_.*"
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
upperWall
|
upperWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -41,7 +41,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
lowerWall
|
lowerWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -33,7 +33,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
upperWall
|
upperWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -41,7 +41,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
lowerWall
|
lowerWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -49,7 +49,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
lowerWallInterface
|
lowerWallInterface
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -57,7 +57,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
lowerWallInlet
|
lowerWallInlet
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -43,7 +43,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUBLADE
|
RUBLADE
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -51,7 +51,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUHUB
|
RUHUB
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -59,7 +59,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
RUSHROUD
|
RUSHROUD
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -33,7 +33,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
innerWall
|
innerWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
@ -41,7 +41,7 @@ boundaryField
|
||||||
}
|
}
|
||||||
outerWall
|
outerWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -23,17 +23,17 @@ boundaryField
|
||||||
{
|
{
|
||||||
top
|
top
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
bottom
|
bottom
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
walls
|
walls
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
symmetry
|
symmetry
|
||||||
|
|
|
@ -23,7 +23,7 @@ boundaryField
|
||||||
{
|
{
|
||||||
walls
|
walls
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
inlet
|
inlet
|
||||||
|
|
|
@ -23,7 +23,7 @@ boundaryField
|
||||||
{
|
{
|
||||||
walls
|
walls
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
inlet
|
inlet
|
||||||
|
|
|
@ -23,17 +23,17 @@ boundaryField
|
||||||
{
|
{
|
||||||
top
|
top
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
bottom
|
bottom
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
walls
|
walls
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
symmetry
|
symmetry
|
||||||
|
|
|
@ -35,7 +35,7 @@ boundaryField
|
||||||
|
|
||||||
walls
|
walls
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -23,19 +23,19 @@ boundaryField
|
||||||
{
|
{
|
||||||
leftWall
|
leftWall
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
rightWall
|
rightWall
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
lowerWall
|
lowerWall
|
||||||
{
|
{
|
||||||
type mutWallFunction;
|
type mutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,17 +23,17 @@ boundaryField
|
||||||
{
|
{
|
||||||
leftWall
|
leftWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
rightWall
|
rightWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
lowerWall
|
lowerWall
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
atmosphere
|
atmosphere
|
||||||
|
|
|
@ -61,7 +61,7 @@ boundaryField
|
||||||
|
|
||||||
airfoil
|
airfoil
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -61,7 +61,7 @@ boundaryField
|
||||||
|
|
||||||
airfoil
|
airfoil
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
Reference in a new issue