Vanilla backport

-in turbulenceModels
backported alphat() member function
backported rhoEpsilonEff() memberfunction
backported to constructor sigature to allow derivation of classes
backported member functions for compatibility with FOs
allow mutkWallFunction to work with LES
This commit is contained in:
Henrik Rusche 2017-04-20 08:20:10 +02:00
parent 34d4a30be7
commit 08a7e2e03b
118 changed files with 629 additions and 338 deletions

View file

@ -125,11 +125,6 @@ public:
// Member Functions // Member Functions
tmp<volScalarField> mut() const
{
return mut_;
}
//- Return the effective diffusivity for k //- Return the effective diffusivity for k
tmp<volScalarField> DkEff() const tmp<volScalarField> DkEff() const
{ {
@ -148,6 +143,18 @@ public:
); );
} }
//- Return the turbulence viscosity
virtual tmp<volScalarField> mut() const
{
return mut_;
}
//- Return the turbulence thermal diffusivity
virtual tmp<volScalarField> alphat() const
{
return alphat_;
}
//- Return the effective turbulent thermal diffusivity //- Return the effective turbulent thermal diffusivity
tmp<volScalarField> alphaEff() const tmp<volScalarField> alphaEff() const
{ {

View file

@ -125,7 +125,7 @@ int main(int argc, char *argv[])
// Set all times on processor meshes equal to reconstructed mesh // Set all times on processor meshes equal to reconstructed mesh
forAll (databases, procI) forAll (databases, procI)
{ {
databases[procI].setTime(runTime); databases[procI].setTime(runTime, runTime.timeIndex());
} }
// Read all meshes and addressing to reconstructed mesh // Read all meshes and addressing to reconstructed mesh

View file

@ -132,7 +132,7 @@ int main(int argc, char *argv[])
{ {
Info<< "Reading database for processor " << procI << endl; Info<< "Reading database for processor " << procI << endl;
databases[procI].setTime(runTime.timeName(), runTime.timeIndex()); databases[procI].setTime(runTime, runTime.timeIndex());
} }
// Read all meshes and addressing to reconstructed mesh // Read all meshes and addressing to reconstructed mesh

View file

@ -60,11 +60,13 @@ DeardorffDiffStress::DeardorffDiffStress
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, rho, U, phi, thermoPhysicalModel), LESModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName),
GenSGSStress(rho, U, phi, thermoPhysicalModel), GenSGSStress(rho, U, phi, thermophysicalModel),
ck_ ck_
( (

View file

@ -101,7 +101,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -58,10 +58,11 @@ LESModel::LESModel
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermoPhysicalModel,
const word& turbulenceModelName
) )
: :
turbulenceModel(rho, U, phi, thermoPhysicalModel), turbulenceModel(rho, U, phi, thermoPhysicalModel, turbulenceModelName),
IOdictionary IOdictionary
( (
@ -97,7 +98,8 @@ autoPtr<LESModel> LESModel::New
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermoPhysicalModel,
const word& turbulenceModelName
) )
{ {
word modelName; word modelName;
@ -139,7 +141,10 @@ autoPtr<LESModel> LESModel::New
<< exit(FatalError); << exit(FatalError);
} }
return autoPtr<LESModel>(cstrIter()(rho, U, phi, thermoPhysicalModel)); return autoPtr<LESModel>
(
cstrIter()(rho, U, phi, thermoPhysicalModel, turbulenceModelName)
);
} }
@ -147,6 +152,7 @@ autoPtr<LESModel> LESModel::New
void LESModel::correct(const tmp<volTensorField>&) void LESModel::correct(const tmp<volTensorField>&)
{ {
turbulenceModel::correct();
delta_().correct(); delta_().correct();
} }
@ -159,7 +165,20 @@ void LESModel::correct()
bool LESModel::read() bool LESModel::read()
{ {
if (regIOobject::read()) // Bit of trickery : we are both IOdictionary ('RASProperties') and
// an regIOobject (from the turbulenceModel). Problem is to distinguish
// between the two - we only want to reread the IOdictionary.
bool ok = IOdictionary::readData
(
IOdictionary::readStream
(
IOdictionary::type()
)
);
IOdictionary::close();
if (ok)
{ {
if (const dictionary* dictPtr = subDictPtr(type() + "Coeffs")) if (const dictionary* dictPtr = subDictPtr(type() + "Coeffs"))
{ {

View file

@ -121,9 +121,10 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermoPhysicalModel,
const word& turbulenceModelName
), ),
(rho, U, phi, thermoPhysicalModel) (rho, U, phi, thermoPhysicalModel, turbulenceModelName)
); );
@ -136,19 +137,21 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermoPhysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName
); );
// Selectors // Selectors
//- Return a reference to the selected LES model //- Return a reference to the selected LES model
static autoPtr<compressible::LESModel> New static autoPtr<LESModel> New
( (
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermoPhysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName
); );

