Merge commit 'OpenCFD/master' into olesenm

This commit is contained in:
Mark Olesen
2009-01-23 08:26:50 +01:00
42 changed files with 865 additions and 247 deletions

View File

@ -244,6 +244,23 @@ void Foam::fvPatchField<Type>::write(Ostream& os) const
} }
template<class Type>
template<class EntryType>
void Foam::fvPatchField<Type>::writeEntryIfDifferent
(
Ostream& os,
const word& entryName,
const EntryType& value1,
const EntryType& value2
) const
{
if (value1 != value2)
{
os.writeKeyword(entryName) << value2 << token::END_STATEMENT << nl;
}
}
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
template<class Type> template<class Type>

View File

@ -414,8 +414,21 @@ public:
virtual void manipulateMatrix(fvMatrix<Type>& matrix); virtual void manipulateMatrix(fvMatrix<Type>& matrix);
//- Write // I-O
virtual void write(Ostream&) const;
//- Write
virtual void write(Ostream&) const;
//- Helper function to write the keyword and entry only if the
// values are not equal. The value is then output as value2
template<class EntryType>
void writeEntryIfDifferent
(
Ostream& os,
const word& entryName,
const EntryType& value1,
const EntryType& value2
) const;
// Check // Check

View File

@ -125,6 +125,8 @@ RASModel::RASModel
k0_("k0", dimVelocity*dimVelocity, SMALL), k0_("k0", dimVelocity*dimVelocity, SMALL),
epsilon0_("epsilon", k0_.dimensions()/dimTime, SMALL), epsilon0_("epsilon", k0_.dimensions()/dimTime, SMALL),
epsilonSmall_("epsilonSmall", epsilon0_.dimensions(), SMALL), epsilonSmall_("epsilonSmall", epsilon0_.dimensions(), SMALL),
omega0_("omega", dimless/dimTime, SMALL),
omegaSmall_("omegaSmall", omega0_.dimensions(), SMALL),
y_(mesh_) y_(mesh_)
{} {}
@ -204,6 +206,8 @@ bool RASModel::read()
k0_.readIfPresent(*this); k0_.readIfPresent(*this);
epsilon0_.readIfPresent(*this); epsilon0_.readIfPresent(*this);
epsilonSmall_.readIfPresent(*this); epsilonSmall_.readIfPresent(*this);
omega0_.readIfPresent(*this);
omegaSmall_.readIfPresent(*this);
return true; return true;
} }

View File

@ -80,22 +80,47 @@ protected:
// Protected data // Protected data
//- Turbulence on/off flag
Switch turbulence_; Switch turbulence_;
//- Flag to print the model coeffs at run-time
Switch printCoeffs_; Switch printCoeffs_;
//- Model coefficients dictionary
dictionary coeffDict_; dictionary coeffDict_;
dictionary wallFunctionDict_; // Wall function properties
dimensionedScalar kappa_;
dimensionedScalar E_;
dimensionedScalar Cmu_;
dimensionedScalar Prt_;
//- Wall function dictionary
dictionary wallFunctionDict_;
dimensionedScalar kappa_;
dimensionedScalar E_;
dimensionedScalar Cmu_;
dimensionedScalar Prt_;
//- Value of y+ at the edge of the laminar sublayer
scalar yPlusLam_; scalar yPlusLam_;
//- Lower limit of k
dimensionedScalar k0_; dimensionedScalar k0_;
//- Lower limit of epsilon
dimensionedScalar epsilon0_; dimensionedScalar epsilon0_;
//- Small epsilon value used to avoid divide by zero
dimensionedScalar epsilonSmall_; dimensionedScalar epsilonSmall_;
//- Lower limit for omega
dimensionedScalar omega0_;
//- Small omega value used to avoid divide by zero
dimensionedScalar omegaSmall_;
//- Near wall distance boundary field
nearWallDist y_; nearWallDist y_;
@ -193,6 +218,19 @@ public:
return epsilonSmall_; return epsilonSmall_;
} }
//- Return the value of omega0 which epsilon is not allowed to be
// less than
const dimensionedScalar& omega0() const
{
return omega0_;
}
//- Return the value of omegaSmall which is added to epsilon when
// calculating nut
const dimensionedScalar& omegaSmall() const
{
return omegaSmall_;
}
//- Allow k0 to be changed //- Allow k0 to be changed
dimensionedScalar& k0() dimensionedScalar& k0()
@ -212,6 +250,17 @@ public:
return epsilonSmall_; return epsilonSmall_;
} }
//- Allow omega0 to be changed
dimensionedScalar& omega0()
{
return omega0_;
}
//- Allow omegaSmall to be changed
dimensionedScalar& omegaSmall()
{
return omegaSmall_;
}
//- Return kappa for use in wall-functions //- Return kappa for use in wall-functions
dimensionedScalar kappa() const dimensionedScalar kappa() const

View File

@ -48,7 +48,8 @@ alphatWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF) fixedValueFvPatchScalarField(p, iF),
mutName_("mut")
{} {}
@ -61,7 +62,8 @@ alphatWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper) fixedValueFvPatchScalarField(ptf, p, iF, mapper),
mutName_(ptf.mutName_)
{} {}
@ -73,7 +75,8 @@ alphatWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict) fixedValueFvPatchScalarField(p, iF, dict),
mutName_(dict.lookupOrDefault<word>("mut", "mut"))
{} {}
@ -83,7 +86,8 @@ alphatWallFunctionFvPatchScalarField
const alphatWallFunctionFvPatchScalarField& awfpsf const alphatWallFunctionFvPatchScalarField& awfpsf
) )
: :
fixedValueFvPatchScalarField(awfpsf) fixedValueFvPatchScalarField(awfpsf),
mutName_(awfpsf.mutName_)
{} {}
@ -94,7 +98,8 @@ alphatWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(awfpsf, iF) fixedValueFvPatchScalarField(awfpsf, iF),
mutName_(awfpsf.mutName_)
{} {}
@ -106,7 +111,7 @@ void alphatWallFunctionFvPatchScalarField::updateCoeffs()
const scalar Prt = ras.Prt().value(); const scalar Prt = ras.Prt().value();
const scalarField& mutw = const scalarField& mutw =
patch().lookupPatchField<volScalarField, scalar>("mut"); patch().lookupPatchField<volScalarField, scalar>(mutName_);
operator==(mutw/Prt); operator==(mutw/Prt);
} }
@ -115,6 +120,7 @@ void alphatWallFunctionFvPatchScalarField::updateCoeffs()
void alphatWallFunctionFvPatchScalarField::write(Ostream& os) const void alphatWallFunctionFvPatchScalarField::write(Ostream& os) const
{ {
fvPatchField<scalar>::write(os); fvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "mut", "mut", mutName_);
writeEntry("value", os); writeEntry("value", os);
} }

View File

@ -57,6 +57,11 @@ class alphatWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public fixedValueFvPatchScalarField
{ {
// Private data
//- Name of turbulent viscosity field
word mutName_;
public: public:

View File

@ -64,7 +64,13 @@ epsilonWallFunctionFvPatchScalarField::epsilonWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedInternalValueFvPatchField<scalar>(p, iF) fixedInternalValueFvPatchField<scalar>(p, iF),
UName_("U"),
kName_("k"),
GName_("G"),
rhoName_("rho"),
muName_("mu"),
mutName_("mut")
{ {
checkType(); checkType();
} }
@ -78,7 +84,13 @@ epsilonWallFunctionFvPatchScalarField::epsilonWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedInternalValueFvPatchField<scalar>(ptf, p, iF, mapper) fixedInternalValueFvPatchField<scalar>(ptf, p, iF, mapper),
UName_(ptf.UName_),
kName_(ptf.kName_),
GName_(ptf.GName_),
rhoName_(ptf.rhoName_),
muName_(ptf.muName_),
mutName_(ptf.mutName_)
{ {
checkType(); checkType();
} }
@ -91,7 +103,13 @@ epsilonWallFunctionFvPatchScalarField::epsilonWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedInternalValueFvPatchField<scalar>(p, iF, dict) fixedInternalValueFvPatchField<scalar>(p, iF, dict),
UName_(dict.lookupOrDefault<word>("U", "U")),
kName_(dict.lookupOrDefault<word>("k", "k")),
GName_(dict.lookupOrDefault<word>("G", "G")),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
muName_(dict.lookupOrDefault<word>("mu", "mu")),
mutName_(dict.lookupOrDefault<word>("mut", "mut"))
{ {
checkType(); checkType();
} }
@ -102,7 +120,13 @@ epsilonWallFunctionFvPatchScalarField::epsilonWallFunctionFvPatchScalarField
const epsilonWallFunctionFvPatchScalarField& ewfpsf const epsilonWallFunctionFvPatchScalarField& ewfpsf
) )
: :
fixedInternalValueFvPatchField<scalar>(ewfpsf) fixedInternalValueFvPatchField<scalar>(ewfpsf),
UName_(ewfpsf.UName_),
kName_(ewfpsf.kName_),
GName_(ewfpsf.GName_),
rhoName_(ewfpsf.rhoName_),
muName_(ewfpsf.muName_),
mutName_(ewfpsf.mutName_)
{ {
checkType(); checkType();
} }
@ -114,7 +138,13 @@ epsilonWallFunctionFvPatchScalarField::epsilonWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedInternalValueFvPatchField<scalar>(ewfpsf, iF) fixedInternalValueFvPatchField<scalar>(ewfpsf, iF),
UName_(ewfpsf.UName_),
kName_(ewfpsf.kName_),
GName_(ewfpsf.GName_),
rhoName_(ewfpsf.rhoName_),
muName_(ewfpsf.muName_),
mutName_(ewfpsf.mutName_)
{ {
checkType(); checkType();
} }
@ -135,24 +165,24 @@ void epsilonWallFunctionFvPatchScalarField::updateCoeffs()
const scalarField& y = ras.y()[patch().index()]; const scalarField& y = ras.y()[patch().index()];
volScalarField& G = const_cast<volScalarField&> volScalarField& G = const_cast<volScalarField&>
(db().lookupObject<volScalarField>("G")); (db().lookupObject<volScalarField>(GName_));
volScalarField& epsilon = const_cast<volScalarField&> volScalarField& epsilon = const_cast<volScalarField&>
(db().lookupObject<volScalarField>("epsilon")); (db().lookupObject<volScalarField>(dimensionedInternalField().name()));
const volScalarField& k = db().lookupObject<volScalarField>("k"); const volScalarField& k = db().lookupObject<volScalarField>(kName_);
const scalarField& rhow = const scalarField& rhow =
patch().lookupPatchField<volScalarField, scalar>("rho"); patch().lookupPatchField<volScalarField, scalar>(rhoName_);
const scalarField& muw = const scalarField& muw =
patch().lookupPatchField<volScalarField, scalar>("mu"); patch().lookupPatchField<volScalarField, scalar>(muName_);
const scalarField& mutw = const scalarField& mutw =
patch().lookupPatchField<volScalarField, scalar>("mut"); patch().lookupPatchField<volScalarField, scalar>(mutName_);
const fvPatchVectorField& Uw = const fvPatchVectorField& Uw =
patch().lookupPatchField<volVectorField, vector>("U"); patch().lookupPatchField<volVectorField, vector>(UName_);
const scalarField magGradUw = mag(Uw.snGrad()); const scalarField magGradUw = mag(Uw.snGrad());
@ -197,6 +227,12 @@ void epsilonWallFunctionFvPatchScalarField::evaluate
void epsilonWallFunctionFvPatchScalarField::write(Ostream& os) const void epsilonWallFunctionFvPatchScalarField::write(Ostream& os) const
{ {
fixedInternalValueFvPatchField<scalar>::write(os); fixedInternalValueFvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "k", "k", kName_);
writeEntryIfDifferent<word>(os, "G", "G", GName_);
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
writeEntryIfDifferent<word>(os, "mu", "mu", muName_);
writeEntryIfDifferent<word>(os, "mut", "mut", mutName_);
writeEntry("value", os); writeEntry("value", os);
} }

