From cda60031b9db0fc22fcf3f631ee47c0bde5fdd26 Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 25 Jan 2015 22:52:33 +0000 Subject: [PATCH] TurbulenceModels: ensure alphat is corrected after nut by arranging the call from correctNut This is as temporary fix pending the completion of the selectable thermal transport layer --- .../eddyDiffusivity/eddyDiffusivity.C | 10 +- .../eddyDiffusivity/eddyDiffusivity.H | 5 +- .../incompressibleTurbulenceModel.H | 7 +- .../RAS/kOmega/Changes | 144 ------------------ .../DeardorffDiffStress/DeardorffDiffStress.C | 2 + .../LES/Smagorinsky/Smagorinsky.C | 2 + .../SpalartAllmarasDES/SpalartAllmarasDES.C | 2 + .../turbulenceModels/LES/WALE/WALE.C | 2 + .../turbulenceModels/LES/kEqn/kEqn.C | 52 ++++--- .../turbulenceModels/RAS/LRR/LRR.C | 2 + .../RAS/LaunderSharmaKE/LaunderSharmaKE.C | 2 + .../RAS/RNGkEpsilon/RNGkEpsilon.C | 2 + .../RAS/SpalartAllmaras/SpalartAllmaras.C | 2 + .../turbulenceModels/RAS/kEpsilon/kEpsilon.C | 6 +- .../RAS/kOmegaSST/kOmegaSST.C | 77 +++++----- .../RAS/realizableKE/realizableKE.C | 2 + .../turbulenceModels/RAS/v2f/v2f.C | 4 +- 17 files changed, 100 insertions(+), 223 deletions(-) delete mode 100644 src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/kOmega/Changes diff --git a/src/TurbulenceModels/compressible/eddyDiffusivity/eddyDiffusivity.C b/src/TurbulenceModels/compressible/eddyDiffusivity/eddyDiffusivity.C index a6dbee759f..fc73f457e8 100644 --- a/src/TurbulenceModels/compressible/eddyDiffusivity/eddyDiffusivity.C +++ b/src/TurbulenceModels/compressible/eddyDiffusivity/eddyDiffusivity.C @@ -28,7 +28,7 @@ License // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // template -void Foam::eddyDiffusivity::correctAlphat() +void Foam::eddyDiffusivity::correctNut() { alphat_ = this->rho_*this->nut()/Prt_; alphat_.correctBoundaryConditions(); @@ -135,12 +135,4 @@ bool Foam::eddyDiffusivity::read() } -template -void Foam::eddyDiffusivity::correct() -{ - BasicTurbulenceModel::correct(); - correctAlphat(); -} - - // ************************************************************************* // diff --git a/src/TurbulenceModels/compressible/eddyDiffusivity/eddyDiffusivity.H b/src/TurbulenceModels/compressible/eddyDiffusivity/eddyDiffusivity.H index 18d5c98281..0913da8464 100644 --- a/src/TurbulenceModels/compressible/eddyDiffusivity/eddyDiffusivity.H +++ b/src/TurbulenceModels/compressible/eddyDiffusivity/eddyDiffusivity.H @@ -68,7 +68,7 @@ protected: // Protected Member Functions - virtual void correctAlphat(); + virtual void correctNut(); public: @@ -157,9 +157,6 @@ public: { return this->transport_.alphaEff(alphat(patchi), patchi); } - - //- Correct the turbulent thermal diffusivity for enthalpy - virtual void correct(); }; diff --git a/src/TurbulenceModels/incompressible/incompressibleTurbulenceModel.H b/src/TurbulenceModels/incompressible/incompressibleTurbulenceModel.H index b3d25a8fbd..251bfd179f 100644 --- a/src/TurbulenceModels/incompressible/incompressibleTurbulenceModel.H +++ b/src/TurbulenceModels/incompressible/incompressibleTurbulenceModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -61,6 +61,11 @@ protected: geometricOneField rho_; + //- ***HGW Temporary function to be removed when the run-time selectable + // thermal transport layer is complete + virtual void correctNut() + {} + private: diff --git a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/kOmega/Changes b/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/kOmega/Changes deleted file mode 100644 index 51cb377b02..0000000000 --- a/src/TurbulenceModels/incompressible/turbulentTransportModels/RAS/kOmega/Changes +++ /dev/null @@ -1,144 +0,0 @@ -turbulenceModelName -> propertiesName -modelName -> type - -* Header -*** Includes - - Remove - #include "RASModel.H" - + Add - #include "turbulentTransportModel.H" - #include "eddyViscosity.H" -*** Base class - - Change - RASModel -> eddyViscosity -*** Protected data - - Remove - volScalarField nut_; -*** Constructor - + Add - const geometricOneField& alpha, - const geometricOneField& rho, - . - const surfaceScalarField& alphaRhoPhi, - -*** Private member functions - + Add - // Protected Member Functions - - virtual void correctNut(); - -*** Member functions - - Remove - //- Return the turbulence viscosity - virtual tmp nut() const - { - return nut_; - } - - //- Return the Reynolds stress tensor - virtual tmp R() const; - - //- Return the effective stress tensor including the laminar stress - virtual tmp devReff() const; - - //- Return the source term for the momentum equation - virtual tmp divDevReff(volVectorField& U) const; - - //- Return the source term for the momentum equation - virtual tmp divDevRhoReff - ( - const volScalarField& rho, - volVectorField& U - ) const; - - + Move to top - //- Read RASProperties dictionary - virtual bool read(); - -* Source -*** Includes - + Add - #include "bound.H" - - Remove - #include "backwardsCompatibilityWallFunctions.H" -*** Constructor - + Add arguments - const geometricOneField& alpha, - const geometricOneField& rho, - . - const surfaceScalarField& alphaRhoPhi, - + Replace - RASModel(modelName, U, phi, transport, turbulenceModelName), - with - eddyViscosity - ( - type, - alpha, - rho, - U, - alphaRhoPhi, - phi, - transport, - propertiesName - ), - + Replace - autoCreate.*mesh_) -> mesh_ - NO_READ -> MUST_READ - - Remove - nut_ - ( - IOobject - ( - "nut", - runTime_.timeName(), - mesh_, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - autoCreateNut("nut", mesh_) - ) - + Replace - nut_ = k_/omega_; - nut_.correctBoundaryConditions(); - - printCoeffs(); - - with - - if (type == typeName) - { - correctNut(); - printCoeffs(type); - } -*** Member functions - + Move read to top - + Add after read -void kOmega::correctNut() -{ - .... - nut_.correctBoundaryConditions(); -} - - Remove - //- Return the Reynolds stress tensor - virtual tmp R() const; - - //- Return the effective stress tensor including the laminar stress - virtual tmp devReff() const; - - //- Return the source term for the momentum equation - virtual tmp divDevReff(volVectorField& U) const; - - //- Return the source term for the momentum equation - virtual tmp divDevRhoReff - ( - const volScalarField& rho, - volVectorField& U - ) const; - -*** correct() - - Replace - // Re-calculate viscosity - nut_ = Cmu_*sqr(k_)/epsilon_; - nut_.correctBoundaryConditions(); - with - correctNut(); diff --git a/src/TurbulenceModels/turbulenceModels/LES/DeardorffDiffStress/DeardorffDiffStress.C b/src/TurbulenceModels/turbulenceModels/LES/DeardorffDiffStress/DeardorffDiffStress.C index 499bbd4da3..31526fbf0c 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/DeardorffDiffStress/DeardorffDiffStress.C +++ b/src/TurbulenceModels/turbulenceModels/LES/DeardorffDiffStress/DeardorffDiffStress.C @@ -39,6 +39,8 @@ void DeardorffDiffStress::correctNut() { this->nut_ = Ck_*sqrt(this->k())*this->delta(); this->nut_.correctBoundaryConditions(); + + BasicTurbulenceModel::correctNut(); } diff --git a/src/TurbulenceModels/turbulenceModels/LES/Smagorinsky/Smagorinsky.C b/src/TurbulenceModels/turbulenceModels/LES/Smagorinsky/Smagorinsky.C index 6d3696ccc1..c3549fdd88 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/Smagorinsky/Smagorinsky.C +++ b/src/TurbulenceModels/turbulenceModels/LES/Smagorinsky/Smagorinsky.C @@ -69,6 +69,8 @@ void Smagorinsky::correctNut() this->nut_ = Ck_*this->delta()*sqrt(k); this->nut_.correctBoundaryConditions(); + + BasicTurbulenceModel::correctNut(); } diff --git a/src/TurbulenceModels/turbulenceModels/LES/SpalartAllmarasDES/SpalartAllmarasDES.C b/src/TurbulenceModels/turbulenceModels/LES/SpalartAllmarasDES/SpalartAllmarasDES.C index f0a8c60ac1..53e22dd384 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/SpalartAllmarasDES/SpalartAllmarasDES.C +++ b/src/TurbulenceModels/turbulenceModels/LES/SpalartAllmarasDES/SpalartAllmarasDES.C @@ -170,6 +170,8 @@ void SpalartAllmarasDES::correctNut { this->nut_ = nuTilda_*fv1; this->nut_.correctBoundaryConditions(); + + BasicTurbulenceModel::correctNut(); } diff --git a/src/TurbulenceModels/turbulenceModels/LES/WALE/WALE.C b/src/TurbulenceModels/turbulenceModels/LES/WALE/WALE.C index 40cf764d97..674c889b1c 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/WALE/WALE.C +++ b/src/TurbulenceModels/turbulenceModels/LES/WALE/WALE.C @@ -89,6 +89,8 @@ void WALE::correctNut() { this->nut_ = Ck_*this->delta()*sqrt(this->k(fvc::grad(this->U_))); this->nut_.correctBoundaryConditions(); + + BasicTurbulenceModel::correctNut(); } diff --git a/src/TurbulenceModels/turbulenceModels/LES/kEqn/kEqn.C b/src/TurbulenceModels/turbulenceModels/LES/kEqn/kEqn.C index e73aaae168..38a1a98934 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/kEqn/kEqn.C +++ b/src/TurbulenceModels/turbulenceModels/LES/kEqn/kEqn.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,6 +32,33 @@ namespace Foam namespace LESModels { +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +template +void kEqn::correctNut() +{ + this->nut_ = Ck_*sqrt(k_)*this->delta(); + this->nut_.correctBoundaryConditions(); + + BasicTurbulenceModel::correctNut(); +} + + +template +tmp kEqn::kSource() const +{ + return tmp + ( + new fvScalarMatrix + ( + k_, + dimVolume*this->rho_.dimensions()*k_.dimensions() + /dimTime + ) + ); +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template @@ -129,29 +156,6 @@ tmp kEqn::epsilon() const } -template -void kEqn::correctNut() -{ - this->nut_ = Ck_*sqrt(k_)*this->delta(); - this->nut_.correctBoundaryConditions(); -} - - -template -tmp kEqn::kSource() const -{ - return tmp - ( - new fvScalarMatrix - ( - k_, - dimVolume*this->rho_.dimensions()*k_.dimensions() - /dimTime - ) - ); -} - - template void kEqn::correct() { diff --git a/src/TurbulenceModels/turbulenceModels/RAS/LRR/LRR.C b/src/TurbulenceModels/turbulenceModels/RAS/LRR/LRR.C index a51c7c971d..98e11cf880 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/LRR/LRR.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/LRR/LRR.C @@ -39,6 +39,8 @@ void LRR::correctNut() { this->nut_ = this->Cmu_*sqr(k_)/epsilon_; this->nut_.correctBoundaryConditions(); + + BasicTurbulenceModel::correctNut(); } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/LaunderSharmaKE/LaunderSharmaKE.C b/src/TurbulenceModels/turbulenceModels/RAS/LaunderSharmaKE/LaunderSharmaKE.C index 61addc591d..fbd7b71b6e 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/LaunderSharmaKE/LaunderSharmaKE.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/LaunderSharmaKE/LaunderSharmaKE.C @@ -56,6 +56,8 @@ void LaunderSharmaKE::correctNut() { this->nut_ = Cmu_*fMu()*sqr(k_)/epsilon_; this->nut_.correctBoundaryConditions(); + + BasicTurbulenceModel::correctNut(); } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/RNGkEpsilon/RNGkEpsilon.C b/src/TurbulenceModels/turbulenceModels/RAS/RNGkEpsilon/RNGkEpsilon.C index 563d33ebfb..55ba1e0004 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/RNGkEpsilon/RNGkEpsilon.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/RNGkEpsilon/RNGkEpsilon.C @@ -40,6 +40,8 @@ void RNGkEpsilon::correctNut() { this->nut_ = Cmu_*sqr(k_)/epsilon_; this->nut_.correctBoundaryConditions(); + + BasicTurbulenceModel::correctNut(); } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/SpalartAllmaras/SpalartAllmaras.C b/src/TurbulenceModels/turbulenceModels/RAS/SpalartAllmaras/SpalartAllmaras.C index c07e677155..520accaed5 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/SpalartAllmaras/SpalartAllmaras.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/SpalartAllmaras/SpalartAllmaras.C @@ -124,6 +124,8 @@ void SpalartAllmaras::correctNut { this->nut_ = nuTilda_*fv1; this->nut_.correctBoundaryConditions(); + + BasicTurbulenceModel::correctNut(); } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/kEpsilon/kEpsilon.C b/src/TurbulenceModels/turbulenceModels/RAS/kEpsilon/kEpsilon.C index 1543385ffc..15b538cf93 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/kEpsilon/kEpsilon.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/kEpsilon/kEpsilon.C @@ -40,6 +40,8 @@ void kEpsilon::correctNut() { this->nut_ = Cmu_*sqr(k_)/epsilon_; this->nut_.correctBoundaryConditions(); + + BasicTurbulenceModel::correctNut(); } @@ -133,7 +135,7 @@ kEpsilon::kEpsilon ( "C3", this->coeffDict_, - 0 + -0.33 ) ), sigmak_ @@ -185,8 +187,8 @@ kEpsilon::kEpsilon if (type == typeName) { - correctNut(); this->printCoeffs(type); + correctNut(); } } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/kOmegaSST/kOmegaSST.C b/src/TurbulenceModels/turbulenceModels/RAS/kOmegaSST/kOmegaSST.C index 6acfbbe648..1c3babf681 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/kOmegaSST/kOmegaSST.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/kOmegaSST/kOmegaSST.C @@ -106,6 +106,46 @@ tmp kOmegaSST::kOmegaSST::F23() const } +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +template +void kOmegaSST::correctNut() +{ + this->nut_ = + a1_*k_/max(a1_*omega_, F23()*sqrt(2.0)*mag(symm(fvc::grad(this->U_)))); + this->nut_.correctBoundaryConditions(); + + BasicTurbulenceModel::correctNut(); +} + + +template +tmp kOmegaSST::kSource() const +{ + return tmp + ( + new fvScalarMatrix + ( + k_, + dimVolume*this->rho_.dimensions()*k_.dimensions()/dimTime + ) + ); +} + + +template +tmp kOmegaSST::omegaSource() const +{ + return tmp + ( + new fvScalarMatrix + ( + omega_, + dimVolume*this->rho_.dimensions()*omega_.dimensions()/dimTime + ) + ); +} + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -335,43 +375,6 @@ bool kOmegaSST::read() } -template -void kOmegaSST::correctNut() -{ - this->nut_ = - a1_*k_/max(a1_*omega_, F23()*sqrt(2.0)*mag(symm(fvc::grad(this->U_)))); - this->nut_.correctBoundaryConditions(); -} - - -template -tmp kOmegaSST::kSource() const -{ - return tmp - ( - new fvScalarMatrix - ( - k_, - dimVolume*this->rho_.dimensions()*k_.dimensions()/dimTime - ) - ); -} - - -template -tmp kOmegaSST::omegaSource() const -{ - return tmp - ( - new fvScalarMatrix - ( - omega_, - dimVolume*this->rho_.dimensions()*omega_.dimensions()/dimTime - ) - ); -} - - template void kOmegaSST::correct() { diff --git a/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.C b/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.C index 397847bbf6..597d21f1eb 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/realizableKE/realizableKE.C @@ -78,6 +78,8 @@ void realizableKE::correctNut { this->nut_ = rCmu(gradU, S2, magS)*sqr(k_)/epsilon_; this->nut_.correctBoundaryConditions(); + + BasicTurbulenceModel::correctNut(); } diff --git a/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2f.C b/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2f.C index a281ef4fa5..6e2ee1b4ed 100644 --- a/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2f.C +++ b/src/TurbulenceModels/turbulenceModels/RAS/v2f/v2f.C @@ -25,8 +25,6 @@ License #include "v2f.H" #include "bound.H" -#include "fixedValueFvPatchField.H" -#include "zeroGradientFvPatchField.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -58,6 +56,8 @@ void v2f::correctNut() { this->nut_ = min(CmuKEps_*sqr(k_)/epsilon_, this->Cmu_*v2_*Ts()); this->nut_.correctBoundaryConditions(); + + BasicTurbulenceModel::correctNut(); }