View file

@ -68,11 +68,13 @@ Smagorinsky::Smagorinsky
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, rho, U, phi, thermoPhysicalModel), LESModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName),
GenEddyVisc(rho, U, phi, thermoPhysicalModel), GenEddyVisc(rho, U, phi, thermophysicalModel),
ck_ ck_
( (

View file

@ -96,7 +96,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -106,10 +106,12 @@ SpalartAllmaras::SpalartAllmaras
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, rho, U, phi, thermoPhysicalModel), LESModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName),
sigmaNut_ sigmaNut_
( (

View file

@ -111,7 +111,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -90,11 +90,13 @@ dynOneEqEddy::dynOneEqEddy
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, rho, U, phi, thermoPhysicalModel), LESModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName),
GenEddyVisc(rho, U, phi, thermoPhysicalModel), GenEddyVisc(rho, U, phi, thermophysicalModel),
filterPtr_(LESfilter::New(U.mesh(), coeffDict())), filterPtr_(LESfilter::New(U.mesh(), coeffDict())),
filter_(filterPtr_()) filter_(filterPtr_())

View file

@ -107,7 +107,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -63,11 +63,13 @@ lowReOneEqEddy::lowReOneEqEddy
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, rho, U, phi, thermoPhysicalModel), LESModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName),
GenEddyVisc(rho, U, phi, thermoPhysicalModel), GenEddyVisc(rho, U, phi, thermophysicalModel),
ck_ ck_
( (

View file

@ -98,7 +98,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -59,11 +59,13 @@ oneEqEddy::oneEqEddy
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, rho, U, phi, thermoPhysicalModel), LESModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName),
GenEddyVisc(rho, U, phi, thermoPhysicalModel), GenEddyVisc(rho, U, phi, thermophysicalModel),
ck_ ck_
( (

View file

@ -101,7 +101,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -49,10 +49,12 @@ LRR::LRR
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, rho, U, phi, thermophysicalModel), RASModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName),
Cmu_ Cmu_
( (

View file

@ -117,7 +117,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -49,10 +49,12 @@ LaunderGibsonRSTM::LaunderGibsonRSTM
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, rho, U, phi, thermophysicalModel), RASModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName),
Cmu_ Cmu_
( (

View file

@ -126,7 +126,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -65,10 +65,12 @@ LaunderSharmaKE::LaunderSharmaKE
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, rho, U, phi, thermophysicalModel), RASModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName),
Cmu_ Cmu_
( (

View file

@ -110,7 +110,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -58,10 +58,11 @@ RASModel::RASModel
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName
) )
: :
turbulenceModel(rho, U, phi, thermophysicalModel), turbulenceModel(rho, U, phi, thermophysicalModel, turbulenceModelName),
IOdictionary IOdictionary
( (
@ -84,9 +85,7 @@ RASModel::RASModel
epsilonSmall_("epsilonSmall", epsilon0_.dimensions(), SMALL), epsilonSmall_("epsilonSmall", epsilon0_.dimensions(), SMALL),
omega0_("omega0", dimless/dimTime, SMALL), omega0_("omega0", dimless/dimTime, SMALL),
omegaSmall_("omegaSmall", omega0_.dimensions(), SMALL), omegaSmall_("omegaSmall", omega0_.dimensions(), SMALL),
muRatio_(lookupOrDefault<scalar>("muRatio", 1e6)), muRatio_(lookupOrDefault<scalar>("muRatio", 1e6))
y_(mesh_)
{ {
// Force the construction of the mesh deltaCoeffs which may be needed // Force the construction of the mesh deltaCoeffs which may be needed
// for the construction of the derived models and BCs // for the construction of the derived models and BCs
@ -101,7 +100,8 @@ autoPtr<RASModel> RASModel::New
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName
) )
{ {
word modelName; word modelName;
@ -146,26 +146,13 @@ autoPtr<RASModel> RASModel::New
return autoPtr<RASModel> return autoPtr<RASModel>
( (
cstrIter()(rho, U, phi, thermophysicalModel) cstrIter()(rho, U, phi, thermophysicalModel, turbulenceModelName)
); );
} }
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
scalar RASModel::yPlusLam(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<volScalarField> RASModel::muEff() const tmp<volScalarField> RASModel::muEff() const
{ {
tmp<volScalarField> tmuEff tmp<volScalarField> tmuEff
@ -181,50 +168,30 @@ tmp<volScalarField> RASModel::muEff() const
} }
tmp<scalarField> RASModel::yPlus(const label patchNo, const scalar Cmu) const
{
const fvPatch& curPatch = mesh_.boundary()[patchNo];
tmp<scalarField> tYp(new scalarField(curPatch.size()));
scalarField& Yp = tYp();
if (curPatch.isWall())
{
Yp = pow(Cmu, 0.25)
*y_[patchNo]
*sqrt(k()().boundaryField()[patchNo].patchInternalField())
/(
mu().boundaryField()[patchNo].patchInternalField()
/rho_.boundaryField()[patchNo]
);
}
else
{
WarningIn
(
"tmp<scalarField> RASModel::yPlus(const label patchNo) const"
) << "Patch " << patchNo << " is not a wall. Returning null field"
<< nl << endl;
Yp.setSize(0);
}
return tYp;
}
void RASModel::correct() void RASModel::correct()
{ {
if (mesh_.changing()) turbulenceModel::correct();
{
y_.correct();
}
} }
bool RASModel::read() bool RASModel::read()
{ {
if (regIOobject::read()) //if (regIOobject::read())
// Bit of trickery : we are both IOdictionary ('RASProperties') and
// an regIOobject from the turbulenceModel level. Problem is to distinguish
// between the two - we only want to reread the IOdictionary.
bool ok = IOdictionary::readData
(
IOdictionary::readStream
(
IOdictionary::type()
)
);
IOdictionary::close();
if (ok)
{ {
lookup("turbulence") >> turbulence_; lookup("turbulence") >> turbulence_;

View file

@ -88,9 +88,6 @@ protected:
//- Model coefficients dictionary //- Model coefficients dictionary
dictionary coeffDict_; dictionary coeffDict_;
//- Value of y+ at the edge of the laminar sublayer
scalar yPlusLam_;
//- Lower limit of k //- Lower limit of k
dimensionedScalar k0_; dimensionedScalar k0_;
@ -109,9 +106,6 @@ protected:
//- Laminar to turbulent viscosity ratio //- Laminar to turbulent viscosity ratio
scalar muRatio_; scalar muRatio_;
//- Near wall distance boundary field
nearWallDist y_;
// Protected member functions // Protected member functions
@ -148,9 +142,10 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermoPhysicalModel,
const word& turbulenceModelName
), ),
(rho, U, phi, thermoPhysicalModel) (rho, U, phi, thermoPhysicalModel, turbulenceModelName)
); );
#endif #endif
@ -163,19 +158,21 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermoPhysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName
); );
// Selectors // Selectors
//- Return a reference to the selected turbulence model //- Return a reference to the selected turbulence model
static autoPtr<compressible::RASModel> New static autoPtr<RASModel> New
( (
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermoPhysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName
); );
@ -264,15 +261,6 @@ public:
return muRatio_; return muRatio_;
} }
//- Return the near wall distances
const nearWallDist& y() const
{
return y_;
}
//- Calculate y+ at the edge of the laminar sublayer
scalar yPlusLam(const scalar kappa, const scalar E) const;
//- Const access to the coefficients dictionary //- Const access to the coefficients dictionary
const dictionary& coeffDict() const const dictionary& coeffDict() const
{ {
@ -310,13 +298,6 @@ public:
//- Return the source term for the momentum equation //- Return the source term for the momentum equation
virtual tmp<fvVectorMatrix> divDevRhoReff() const = 0; virtual tmp<fvVectorMatrix> divDevRhoReff() const = 0;
//- Return yPlus for the given patch
virtual tmp<scalarField> yPlus
(
const label patchI,
const scalar Cmu
) const;
//- Solve the turbulence equations and correct the turbulence viscosity //- Solve the turbulence equations and correct the turbulence viscosity
virtual void correct() = 0; virtual void correct() = 0;

View file

@ -49,10 +49,12 @@ RNGkEpsilon::RNGkEpsilon
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, rho, U, phi, thermophysicalModel), RASModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName),
Cmu_ Cmu_
( (

View file

@ -106,7 +106,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -109,10 +109,12 @@ SpalartAllmaras::SpalartAllmaras
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, rho, U, phi, thermophysicalModel), RASModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName),
sigmaNut_ sigmaNut_
( (

View file

@ -147,7 +147,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -73,15 +73,16 @@ scalar mutkWallFunctionFvPatchScalarField::calcYPlusLam
tmp<scalarField> mutkWallFunctionFvPatchScalarField::calcMut() const tmp<scalarField> mutkWallFunctionFvPatchScalarField::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 scalarField& y = turbModel.y()[patchi];
const tmp<volScalarField> tk = rasModel.k(); const scalarField& rhow = turbModel.rho().boundaryField()[patchi];
const tmp<volScalarField> tk = turbModel.k();
const volScalarField& k = tk(); const volScalarField& k = tk();
const scalarField& muw = rasModel.mu().boundaryField()[patchI]; const scalarField& muw = turbModel.mu().boundaryField()[patchi];
const scalar Cmu25 = pow(Cmu_, 0.25); 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();
@ -202,18 +203,19 @@ void mutkWallFunctionFvPatchScalarField::updateCoeffs()
tmp<scalarField> mutkWallFunctionFvPatchScalarField::yPlus() const tmp<scalarField> mutkWallFunctionFvPatchScalarField::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 scalarField& y = turbModel.y()[patchi];
const tmp<volScalarField> tk = rasModel.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 = rasModel.mu().boundaryField()[patchI]; const scalarField& muw = turbModel.mu().boundaryField()[patchi];
const scalarField& rhow = rasModel.rho().boundaryField()[patchI]; const scalarField& rhow = turbModel.rho().boundaryField()[patchi];
return pow(Cmu_, 0.25)*y*sqrt(kwc)/(muw/rhow); return pow025(Cmu_)*y*sqrt(kwc)/(muw/rhow);
} }