View File

@ -57,6 +57,26 @@ class epsilonWallFunctionFvPatchScalarField
: :
public fixedInternalValueFvPatchField<scalar> public fixedInternalValueFvPatchField<scalar>
{ {
// Private data
//- Name of velocity field
word UName_;
//- Name of turbulence kinetic energy field
word kName_;
//- Name of turbulence generation field
word GName_;
//- Name of density field
word rhoName_;
//- Name of laminar viscosity field
word muName_;
//- Name of turbulent viscosity field
word mutName_;
// Private member functions // Private member functions

View File

@ -77,6 +77,9 @@ mutRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(p, iF), fixedValueFvPatchScalarField(p, iF),
rhoName_("rho"),
muName_("mu"),
kName_("k"),
Ks_(p.size(), 0.0), Ks_(p.size(), 0.0),
Cs_(p.size(), 0.0) Cs_(p.size(), 0.0)
{} {}
@ -92,6 +95,9 @@ mutRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper), fixedValueFvPatchScalarField(ptf, p, iF, mapper),
rhoName_(ptf.rhoName_),
muName_(ptf.muName_),
kName_(ptf.kName_),
Ks_(ptf.Ks_, mapper), Ks_(ptf.Ks_, mapper),
Cs_(ptf.Cs_, mapper) Cs_(ptf.Cs_, mapper)
{} {}
@ -106,6 +112,9 @@ mutRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(p, iF, dict), fixedValueFvPatchScalarField(p, iF, dict),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
muName_(dict.lookupOrDefault<word>("mu", "mu")),
kName_(dict.lookupOrDefault<word>("k", "k")),
Ks_("Ks", dict, p.size()), Ks_("Ks", dict, p.size()),
Cs_("Cs", dict, p.size()) Cs_("Cs", dict, p.size())
{} {}
@ -114,25 +123,31 @@ mutRoughWallFunctionFvPatchScalarField
mutRoughWallFunctionFvPatchScalarField:: mutRoughWallFunctionFvPatchScalarField::
mutRoughWallFunctionFvPatchScalarField mutRoughWallFunctionFvPatchScalarField
( (
const mutRoughWallFunctionFvPatchScalarField& nrwfpsf const mutRoughWallFunctionFvPatchScalarField& rwfpsf
) )
: :
fixedValueFvPatchScalarField(nrwfpsf), fixedValueFvPatchScalarField(rwfpsf),
Ks_(nrwfpsf.Ks_), rhoName_(rwfpsf.rhoName_),
Cs_(nrwfpsf.Cs_) muName_(rwfpsf.muName_),
kName_(rwfpsf.kName_),
Ks_(rwfpsf.Ks_),
Cs_(rwfpsf.Cs_)
{} {}
mutRoughWallFunctionFvPatchScalarField:: mutRoughWallFunctionFvPatchScalarField::
mutRoughWallFunctionFvPatchScalarField mutRoughWallFunctionFvPatchScalarField
( (
const mutRoughWallFunctionFvPatchScalarField& nrwfpsf, const mutRoughWallFunctionFvPatchScalarField& rwfpsf,
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(nrwfpsf, iF), fixedValueFvPatchScalarField(rwfpsf, iF),
Ks_(nrwfpsf.Ks_), rhoName_(rwfpsf.rhoName_),
Cs_(nrwfpsf.Cs_) muName_(rwfpsf.muName_),
kName_(rwfpsf.kName_),
Ks_(rwfpsf.Ks_),
Cs_(rwfpsf.Cs_)
{} {}
@ -178,12 +193,12 @@ void mutRoughWallFunctionFvPatchScalarField::updateCoeffs()
const scalarField& y = ras.y()[patch().index()]; const scalarField& y = ras.y()[patch().index()];
const scalarField& rhow = const scalarField& rhow =
patch().lookupPatchField<volScalarField, scalar>("rho"); patch().lookupPatchField<volScalarField, scalar>(rhoName_);
const scalarField& k = db().lookupObject<volScalarField>("k"); const scalarField& k = db().lookupObject<volScalarField>(kName_);
const scalarField& muw = const scalarField& muw =
patch().lookupPatchField<volScalarField, scalar>("mu"); patch().lookupPatchField<volScalarField, scalar>(muName_);
scalarField& mutw = *this; scalarField& mutw = *this;
@ -229,6 +244,9 @@ void mutRoughWallFunctionFvPatchScalarField::updateCoeffs()
void mutRoughWallFunctionFvPatchScalarField::write(Ostream& os) const void mutRoughWallFunctionFvPatchScalarField::write(Ostream& os) const
{ {
fvPatchField<scalar>::write(os); fvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
writeEntryIfDifferent<word>(os, "mu", "mu", muName_);
writeEntryIfDifferent<word>(os, "k", "k", kName_);
Cs_.writeEntry("Cs", os); Cs_.writeEntry("Cs", os);
Ks_.writeEntry("Ks", os); Ks_.writeEntry("Ks", os);
writeEntry("value", os); writeEntry("value", os);

View File

@ -64,6 +64,15 @@ class mutRoughWallFunctionFvPatchScalarField
{ {
// Private data // Private data
//- Name of density field
word rhoName_;
//- Name of laminar viscosity field
word muName_;
//- Name of turbulence kinetic energy field
word kName_;
//- Roughness height //- Roughness height
scalarField Ks_; scalarField Ks_;

View File

@ -49,6 +49,9 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(p, iF), fixedValueFvPatchScalarField(p, iF),
UName_("U"),
rhoName_("rho"),
muName_("mu"),
roughnessHeight_(pTraits<scalar>::zero), roughnessHeight_(pTraits<scalar>::zero),
roughnessConstant_(pTraits<scalar>::zero), roughnessConstant_(pTraits<scalar>::zero),
roughnessFudgeFactor_(pTraits<scalar>::zero) roughnessFudgeFactor_(pTraits<scalar>::zero)
@ -65,6 +68,9 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper), fixedValueFvPatchScalarField(ptf, p, iF, mapper),
UName_(ptf.UName_),
rhoName_(ptf.rhoName_),
muName_(ptf.muName_),
roughnessHeight_(ptf.roughnessHeight_), roughnessHeight_(ptf.roughnessHeight_),
roughnessConstant_(ptf.roughnessConstant_), roughnessConstant_(ptf.roughnessConstant_),
roughnessFudgeFactor_(ptf.roughnessFudgeFactor_) roughnessFudgeFactor_(ptf.roughnessFudgeFactor_)
@ -80,6 +86,9 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(p, iF, dict), fixedValueFvPatchScalarField(p, iF, dict),
UName_(dict.lookupOrDefault<word>("U", "U")),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
muName_(dict.lookupOrDefault<word>("mu", "mu")),
roughnessHeight_(readScalar(dict.lookup("roughnessHeight"))), roughnessHeight_(readScalar(dict.lookup("roughnessHeight"))),
roughnessConstant_(readScalar(dict.lookup("roughnessConstant"))), roughnessConstant_(readScalar(dict.lookup("roughnessConstant"))),
roughnessFudgeFactor_(readScalar(dict.lookup("roughnessFudgeFactor"))) roughnessFudgeFactor_(readScalar(dict.lookup("roughnessFudgeFactor")))
@ -89,27 +98,33 @@ mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField:: mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::
mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
( (
const mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField& tppsf const mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField& rwfpsf
) )
: :
fixedValueFvPatchScalarField(tppsf), fixedValueFvPatchScalarField(rwfpsf),
roughnessHeight_(tppsf.roughnessHeight_), UName_(rwfpsf.UName_),
roughnessConstant_(tppsf.roughnessConstant_), rhoName_(rwfpsf.rhoName_),
roughnessFudgeFactor_(tppsf.roughnessFudgeFactor_) muName_(rwfpsf.muName_),
roughnessHeight_(rwfpsf.roughnessHeight_),
roughnessConstant_(rwfpsf.roughnessConstant_),
roughnessFudgeFactor_(rwfpsf.roughnessFudgeFactor_)
{} {}
mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField:: mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::
mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
( (
const mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField& tppsf, const mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField& rwfpsf,
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(tppsf, iF), fixedValueFvPatchScalarField(rwfpsf, iF),
roughnessHeight_(tppsf.roughnessHeight_), UName_(rwfpsf.UName_),
roughnessConstant_(tppsf.roughnessConstant_), rhoName_(rwfpsf.rhoName_),
roughnessFudgeFactor_(tppsf.roughnessFudgeFactor_) muName_(rwfpsf.muName_),
roughnessHeight_(rwfpsf.roughnessHeight_),
roughnessConstant_(rwfpsf.roughnessConstant_),
roughnessFudgeFactor_(rwfpsf.roughnessFudgeFactor_)
{} {}
@ -131,16 +146,16 @@ void mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
const scalarField& ry = patch().deltaCoeffs(); const scalarField& ry = patch().deltaCoeffs();
const fvPatchVectorField& U = const fvPatchVectorField& U =
patch().lookupPatchField<volVectorField, vector>("U"); patch().lookupPatchField<volVectorField, vector>(UName_);
const fvPatchScalarField& rho = const fvPatchScalarField& rho =
patch().lookupPatchField<volScalarField, scalar>("rho"); patch().lookupPatchField<volScalarField, scalar>(rhoName_);
// The flow velocity at the adjacent cell centre. // The flow velocity at the adjacent cell centre.
scalarField magUp = mag(U.patchInternalField() - U); scalarField magUp = mag(U.patchInternalField() - U);
const scalarField& muw = const scalarField& muw =
patch().lookupPatchField<volScalarField, scalar>("mu"); patch().lookupPatchField<volScalarField, scalar>(muName_);
scalarField& mutw = *this; scalarField& mutw = *this;
scalarField magFaceGradU = mag(U.snGrad()); scalarField magFaceGradU = mag(U.snGrad());
@ -172,7 +187,7 @@ void mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
// Enforce the roughnessHeight to be less than the distance to // Enforce the roughnessHeight to be less than the distance to
// the first cell centre. // the first cell centre.
if(dKsPlusdYPlus > 1) if (dKsPlusdYPlus > 1)
{ {
dKsPlusdYPlus = 1; dKsPlusdYPlus = 1;
} }
@ -211,7 +226,7 @@ void mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
} }
scalar denom = 1.0 + log(E* yPlus) - G - yPlusGPrime; scalar denom = 1.0 + log(E* yPlus) - G - yPlusGPrime;
if(mag(denom) > VSMALL) if (mag(denom) > VSMALL)
{ {
yPlus = (kappaRe + yPlus*(1 - yPlusGPrime))/denom; yPlus = (kappaRe + yPlus*(1 - yPlusGPrime))/denom;
if( yPlus < 0 ) if( yPlus < 0 )
@ -288,6 +303,9 @@ void mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::write
) const ) const
{ {
fixedValueFvPatchScalarField::write(os); fixedValueFvPatchScalarField::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
writeEntryIfDifferent<word>(os, "mu", "mu", muName_);
os.writeKeyword("roughnessHeight") os.writeKeyword("roughnessHeight")
<< roughnessHeight_ << token::END_STATEMENT << nl; << roughnessHeight_ << token::END_STATEMENT << nl;
os.writeKeyword("roughnessConstant") os.writeKeyword("roughnessConstant")

View File

@ -58,9 +58,25 @@ class mutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
{ {
// Private data // Private data
scalar roughnessHeight_; //- Name of velocity field
scalar roughnessConstant_; word UName_;
scalar roughnessFudgeFactor_;
//- Name of density field
word rhoName_;
//- Name of laminar viscosity field
word muName_;
// Roughness parameters
//- Height
scalar roughnessHeight_;
//- Constant
scalar roughnessConstant_;
//- Scale factor
scalar roughnessFudgeFactor_;
public: public:
@ -143,38 +159,38 @@ public:
// Access // Access
//- Return the fluctuation scale //- Return the roughness height scale
const scalar& roughnessHeight() const const scalar& roughnessHeight() const
{ {
return roughnessHeight_; return roughnessHeight_;
} }
//- Return reference to the fluctuation scale to allow adjustment //- Return reference to the roughness height to allow adjustment
scalar& roughnessHeight() scalar& roughnessHeight()
{ {
return roughnessHeight_; return roughnessHeight_;
} }
//- Return the roughness constant scale
//- Return the fluctuation scale
const scalar& roughnessConstant() const const scalar& roughnessConstant() const
{ {
return roughnessConstant_; return roughnessConstant_;
} }
//- Return reference to the fluctuation scale to allow adjustment //- Return reference to the roughness constant to allow adjustment
scalar& roughnessConstant() scalar& roughnessConstant()
{ {
return roughnessConstant_; return roughnessConstant_;
} }
//- Return the fluctuation scale //- Return the roughness scale factor
const scalar& roughnessFudgeFactor() const const scalar& roughnessFudgeFactor() const
{ {
return roughnessFudgeFactor_; return roughnessFudgeFactor_;
} }
//- Return reference to the fluctuation scale to allow adjustment //- Return reference to the roughness scale factor to allow
// adjustment
scalar& roughnessFudgeFactor() scalar& roughnessFudgeFactor()
{ {
return roughnessFudgeFactor_; return roughnessFudgeFactor_;

View File

@ -48,7 +48,10 @@ mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF) fixedValueFvPatchScalarField(p, iF),
UName_("U"),
rhoName_("rho"),
muName_("mu")
{} {}
@ -61,7 +64,10 @@ mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper) fixedValueFvPatchScalarField(ptf, p, iF, mapper),
UName_(ptf.UName_),
rhoName_(ptf.rhoName_),
muName_(ptf.muName_)
{} {}
@ -73,28 +79,37 @@ mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict) fixedValueFvPatchScalarField(p, iF, dict),
UName_(dict.lookupOrDefault<word>("U", "U")),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
muName_(dict.lookupOrDefault<word>("mu", "mu"))
{} {}
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField:: mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
( (
const mutSpalartAllmarasStandardWallFunctionFvPatchScalarField& tppsf const mutSpalartAllmarasStandardWallFunctionFvPatchScalarField& rwfpsf
) )
: :
fixedValueFvPatchScalarField(tppsf) fixedValueFvPatchScalarField(rwfpsf),
UName_(rwfpsf.UName_),
rhoName_(rwfpsf.rhoName_),
muName_(rwfpsf.muName_)
{} {}
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField:: mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::
mutSpalartAllmarasStandardWallFunctionFvPatchScalarField mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
( (
const mutSpalartAllmarasStandardWallFunctionFvPatchScalarField& tppsf, const mutSpalartAllmarasStandardWallFunctionFvPatchScalarField& rwfpsf,
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(tppsf, iF) fixedValueFvPatchScalarField(rwfpsf, iF),
UName_(rwfpsf.UName_),
rhoName_(rwfpsf.rhoName_),
muName_(rwfpsf.muName_)
{} {}
@ -114,15 +129,15 @@ void mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::evaluate
const scalarField& ry = patch().deltaCoeffs(); const scalarField& ry = patch().deltaCoeffs();
const fvPatchVectorField& U = const fvPatchVectorField& U =
patch().lookupPatchField<volVectorField, vector>("U"); patch().lookupPatchField<volVectorField, vector>(UName_);
scalarField magUp = mag(U.patchInternalField() - U); scalarField magUp = mag(U.patchInternalField() - U);
const scalarField& rhow = const scalarField& rhow =
patch().lookupPatchField<volScalarField, scalar>("rho"); patch().lookupPatchField<volScalarField, scalar>(rhoName_);
const scalarField& muw = const scalarField& muw =
patch().lookupPatchField<volScalarField, scalar>("mu"); patch().lookupPatchField<volScalarField, scalar>(muName_);
scalarField& mutw = *this; scalarField& mutw = *this;
scalarField magFaceGradU = mag(U.snGrad()); scalarField magFaceGradU = mag(U.snGrad());
@ -158,6 +173,19 @@ void mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::evaluate
} }
void mutSpalartAllmarasStandardWallFunctionFvPatchScalarField::write
(
Ostream& os
) const
{
fvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
writeEntryIfDifferent<word>(os, "mu", "mu", muName_);
writeEntry("value", os);
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makePatchTypeField makePatchTypeField

View File

@ -56,6 +56,17 @@ class mutSpalartAllmarasStandardWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public fixedValueFvPatchScalarField
{ {
// Private data
//- Name of velocity field
word UName_;
//- Name of density field
word rhoName_;
//- Name of laminar viscosity field
word muName_;
public: public:
@ -142,6 +153,9 @@ public:
( (
const Pstream::commsTypes commsType=Pstream::blocking const Pstream::commsTypes commsType=Pstream::blocking
); );
//- Write
virtual void write(Ostream& os) const;
}; };

View File

@ -48,7 +48,10 @@ mutSpalartAllmarasWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF) fixedValueFvPatchScalarField(p, iF),
UName_("U"),
rhoName_("rho"),
muName_("mu")
{} {}
@ -61,7 +64,10 @@ mutSpalartAllmarasWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper) fixedValueFvPatchScalarField(ptf, p, iF, mapper),
UName_(ptf.UName_),
rhoName_(ptf.rhoName_),
muName_(ptf.muName_)
{} {}
@ -73,28 +79,37 @@ mutSpalartAllmarasWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict) fixedValueFvPatchScalarField(p, iF, dict),
UName_(dict.lookupOrDefault<word>("U", "U")),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
muName_(dict.lookupOrDefault<word>("mu", "mu"))
{} {}
mutSpalartAllmarasWallFunctionFvPatchScalarField:: mutSpalartAllmarasWallFunctionFvPatchScalarField::
mutSpalartAllmarasWallFunctionFvPatchScalarField mutSpalartAllmarasWallFunctionFvPatchScalarField
( (
const mutSpalartAllmarasWallFunctionFvPatchScalarField& tppsf const mutSpalartAllmarasWallFunctionFvPatchScalarField& wfpsf
) )
: :
fixedValueFvPatchScalarField(tppsf) fixedValueFvPatchScalarField(wfpsf),
UName_(wfpsf.UName_),
rhoName_(wfpsf.rhoName_),
muName_(wfpsf.muName_)
{} {}
mutSpalartAllmarasWallFunctionFvPatchScalarField:: mutSpalartAllmarasWallFunctionFvPatchScalarField::
mutSpalartAllmarasWallFunctionFvPatchScalarField mutSpalartAllmarasWallFunctionFvPatchScalarField
( (
const mutSpalartAllmarasWallFunctionFvPatchScalarField& tppsf, const mutSpalartAllmarasWallFunctionFvPatchScalarField& wfpsf,
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(tppsf, iF) fixedValueFvPatchScalarField(wfpsf, iF),
UName_(wfpsf.UName_),
rhoName_(wfpsf.rhoName_),
muName_(wfpsf.muName_)
{} {}
@ -113,15 +128,15 @@ void mutSpalartAllmarasWallFunctionFvPatchScalarField::evaluate
const scalarField& ry = patch().deltaCoeffs(); const scalarField& ry = patch().deltaCoeffs();
const fvPatchVectorField& U = const fvPatchVectorField& U =
patch().lookupPatchField<volVectorField, vector>("U"); patch().lookupPatchField<volVectorField, vector>(UName_);
scalarField magUp = mag(U.patchInternalField() - U); scalarField magUp = mag(U.patchInternalField() - U);
const scalarField& rhow = const scalarField& rhow =
patch().lookupPatchField<volScalarField, scalar>("rho"); patch().lookupPatchField<volScalarField, scalar>(rhoName_);
const scalarField& muw = const scalarField& muw =
patch().lookupPatchField<volScalarField, scalar>("mu"); patch().lookupPatchField<volScalarField, scalar>(muName_);
scalarField& mutw = *this; scalarField& mutw = *this;
@ -174,6 +189,19 @@ void mutSpalartAllmarasWallFunctionFvPatchScalarField::evaluate
} }
void mutSpalartAllmarasWallFunctionFvPatchScalarField::write
(
Ostream& os
) const
{
fvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
writeEntryIfDifferent<word>(os, "mu", "mu", muName_);
writeEntry("value", os);
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makePatchTypeField(fvPatchScalarField, mutSpalartAllmarasWallFunctionFvPatchScalarField); makePatchTypeField(fvPatchScalarField, mutSpalartAllmarasWallFunctionFvPatchScalarField);

View File

@ -56,6 +56,18 @@ class mutSpalartAllmarasWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public fixedValueFvPatchScalarField
{ {
// Private data
//- Name of velocity field
word UName_;
//- Name of density field
word rhoName_;
//- Name of laminar viscosity field
word muName_;
public: public:
//- Runtime type information //- Runtime type information
@ -134,6 +146,9 @@ public:
( (
const Pstream::commsTypes commsType=Pstream::blocking const Pstream::commsTypes commsType=Pstream::blocking
); );
//- Write
virtual void write(Ostream& os) const;
}; };

View File

@ -48,7 +48,10 @@ mutWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF) fixedValueFvPatchScalarField(p, iF),
rhoName_("rho"),
muName_("mu"),
kName_("k")
{} {}
@ -61,7 +64,10 @@ mutWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper) fixedValueFvPatchScalarField(ptf, p, iF, mapper),
rhoName_(ptf.rhoName_),
muName_(ptf.muName_),
kName_(ptf.kName_)
{} {}
@ -73,28 +79,37 @@ mutWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict) fixedValueFvPatchScalarField(p, iF, dict),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
muName_(dict.lookupOrDefault<word>("mu", "mu")),
kName_(dict.lookupOrDefault<word>("k", "k"))
{} {}
mutWallFunctionFvPatchScalarField:: mutWallFunctionFvPatchScalarField::
mutWallFunctionFvPatchScalarField mutWallFunctionFvPatchScalarField
( (
const mutWallFunctionFvPatchScalarField& tppsf const mutWallFunctionFvPatchScalarField& wfpsf
) )
: :
fixedValueFvPatchScalarField(tppsf) fixedValueFvPatchScalarField(wfpsf),
rhoName_(wfpsf.rhoName_),
muName_(wfpsf.muName_),
kName_(wfpsf.kName_)
{} {}
mutWallFunctionFvPatchScalarField:: mutWallFunctionFvPatchScalarField::
mutWallFunctionFvPatchScalarField mutWallFunctionFvPatchScalarField
( (
const mutWallFunctionFvPatchScalarField& tppsf, const mutWallFunctionFvPatchScalarField& wfpsf,
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(tppsf, iF) fixedValueFvPatchScalarField(wfpsf, iF),
rhoName_(wfpsf.rhoName_),
muName_(wfpsf.muName_),
kName_(wfpsf.kName_)
{} {}
@ -113,12 +128,12 @@ void mutWallFunctionFvPatchScalarField::updateCoeffs()
const scalarField& y = ras.y()[patch().index()]; const scalarField& y = ras.y()[patch().index()];
const scalarField& rhow = const scalarField& rhow =
patch().lookupPatchField<volScalarField, scalar>("rho"); patch().lookupPatchField<volScalarField, scalar>(rhoName_);
const volScalarField& k = db().lookupObject<volScalarField>("k"); const volScalarField& k = db().lookupObject<volScalarField>(kName_);
const scalarField& muw = const scalarField& muw =
patch().lookupPatchField<volScalarField, scalar>("mu"); patch().lookupPatchField<volScalarField, scalar>(muName_);
scalarField& mutw = *this; scalarField& mutw = *this;
@ -145,6 +160,9 @@ void mutWallFunctionFvPatchScalarField::updateCoeffs()
void mutWallFunctionFvPatchScalarField::write(Ostream& os) const void mutWallFunctionFvPatchScalarField::write(Ostream& os) const
{ {
fvPatchField<scalar>::write(os); fvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
writeEntryIfDifferent<word>(os, "mu", "mu", muName_);
writeEntryIfDifferent<word>(os, "k", "k", kName_);
writeEntry("value", os); writeEntry("value", os);
} }

View File

@ -57,6 +57,17 @@ class mutWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public fixedValueFvPatchScalarField
{ {
// Private data
//- Name of density field
word rhoName_;
//- Name of laminar viscosity field
word muName_;
//- Name of turbulence kinetic energy field
word kName_;
public: public:
@ -138,7 +149,7 @@ public:
// I-O // I-O
//- Write //- Write
void write(Ostream&) const; virtual void write(Ostream&) const;
}; };

View File

@ -64,7 +64,13 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedInternalValueFvPatchField<scalar>(p, iF) fixedInternalValueFvPatchField<scalar>(p, iF),
UName_("U"),
rhoName_("rho"),
kName_("k"),
GName_("G"),
muName_("mu"),
mutName_("mut")
{ {
checkType(); checkType();
} }
@ -78,7 +84,13 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedInternalValueFvPatchField<scalar>(ptf, p, iF, mapper) fixedInternalValueFvPatchField<scalar>(ptf, p, iF, mapper),
UName_(ptf.UName_),
rhoName_(ptf.rhoName_),
kName_(ptf.kName_),
GName_(ptf.GName_),
muName_(ptf.muName_),
mutName_(ptf.mutName_)
{ {
checkType(); checkType();
} }
@ -91,7 +103,13 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedInternalValueFvPatchField<scalar>(p, iF, dict) fixedInternalValueFvPatchField<scalar>(p, iF, dict),
UName_(dict.lookupOrDefault<word>("U", "U")),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
kName_(dict.lookupOrDefault<word>("k", "k")),
GName_(dict.lookupOrDefault<word>("G", "G")),
muName_(dict.lookupOrDefault<word>("mu", "mu")),
mutName_(dict.lookupOrDefault<word>("mut", "mut"))
{ {
checkType(); checkType();
} }
@ -99,10 +117,16 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
( (
const omegaWallFunctionFvPatchScalarField& ewfpsf const omegaWallFunctionFvPatchScalarField& owfpsf
) )
: :
fixedInternalValueFvPatchField<scalar>(ewfpsf) fixedInternalValueFvPatchField<scalar>(owfpsf),
UName_(owfpsf.UName_),
rhoName_(owfpsf.rhoName_),
kName_(owfpsf.kName_),
GName_(owfpsf.GName_),
muName_(owfpsf.muName_),
mutName_(owfpsf.mutName_)
{ {
checkType(); checkType();
} }
@ -110,11 +134,17 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
( (
const omegaWallFunctionFvPatchScalarField& ewfpsf, const omegaWallFunctionFvPatchScalarField& owfpsf,
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedInternalValueFvPatchField<scalar>(ewfpsf, iF) fixedInternalValueFvPatchField<scalar>(owfpsf, iF),
UName_(owfpsf.UName_),
rhoName_(owfpsf.rhoName_),
kName_(owfpsf.kName_),
GName_(owfpsf.GName_),
muName_(owfpsf.muName_),
mutName_(owfpsf.mutName_)
{ {
checkType(); checkType();
} }
@ -135,24 +165,24 @@ void omegaWallFunctionFvPatchScalarField::updateCoeffs()
const scalarField& y = ras.y()[patch().index()]; const scalarField& y = ras.y()[patch().index()];
volScalarField& G = const_cast<volScalarField&> volScalarField& G = const_cast<volScalarField&>
(db().lookupObject<volScalarField>("G")); (db().lookupObject<volScalarField>(GName_));
volScalarField& omega = const_cast<volScalarField&> volScalarField& omega = const_cast<volScalarField&>
(db().lookupObject<volScalarField>("omega")); (db().lookupObject<volScalarField>(dimensionedInternalField().name()));
const scalarField& k = db().lookupObject<volScalarField>("k"); const scalarField& k = db().lookupObject<volScalarField>(kName_);
const scalarField& rhow = const scalarField& rhow =
patch().lookupPatchField<volScalarField, scalar>("rho"); patch().lookupPatchField<volScalarField, scalar>(rhoName_);
const scalarField& muw = const scalarField& muw =
patch().lookupPatchField<volScalarField, scalar>("mu"); patch().lookupPatchField<volScalarField, scalar>(muName_);
const scalarField& mutw = const scalarField& mutw =
patch().lookupPatchField<volScalarField, scalar>("mut"); patch().lookupPatchField<volScalarField, scalar>(mutName_);
const fvPatchVectorField& Uw = const fvPatchVectorField& Uw =
patch().lookupPatchField<volVectorField, vector>("U"); patch().lookupPatchField<volVectorField, vector>(UName_);
const scalarField magGradUw = mag(Uw.snGrad()); const scalarField magGradUw = mag(Uw.snGrad());
@ -188,6 +218,12 @@ void omegaWallFunctionFvPatchScalarField::updateCoeffs()
void omegaWallFunctionFvPatchScalarField::write(Ostream& os) const void omegaWallFunctionFvPatchScalarField::write(Ostream& os) const
{ {
fixedInternalValueFvPatchField<scalar>::write(os); fixedInternalValueFvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
writeEntryIfDifferent<word>(os, "k", "k", kName_);
writeEntryIfDifferent<word>(os, "G", "G", GName_);
writeEntryIfDifferent<word>(os, "mu", "mu", muName_);
writeEntryIfDifferent<word>(os, "mut", "mut", mutName_);
writeEntry("value", os); writeEntry("value", os);
} }

View File

@ -55,6 +55,26 @@ class omegaWallFunctionFvPatchScalarField
: :
public fixedInternalValueFvPatchField<scalar> public fixedInternalValueFvPatchField<scalar>
{ {
// Private data
//- Name of velocity field
word UName_;
//- Name of density field
word rhoName_;
//- Name of turbulence kinetic energy field
word kName_;
//- Name of turbulence generation field
word GName_;
//- Name of laminar viscosity field
word muName_;
//- Name of turbulent viscosity field
word mutName_;
// Private member functions // Private member functions

View File

@ -208,19 +208,6 @@ kOmegaSST::kOmegaSST
) )
), ),
omega0_("omega0", dimless/dimTime, SMALL),
omegaSmall_("omegaSmall", dimless/dimTime, SMALL),
Cmu_
(
dimensioned<scalar>::lookupOrAddToDict
(
"Cmu",
coeffDict_,
0.09
)
),
y_(mesh_), y_(mesh_),
k_ k_
@ -350,7 +337,6 @@ bool kOmegaSST::read()
betaStar_.readIfPresent(coeffDict_); betaStar_.readIfPresent(coeffDict_);
a1_.readIfPresent(coeffDict_); a1_.readIfPresent(coeffDict_);
c1_.readIfPresent(coeffDict_); c1_.readIfPresent(coeffDict_);
Cmu_.readIfPresent(coeffDict_);
return true; return true;
} }

View File

@ -56,7 +56,6 @@ Description
@verbatim @verbatim
kOmegaSST kOmegaSST
{ {
Cmu 0.09;
alphaK1 0.85034; alphaK1 0.85034;
alphaK2 1.0; alphaK2 1.0;
alphaOmega1 0.5; alphaOmega1 0.5;
@ -96,7 +95,7 @@ namespace RASModels
{ {
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
Class kOmega Declaration Class kOmegaSST Declaration
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
class kOmegaSST class kOmegaSST
@ -105,36 +104,38 @@ class kOmegaSST
{ {
// Private data // Private data
dimensionedScalar alphaK1_; // Model coefficients
dimensionedScalar alphaK2_;
dimensionedScalar alphaOmega1_; dimensionedScalar alphaK1_;
dimensionedScalar alphaOmega2_; dimensionedScalar alphaK2_;
dimensionedScalar alphah_; dimensionedScalar alphaOmega1_;
dimensionedScalar alphaOmega2_;
dimensionedScalar gamma1_; dimensionedScalar alphah_;
dimensionedScalar gamma2_;
dimensionedScalar beta1_; dimensionedScalar gamma1_;
dimensionedScalar beta2_; dimensionedScalar gamma2_;
dimensionedScalar betaStar_; dimensionedScalar beta1_;
dimensionedScalar beta2_;
dimensionedScalar a1_; dimensionedScalar betaStar_;
dimensionedScalar c1_;
dimensionedScalar omega0_; dimensionedScalar a1_;
dimensionedScalar omegaSmall_; dimensionedScalar c1_;
dimensionedScalar Cmu_;
//- Wall distance
// Note: different to wall distance in parent RASModel
wallDist y_; wallDist y_;
volScalarField k_; // Fields
volScalarField omega_;
volScalarField mut_; volScalarField k_;
volScalarField alphat_; volScalarField omega_;
volScalarField mut_;
volScalarField alphat_;
// Private member functions // Private member functions

View File

@ -115,6 +115,8 @@ RASModel::RASModel
k0_("k0", dimVelocity*dimVelocity, SMALL), k0_("k0", dimVelocity*dimVelocity, SMALL),
epsilon0_("epsilon", k0_.dimensions()/dimTime, SMALL), epsilon0_("epsilon", k0_.dimensions()/dimTime, SMALL),
epsilonSmall_("epsilonSmall", epsilon0_.dimensions(), SMALL), epsilonSmall_("epsilonSmall", epsilon0_.dimensions(), SMALL),
omega0_("omega0", dimless/dimTime, SMALL),
omegaSmall_("omegaSmall", omega0_.dimensions(), SMALL),
y_(mesh_) y_(mesh_)
{} {}
@ -250,6 +252,8 @@ bool RASModel::read()
k0_.readIfPresent(*this); k0_.readIfPresent(*this);
epsilon0_.readIfPresent(*this); epsilon0_.readIfPresent(*this);
epsilonSmall_.readIfPresent(*this); epsilonSmall_.readIfPresent(*this);
omega0_.readIfPresent(*this);
omegaSmall_.readIfPresent(*this);
return true; return true;
} }

View File

@ -77,21 +77,45 @@ protected:
// Protected data // Protected data
//- Turbulence on/off flag
Switch turbulence_; Switch turbulence_;
//- Flag to print the model coeffs at run-time
Switch printCoeffs_; Switch printCoeffs_;
//- Model coefficients dictionary
dictionary coeffDict_; dictionary coeffDict_;
dictionary wallFunctionDict_; // Wall function properties
dimensionedScalar kappa_;
dimensionedScalar E_;
dimensionedScalar Cmu_;
//- Wall function dictionary
dictionary wallFunctionDict_;
dimensionedScalar kappa_;
dimensionedScalar E_;
dimensionedScalar Cmu_;
//- Value of y+ at the edge of the laminar sublayer
scalar yPlusLam_; scalar yPlusLam_;
//- Lower limit of k
dimensionedScalar k0_; dimensionedScalar k0_;
//- Lower limit of epsilon
dimensionedScalar epsilon0_; dimensionedScalar epsilon0_;
//- Small epsilon value used to avoid divide by zero
dimensionedScalar epsilonSmall_; dimensionedScalar epsilonSmall_;
//- Lower limit for omega
dimensionedScalar omega0_;
//- Small omega value used to avoid divide by zero
dimensionedScalar omegaSmall_;
//- Near wall distance boundary field
nearWallDist y_; nearWallDist y_;
@ -183,6 +207,20 @@ public:
return epsilonSmall_; return epsilonSmall_;
} }
//- Return the value of omega0 which epsilon is not allowed to be
// less than
const dimensionedScalar& omega0() const
{
return omega0_;
}
//- Return the value of omegaSmall which is added to epsilon when
// calculating nut
const dimensionedScalar& omegaSmall() const
{
return omegaSmall_;
}
//- Allow k0 to be changed //- Allow k0 to be changed
dimensionedScalar& k0() dimensionedScalar& k0()
{ {
@ -201,6 +239,18 @@ public:
return epsilonSmall_; return epsilonSmall_;
} }
//- Allow omega0 to be changed
dimensionedScalar& omega0()
{
return omega0_;
}
//- Allow omegaSmall to be changed
dimensionedScalar& omegaSmall()
{
return omegaSmall_;
}
//- Return kappa for use in wall-functions //- Return kappa for use in wall-functions
dimensionedScalar kappa() const dimensionedScalar kappa() const
{ {

View File

@ -64,7 +64,12 @@ epsilonWallFunctionFvPatchScalarField::epsilonWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedInternalValueFvPatchField<scalar>(p, iF) fixedInternalValueFvPatchField<scalar>(p, iF),
UName_("U"),
kName_("k"),
GName_("G"),
nuName_("nu"),
nutName_("nut")
{ {
checkType(); checkType();
} }
@ -78,7 +83,12 @@ epsilonWallFunctionFvPatchScalarField::epsilonWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedInternalValueFvPatchField<scalar>(ptf, p, iF, mapper) fixedInternalValueFvPatchField<scalar>(ptf, p, iF, mapper),
UName_(ptf.UName_),
kName_(ptf.kName_),
GName_(ptf.GName_),
nuName_(ptf.nuName_),
nutName_(ptf.nutName_)
{ {
checkType(); checkType();
} }
@ -91,7 +101,12 @@ epsilonWallFunctionFvPatchScalarField::epsilonWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedInternalValueFvPatchField<scalar>(p, iF, dict) fixedInternalValueFvPatchField<scalar>(p, iF, dict),
UName_(dict.lookupOrDefault<word>("U", "U")),
kName_(dict.lookupOrDefault<word>("k", "k")),
GName_(dict.lookupOrDefault<word>("G", "G")),
nuName_(dict.lookupOrDefault<word>("nu", "nu")),
nutName_(dict.lookupOrDefault<word>("nut", "nut"))
{ {
checkType(); checkType();
} }
@ -102,7 +117,12 @@ epsilonWallFunctionFvPatchScalarField::epsilonWallFunctionFvPatchScalarField
const epsilonWallFunctionFvPatchScalarField& ewfpsf const epsilonWallFunctionFvPatchScalarField& ewfpsf
) )
: :
fixedInternalValueFvPatchField<scalar>(ewfpsf) fixedInternalValueFvPatchField<scalar>(ewfpsf),
UName_(ewfpsf.UName_),
kName_(ewfpsf.kName_),
GName_(ewfpsf.GName_),
nuName_(ewfpsf.nuName_),
nutName_(ewfpsf.nutName_)
{ {
checkType(); checkType();
} }
@ -114,7 +134,12 @@ epsilonWallFunctionFvPatchScalarField::epsilonWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedInternalValueFvPatchField<scalar>(ewfpsf, iF) fixedInternalValueFvPatchField<scalar>(ewfpsf, iF),
UName_(ewfpsf.UName_),
kName_(ewfpsf.kName_),
GName_(ewfpsf.GName_),
nuName_(ewfpsf.nuName_),
nutName_(ewfpsf.nutName_)
{ {
checkType(); checkType();
} }
@ -135,21 +160,21 @@ void epsilonWallFunctionFvPatchScalarField::updateCoeffs()
const scalarField& y = ras.y()[patch().index()]; const scalarField& y = ras.y()[patch().index()];
volScalarField& G = const_cast<volScalarField&> volScalarField& G = const_cast<volScalarField&>
(db().lookupObject<volScalarField>("G")); (db().lookupObject<volScalarField>(GName_));
volScalarField& epsilon = const_cast<volScalarField&> volScalarField& epsilon = const_cast<volScalarField&>
(db().lookupObject<volScalarField>("epsilon")); (db().lookupObject<volScalarField>(dimensionedInternalField().name()));
const volScalarField& k = db().lookupObject<volScalarField>("k"); const volScalarField& k = db().lookupObject<volScalarField>(kName_);
const scalarField& nuw = const scalarField& nuw =
patch().lookupPatchField<volScalarField, scalar>("nu"); patch().lookupPatchField<volScalarField, scalar>(nuName_);
const scalarField& nutw = const scalarField& nutw =
patch().lookupPatchField<volScalarField, scalar>("nut"); patch().lookupPatchField<volScalarField, scalar>(nutName_);
const fvPatchVectorField& Uw = const fvPatchVectorField& Uw =
patch().lookupPatchField<volVectorField, vector>("U"); patch().lookupPatchField<volVectorField, vector>(UName_);
const scalarField magGradUw = mag(Uw.snGrad()); const scalarField magGradUw = mag(Uw.snGrad());
@ -192,6 +217,11 @@ void epsilonWallFunctionFvPatchScalarField::evaluate
void epsilonWallFunctionFvPatchScalarField::write(Ostream& os) const void epsilonWallFunctionFvPatchScalarField::write(Ostream& os) const
{ {
fixedInternalValueFvPatchField<scalar>::write(os); fixedInternalValueFvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "k", "k", kName_);
writeEntryIfDifferent<word>(os, "G", "G", GName_);
writeEntryIfDifferent<word>(os, "nu", "nu", nuName_);
writeEntryIfDifferent<word>(os, "nut", "nut", nutName_);
writeEntry("value", os); writeEntry("value", os);
} }

View File

@ -57,6 +57,23 @@ class epsilonWallFunctionFvPatchScalarField
: :
public fixedInternalValueFvPatchField<scalar> public fixedInternalValueFvPatchField<scalar>
{ {
// Private data
//- Name of velocity field
word UName_;
//- Name of turbulence kinetic energy field
word kName_;
//- Name of turbulence generation field
word GName_;
//- Name of laminar viscosity field
word nuName_;
//- Name of turbulent viscosity field
word nutName_;
// Private member functions // Private member functions

View File

@ -77,6 +77,8 @@ nutRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(p, iF), fixedValueFvPatchScalarField(p, iF),
kName_("k"),
nuName_("nu"),
Ks_(p.size(), 0.0), Ks_(p.size(), 0.0),
Cs_(p.size(), 0.0) Cs_(p.size(), 0.0)
{} {}
@ -92,6 +94,8 @@ nutRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper), fixedValueFvPatchScalarField(ptf, p, iF, mapper),
kName_(ptf.kName_),
nuName_(ptf.nuName_),
Ks_(ptf.Ks_, mapper), Ks_(ptf.Ks_, mapper),
Cs_(ptf.Cs_, mapper) Cs_(ptf.Cs_, mapper)
{} {}
@ -106,6 +110,8 @@ nutRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(p, iF, dict), fixedValueFvPatchScalarField(p, iF, dict),
kName_(dict.lookupOrDefault<word>("k", "k")),
nuName_(dict.lookupOrDefault<word>("nu", "nu")),
Ks_("Ks", dict, p.size()), Ks_("Ks", dict, p.size()),
Cs_("Cs", dict, p.size()) Cs_("Cs", dict, p.size())
{} {}
@ -118,6 +124,8 @@ nutRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(nrwfpsf), fixedValueFvPatchScalarField(nrwfpsf),
kName_(nrwfpsf.kName_),
nuName_(nrwfpsf.nuName_),
Ks_(nrwfpsf.Ks_), Ks_(nrwfpsf.Ks_),
Cs_(nrwfpsf.Cs_) Cs_(nrwfpsf.Cs_)
{} {}
@ -131,6 +139,8 @@ nutRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(nrwfpsf, iF), fixedValueFvPatchScalarField(nrwfpsf, iF),
kName_(nrwfpsf.kName_),
nuName_(nrwfpsf.nuName_),
Ks_(nrwfpsf.Ks_), Ks_(nrwfpsf.Ks_),
Cs_(nrwfpsf.Cs_) Cs_(nrwfpsf.Cs_)
{} {}
@ -177,10 +187,10 @@ void nutRoughWallFunctionFvPatchScalarField::updateCoeffs()
const scalarField& y = ras.y()[patch().index()]; const scalarField& y = ras.y()[patch().index()];
const scalarField& k = db().lookupObject<volScalarField>("k"); const scalarField& k = db().lookupObject<volScalarField>(kName_);
const scalarField& nuw = const scalarField& nuw =
patch().lookupPatchField<volScalarField, scalar>("nu"); patch().lookupPatchField<volScalarField, scalar>(nuName_);
scalarField& nutw = *this; scalarField& nutw = *this;
@ -226,6 +236,8 @@ void nutRoughWallFunctionFvPatchScalarField::updateCoeffs()
void nutRoughWallFunctionFvPatchScalarField::write(Ostream& os) const void nutRoughWallFunctionFvPatchScalarField::write(Ostream& os) const
{ {
fvPatchField<scalar>::write(os); fvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "k", "k", kName_);
writeEntryIfDifferent<word>(os, "nu", "nu", nuName_);
Cs_.writeEntry("Cs", os); Cs_.writeEntry("Cs", os);
Ks_.writeEntry("Ks", os); Ks_.writeEntry("Ks", os);
writeEntry("value", os); writeEntry("value", os);

View File

@ -64,6 +64,12 @@ class nutRoughWallFunctionFvPatchScalarField
{ {
// Private data // Private data
//- Name of turbulence kinetic energy field
word kName_;
//- Name of laminar viscosity field
word nuName_;
//- Roughness height //- Roughness height
scalarField Ks_; scalarField Ks_;

View File

@ -49,6 +49,8 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(p, iF), fixedValueFvPatchScalarField(p, iF),
UName_("U"),
nuName_("nu"),
roughnessHeight_(pTraits<scalar>::zero), roughnessHeight_(pTraits<scalar>::zero),
roughnessConstant_(pTraits<scalar>::zero), roughnessConstant_(pTraits<scalar>::zero),
roughnessFudgeFactor_(pTraits<scalar>::zero) roughnessFudgeFactor_(pTraits<scalar>::zero)
@ -65,6 +67,8 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper), fixedValueFvPatchScalarField(ptf, p, iF, mapper),
UName_(ptf.UName_),
nuName_(ptf.nuName_),
roughnessHeight_(ptf.roughnessHeight_), roughnessHeight_(ptf.roughnessHeight_),
roughnessConstant_(ptf.roughnessConstant_), roughnessConstant_(ptf.roughnessConstant_),
roughnessFudgeFactor_(ptf.roughnessFudgeFactor_) roughnessFudgeFactor_(ptf.roughnessFudgeFactor_)
@ -80,6 +84,8 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(p, iF, dict), fixedValueFvPatchScalarField(p, iF, dict),
UName_(dict.lookupOrDefault<word>("U", "U")),
nuName_(dict.lookupOrDefault<word>("nu", "nu")),
roughnessHeight_(readScalar(dict.lookup("roughnessHeight"))), roughnessHeight_(readScalar(dict.lookup("roughnessHeight"))),
roughnessConstant_(readScalar(dict.lookup("roughnessConstant"))), roughnessConstant_(readScalar(dict.lookup("roughnessConstant"))),
roughnessFudgeFactor_(readScalar(dict.lookup("roughnessFudgeFactor"))) roughnessFudgeFactor_(readScalar(dict.lookup("roughnessFudgeFactor")))
@ -93,6 +99,8 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(tppsf), fixedValueFvPatchScalarField(tppsf),
UName_(tppsf.UName_),
nuName_(tppsf.nuName_),
roughnessHeight_(tppsf.roughnessHeight_), roughnessHeight_(tppsf.roughnessHeight_),
roughnessConstant_(tppsf.roughnessConstant_), roughnessConstant_(tppsf.roughnessConstant_),
roughnessFudgeFactor_(tppsf.roughnessFudgeFactor_) roughnessFudgeFactor_(tppsf.roughnessFudgeFactor_)
@ -107,6 +115,8 @@ nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
) )
: :
fixedValueFvPatchScalarField(tppsf, iF), fixedValueFvPatchScalarField(tppsf, iF),
UName_(tppsf.UName_),
nuName_(tppsf.nuName_),
roughnessHeight_(tppsf.roughnessHeight_), roughnessHeight_(tppsf.roughnessHeight_),
roughnessConstant_(tppsf.roughnessConstant_), roughnessConstant_(tppsf.roughnessConstant_),
roughnessFudgeFactor_(tppsf.roughnessFudgeFactor_) roughnessFudgeFactor_(tppsf.roughnessFudgeFactor_)
@ -130,13 +140,13 @@ void nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::evaluate
const scalarField& ry = patch().deltaCoeffs(); const scalarField& ry = patch().deltaCoeffs();
const fvPatchVectorField& U = const fvPatchVectorField& U =
patch().lookupPatchField<volVectorField, vector>("U"); patch().lookupPatchField<volVectorField, vector>(UName_);
// The flow velocity at the adjacent cell centre. // The flow velocity at the adjacent cell centre.
scalarField magUp = mag(U.patchInternalField() - U); scalarField magUp = mag(U.patchInternalField() - U);
const scalarField& nuw = const scalarField& nuw =
patch().lookupPatchField<volScalarField, scalar>("nu"); patch().lookupPatchField<volScalarField, scalar>(nuName_);
scalarField& nutw = *this; scalarField& nutw = *this;
scalarField magFaceGradU = mag(U.snGrad()); scalarField magFaceGradU = mag(U.snGrad());
@ -276,6 +286,8 @@ void nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField::write
) const ) const
{ {
fixedValueFvPatchScalarField::write(os); fixedValueFvPatchScalarField::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "nu", "nu", nuName_);
os.writeKeyword("roughnessHeight") os.writeKeyword("roughnessHeight")
<< roughnessHeight_ << token::END_STATEMENT << nl; << roughnessHeight_ << token::END_STATEMENT << nl;
os.writeKeyword("roughnessConstant") os.writeKeyword("roughnessConstant")

View File

@ -58,9 +58,22 @@ class nutSpalartAllmarasStandardRoughWallFunctionFvPatchScalarField
{ {
// Private data // Private data
scalar roughnessHeight_; //- Name of velocity field
scalar roughnessConstant_; word UName_;
scalar roughnessFudgeFactor_;
//- Name of laminar viscosity field
word nuName_;
// Roughness model parameters
//- Height
scalar roughnessHeight_;
//- Constant
scalar roughnessConstant_;
//- Scale factor
scalar roughnessFudgeFactor_;
public: public:
@ -143,38 +156,39 @@ public:
// Access // Access
//- Return the fluctuation scale //- Return the roughness height
const scalar& roughnessHeight() const const scalar& roughnessHeight() const
{ {
return roughnessHeight_; return roughnessHeight_;
} }
//- Return reference to the fluctuation scale to allow adjustment //- Return reference to the roughness height to allow adjustment
scalar& roughnessHeight() scalar& roughnessHeight()
{ {
return roughnessHeight_; return roughnessHeight_;
} }
//- Return the fluctuation scale //- Return the roughness constant scale
const scalar& roughnessConstant() const const scalar& roughnessConstant() const
{ {
return roughnessConstant_; return roughnessConstant_;
} }
//- Return reference to the fluctuation scale to allow adjustment //- Return reference to the roughness constant to allow adjustment
scalar& roughnessConstant() scalar& roughnessConstant()
{ {
return roughnessConstant_; return roughnessConstant_;
} }
//- Return the fluctuation scale //- Return the roughness scale factor
const scalar& roughnessFudgeFactor() const const scalar& roughnessFudgeFactor() const
{ {
return roughnessFudgeFactor_; return roughnessFudgeFactor_;
} }
//- Return reference to the fluctuation scale to allow adjustment //- Return reference to the roughness scale factor to allow
// adjustment
scalar& roughnessFudgeFactor() scalar& roughnessFudgeFactor()
{ {
return roughnessFudgeFactor_; return roughnessFudgeFactor_;

View File

@ -48,7 +48,9 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF) fixedValueFvPatchScalarField(p, iF),
UName_("U"),
nuName_("nu")
{} {}
@ -61,7 +63,9 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper) fixedValueFvPatchScalarField(ptf, p, iF, mapper),
UName_(ptf.UName_),
nuName_(ptf.nuName_)
{} {}
@ -73,7 +77,9 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict) fixedValueFvPatchScalarField(p, iF, dict),
UName_(dict.lookupOrDefault<word>("U", "U")),
nuName_(dict.lookupOrDefault<word>("nu", "nu"))
{} {}
@ -83,7 +89,9 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const nutSpalartAllmarasStandardWallFunctionFvPatchScalarField& tppsf const nutSpalartAllmarasStandardWallFunctionFvPatchScalarField& tppsf
) )
: :
fixedValueFvPatchScalarField(tppsf) fixedValueFvPatchScalarField(tppsf),
UName_(tppsf.UName_),
nuName_(tppsf.nuName_)
{} {}
@ -94,7 +102,9 @@ nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(tppsf, iF) fixedValueFvPatchScalarField(tppsf, iF),
UName_(tppsf.UName_),
nuName_(tppsf.nuName_)
{} {}
@ -114,12 +124,12 @@ void nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::evaluate
const scalarField& ry = patch().deltaCoeffs(); const scalarField& ry = patch().deltaCoeffs();
const fvPatchVectorField& U = const fvPatchVectorField& U =
patch().lookupPatchField<volVectorField, vector>("U"); patch().lookupPatchField<volVectorField, vector>(UName_);
scalarField magUp = mag(U.patchInternalField() - U); scalarField magUp = mag(U.patchInternalField() - U);
const scalarField& nuw = const scalarField& nuw =
patch().lookupPatchField<volScalarField, scalar>("nu"); patch().lookupPatchField<volScalarField, scalar>(nuName_);
scalarField& nutw = *this; scalarField& nutw = *this;
scalarField magFaceGradU = mag(U.snGrad()); scalarField magFaceGradU = mag(U.snGrad());
@ -155,6 +165,17 @@ void nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::evaluate
} }
void nutSpalartAllmarasStandardWallFunctionFvPatchScalarField::write
(
Ostream& os
) const
{
fixedValueFvPatchScalarField::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "nu", "nu", nuName_);
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makePatchTypeField makePatchTypeField

View File

@ -58,6 +58,12 @@ class nutSpalartAllmarasStandardWallFunctionFvPatchScalarField
{ {
// Private data // Private data
//- Name of velocity field
word UName_;
//- Name of laminar viscosity field
word nuName_;
public: public:
@ -144,6 +150,9 @@ public:
( (
const Pstream::commsTypes commsType=Pstream::blocking const Pstream::commsTypes commsType=Pstream::blocking
); );
//- Write
virtual void write(Ostream& os) const;
}; };

View File

@ -48,7 +48,9 @@ nutSpalartAllmarasWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF) fixedValueFvPatchScalarField(p, iF),
UName_("U"),
nuName_("nu")
{} {}
@ -61,7 +63,9 @@ nutSpalartAllmarasWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper) fixedValueFvPatchScalarField(ptf, p, iF, mapper),
UName_(ptf.UName_),
nuName_(ptf.nuName_)
{} {}
@ -73,7 +77,9 @@ nutSpalartAllmarasWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict) fixedValueFvPatchScalarField(p, iF, dict),
UName_(dict.lookupOrDefault<word>("U", "U")),
nuName_(dict.lookupOrDefault<word>("nu", "nu"))
{} {}
@ -83,7 +89,9 @@ nutSpalartAllmarasWallFunctionFvPatchScalarField
const nutSpalartAllmarasWallFunctionFvPatchScalarField& tppsf const nutSpalartAllmarasWallFunctionFvPatchScalarField& tppsf
) )
: :
fixedValueFvPatchScalarField(tppsf) fixedValueFvPatchScalarField(tppsf),
UName_(tppsf.UName_),
nuName_(tppsf.nuName_)
{} {}
@ -94,7 +102,9 @@ nutSpalartAllmarasWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(tppsf, iF) fixedValueFvPatchScalarField(tppsf, iF),
UName_(tppsf.UName_),
nuName_(tppsf.nuName_)
{} {}
@ -113,12 +123,12 @@ void nutSpalartAllmarasWallFunctionFvPatchScalarField::evaluate
const scalarField& ry = patch().deltaCoeffs(); const scalarField& ry = patch().deltaCoeffs();
const fvPatchVectorField& U = const fvPatchVectorField& U =
patch().lookupPatchField<volVectorField, vector>("U"); patch().lookupPatchField<volVectorField, vector>(UName_);
scalarField magUp = mag(U.patchInternalField() - U); scalarField magUp = mag(U.patchInternalField() - U);
const scalarField& nuw = const scalarField& nuw =
patch().lookupPatchField<volScalarField, scalar>("nu"); patch().lookupPatchField<volScalarField, scalar>(nuName_);
scalarField& nutw = *this; scalarField& nutw = *this;
@ -167,6 +177,17 @@ void nutSpalartAllmarasWallFunctionFvPatchScalarField::evaluate
} }
void nutSpalartAllmarasWallFunctionFvPatchScalarField::write
(
Ostream& os
) const
{
fixedValueFvPatchScalarField::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "nu", "nu", nuName_);
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makePatchTypeField(fvPatchScalarField, nutSpalartAllmarasWallFunctionFvPatchScalarField); makePatchTypeField(fvPatchScalarField, nutSpalartAllmarasWallFunctionFvPatchScalarField);

