From ce9ea1ca0812d2e76a701d807f232489f341ff1e Mon Sep 17 00:00:00 2001 From: Kutalmis Bercin Date: Wed, 2 Oct 2019 11:39:55 +0100 Subject: [PATCH] ENH: Integrated OpenFOAM.org developments for wall functions OpenFOAM.org commits for src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions were reviewed. The parts of the commits made by OpenFOAM.org removing various code duplications across wall functions were picked up by keeping the remaining functionalities the same. The duplications were mainly due to: - wall function model coefficients - yPlusLam(), checkPatch(), write() methods The duplications were united under the base nutWallFunction. --- .../epsilonWallFunctionFvPatchScalarField.C | 98 +++----------- .../epsilonWallFunctionFvPatchScalarField.H | 30 +---- .../fWallFunctionFvPatchScalarField.C | 120 +++-------------- .../fWallFunctionFvPatchScalarField.H | 44 +------ .../kLowReWallFunctionFvPatchScalarField.C | 111 +++------------- .../kLowReWallFunctionFvPatchScalarField.H | 29 +---- .../kqRWallFunctionFvPatchField.C | 42 +----- .../kqRWallFunctionFvPatchField.H | 10 +- .../nutLowReWallFunctionFvPatchScalarField.H | 4 +- .../nutWallFunctionFvPatchScalarField.C | 17 ++- .../nutWallFunctionFvPatchScalarField.H | 29 ++++- .../nutkRoughWallFunctionFvPatchScalarField.C | 2 +- .../nutkRoughWallFunctionFvPatchScalarField.H | 4 +- .../nutkWallFunctionFvPatchScalarField.C | 2 +- .../nutkWallFunctionFvPatchScalarField.H | 4 +- .../omegaWallFunctionFvPatchScalarField.C | 84 ++---------- .../omegaWallFunctionFvPatchScalarField.H | 33 ++--- .../v2WallFunctionFvPatchScalarField.C | 123 +++--------------- .../v2WallFunctionFvPatchScalarField.H | 44 +------ 19 files changed, 166 insertions(+), 664 deletions(-) diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.C index d530021e8d..b25b812bf6 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.C +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.C @@ -5,7 +5,7 @@ \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2011-2016 OpenFOAM Foundation + | Copyright (C) 2011-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,10 +28,7 @@ License #include "epsilonWallFunctionFvPatchScalarField.H" #include "nutWallFunctionFvPatchScalarField.H" #include "turbulenceModel.H" -#include "fvPatchFieldMapper.H" #include "fvMatrix.H" -#include "volFields.H" -#include "wallFvPatch.H" #include "addToRunTimeSelectionTable.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -40,31 +37,6 @@ Foam::scalar Foam::epsilonWallFunctionFvPatchScalarField::tolerance_ = 1e-5; // * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // -void Foam::epsilonWallFunctionFvPatchScalarField::checkType() -{ - if (!isA(patch())) - { - FatalErrorInFunction - << "Invalid wall function specification" << nl - << " Patch type for patch " << patch().name() - << " must be wall" << nl - << " Current patch type is " << patch().type() << nl << endl - << abort(FatalError); - } -} - - -void Foam::epsilonWallFunctionFvPatchScalarField::writeLocalEntries -( - Ostream& os -) const -{ - os.writeEntry("Cmu", Cmu_); - os.writeEntry("kappa", kappa_); - os.writeEntry("E", E_); -} - - void Foam::epsilonWallFunctionFvPatchScalarField::setMaster() { if (master_ != -1) @@ -213,24 +185,24 @@ void Foam::epsilonWallFunctionFvPatchScalarField::calculate { const label patchi = patch.index(); + const nutWallFunctionFvPatchScalarField& nutw = + nutWallFunctionFvPatchScalarField::nutw(turbModel, patchi); + const scalarField& y = turbModel.y()[patchi]; - const scalar Cmu25 = pow025(Cmu_); - const scalar Cmu75 = pow(Cmu_, 0.75); - - const tmp tk = turbModel.k(); - const volScalarField& k = tk(); - const tmp tnuw = turbModel.nu(patchi); const scalarField& nuw = tnuw(); - const tmp tnutw = turbModel.nut(patchi); - const scalarField& nutw = tnutw(); + const tmp tk = turbModel.k(); + const volScalarField& k = tk(); const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchi]; const scalarField magGradUw(mag(Uw.snGrad())); + const scalar Cmu25 = pow025(nutw.Cmu()); + const scalar Cmu75 = pow(nutw.Cmu(), 0.75); + // Set epsilon and G forAll(nutw, facei) { @@ -241,15 +213,15 @@ void Foam::epsilonWallFunctionFvPatchScalarField::calculate const scalar w = cornerWeights[facei]; // Default high-Re form - scalar epsilonc = w*Cmu75*pow(k[celli], 1.5)/(kappa_*y[facei]); + scalar epsilonc = w*Cmu75*pow(k[celli], 1.5)/(nutw.kappa()*y[facei]); scalar Gc = w *(nutw[facei] + nuw[facei]) *magGradUw[facei] *Cmu25*sqrt(k[celli]) - /(kappa_*y[facei]); + /(nutw.kappa()*y[facei]); - if (lowReCorrection_ && yPlus < yPlusLam_) + if (lowReCorrection_ && yPlus < nutw.yPlusLam()) { epsilonc = w*2.0*k[celli]*nuw[facei]/sqr(y[facei]); Gc = 0; @@ -272,19 +244,13 @@ epsilonWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(p, iF), - Cmu_(0.09), - kappa_(0.41), - E_(9.8), - yPlusLam_(nutWallFunctionFvPatchScalarField::yPlusLam(kappa_, E_)), G_(), epsilon_(), lowReCorrection_(false), initialised_(false), master_(-1), cornerWeights_() -{ - checkType(); -} +{} Foam::epsilonWallFunctionFvPatchScalarField:: @@ -297,19 +263,13 @@ epsilonWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(ptf, p, iF, mapper), - Cmu_(ptf.Cmu_), - kappa_(ptf.kappa_), - E_(ptf.E_), - yPlusLam_(ptf.yPlusLam_), G_(), epsilon_(), lowReCorrection_(ptf.lowReCorrection_), initialised_(false), master_(-1), cornerWeights_() -{ - checkType(); -} +{} Foam::epsilonWallFunctionFvPatchScalarField:: @@ -321,10 +281,6 @@ epsilonWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(p, iF, dict), - Cmu_(dict.lookupOrDefault("Cmu", 0.09)), - kappa_(dict.lookupOrDefault("kappa", 0.41)), - E_(dict.lookupOrDefault("E", 9.8)), - yPlusLam_(nutWallFunctionFvPatchScalarField::yPlusLam(kappa_, E_)), G_(), epsilon_(), lowReCorrection_(dict.lookupOrDefault("lowReCorrection", false)), @@ -332,8 +288,6 @@ epsilonWallFunctionFvPatchScalarField master_(-1), cornerWeights_() { - checkType(); - // Apply zero-gradient condition on start-up this->operator==(patchInternalField()); } @@ -346,19 +300,13 @@ epsilonWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(ewfpsf), - Cmu_(ewfpsf.Cmu_), - kappa_(ewfpsf.kappa_), - E_(ewfpsf.E_), - yPlusLam_(ewfpsf.yPlusLam_), G_(), epsilon_(), lowReCorrection_(ewfpsf.lowReCorrection_), initialised_(false), master_(-1), cornerWeights_() -{ - checkType(); -} +{} Foam::epsilonWallFunctionFvPatchScalarField:: @@ -369,19 +317,13 @@ epsilonWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(ewfpsf, iF), - Cmu_(ewfpsf.Cmu_), - kappa_(ewfpsf.kappa_), - E_(ewfpsf.E_), - yPlusLam_(ewfpsf.yPlusLam_), G_(), epsilon_(), lowReCorrection_(ewfpsf.lowReCorrection_), initialised_(false), master_(-1), cornerWeights_() -{ - checkType(); -} +{} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -582,14 +524,6 @@ void Foam::epsilonWallFunctionFvPatchScalarField::manipulateMatrix } -void Foam::epsilonWallFunctionFvPatchScalarField::write(Ostream& os) const -{ - writeLocalEntries(os); - fixedValueFvPatchField::write(os); - os.writeEntry("lowReCorrection", lowReCorrection_); -} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.H b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.H index 0177a2c398..cab04d5771 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.H +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.H @@ -5,7 +5,7 @@ \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2011-2016 OpenFOAM Foundation + | Copyright (C) 2011-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -47,7 +47,7 @@ Description The low-Re correction is activated by setting the entry \c lowReCorrection to 'on'; in this mode the model switches between laminar and turbulent functions based on the laminar-to-turbulent y+ value - derived from kappa and E. When the \c lowReCorrection is inactive, the + derived from the kappa and E specified in the corresponding nutWallFunction. When the \c lowReCorrection is inactive, the wall function operates in high-Re mode. Usage @@ -103,18 +103,6 @@ protected: //- Tolerance used in weighted calculations static scalar tolerance_; - //- Cmu coefficient - scalar Cmu_; - - //- Von Karman constant - scalar kappa_; - - //- E coefficient - scalar E_; - - //- y+ at the edge of the laminar sublayer - scalar yPlusLam_; - //- Local copy of turbulence G field scalarField G_; @@ -136,12 +124,6 @@ protected: // Protected Member Functions - //- Check the type of the patch - virtual void checkType(); - - //- Write local wall function variables - virtual void writeLocalEntries(Ostream&) const; - //- Set the master patch - master is responsible for updating all // wall function patches virtual void setMaster(); @@ -253,7 +235,7 @@ public: virtual ~epsilonWallFunctionFvPatchScalarField() = default; - // Member functions + // Member Functions // Access @@ -281,12 +263,6 @@ public: fvMatrix& matrix, const scalarField& weights ); - - - // I-O - - //- Write - virtual void write(Ostream&) const; }; diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/fWallFunctions/fWallFunction/fWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/fWallFunctions/fWallFunction/fWallFunctionFvPatchScalarField.C index 624b22bc17..9b4d0e71bd 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/fWallFunctions/fWallFunction/fWallFunctionFvPatchScalarField.C +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/fWallFunctions/fWallFunction/fWallFunctionFvPatchScalarField.C @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2012-2016 OpenFOAM Foundation + | Copyright (C) 2012-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -26,9 +26,7 @@ License \*---------------------------------------------------------------------------*/ #include "fWallFunctionFvPatchScalarField.H" -#include "fvPatchFieldMapper.H" -#include "volFields.H" -#include "wallFvPatch.H" +#include "nutWallFunctionFvPatchScalarField.H" #include "v2f.H" #include "addToRunTimeSelectionTable.H" @@ -39,47 +37,6 @@ namespace Foam namespace RASModels { -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -void fWallFunctionFvPatchScalarField::checkType() -{ - if (!isA(patch())) - { - FatalErrorInFunction - << "Invalid wall function specification" << nl - << " Patch type for patch " << patch().name() - << " must be wall" << nl - << " Current patch type is " << patch().type() << nl << endl - << abort(FatalError); - } -} - - -void fWallFunctionFvPatchScalarField::writeLocalEntries(Ostream& os) const -{ - os.writeEntry("Cmu", Cmu_); - os.writeEntry("kappa", kappa_); - os.writeEntry("E", E_); -} - - -scalar fWallFunctionFvPatchScalarField::yPlusLam -( - const scalar kappa, - const scalar E -) -{ - scalar ypl = 11.0; - - for (int i=0; i<10; i++) - { - ypl = log(max(E*ypl, 1))/kappa; - } - - return ypl; -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField @@ -88,14 +45,8 @@ fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField const DimensionedField& iF ) : - fixedValueFvPatchField(p, iF), - Cmu_(0.09), - kappa_(0.41), - E_(9.8), - yPlusLam_(yPlusLam(kappa_, E_)) -{ - checkType(); -} + fixedValueFvPatchField(p, iF) +{} fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField @@ -106,14 +57,8 @@ fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField const fvPatchFieldMapper& mapper ) : - fixedValueFvPatchField(ptf, p, iF, mapper), - Cmu_(ptf.Cmu_), - kappa_(ptf.kappa_), - E_(ptf.E_), - yPlusLam_(ptf.yPlusLam_) -{ - checkType(); -} + fixedValueFvPatchField(ptf, p, iF, mapper) +{} fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField @@ -123,14 +68,8 @@ fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField const dictionary& dict ) : - fixedValueFvPatchField(p, iF, dict), - Cmu_(dict.lookupOrDefault("Cmu", 0.09)), - kappa_(dict.lookupOrDefault("kappa", 0.41)), - E_(dict.lookupOrDefault("E", 9.8)), - yPlusLam_(yPlusLam(kappa_, E_)) -{ - checkType(); -} + fixedValueFvPatchField(p, iF, dict) +{} fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField @@ -138,14 +77,8 @@ fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField const fWallFunctionFvPatchScalarField& v2wfpsf ) : - fixedValueFvPatchField(v2wfpsf), - Cmu_(v2wfpsf.Cmu_), - kappa_(v2wfpsf.kappa_), - E_(v2wfpsf.E_), - yPlusLam_(v2wfpsf.yPlusLam_) -{ - checkType(); -} + fixedValueFvPatchField(v2wfpsf) +{} fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField @@ -154,14 +87,8 @@ fWallFunctionFvPatchScalarField::fWallFunctionFvPatchScalarField const DimensionedField& iF ) : - fixedValueFvPatchField(v2wfpsf, iF), - Cmu_(v2wfpsf.Cmu_), - kappa_(v2wfpsf.kappa_), - E_(v2wfpsf.E_), - yPlusLam_(v2wfpsf.yPlusLam_) -{ - checkType(); -} + fixedValueFvPatchField(v2wfpsf, iF) +{} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -185,6 +112,9 @@ void fWallFunctionFvPatchScalarField::updateCoeffs() ); const v2fBase& v2fModel = refCast(turbModel); + const nutWallFunctionFvPatchScalarField& nutw = + nutWallFunctionFvPatchScalarField::nutw(turbModel, patchi); + const scalarField& y = turbModel.y()[patchi]; const tmp tk = turbModel.k(); @@ -199,7 +129,7 @@ void fWallFunctionFvPatchScalarField::updateCoeffs() const tmp tnuw = turbModel.nu(patchi); const scalarField& nuw = tnuw(); - const scalar Cmu25 = pow025(Cmu_); + const scalar Cmu25 = pow025(nutw.Cmu()); scalarField& f = *this; @@ -212,7 +142,7 @@ void fWallFunctionFvPatchScalarField::updateCoeffs() scalar yPlus = uTau*y[facei]/nuw[facei]; - if (yPlus > yPlusLam_) + if (yPlus > nutw.yPlusLam()) { scalar N = 6.0; scalar v2c = v2[celli]; @@ -234,22 +164,6 @@ void fWallFunctionFvPatchScalarField::updateCoeffs() } -void fWallFunctionFvPatchScalarField::evaluate -( - const Pstream::commsTypes commsType -) -{ - fixedValueFvPatchField::evaluate(commsType); -} - - -void fWallFunctionFvPatchScalarField::write(Ostream& os) const -{ - writeLocalEntries(os); - fixedValueFvPatchField::write(os); -} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // makePatchTypeField diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/fWallFunctions/fWallFunction/fWallFunctionFvPatchScalarField.H b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/fWallFunctions/fWallFunction/fWallFunctionFvPatchScalarField.H index 61d7d82873..97c61ad3c2 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/fWallFunctions/fWallFunction/fWallFunctionFvPatchScalarField.H +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/fWallFunctions/fWallFunction/fWallFunctionFvPatchScalarField.H @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2012-2016 OpenFOAM Foundation + | Copyright (C) 2012-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -34,7 +34,8 @@ Description function condition for low- and high Reynolds number, turbulent flow cases The model operates in two modes, based on the computed laminar-to-turbulent - switch-over y+ value derived from kappa and E. + switch-over y+ value derived from kappa and E specified in the corresponding + nutWallFunction. Usage \table @@ -80,34 +81,6 @@ class fWallFunctionFvPatchScalarField : public fixedValueFvPatchField { -protected: - - // Protected data - - //- Cmu coefficient - scalar Cmu_; - - //- Von Karman constant - scalar kappa_; - - //- E coefficient - scalar E_; - - //- Y+ at the edge of the laminar sublayer - scalar yPlusLam_; - - - // Protected Member Functions - - //- Check the type of the patch - virtual void checkType(); - - //- Write local wall function variables - virtual void writeLocalEntries(Ostream&) const; - - //- Calculate the Y+ at the edge of the laminar sublayer - scalar yPlusLam(const scalar kappa, const scalar E); - public: @@ -177,21 +150,12 @@ public: } - // Member functions + // Member Functions // Evaluation functions //- Update the coefficients associated with the patch field virtual void updateCoeffs(); - - //- Evaluate the patchField - virtual void evaluate(const Pstream::commsTypes); - - - // I-O - - //- Write - virtual void write(Ostream&) const; }; diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kLowReWallFunction/kLowReWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kLowReWallFunction/kLowReWallFunctionFvPatchScalarField.C index 8ac8da1c19..9546c41f68 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kLowReWallFunction/kLowReWallFunctionFvPatchScalarField.C +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kLowReWallFunction/kLowReWallFunctionFvPatchScalarField.C @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2012-2016 OpenFOAM Foundation + | Copyright (C) 2012-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -26,50 +26,15 @@ License \*---------------------------------------------------------------------------*/ #include "kLowReWallFunctionFvPatchScalarField.H" +#include "nutWallFunctionFvPatchScalarField.H" #include "turbulenceModel.H" -#include "fvPatchFieldMapper.H" -#include "volFields.H" #include "addToRunTimeSelectionTable.H" -#include "wallFvPatch.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -void kLowReWallFunctionFvPatchScalarField::checkType() -{ - if (!isA(patch())) - { - FatalErrorInFunction - << "Invalid wall function specification" << nl - << " Patch type for patch " << patch().name() - << " must be wall" << nl - << " Current patch type is " << patch().type() << nl << endl - << abort(FatalError); - } -} - - -scalar kLowReWallFunctionFvPatchScalarField::yPlusLam -( - const scalar kappa, - const scalar E -) -{ - scalar ypl = 11.0; - - for (int i=0; i<10; i++) - { - ypl = log(max(E*ypl, 1))/kappa; - } - - return ypl; -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // kLowReWallFunctionFvPatchScalarField::kLowReWallFunctionFvPatchScalarField @@ -79,14 +44,8 @@ kLowReWallFunctionFvPatchScalarField::kLowReWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(p, iF), - Cmu_(0.09), - kappa_(0.41), - E_(9.8), - Ceps2_(1.9), - yPlusLam_(yPlusLam(kappa_, E_)) -{ - checkType(); -} + Ceps2_(1.9) +{} kLowReWallFunctionFvPatchScalarField::kLowReWallFunctionFvPatchScalarField @@ -98,14 +57,8 @@ kLowReWallFunctionFvPatchScalarField::kLowReWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(ptf, p, iF, mapper), - Cmu_(ptf.Cmu_), - kappa_(ptf.kappa_), - E_(ptf.E_), - Ceps2_(ptf.Ceps2_), - yPlusLam_(ptf.yPlusLam_) -{ - checkType(); -} + Ceps2_(ptf.Ceps2_) +{} kLowReWallFunctionFvPatchScalarField::kLowReWallFunctionFvPatchScalarField @@ -116,14 +69,8 @@ kLowReWallFunctionFvPatchScalarField::kLowReWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(p, iF, dict), - Cmu_(dict.lookupOrDefault("Cmu", 0.09)), - kappa_(dict.lookupOrDefault("kappa", 0.41)), - E_(dict.lookupOrDefault("E", 9.8)), - Ceps2_(dict.lookupOrDefault("Ceps2", 1.9)), - yPlusLam_(yPlusLam(kappa_, E_)) -{ - checkType(); -} + Ceps2_(dict.lookupOrDefault("Ceps2", 1.9)) +{} kLowReWallFunctionFvPatchScalarField::kLowReWallFunctionFvPatchScalarField @@ -132,14 +79,8 @@ kLowReWallFunctionFvPatchScalarField::kLowReWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(kwfpsf), - Cmu_(kwfpsf.Cmu_), - kappa_(kwfpsf.kappa_), - E_(kwfpsf.E_), - Ceps2_(kwfpsf.Ceps2_), - yPlusLam_(kwfpsf.yPlusLam_) -{ - checkType(); -} + Ceps2_(kwfpsf.Ceps2_) +{} kLowReWallFunctionFvPatchScalarField::kLowReWallFunctionFvPatchScalarField @@ -149,14 +90,8 @@ kLowReWallFunctionFvPatchScalarField::kLowReWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(kwfpsf, iF), - Cmu_(kwfpsf.Cmu_), - kappa_(kwfpsf.kappa_), - E_(kwfpsf.E_), - Ceps2_(kwfpsf.Ceps2_), - yPlusLam_(kwfpsf.yPlusLam_) -{ - checkType(); -} + Ceps2_(kwfpsf.Ceps2_) +{} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -178,6 +113,10 @@ void kLowReWallFunctionFvPatchScalarField::updateCoeffs() internalField().group() ) ); + + const nutWallFunctionFvPatchScalarField& nutw = + nutWallFunctionFvPatchScalarField::nutw(turbModel, patchi); + const scalarField& y = turbModel.y()[patchi]; const tmp tk = turbModel.k(); @@ -186,7 +125,7 @@ void kLowReWallFunctionFvPatchScalarField::updateCoeffs() const tmp tnuw = turbModel.nu(patchi); const scalarField& nuw = tnuw(); - const scalar Cmu25 = pow025(Cmu_); + const scalar Cmu25 = pow025(nutw.Cmu()); scalarField& kw = *this; @@ -199,11 +138,11 @@ void kLowReWallFunctionFvPatchScalarField::updateCoeffs() scalar yPlus = uTau*y[facei]/nuw[facei]; - if (yPlus > yPlusLam_) + if (yPlus > nutw.yPlusLam()) { scalar Ck = -0.416; scalar Bk = 8.366; - kw[facei] = Ck/kappa_*log(yPlus) + Bk; + kw[facei] = Ck/nutw.kappa()*log(yPlus) + Bk; } else { @@ -224,20 +163,8 @@ void kLowReWallFunctionFvPatchScalarField::updateCoeffs() } -void kLowReWallFunctionFvPatchScalarField::evaluate -( - const Pstream::commsTypes commsType -) -{ - fixedValueFvPatchField::evaluate(commsType); -} - - void kLowReWallFunctionFvPatchScalarField::write(Ostream& os) const { - os.writeEntry("Cmu", Cmu_); - os.writeEntry("kappa", kappa_); - os.writeEntry("E", E_); os.writeEntry("Ceps2", Ceps2_); fixedValueFvPatchField::write(os); } diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kLowReWallFunction/kLowReWallFunctionFvPatchScalarField.H b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kLowReWallFunction/kLowReWallFunctionFvPatchScalarField.H index 7a90c7b6a6..58f016c821 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kLowReWallFunction/kLowReWallFunctionFvPatchScalarField.H +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kLowReWallFunction/kLowReWallFunctionFvPatchScalarField.H @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2012-2016 OpenFOAM Foundation + | Copyright (C) 2012-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -34,7 +34,8 @@ Description condition for low- and high-Reynolds number turbulent flow cases. The model operates in two modes, based on the computed laminar-to-turbulent - switch-over y+ value derived from kappa and E. + switch-over y+ value derived from kappa and E specified in the corresponding + nutWallFunction. Usage \table @@ -83,30 +84,9 @@ protected: // Protected data - //- Cmu coefficient - scalar Cmu_; - - //- Von Karman constant - scalar kappa_; - - //- E coefficient - scalar E_; - //- Ceps2 coefficient scalar Ceps2_; - //- Y+ at the edge of the laminar sublayer - scalar yPlusLam_; - - - // Protected Member Functions - - //- Check the type of the patch - virtual void checkType(); - - //- Calculate the Y+ at the edge of the laminar sublayer - scalar yPlusLam(const scalar kappa, const scalar E); - public: @@ -183,9 +163,6 @@ public: //- Update the coefficients associated with the patch field virtual void updateCoeffs(); - //- Evaluate the patchField - virtual void evaluate(const Pstream::commsTypes); - // I-O diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.C index 1d6599a811..0107421349 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.C +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.C @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2011-2015 OpenFOAM Foundation + | Copyright (C) 2011-2015, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -26,27 +26,7 @@ License \*---------------------------------------------------------------------------*/ #include "kqRWallFunctionFvPatchField.H" -#include "fvPatchFieldMapper.H" #include "addToRunTimeSelectionTable.H" -#include "wallFvPatch.H" - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -template -void Foam::kqRWallFunctionFvPatchField::checkType() -{ - if (!isA(this->patch())) - { - FatalErrorInFunction - << "Invalid wall function specification" << nl - << " Patch type for patch " << this->patch().name() - << " must be wall" << nl - << " Current patch type is " << this->patch().type() - << nl << endl - << abort(FatalError); - } -} - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -58,9 +38,7 @@ Foam::kqRWallFunctionFvPatchField::kqRWallFunctionFvPatchField ) : zeroGradientFvPatchField(p, iF) -{ - checkType(); -} +{} template @@ -72,9 +50,7 @@ Foam::kqRWallFunctionFvPatchField::kqRWallFunctionFvPatchField ) : zeroGradientFvPatchField(p, iF, dict) -{ - checkType(); -} +{} template @@ -87,9 +63,7 @@ Foam::kqRWallFunctionFvPatchField::kqRWallFunctionFvPatchField ) : zeroGradientFvPatchField(ptf, p, iF, mapper) -{ - checkType(); -} +{} template @@ -99,9 +73,7 @@ Foam::kqRWallFunctionFvPatchField::kqRWallFunctionFvPatchField ) : zeroGradientFvPatchField(tkqrwfpf) -{ - checkType(); -} +{} template @@ -112,9 +84,7 @@ Foam::kqRWallFunctionFvPatchField::kqRWallFunctionFvPatchField ) : zeroGradientFvPatchField(tkqrwfpf, iF) -{ - checkType(); -} +{} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H index 81eddc3c26..e31256153a 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2011-2017 OpenFOAM Foundation + | Copyright (C) 2011-2017, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -73,12 +73,6 @@ class kqRWallFunctionFvPatchField public zeroGradientFvPatchField { - // Private Member Functions - - //- Check the type of the patch - void checkType(); - - public: //- Runtime type information @@ -148,7 +142,7 @@ public: } - // Member functions + // Member Functions //- Evaluate the patchField virtual void evaluate diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutLowReWallFunction/nutLowReWallFunctionFvPatchScalarField.H b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutLowReWallFunction/nutLowReWallFunctionFvPatchScalarField.H index 3624b0000a..2cecdbdb5d 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutLowReWallFunction/nutLowReWallFunctionFvPatchScalarField.H +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutLowReWallFunction/nutLowReWallFunctionFvPatchScalarField.H @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2011-2016 OpenFOAM Foundation + | Copyright (C) 2011-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -146,7 +146,7 @@ public: } - // Member functions + // Member Functions //- Calculate and return the yPlus at the boundary virtual tmp yPlus() const; diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.C index b2bc4d7a05..4f3912ae1f 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.C +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.C @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2011-2016 OpenFOAM Foundation + | Copyright (C) 2011-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -178,6 +178,21 @@ Foam::nutWallFunctionFvPatchScalarField::nutWallFunctionFvPatchScalarField // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +const Foam::nutWallFunctionFvPatchScalarField& +Foam::nutWallFunctionFvPatchScalarField::nutw +( + const turbulenceModel& turbModel, + const label patchi +) +{ + return + refCast + ( + turbModel.nut()().boundaryField()[patchi] + ); +} + + Foam::scalar Foam::nutWallFunctionFvPatchScalarField::yPlusLam ( const scalar kappa, diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.H b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.H index ee590b87d1..d92f0e79eb 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.H +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.H @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2011-2016 OpenFOAM Foundation + | Copyright (C) 2011-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -172,7 +172,32 @@ public: ); - // Member functions + // Member Functions + + //- Return Cmu + scalar Cmu() const + { + return Cmu_; + } + + //- Return kappa + scalar kappa() const + { + return kappa_; + } + + //- Return E + scalar E() const + { + return E_; + } + + //- Return the nut patchField for the given wall patch + static const nutWallFunctionFvPatchScalarField& nutw + ( + const turbulenceModel& turbModel, + const label patchi + ); //- Calculate the Y+ at the edge of the laminar sublayer static scalar yPlusLam(const scalar kappa, const scalar E); diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.C index 5f15ff8559..5feb46983f 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.C +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.C @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2011-2016 OpenFOAM Foundation + | Copyright (C) 2011-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.H b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.H index 08a3dc1867..4a75cf9312 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.H +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.H @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2011-2016 OpenFOAM Foundation + | Copyright (C) 2011-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -171,7 +171,7 @@ public: } - // Member functions + // Member Functions // Access functions diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.C index adad64b415..aece79fb76 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.C +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.C @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2011-2016 OpenFOAM Foundation + | Copyright (C) 2011-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.H b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.H index db250ceb07..8b8247009f 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.H +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.H @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2011-2016 OpenFOAM Foundation + | Copyright (C) 2011-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -146,7 +146,7 @@ public: } - // Member functions + // Member Functions //- Calculate and return the yPlus at the boundary virtual tmp yPlus() const; diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.C index 61aec1561f..d721fcc677 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.C +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.C @@ -5,7 +5,7 @@ \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2011-2016 OpenFOAM Foundation + | Copyright (C) 2011-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,10 +28,7 @@ License #include "omegaWallFunctionFvPatchScalarField.H" #include "nutWallFunctionFvPatchScalarField.H" #include "turbulenceModel.H" -#include "fvPatchFieldMapper.H" #include "fvMatrix.H" -#include "volFields.H" -#include "wallFvPatch.H" #include "addToRunTimeSelectionTable.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -45,30 +42,6 @@ scalar omegaWallFunctionFvPatchScalarField::tolerance_ = 1e-5; // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // -void omegaWallFunctionFvPatchScalarField::checkType() -{ - if (!isA(patch())) - { - FatalErrorInFunction - << "Invalid wall function specification" << nl - << " Patch type for patch " << patch().name() - << " must be wall" << nl - << " Current patch type is " << patch().type() << nl << endl - << abort(FatalError); - } -} - - -void omegaWallFunctionFvPatchScalarField::writeLocalEntries(Ostream& os) const -{ - os.writeEntry("Cmu", Cmu_); - os.writeEntry("kappa", kappa_); - os.writeEntry("E", E_); - os.writeEntry("beta1", beta1_); - os.writeEntry("blended", blended_); -} - - void omegaWallFunctionFvPatchScalarField::setMaster() { if (master_ != -1) @@ -218,9 +191,12 @@ void omegaWallFunctionFvPatchScalarField::calculate { const label patchi = patch.index(); + const nutWallFunctionFvPatchScalarField& nutw = + nutWallFunctionFvPatchScalarField::nutw(turbModel, patchi); + const scalarField& y = turbModel.y()[patchi]; - const scalar Cmu25 = pow025(Cmu_); + const scalar Cmu25 = pow025(nutw.Cmu()); const tmp tk = turbModel.k(); const volScalarField& k = tk(); @@ -228,9 +204,6 @@ void omegaWallFunctionFvPatchScalarField::calculate const tmp tnuw = turbModel.nu(patchi); const scalarField& nuw = tnuw(); - const tmp tnutw = turbModel.nut(patchi); - const scalarField& nutw = tnutw(); - const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchi]; const scalarField magGradUw(mag(Uw.snGrad())); @@ -245,7 +218,7 @@ void omegaWallFunctionFvPatchScalarField::calculate const scalar w = cornerWeights[facei]; const scalar omegaVis = 6*nuw[facei]/(beta1_*sqr(y[facei])); - const scalar omegaLog = sqrt(k[celli])/(Cmu25*kappa_*y[facei]); + const scalar omegaLog = sqrt(k[celli])/(Cmu25*nutw.kappa()*y[facei]); // Switching between the laminar sub-layer and the log-region rather // than blending has been found to provide more accurate results over a @@ -264,7 +237,7 @@ void omegaWallFunctionFvPatchScalarField::calculate } else { - if (yPlus > yPlusLam_) + if (yPlus > nutw.yPlusLam()) { omega0[celli] += w*omegaLog; } @@ -282,7 +255,7 @@ void omegaWallFunctionFvPatchScalarField::calculate *(nutw[facei] + nuw[facei]) *magGradUw[facei] *Cmu25*sqrt(k[celli]) - /(kappa_*y[facei]); + /(nutw.kappa()*y[facei]); } } } @@ -297,20 +270,14 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(p, iF), - Cmu_(0.09), - kappa_(0.41), - E_(9.8), beta1_(0.075), blended_(true), - yPlusLam_(nutWallFunctionFvPatchScalarField::yPlusLam(kappa_, E_)), G_(), omega_(), initialised_(false), master_(-1), cornerWeights_() -{ - checkType(); -} +{} omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField @@ -322,20 +289,14 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(ptf, p, iF, mapper), - Cmu_(ptf.Cmu_), - kappa_(ptf.kappa_), - E_(ptf.E_), beta1_(ptf.beta1_), blended_(ptf.blended_), - yPlusLam_(ptf.yPlusLam_), G_(), omega_(), initialised_(false), master_(-1), cornerWeights_() -{ - checkType(); -} +{} omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField @@ -346,20 +307,14 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(p, iF, dict), - Cmu_(dict.lookupOrDefault("Cmu", 0.09)), - kappa_(dict.lookupOrDefault("kappa", 0.41)), - E_(dict.lookupOrDefault("E", 9.8)), beta1_(dict.lookupOrDefault("beta1", 0.075)), blended_(dict.lookupOrDefault("blended", true)), - yPlusLam_(nutWallFunctionFvPatchScalarField::yPlusLam(kappa_, E_)), G_(), omega_(), initialised_(false), master_(-1), cornerWeights_() { - checkType(); - // apply zero-gradient condition on start-up this->operator==(patchInternalField()); } @@ -371,20 +326,14 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(owfpsf), - Cmu_(owfpsf.Cmu_), - kappa_(owfpsf.kappa_), - E_(owfpsf.E_), beta1_(owfpsf.beta1_), blended_(owfpsf.blended_), - yPlusLam_(owfpsf.yPlusLam_), G_(), omega_(), initialised_(false), master_(-1), cornerWeights_() -{ - checkType(); -} +{} omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField @@ -394,20 +343,14 @@ omegaWallFunctionFvPatchScalarField::omegaWallFunctionFvPatchScalarField ) : fixedValueFvPatchField(owfpsf, iF), - Cmu_(owfpsf.Cmu_), - kappa_(owfpsf.kappa_), - E_(owfpsf.E_), beta1_(owfpsf.beta1_), blended_(owfpsf.blended_), - yPlusLam_(owfpsf.yPlusLam_), G_(), omega_(), initialised_(false), master_(-1), cornerWeights_() -{ - checkType(); -} +{} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -607,7 +550,8 @@ void omegaWallFunctionFvPatchScalarField::manipulateMatrix void omegaWallFunctionFvPatchScalarField::write(Ostream& os) const { - writeLocalEntries(os); + os.writeEntry("beta1", beta1_); + os.writeEntry("blended", blended_); fixedValueFvPatchField::write(os); } diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.H b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.H index 842bead645..a053dafc71 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.H +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.H @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2011-2016 OpenFOAM Foundation + | Copyright (C) 2011-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -56,11 +56,12 @@ Description \endverbatim or switched between these values based on the laminar-to-turbulent y+ value - derived from kappa and E. Recent tests have shown that the standard - switching method provides more accurate results for 10 < y+ < 30 when used - with high Reynolds number wall-functions and both methods provide accurate - results when used with continuous wall-functions. Based on this the - standard switching method is used by default. + derived from kappa and E specified in the corresponding nutWallFunction. + Recent tests have shown that the standard switching method provides more + accurate results for 10 < y+ < 30 when used with high Reynolds number + wall-functions and both methods provide accurate results when used with + continuous wall-functions. Based on this the standard switching method is + used by default. Usage \table @@ -116,24 +117,12 @@ protected: //- Tolerance used in weighted calculations static scalar tolerance_; - //- Cmu coefficient - scalar Cmu_; - - //- Von Karman constant - scalar kappa_; - - //- E coefficient - scalar E_; - //- beta1 coefficient scalar beta1_; //- beta1 coefficient Switch blended_; - //- y+ at the edge of the laminar sublayer - scalar yPlusLam_; - //- Local copy of turbulence G field scalarField G_; @@ -152,12 +141,6 @@ protected: // Protected Member Functions - //- Check the type of the patch - virtual void checkType(); - - //- Write local wall function variables - virtual void writeLocalEntries(Ostream&) const; - //- Set the master patch - master is responsible for updating all // wall function patches virtual void setMaster(); @@ -266,7 +249,7 @@ public: } - // Member functions + // Member Functions // Access diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/v2WallFunctions/v2WallFunction/v2WallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/v2WallFunctions/v2WallFunction/v2WallFunctionFvPatchScalarField.C index 1b1e59eb2a..325609fd2c 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/v2WallFunctions/v2WallFunction/v2WallFunctionFvPatchScalarField.C +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/v2WallFunctions/v2WallFunction/v2WallFunctionFvPatchScalarField.C @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2012-2016 OpenFOAM Foundation + | Copyright (C) 2012-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -26,11 +26,9 @@ License \*---------------------------------------------------------------------------*/ #include "v2WallFunctionFvPatchScalarField.H" +#include "nutWallFunctionFvPatchScalarField.H" #include "turbulenceModel.H" -#include "fvPatchFieldMapper.H" -#include "volFields.H" #include "addToRunTimeSelectionTable.H" -#include "wallFvPatch.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -39,47 +37,6 @@ namespace Foam namespace RASModels { -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -void v2WallFunctionFvPatchScalarField::checkType() -{ - if (!isA(patch())) - { - FatalErrorInFunction - << "Invalid wall function specification" << nl - << " Patch type for patch " << patch().name() - << " must be wall" << nl - << " Current patch type is " << patch().type() << nl << endl - << abort(FatalError); - } -} - - -void v2WallFunctionFvPatchScalarField::writeLocalEntries(Ostream& os) const -{ - os.writeEntry("Cmu", Cmu_); - os.writeEntry("kappa", kappa_); - os.writeEntry("E", E_); -} - - -scalar v2WallFunctionFvPatchScalarField::yPlusLam -( - const scalar kappa, - const scalar E -) -{ - scalar ypl = 11.0; - - for (int i=0; i<10; i++) - { - ypl = log(max(E*ypl, 1))/kappa; - } - - return ypl; -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField @@ -88,14 +45,8 @@ v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField const DimensionedField& iF ) : - fixedValueFvPatchField(p, iF), - Cmu_(0.09), - kappa_(0.41), - E_(9.8), - yPlusLam_(yPlusLam(kappa_, E_)) -{ - checkType(); -} + fixedValueFvPatchField(p, iF) +{} v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField @@ -106,14 +57,8 @@ v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField const fvPatchFieldMapper& mapper ) : - fixedValueFvPatchField(ptf, p, iF, mapper), - Cmu_(ptf.Cmu_), - kappa_(ptf.kappa_), - E_(ptf.E_), - yPlusLam_(ptf.yPlusLam_) -{ - checkType(); -} + fixedValueFvPatchField(ptf, p, iF, mapper) +{} v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField @@ -123,14 +68,8 @@ v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField const dictionary& dict ) : - fixedValueFvPatchField(p, iF, dict), - Cmu_(dict.lookupOrDefault("Cmu", 0.09)), - kappa_(dict.lookupOrDefault("kappa", 0.41)), - E_(dict.lookupOrDefault("E", 9.8)), - yPlusLam_(yPlusLam(kappa_, E_)) -{ - checkType(); -} + fixedValueFvPatchField(p, iF, dict) +{} v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField @@ -138,14 +77,8 @@ v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField const v2WallFunctionFvPatchScalarField& v2wfpsf ) : - fixedValueFvPatchField(v2wfpsf), - Cmu_(v2wfpsf.Cmu_), - kappa_(v2wfpsf.kappa_), - E_(v2wfpsf.E_), - yPlusLam_(v2wfpsf.yPlusLam_) -{ - checkType(); -} + fixedValueFvPatchField(v2wfpsf) +{} v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField @@ -154,14 +87,8 @@ v2WallFunctionFvPatchScalarField::v2WallFunctionFvPatchScalarField const DimensionedField& iF ) : - fixedValueFvPatchField(v2wfpsf, iF), - Cmu_(v2wfpsf.Cmu_), - kappa_(v2wfpsf.kappa_), - E_(v2wfpsf.E_), - yPlusLam_(v2wfpsf.yPlusLam_) -{ - checkType(); -} + fixedValueFvPatchField(v2wfpsf, iF) +{} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -183,6 +110,10 @@ void v2WallFunctionFvPatchScalarField::updateCoeffs() internalField().group() ) ); + + const nutWallFunctionFvPatchScalarField& nutw = + nutWallFunctionFvPatchScalarField::nutw(turbModel, patchi); + const scalarField& y = turbModel.y()[patchi]; const tmp tk = turbModel.k(); @@ -191,7 +122,7 @@ void v2WallFunctionFvPatchScalarField::updateCoeffs() const tmp tnuw = turbModel.nu(patchi); const scalarField& nuw = tnuw(); - const scalar Cmu25 = pow025(Cmu_); + const scalar Cmu25 = pow025(nutw.Cmu()); scalarField& v2 = *this; @@ -204,11 +135,11 @@ void v2WallFunctionFvPatchScalarField::updateCoeffs() scalar yPlus = uTau*y[facei]/nuw[facei]; - if (yPlus > yPlusLam_) + if (yPlus > nutw.yPlusLam()) { scalar Cv2 = 0.193; scalar Bv2 = -0.94; - v2[facei] = Cv2/kappa_*log(yPlus) + Bv2; + v2[facei] = Cv2/nutw.kappa()*log(yPlus) + Bv2; } else { @@ -225,22 +156,6 @@ void v2WallFunctionFvPatchScalarField::updateCoeffs() } -void v2WallFunctionFvPatchScalarField::evaluate -( - const Pstream::commsTypes commsType -) -{ - fixedValueFvPatchField::evaluate(commsType); -} - - -void v2WallFunctionFvPatchScalarField::write(Ostream& os) const -{ - writeLocalEntries(os); - fixedValueFvPatchField::write(os); -} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // makePatchTypeField diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/v2WallFunctions/v2WallFunction/v2WallFunctionFvPatchScalarField.H b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/v2WallFunctions/v2WallFunction/v2WallFunctionFvPatchScalarField.H index cd287a23bd..ae7d35ee27 100644 --- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/v2WallFunctions/v2WallFunction/v2WallFunctionFvPatchScalarField.H +++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/v2WallFunctions/v2WallFunction/v2WallFunctionFvPatchScalarField.H @@ -5,7 +5,7 @@ \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- - | Copyright (C) 2012-2016 OpenFOAM Foundation + | Copyright (C) 2012-2016, 2019 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -35,7 +35,8 @@ Description cases. The model operates in two modes, based on the computed laminar-to-turbulent - switch-over y+ value derived from kappa and E. + switch-over y+ value derived from kappa and E specified in the corresponding + nutWallFunction. Usage @@ -82,34 +83,6 @@ class v2WallFunctionFvPatchScalarField : public fixedValueFvPatchField { -protected: - - // Protected data - - //- Cmu coefficient - scalar Cmu_; - - //- Von Karman constant - scalar kappa_; - - //- E coefficient - scalar E_; - - //- Y+ at the edge of the laminar sublayer - scalar yPlusLam_; - - - // Protected Member Functions - - //- Check the type of the patch - virtual void checkType(); - - //- Write local wall function variables - virtual void writeLocalEntries(Ostream&) const; - - //- Calculate the Y+ at the edge of the laminar sublayer - scalar yPlusLam(const scalar kappa, const scalar E); - public: @@ -179,21 +152,12 @@ public: } - // Member functions + // Member Functions // Evaluation functions //- Update the coefficients associated with the patch field virtual void updateCoeffs(); - - //- Evaluate the patchField - virtual void evaluate(const Pstream::commsTypes); - - - // I-O - - //- Write - virtual void write(Ostream&) const; };