View file

@ -49,10 +49,12 @@ kEpsilon::kEpsilon
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, rho, U, phi, thermophysicalModel), RASModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName),
Cmu_ Cmu_
( (

View file

@ -102,7 +102,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -117,10 +117,12 @@ kOmegaSST::kOmegaSST
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, rho, U, phi, thermophysicalModel), RASModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName),
alphaK1_ alphaK1_
( (

View file

@ -210,7 +210,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -47,10 +47,12 @@ laminar::laminar
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, rho, U, phi, thermophysicalModel) RASModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName)
{} {}

View file

@ -68,7 +68,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -90,10 +90,12 @@ realizableKE::realizableKE
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, rho, U, phi, thermophysicalModel), RASModel(modelName, rho, U, phi, thermophysicalModel, turbulenceModelName),
Cmu_ Cmu_
( (

View file

@ -123,7 +123,9 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -51,10 +51,11 @@ laminar::laminar
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName
) )
: :
turbulenceModel(rho, U, phi, thermophysicalModel) turbulenceModel(rho, U, phi, thermophysicalModel, turbulenceModelName)
{} {}
@ -65,10 +66,14 @@ autoPtr<laminar> laminar::New
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName
) )
{ {
return autoPtr<laminar>(new laminar(rho, U, phi, thermophysicalModel)); return autoPtr<laminar>
(
new laminar(rho, U, phi, thermophysicalModel, turbulenceModelName)
);
} }
@ -229,7 +234,7 @@ void laminar::correct()
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace incompressible } // End namespace compressible
} // End namespace Foam } // End namespace Foam
// ************************************************************************* // // ************************************************************************* //