View File

@ -58,6 +58,12 @@ class nutSpalartAllmarasWallFunctionFvPatchScalarField
{ {
// Private data // Private data
//- Name of velocity field
word UName_;
//- Name of laminar viscosity field
word nuName_;
public: public:
@ -137,6 +143,9 @@ public:
( (
const Pstream::commsTypes commsType=Pstream::blocking const Pstream::commsTypes commsType=Pstream::blocking
); );
//- Write
virtual void write(Ostream& os) const;
}; };

View File

@ -48,7 +48,9 @@ nutWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(p, iF) fixedValueFvPatchScalarField(p, iF),
kName_("k"),
nuName_("nu")
{} {}
@ -61,7 +63,9 @@ nutWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedValueFvPatchScalarField(ptf, p, iF, mapper) fixedValueFvPatchScalarField(ptf, p, iF, mapper),
kName_(ptf.kName_),
nuName_(ptf.nuName_)
{} {}
@ -73,28 +77,34 @@ nutWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedValueFvPatchScalarField(p, iF, dict) fixedValueFvPatchScalarField(p, iF, dict),
kName_(dict.lookupOrDefault<word>("k", "k")),
nuName_(dict.lookupOrDefault<word>("nu", "nu"))
{} {}
nutWallFunctionFvPatchScalarField:: nutWallFunctionFvPatchScalarField::
nutWallFunctionFvPatchScalarField nutWallFunctionFvPatchScalarField
( (
const nutWallFunctionFvPatchScalarField& tppsf const nutWallFunctionFvPatchScalarField& nwfpsf
) )
: :
fixedValueFvPatchScalarField(tppsf) fixedValueFvPatchScalarField(nwfpsf),
kName_(nwfpsf.kName_),
nuName_(nwfpsf.nuName_)
{} {}
nutWallFunctionFvPatchScalarField:: nutWallFunctionFvPatchScalarField::
nutWallFunctionFvPatchScalarField nutWallFunctionFvPatchScalarField
( (
const nutWallFunctionFvPatchScalarField& tppsf, const nutWallFunctionFvPatchScalarField& nwfpsf,
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedValueFvPatchScalarField(tppsf, iF) fixedValueFvPatchScalarField(nwfpsf, iF),
kName_(nwfpsf.kName_),
nuName_(nwfpsf.nuName_)
{} {}
@ -112,10 +122,10 @@ void nutWallFunctionFvPatchScalarField::updateCoeffs()
const scalarField& y = ras.y()[patch().index()]; const scalarField& y = ras.y()[patch().index()];
const volScalarField& k = db().lookupObject<volScalarField>("k"); const volScalarField& k = db().lookupObject<volScalarField>(kName_);
const scalarField& nuw = const scalarField& nuw =
patch().lookupPatchField<volScalarField, scalar>("nu"); patch().lookupPatchField<volScalarField, scalar>(nuName_);
scalarField& nutw = *this; scalarField& nutw = *this;
@ -140,6 +150,8 @@ void nutWallFunctionFvPatchScalarField::updateCoeffs()
void nutWallFunctionFvPatchScalarField::write(Ostream& os) const void nutWallFunctionFvPatchScalarField::write(Ostream& os) const
{ {
fvPatchField<scalar>::write(os); fvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "k", "k", kName_);
writeEntryIfDifferent<word>(os, "nu", "nu", nuName_);
writeEntry("value", os); writeEntry("value", os);
} }

View File

@ -57,6 +57,14 @@ class nutWallFunctionFvPatchScalarField
: :
public fixedValueFvPatchScalarField public fixedValueFvPatchScalarField
{ {
//Private data
//- Name of turbulence kinetic energy field
word kName_;
//- Name of laminar viscosity field
word nuName_;
public: public:

View File

@ -64,7 +64,12 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedInternalValueFvPatchField<scalar>(p, iF) fixedInternalValueFvPatchField<scalar>(p, iF),
UName_("U"),
kName_("k"),
GName_("G"),
nuName_("nu"),
nutName_("nut")
{ {
checkType(); checkType();
} }
@ -78,7 +83,12 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
) )
: :
fixedInternalValueFvPatchField<scalar>(ptf, p, iF, mapper) fixedInternalValueFvPatchField<scalar>(ptf, p, iF, mapper),
UName_(ptf.UName_),
kName_(ptf.kName_),
GName_(ptf.GName_),
nuName_(ptf.nuName_),
nutName_(ptf.nutName_)
{ {
checkType(); checkType();
} }
@ -91,7 +101,12 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
const dictionary& dict const dictionary& dict
) )
: :
fixedInternalValueFvPatchField<scalar>(p, iF, dict) fixedInternalValueFvPatchField<scalar>(p, iF, dict),
UName_(dict.lookupOrDefault<word>("U", "U")),
kName_(dict.lookupOrDefault<word>("k", "k")),
GName_(dict.lookupOrDefault<word>("G", "G")),
nuName_(dict.lookupOrDefault<word>("nu", "nu")),
nutName_(dict.lookupOrDefault<word>("nut", "nut"))
{ {
checkType(); checkType();
} }
@ -99,10 +114,15 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
( (
const omegaWallFunctionFvPatchScalarField& ewfpsf const omegaWallFunctionFvPatchScalarField& owfpsf
) )
: :
fixedInternalValueFvPatchField<scalar>(ewfpsf) fixedInternalValueFvPatchField<scalar>(owfpsf),
UName_(owfpsf.UName_),
kName_(owfpsf.kName_),
GName_(owfpsf.GName_),
nuName_(owfpsf.nuName_),
nutName_(owfpsf.nutName_)
{ {
checkType(); checkType();
} }
@ -110,11 +130,16 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField
( (
const omegaWallFunctionFvPatchScalarField& ewfpsf, const omegaWallFunctionFvPatchScalarField& owfpsf,
const DimensionedField<scalar, volMesh>& iF const DimensionedField<scalar, volMesh>& iF
) )
: :
fixedInternalValueFvPatchField<scalar>(ewfpsf, iF) fixedInternalValueFvPatchField<scalar>(owfpsf, iF),
UName_(owfpsf.UName_),
kName_(owfpsf.kName_),
GName_(owfpsf.GName_),
nuName_(owfpsf.nuName_),
nutName_(owfpsf.nutName_)
{ {
checkType(); checkType();
} }
@ -135,21 +160,21 @@ void omegaWallFunctionFvPatchScalarField::updateCoeffs()
const scalarField& y = ras.y()[patch().index()]; const scalarField& y = ras.y()[patch().index()];
volScalarField& G = const_cast<volScalarField&> volScalarField& G = const_cast<volScalarField&>
(db().lookupObject<volScalarField>("G")); (db().lookupObject<volScalarField>(GName_));
volScalarField& omega = const_cast<volScalarField&> volScalarField& omega = const_cast<volScalarField&>
(db().lookupObject<volScalarField>("omega")); (db().lookupObject<volScalarField>(dimensionedInternalField().name()));
const scalarField& k = db().lookupObject<volScalarField>("k"); const scalarField& k = db().lookupObject<volScalarField>(kName_);
const scalarField& nuw = const scalarField& nuw =
patch().lookupPatchField<volScalarField, scalar>("nu"); patch().lookupPatchField<volScalarField, scalar>(nuName_);
const scalarField& nutw = const scalarField& nutw =
patch().lookupPatchField<volScalarField, scalar>("nut"); patch().lookupPatchField<volScalarField, scalar>(nutName_);
const fvPatchVectorField& Uw = const fvPatchVectorField& Uw =
patch().lookupPatchField<volVectorField, vector>("U"); patch().lookupPatchField<volVectorField, vector>(UName_);
const scalarField magGradUw = mag(Uw.snGrad()); const scalarField magGradUw = mag(Uw.snGrad());
@ -183,6 +208,11 @@ void omegaWallFunctionFvPatchScalarField::updateCoeffs()
void omegaWallFunctionFvPatchScalarField::write(Ostream& os) const void omegaWallFunctionFvPatchScalarField::write(Ostream& os) const
{ {
fixedInternalValueFvPatchField<scalar>::write(os); fixedInternalValueFvPatchField<scalar>::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "k", "k", kName_);
writeEntryIfDifferent<word>(os, "G", "G", GName_);
writeEntryIfDifferent<word>(os, "nu", "nu", nuName_);
writeEntryIfDifferent<word>(os, "nut", "nut", nutName_);
writeEntry("value", os); writeEntry("value", os);
} }

