diff --git a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LamBremhorstKE/LamBremhorstKE.C b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LamBremhorstKE/LamBremhorstKE.C index 34ef6b0294511b3eb569f04c0b0ee14255c483ec..1364f2cea28660a25840e4426f6f7afc307f318f 100644 --- a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LamBremhorstKE/LamBremhorstKE.C +++ b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LamBremhorstKE/LamBremhorstKE.C @@ -42,12 +42,45 @@ namespace RASModels defineTypeNameAndDebug(LamBremhorstKE, 0); addToRunTimeSelectionTable(RASModel, LamBremhorstKE, dictionary); +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // + +tmp<volScalarField> LamBremhorstKE::Rt() const +{ + return sqr(k_)/(nu()*epsilon_); +} + + +tmp<volScalarField> LamBremhorstKE::fMu(const volScalarField& Rt) const +{ + tmp<volScalarField> Ry(sqrt(k_)*y_/nu()); + return sqr(scalar(1) - exp(-0.0165*Ry))*(scalar(1) + 20.5/(Rt + SMALL)); +} + + +tmp<volScalarField> LamBremhorstKE::f1(const volScalarField& fMu) const +{ + return scalar(1) + pow3(0.05/(fMu + SMALL)); +} + + +tmp<volScalarField> LamBremhorstKE::f2(const volScalarField& Rt) const +{ + return scalar(1) - exp(-sqr(Rt)); +} + + +void LamBremhorstKE::correctNut(const volScalarField& fMu) +{ + nut_ = Cmu_*fMu*sqr(k_)/epsilon_; + nut_.correctBoundaryConditions(); +} + + // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // void LamBremhorstKE::correctNut() { - nut_ = Cmu_*fMu_*sqr(k_)/epsilon_; - nut_.correctBoundaryConditions(); + correctNut(fMu(Rt())); } @@ -86,20 +119,20 @@ LamBremhorstKE::LamBremhorstKE 0.09 ) ), - C1_ + Ceps1_ ( dimensioned<scalar>::lookupOrAddToDict ( - "C1", + "Ceps1", coeffDict_, 1.44 ) ), - C2_ + Ceps2_ ( dimensioned<scalar>::lookupOrAddToDict ( - "C2", + "Ceps2", coeffDict_, 1.92 ) @@ -140,18 +173,10 @@ LamBremhorstKE::LamBremhorstKE mesh_ ), - y_(wallDist::New(mesh_).y()), - - Rt_(sqr(k_)/(nu()*bound(epsilon_, epsilonMin_))), - - fMu_ - ( - sqr(scalar(1) - exp(-0.0165*(sqrt(k_)*y_/nu()))) - *(scalar(1) + 20.5/(Rt_ + SMALL)) - ) + y_(wallDist::New(mesh_).y()) { bound(k_, kMin_); - // already bounded: bound(epsilon_, epsilonMin_); + bound(epsilon_, epsilonMin_); if (type == typeName) { @@ -168,8 +193,8 @@ bool LamBremhorstKE::read() if (eddyViscosity<incompressible::RASModel>::read()) { Cmu_.readIfPresent(coeffDict()); - C1_.readIfPresent(coeffDict()); - C2_.readIfPresent(coeffDict()); + Ceps1_.readIfPresent(coeffDict()); + Ceps2_.readIfPresent(coeffDict()); sigmaEps_.readIfPresent(coeffDict()); return true; @@ -190,19 +215,15 @@ void LamBremhorstKE::correct() eddyViscosity<incompressible::RASModel>::correct(); - volScalarField G(GName(), nut_*2*magSqr(symm(fvc::grad(U_)))); - + tmp<volTensorField> tgradU = fvc::grad(U_); + volScalarField G(GName(), nut_*(twoSymm(tgradU()) && tgradU())); + tgradU.clear(); - // Calculate parameters and coefficients for low-Reynolds number model - - Rt_ = sqr(k_)/(nu()*epsilon_); - tmp<volScalarField> Ry = sqrt(k_)*y_/nu(); - - fMu_ = sqr(scalar(1) - exp(-0.0165*Ry))*(scalar(1) + 20.5/(Rt_ + SMALL)); - - tmp<volScalarField> f1 = scalar(1) + pow(0.05/(fMu_ + SMALL), 3); - tmp<volScalarField> f2 = scalar(1) - exp(-sqr(Rt_)); + // Update epsilon and G at the wall + epsilon_.boundaryField().updateCoeffs(); + const volScalarField Rt(this->Rt()); + const volScalarField fMu(this->fMu(Rt)); // Dissipation equation tmp<fvScalarMatrix> epsEqn @@ -211,15 +232,15 @@ void LamBremhorstKE::correct() + fvm::div(phi_, epsilon_) - fvm::laplacian(DepsilonEff(), epsilon_) == - C1_*f1*G*epsilon_/k_ - - fvm::Sp(C2_*f2*epsilon_/k_, epsilon_) + Ceps1_*f1(fMu)*G*epsilon_/k_ + - fvm::Sp(Ceps2_*f2(Rt)*epsilon_/k_, epsilon_) ); epsEqn().relax(); + epsEqn().boundaryManipulate(epsilon_.boundaryField()); solve(epsEqn); bound(epsilon_, epsilonMin_); - // Turbulent kinetic energy equation tmp<fvScalarMatrix> kEqn ( @@ -234,7 +255,7 @@ void LamBremhorstKE::correct() solve(kEqn); bound(k_, kMin_); - correctNut(); + correctNut(fMu); } diff --git a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LamBremhorstKE/LamBremhorstKE.H b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LamBremhorstKE/LamBremhorstKE.H index 1bff856687f810d5bbdfb723bf5934881a18c82e..603b5295f1885509673a2c0a7aa8c55c87c4be89 100644 --- a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LamBremhorstKE/LamBremhorstKE.H +++ b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/LamBremhorstKE/LamBremhorstKE.H @@ -66,14 +66,26 @@ class LamBremhorstKE : public eddyViscosity<incompressible::RASModel> { + // Private Member Functions + + // Disallow default bitwise copy construct and assignment + LamBremhorstKE(const LamBremhorstKE&); + LamBremhorstKE& operator=(const LamBremhorstKE&); + + tmp<volScalarField> Rt() const; + tmp<volScalarField> fMu(const volScalarField& Rt) const; + tmp<volScalarField> f1(const volScalarField& fMu) const; + tmp<volScalarField> f2(const volScalarField& Rt) const; + void correctNut(const volScalarField& fMu); + protected: // Protected data dimensionedScalar Cmu_; - dimensionedScalar C1_; - dimensionedScalar C2_; + dimensionedScalar Ceps1_; + dimensionedScalar Ceps2_; dimensionedScalar sigmaEps_; volScalarField k_; @@ -84,9 +96,6 @@ protected: // which is for near-wall cells only const volScalarField& y_; - volScalarField Rt_; - volScalarField fMu_; - // Protected Member Functions