View file

@ -66,7 +66,8 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName
); );
@ -78,7 +79,8 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermophysicalModel const basicThermo& thermophysicalModel,
const word& turbulenceModelName = turbulenceModel::typeName
); );
@ -134,7 +136,7 @@ public:
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace incompressible } // End namespace compressible
} // End namespace Foam } // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View file

@ -50,6 +50,7 @@ SourceFiles
#include "surfaceFieldsFwd.H" #include "surfaceFieldsFwd.H"
#include "fvMatricesFwd.H" #include "fvMatricesFwd.H"
#include "basicThermo.H" #include "basicThermo.H"
#include "nearWallDist.H"
#include "autoPtr.H" #include "autoPtr.H"
#include "runTimeSelectionTables.H" #include "runTimeSelectionTables.H"
@ -69,6 +70,8 @@ namespace compressible
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
class turbulenceModel class turbulenceModel
:
public regIOobject
{ {
protected: protected:
@ -84,6 +87,9 @@ protected:
const basicThermo& thermophysicalModel_; const basicThermo& thermophysicalModel_;
//- Near wall distance boundary field
nearWallDist y_;
private: private:
@ -114,9 +120,10 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermoPhysicalModel,
const word& turbulenceModelName
), ),
(rho, U, phi, thermoPhysicalModel) (rho, U, phi, thermoPhysicalModel, turbulenceModelName)
); );
#endif #endif
@ -129,19 +136,21 @@ public:
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermoPhysicalModel,
const word& turbulenceModelName = typeName
); );
// Selectors // Selectors
//- Return a reference to the selected turbulence model //- Return a reference to the selected turbulence model
static autoPtr<compressible::turbulenceModel> New static autoPtr<turbulenceModel> New
( (
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
const basicThermo& thermoPhysicalModel const basicThermo& thermoPhysicalModel,
const word& turbulenceModelName = typeName
); );
@ -176,6 +185,15 @@ public:
return thermophysicalModel_; return thermophysicalModel_;
} }
//- Return the near wall distances
const nearWallDist& y() const
{
return y_;
}
//- Calculate y+ at the edge of the laminar sublayer
scalar yPlusLam(const scalar kappa, const scalar E) const;
//- Return the laminar viscosity //- Return the laminar viscosity
const volScalarField& mu() const const volScalarField& mu() const
{ {
@ -224,6 +242,13 @@ public:
//- Read turbulenceProperties dictionary //- Read turbulenceProperties dictionary
virtual bool read() = 0; virtual bool read() = 0;
//- Default dummy write function
virtual bool writeData(Ostream&) const
{
return true;
}
}; };