View File

@ -55,6 +55,23 @@ class omegaWallFunctionFvPatchScalarField
: :
public fixedInternalValueFvPatchField<scalar> public fixedInternalValueFvPatchField<scalar>
{ {
// Private data
//- Name of velocity field
word UName_;
//- Name of turbulence kinetic energy field
word kName_;
//- Name of turbulence generation field
word GName_;
//- Name of laminar viscosity field
word nuName_;
//- Name of turbulent viscosity field
word nutName_;
// Private member functions // Private member functions

View File

@ -101,9 +101,6 @@ kOmega::kOmega
) )
), ),
omega0_("omega0", dimless/dimTime, SMALL),
omegaSmall_("omegaSmall", dimless/dimTime, SMALL),
k_ k_
( (
IOobject IOobject
@ -271,7 +268,7 @@ void kOmega::correct()
// Re-calculate viscosity // Re-calculate viscosity
nut_ == k_/omega_; nut_ == k_/(omega_ + omegaSmall_);
nut_.correctBoundaryConditions(); nut_.correctBoundaryConditions();
} }

View File

@ -90,10 +90,6 @@ class kOmega
dimensionedScalar alphaOmega_; dimensionedScalar alphaOmega_;
dimensionedScalar omega0_;
dimensionedScalar omegaSmall_;
// Fields // Fields
volScalarField k_; volScalarField k_;