View file

@ -55,10 +55,12 @@ DeardorffDiffStress::DeardorffDiffStress
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, U, phi, transport), LESModel(modelName, U, phi, transport, turbulenceModelName),
GenSGSStress(U, phi, transport), GenSGSStress(U, phi, transport),
ck_ ck_

View file

@ -100,7 +100,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -57,10 +57,11 @@ LESModel::LESModel
const word& type, const word& type,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName
) )
: :
turbulenceModel(U, phi, lamTransportModel), turbulenceModel(U, phi, transport, turbulenceModelName),
IOdictionary IOdictionary
( (
@ -69,7 +70,7 @@ LESModel::LESModel
"LESProperties", "LESProperties",
U.time().constant(), U.time().constant(),
U.db(), U.db(),
IOobject::MUST_READ, IOobject::MUST_READ_IF_MODIFIED,
IOobject::NO_WRITE IOobject::NO_WRITE
) )
), ),
@ -94,7 +95,8 @@ autoPtr<LESModel> LESModel::New
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName
) )
{ {
word modelName; word modelName;
@ -110,8 +112,9 @@ autoPtr<LESModel> LESModel::New
"LESProperties", "LESProperties",
U.time().constant(), U.time().constant(),
U.db(), U.db(),
IOobject::MUST_READ, IOobject::MUST_READ_IF_MODIFIED,
IOobject::NO_WRITE IOobject::NO_WRITE,
false
) )
); );
@ -136,7 +139,10 @@ autoPtr<LESModel> LESModel::New
<< exit(FatalError); << exit(FatalError);
} }
return autoPtr<LESModel>(cstrIter()(U, phi, transport)); return autoPtr<LESModel>
(
cstrIter()(U, phi, transport, turbulenceModelName)
);
} }
@ -157,7 +163,22 @@ void LESModel::correct()
bool LESModel::read() bool LESModel::read()
{ {
if (regIOobject::read()) //if (regIOobject::read())
// Bit of trickery : we are both IOdictionary ('RASProperties') and
// an regIOobject from the turbulenceModel level. Problem is to distinguish
// between the two - we only want to reread the IOdictionary.
bool ok = IOdictionary::readData
(
IOdictionary::readStream
(
IOdictionary::type()
)
);
IOdictionary::close();
if (ok)
{ {
if (const dictionary* dictPtr = subDictPtr(type() + "Coeffs")) if (const dictionary* dictPtr = subDictPtr(type() + "Coeffs"))
{ {

View file

@ -120,9 +120,10 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName
), ),
(U, phi, lamTransportModel) (U, phi, transport, turbulenceModelName)
); );
@ -134,7 +135,8 @@ public:
const word& type, const word& type,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName
); );
@ -145,7 +147,8 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName
); );

View file

@ -55,10 +55,12 @@ LRRDiffStress::LRRDiffStress
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, U, phi, transport), LESModel(modelName, U, phi, transport, turbulenceModelName),
GenSGSStress(U, phi, transport), GenSGSStress(U, phi, transport),
ck_ ck_

View file

@ -99,7 +99,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -55,10 +55,12 @@ Smagorinsky::Smagorinsky
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, U, phi, transport), LESModel(modelName, U, phi, transport, turbulenceModelName),
GenEddyVisc(U, phi, transport), GenEddyVisc(U, phi, transport),
ck_ ck_

View file

@ -96,7 +96,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -46,10 +46,12 @@ Smagorinsky2::Smagorinsky2
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, U, phi, transport), LESModel(modelName, U, phi, transport, turbulenceModelName),
Smagorinsky(U, phi, transport), Smagorinsky(U, phi, transport),
cD2_ cD2_

View file

@ -93,7 +93,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -149,10 +149,11 @@ SpalartAllmaras::SpalartAllmaras
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport, transportModel& transport,
const word& turbulenceModelName,
const word& modelName const word& modelName
) )
: :
LESModel(modelName, U, phi, transport), LESModel(modelName, U, phi, transport, turbulenceModelName),
sigmaNut_ sigmaNut_
( (

View file

@ -138,6 +138,7 @@ public:
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport, transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName const word& modelName = typeName
); );

View file

@ -93,10 +93,12 @@ SpalartAllmarasDDES::SpalartAllmarasDDES
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
SpalartAllmaras(U, phi, transport, typeName) SpalartAllmaras(U, phi, transport, turbulenceModelName, modelName)
{} {}

View file

@ -95,7 +95,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -143,10 +143,12 @@ SpalartAllmarasIDDES::SpalartAllmarasIDDES
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
SpalartAllmaras(U, phi, transport, typeName), SpalartAllmaras(U, phi, transport, turbulenceModelName, modelName),
fwStar_ fwStar_
( (

View file

@ -104,7 +104,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -46,10 +46,12 @@ dynMixedSmagorinsky::dynMixedSmagorinsky
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, U, phi, transport), LESModel(modelName, U, phi, transport, turbulenceModelName),
scaleSimilarity(U, phi, transport), scaleSimilarity(U, phi, transport),
dynSmagorinsky(U, phi, transport) dynSmagorinsky(U, phi, transport)
{ {

View file

@ -99,7 +99,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -104,10 +104,12 @@ dynOneEqEddy::dynOneEqEddy
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, U, phi, transport), LESModel(modelName, U, phi, transport, turbulenceModelName),
GenEddyVisc(U, phi, transport), GenEddyVisc(U, phi, transport),
k_ k_

View file

@ -110,7 +110,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -95,10 +95,12 @@ dynSmagorinsky::dynSmagorinsky
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, U, phi, transport), LESModel(modelName, U, phi, transport, turbulenceModelName),
GenEddyVisc(U, phi, transport), GenEddyVisc(U, phi, transport),
k_ k_

View file

@ -119,7 +119,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -121,6 +121,7 @@ kOmegaSSTSAS::kOmegaSSTSAS
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport, transportModel& transport,
const word& turbulenceModelName,
const word& modelName const word& modelName
) )
: :

View file

@ -184,6 +184,7 @@ public:
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport, transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName const word& modelName = typeName
); );

View file

@ -47,10 +47,12 @@ laminar::laminar
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, U, phi, transport) LESModel(modelName, U, phi, transport, turbulenceModelName)
{} {}

View file