View File

@ -198,19 +198,6 @@ kOmegaSST::kOmegaSST
) )
), ),
omega0_("omega0", dimless/dimTime, SMALL),
omegaSmall_("omegaSmall", dimless/dimTime, SMALL),
Cmu_
(
dimensioned<scalar>::lookupOrAddToDict
(
"Cmu",
coeffDict_,
0.09
)
),
y_(mesh_), y_(mesh_),
k_ k_
@ -331,7 +318,6 @@ bool kOmegaSST::read()
betaStar_.readIfPresent(coeffDict_); betaStar_.readIfPresent(coeffDict_);
a1_.readIfPresent(coeffDict_); a1_.readIfPresent(coeffDict_);
c1_.readIfPresent(coeffDict_); c1_.readIfPresent(coeffDict_);
Cmu_.readIfPresent(coeffDict_);
return true; return true;
} }

View File

@ -57,7 +57,6 @@ Description
@verbatim @verbatim
kOmegaSST kOmegaSST
{ {
Cmu 0.09;
alphaK1 0.85034; alphaK1 0.85034;
alphaK2 1.0; alphaK2 1.0;
alphaOmega1 0.5; alphaOmega1 0.5;
@ -103,33 +102,33 @@ class kOmegaSST
{ {
// Private data // Private data
dimensionedScalar alphaK1_; // Model coefficients
dimensionedScalar alphaK2_; dimensionedScalar alphaK1_;
dimensionedScalar alphaK2_;
dimensionedScalar alphaOmega1_; dimensionedScalar alphaOmega1_;
dimensionedScalar alphaOmega2_; dimensionedScalar alphaOmega2_;
dimensionedScalar gamma1_; dimensionedScalar gamma1_;
dimensionedScalar gamma2_; dimensionedScalar gamma2_;
dimensionedScalar beta1_; dimensionedScalar beta1_;
dimensionedScalar beta2_; dimensionedScalar beta2_;
dimensionedScalar betaStar_; dimensionedScalar betaStar_;
dimensionedScalar a1_; dimensionedScalar a1_;
dimensionedScalar c1_; dimensionedScalar c1_;
dimensionedScalar omega0_;
dimensionedScalar omegaSmall_;
dimensionedScalar Cmu_;
//- Wall distance field
// Note: different to wall distance in parent RASModel
wallDist y_; wallDist y_;
volScalarField k_; // Fields
volScalarField omega_;
volScalarField nut_; volScalarField k_;
volScalarField omega_;
volScalarField nut_;
// Private member functions // Private member functions