@ -76,7 +76,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -95,10 +95,12 @@ locDynOneEqEddy::locDynOneEqEddy
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, U, phi, transport), LESModel(modelName, U, phi, transport, turbulenceModelName),
GenEddyVisc(U, phi, transport), GenEddyVisc(U, phi, transport),
k_ k_

View file

@ -132,7 +132,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -46,10 +46,12 @@ mixedSmagorinsky::mixedSmagorinsky
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, U, phi, transport), LESModel(modelName, U, phi, transport, turbulenceModelName),
scaleSimilarity(U, phi, transport), scaleSimilarity(U, phi, transport),
Smagorinsky(U, phi, transport) Smagorinsky(U, phi, transport)
{ {

View file

@ -99,7 +99,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -56,10 +56,12 @@ oneEqEddy::oneEqEddy
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, U, phi, transport), LESModel(modelName, U, phi, transport, turbulenceModelName),
GenEddyVisc(U, phi, transport), GenEddyVisc(U, phi, transport),
k_ k_

View file

@ -102,7 +102,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -65,10 +65,12 @@ spectEddyVisc::spectEddyVisc
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
LESModel(typeName, U, phi, transport), LESModel(modelName, U, phi, transport, turbulenceModelName),
GenEddyVisc(U, phi, transport), GenEddyVisc(U, phi, transport),

View file

@ -104,7 +104,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -48,10 +48,12 @@ LRR::LRR
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, U, phi, lamTransportModel), RASModel(modelName, U, phi, transport, turbulenceModelName),
Cmu_ Cmu_
( (

View file

@ -109,7 +109,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -48,10 +48,12 @@ LamBremhorstKE::LamBremhorstKE
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, U, phi, lamTransportModel), RASModel(modelName, U, phi, transport, turbulenceModelName),
Cmu_ Cmu_
( (

View file

@ -86,7 +86,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -48,10 +48,12 @@ LaunderGibsonRSTM::LaunderGibsonRSTM
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, U, phi, lamTransportModel), RASModel(modelName, U, phi, transport, turbulenceModelName),
Cmu_ Cmu_
( (

View file

@ -120,7 +120,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -64,10 +64,12 @@ LaunderSharmaKE::LaunderSharmaKE
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, U, phi, lamTransportModel), RASModel(modelName, U, phi, transport, turbulenceModelName),
Cmu_ Cmu_
( (

View file

@ -102,7 +102,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -48,10 +48,12 @@ LienCubicKE::LienCubicKE
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, U, phi, lamTransportModel), RASModel(modelName, U, phi, transport, turbulenceModelName),
C1_ C1_
( (

View file

@ -119,7 +119,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -49,10 +49,12 @@ LienCubicKELowRe::LienCubicKELowRe
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, U, phi, lamTransportModel), RASModel(modelName, U, phi, transport, turbulenceModelName),
C1_ C1_
( (

View file

@ -125,7 +125,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -49,10 +49,12 @@ LienLeschzinerLowRe::LienLeschzinerLowRe
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, U, phi, lamTransportModel), RASModel(modelName, U, phi, transport, turbulenceModelName),
C1_ C1_
( (

View file

@ -95,7 +95,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -47,10 +47,12 @@ NonlinearKEShih::NonlinearKEShih
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, U, phi, lamTransportModel), RASModel(modelName, U, phi, transport, turbulenceModelName),
C1_ C1_
( (

View file

@ -101,7 +101,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -57,10 +57,11 @@ RASModel::RASModel
const word& type, const word& type,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName
) )
: :
turbulenceModel(U, phi, lamTransportModel), turbulenceModel(U, phi, transport, turbulenceModelName),
IOdictionary IOdictionary
( (
@ -69,7 +70,7 @@ RASModel::RASModel
"RASProperties", "RASProperties",
U.time().constant(), U.time().constant(),
U.db(), U.db(),
IOobject::MUST_READ, IOobject::MUST_READ_IF_MODIFIED,
IOobject::NO_WRITE IOobject::NO_WRITE
) )
), ),
@ -83,9 +84,7 @@ RASModel::RASModel
epsilonSmall_("epsilonSmall", epsilon0_.dimensions(), SMALL), epsilonSmall_("epsilonSmall", epsilon0_.dimensions(), SMALL),
omega0_("omega0", dimless/dimTime, SMALL), omega0_("omega0", dimless/dimTime, SMALL),
omegaSmall_("omegaSmall", omega0_.dimensions(), SMALL), omegaSmall_("omegaSmall", omega0_.dimensions(), SMALL),
nuRatio_(lookupOrDefault<scalar>("nuRatio", 1e6)), nuRatio_(lookupOrDefault<scalar>("nuRatio", 1e6))
y_(mesh_)
{ {
// Force the construction of the mesh deltaCoeffs which may be needed // Force the construction of the mesh deltaCoeffs which may be needed
// for the construction of the derived models and BCs // for the construction of the derived models and BCs
@ -99,7 +98,8 @@ autoPtr<RASModel> RASModel::New
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName
) )
{ {
word modelName; word modelName;
@ -141,7 +141,10 @@ autoPtr<RASModel> RASModel::New
<< exit(FatalError); << exit(FatalError);
} }
return autoPtr<RASModel>(cstrIter()(U, phi, transport)); return autoPtr<RASModel>
(
cstrIter()(U, phi, transport, turbulenceModelName)
);
} }
@ -208,17 +211,27 @@ tmp<scalarField> RASModel::yPlus(const label patchNo, const scalar Cmu) const
void RASModel::correct() void RASModel::correct()
{ {
turbulenceModel::correct(); turbulenceModel::correct();
if (turbulence_ && mesh_.changing())
{
y_.correct();
}
} }
bool RASModel::read() bool RASModel::read()
{ {
if (regIOobject::read()) //if (regIOobject::read())
// Bit of trickery : we are both IOdictionary ('RASProperties') and
// an regIOobject from the turbulenceModel level. Problem is to distinguish
// between the two - we only want to reread the IOdictionary.
bool ok = IOdictionary::readData
(
IOdictionary::readStream
(
IOdictionary::type()
)
);
IOdictionary::close();
if (ok)
{ {
lookup("turbulence") >> turbulence_; lookup("turbulence") >> turbulence_;

View file

@ -44,7 +44,6 @@ SourceFiles
#include "incompressible/turbulenceModel/turbulenceModel.H" #include "incompressible/turbulenceModel/turbulenceModel.H"
#include "volFields.H" #include "volFields.H"
#include "surfaceFields.H" #include "surfaceFields.H"
#include "nearWallDist.H"
#include "fvm.H" #include "fvm.H"
#include "fvc.H" #include "fvc.H"
#include "fvMatrices.H" #include "fvMatrices.H"
@ -103,9 +102,6 @@ protected:
//- Laminar to turbulent viscosity ratio //- Laminar to turbulent viscosity ratio
scalar nuRatio_; scalar nuRatio_;
//- Near wall distance boundary field
nearWallDist y_;
// Protected member functions // Protected member functions
@ -140,9 +136,10 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName
), ),
(U, phi, lamTransportModel) (U, phi, transport, turbulenceModelName)
); );
@ -154,18 +151,20 @@ public:
const word& type, const word& type,
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName
); );
// Selectors // Selectors
//- Return a reference to the selected RAS model //- Return a reference to the selected RAS model
static autoPtr<incompressible::RASModel> New static autoPtr<RASModel> New
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName
); );

View file

@ -48,10 +48,12 @@ RNGkEpsilon::RNGkEpsilon
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, U, phi, lamTransportModel), RASModel(modelName, U, phi, transport, turbulenceModelName),
Cmu_ Cmu_
( (

View file

@ -100,7 +100,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -109,10 +109,12 @@ SpalartAllmaras::SpalartAllmaras
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, U, phi, lamTransportModel), RASModel(modelName, U, phi, transport, turbulenceModelName),
sigmaNut_ sigmaNut_
( (

View file

@ -144,7 +144,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -49,10 +49,12 @@ coupledKEpsilon::coupledKEpsilon
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, U, phi, lamTransportModel), RASModel(modelName, U, phi, transport, turbulenceModelName),
Cmu_ Cmu_
( (

View file

@ -102,7 +102,9 @@ public:
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& transport transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
); );

View file

@ -117,10 +117,12 @@ coupledKOmegaSST::coupledKOmegaSST
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
transportModel& lamTransportModel transportModel& transport,
const word& turbulenceModelName,
const word& modelName
) )
: :
RASModel(typeName, U, phi, lamTransportModel), RASModel(modelName, U, phi, transport, turbulenceModelName),
alphaK1_ alphaK1_
( (

Some files were not shown because too many files have changed in this diff Show more