From ad6e3a9ded43ce138999f650027e8c37341f88b2 Mon Sep 17 00:00:00 2001 From: Henry <Henry> Date: Thu, 9 Feb 2012 10:37:23 +0000 Subject: [PATCH] incompressible RAS models: removed the explicit caching of grad(U) which interferes with the global caching option --- .../RAS/LienCubicKE/LienCubicKE.C | 58 +++++++++--------- .../RAS/LienCubicKE/LienCubicKE.H | 3 +- .../RAS/LienCubicKELowRe/LienCubicKELowRe.C | 60 +++++++++---------- .../RAS/LienCubicKELowRe/LienCubicKELowRe.H | 3 +- .../RAS/NonlinearKEShih/NonlinearKEShih.C | 34 +++++------ .../RAS/NonlinearKEShih/NonlinearKEShih.H | 3 +- .../RAS/include/nonLinearWallFunctionsI.H | 4 +- 7 files changed, 81 insertions(+), 84 deletions(-) diff --git a/src/turbulenceModels/incompressible/RAS/LienCubicKE/LienCubicKE.C b/src/turbulenceModels/incompressible/RAS/LienCubicKE/LienCubicKE.C index 96052f5b097..03e1e5aa1ac 100644 --- a/src/turbulenceModels/incompressible/RAS/LienCubicKE/LienCubicKE.C +++ b/src/turbulenceModels/incompressible/RAS/LienCubicKE/LienCubicKE.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -171,16 +171,15 @@ LienCubicKE::LienCubicKE autoCreateEpsilon("epsilon", mesh_) ), - gradU_(fvc::grad(U)), eta_ ( k_/bound(epsilon_, epsilonMin_) - *sqrt(2.0*magSqr(0.5*(gradU_ + gradU_.T()))) + *sqrt(2.0*magSqr(0.5*(fvc::grad(U) + T(fvc::grad(U))))) ), ksi_ ( k_/epsilon_ - *sqrt(2.0*magSqr(0.5*(gradU_ - gradU_.T()))) + *sqrt(2.0*magSqr(0.5*(fvc::grad(U) - T(fvc::grad(U))))) ), Cmu_(2.0/(3.0*(A1_ + eta_ + alphaKsi_*ksi_))), fEta_(A2_ + pow(eta_, 3.0)), @@ -189,8 +188,8 @@ LienCubicKE::LienCubicKE ( - 2.0*pow3(Cmu_)*pow4(k_)/pow3(epsilon_) *( - magSqr(gradU_ + gradU_.T()) - - magSqr(gradU_ - gradU_.T()) + magSqr(fvc::grad(U) + T(fvc::grad(U))) + - magSqr(fvc::grad(U) - T(fvc::grad(U))) ) ), @@ -217,20 +216,20 @@ LienCubicKE::LienCubicKE *( Ctau1_/fEta_ *( - (gradU_ & gradU_) - + (gradU_ & gradU_)().T() + (fvc::grad(U) & fvc::grad(U)) + + (fvc::grad(U) & fvc::grad(U))().T() ) - + Ctau2_/fEta_*(gradU_ & gradU_.T()) - + Ctau3_/fEta_*(gradU_.T() & gradU_) + + Ctau2_/fEta_*(fvc::grad(U) & T(fvc::grad(U))) + + Ctau3_/fEta_*(T(fvc::grad(U)) & fvc::grad(U)) ) // cubic term C4 - 20.0*pow(k_, 4.0)/pow(epsilon_, 3.0) *pow(Cmu_, 3.0) *( - ((gradU_ & gradU_) & gradU_.T()) - + ((gradU_ & gradU_.T()) & gradU_.T()) - - ((gradU_.T() & gradU_) & gradU_) - - ((gradU_.T() & gradU_.T()) & gradU_) + ((fvc::grad(U) & fvc::grad(U)) & T(fvc::grad(U))) + + ((fvc::grad(U) & T(fvc::grad(U))) & T(fvc::grad(U))) + - ((T(fvc::grad(U)) & fvc::grad(U)) & fvc::grad(U)) + - ((T(fvc::grad(U)) & T(fvc::grad(U))) & fvc::grad(U)) ) ) ) @@ -261,7 +260,7 @@ tmp<volSymmTensorField> LienCubicKE::R() const IOobject::NO_READ, IOobject::NO_WRITE ), - ((2.0/3.0)*I)*k_ - nut_*twoSymm(gradU_) + nonlinearStress_, + ((2.0/3.0)*I)*k_ - nut_*twoSymm(fvc::grad(U_)) + nonlinearStress_, k_.boundaryField().types() ) ); @@ -332,15 +331,16 @@ void LienCubicKE::correct() return; } - gradU_ = fvc::grad(U_); + tmp<volTensorField> tgradU = fvc::grad(U_); + const volTensorField& gradU = tgradU(); // generation term - tmp<volScalarField> S2 = symm(gradU_) && gradU_; + tmp<volScalarField> S2 = symm(gradU) && gradU; volScalarField G ( "RASModel::G", - Cmu_*sqr(k_)/epsilon_*S2 - (nonlinearStress_ && gradU_) + Cmu_*sqr(k_)/epsilon_*S2 - (nonlinearStress_ && gradU) ); // Update epsilon and G at the wall @@ -384,14 +384,14 @@ void LienCubicKE::correct() // Re-calculate viscosity - eta_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU_ + gradU_.T()))); - ksi_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU_ - gradU_.T()))); + eta_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU + gradU.T()))); + ksi_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU - gradU.T()))); Cmu_ = 2.0/(3.0*(A1_ + eta_ + alphaKsi_*ksi_)); fEta_ = A2_ + pow(eta_, 3.0); C5viscosity_ = - 2.0*pow(Cmu_, 3.0)*pow(k_, 4.0)/pow(epsilon_, 3.0) - *(magSqr(gradU_ + gradU_.T()) - magSqr(gradU_ - gradU_.T())); + *(magSqr(gradU + gradU.T()) - magSqr(gradU - gradU.T())); nut_ = Cmu_*sqr(k_)/epsilon_ + C5viscosity_; nut_.correctBoundaryConditions(); @@ -403,20 +403,20 @@ void LienCubicKE::correct() ( Ctau1_/fEta_* ( - (gradU_ & gradU_) - + (gradU_ & gradU_)().T() + (gradU & gradU) + + (gradU & gradU)().T() ) - + Ctau2_/fEta_*(gradU_ & gradU_.T()) - + Ctau3_/fEta_*(gradU_.T() & gradU_) + + Ctau2_/fEta_*(gradU & gradU.T()) + + Ctau3_/fEta_*(gradU.T() & gradU) ) // cubic term C4 - 20.0*pow(k_, 4.0)/pow(epsilon_, 3.0) *pow(Cmu_, 3.0) *( - ((gradU_ & gradU_) & gradU_.T()) - + ((gradU_ & gradU_.T()) & gradU_.T()) - - ((gradU_.T() & gradU_) & gradU_) - - ((gradU_.T() & gradU_.T()) & gradU_) + ((gradU & gradU) & gradU.T()) + + ((gradU & gradU.T()) & gradU.T()) + - ((gradU.T() & gradU) & gradU) + - ((gradU.T() & gradU.T()) & gradU) ) ); } diff --git a/src/turbulenceModels/incompressible/RAS/LienCubicKE/LienCubicKE.H b/src/turbulenceModels/incompressible/RAS/LienCubicKE/LienCubicKE.H index 1f675ac655d..ebe7c373d8e 100644 --- a/src/turbulenceModels/incompressible/RAS/LienCubicKE/LienCubicKE.H +++ b/src/turbulenceModels/incompressible/RAS/LienCubicKE/LienCubicKE.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -78,7 +78,6 @@ protected: volScalarField k_; volScalarField epsilon_; - volTensorField gradU_; volScalarField eta_; volScalarField ksi_; volScalarField Cmu_; diff --git a/src/turbulenceModels/incompressible/RAS/LienCubicKELowRe/LienCubicKELowRe.C b/src/turbulenceModels/incompressible/RAS/LienCubicKELowRe/LienCubicKELowRe.C index eaf09f03c1a..9698399642d 100644 --- a/src/turbulenceModels/incompressible/RAS/LienCubicKELowRe/LienCubicKELowRe.C +++ b/src/turbulenceModels/incompressible/RAS/LienCubicKELowRe/LienCubicKELowRe.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -220,16 +220,15 @@ LienCubicKELowRe::LienCubicKELowRe y_(mesh_), - gradU_(fvc::grad(U)), eta_ ( k_/bound(epsilon_, epsilonMin_) - *sqrt(2.0*magSqr(0.5*(gradU_ + gradU_.T()))) + *sqrt(2.0*magSqr(0.5*(fvc::grad(U) + T(fvc::grad(U))))) ), ksi_ ( k_/epsilon_ - *sqrt(2.0*magSqr(0.5*(gradU_ - gradU_.T()))) + *sqrt(2.0*magSqr(0.5*(fvc::grad(U) - T(fvc::grad(U))))) ), Cmu_(2.0/(3.0*(A1_ + eta_ + alphaKsi_*ksi_))), fEta_(A2_ + pow3(eta_)), @@ -237,7 +236,7 @@ LienCubicKELowRe::LienCubicKELowRe C5viscosity_ ( -2.0*pow3(Cmu_)*pow4(k_)/pow3(epsilon_) - *(magSqr(gradU_ + gradU_.T()) - magSqr(gradU_ - gradU_.T())) + *(magSqr(fvc::grad(U) + T(fvc::grad(U))) - magSqr(fvc::grad(U) - T(fvc::grad(U)))) ), yStar_(sqrt(k_)*y_/nu() + SMALL), @@ -265,27 +264,27 @@ LienCubicKELowRe::LienCubicKELowRe *( Ctau1_/fEta_ *( - (gradU_ & gradU_) - + (gradU_ & gradU_)().T() + (fvc::grad(U) & fvc::grad(U)) + + (fvc::grad(U) & fvc::grad(U))().T() ) - + Ctau2_/fEta_*(gradU_ & gradU_.T()) - + Ctau3_/fEta_*(gradU_.T() & gradU_) + + Ctau2_/fEta_*(fvc::grad(U) & T(fvc::grad(U))) + + Ctau3_/fEta_*(T(fvc::grad(U)) & fvc::grad(U)) ) // cubic term C4 - 20.0*pow4(k_)/pow3(epsilon_) *pow3(Cmu_) *( - ((gradU_ & gradU_) & gradU_.T()) - + ((gradU_ & gradU_.T()) & gradU_.T()) - - ((gradU_.T() & gradU_) & gradU_) - - ((gradU_.T() & gradU_.T()) & gradU_) + ((fvc::grad(U) & fvc::grad(U)) & T(fvc::grad(U))) + + ((fvc::grad(U) & T(fvc::grad(U))) & T(fvc::grad(U))) + - ((T(fvc::grad(U)) & fvc::grad(U)) & fvc::grad(U)) + - ((T(fvc::grad(U)) & T(fvc::grad(U))) & fvc::grad(U)) ) // cubic term C5, explicit part + min ( C5viscosity_, dimensionedScalar("0", C5viscosity_.dimensions(), 0.0) - )*gradU_ + )*fvc::grad(U) ) ) { @@ -325,7 +324,7 @@ tmp<volSymmTensorField> LienCubicKELowRe::R() const IOobject::NO_READ, IOobject::NO_WRITE ), - ((2.0/3.0)*I)*k_ - nut_*twoSymm(gradU_) + nonlinearStress_, + ((2.0/3.0)*I)*k_ - nut_*twoSymm(fvc::grad(U_)) + nonlinearStress_, k_.boundaryField().types() ) ); @@ -406,10 +405,11 @@ void LienCubicKELowRe::correct() y_.correct(); } - gradU_ = fvc::grad(U_); + tmp<volTensorField> tgradU = fvc::grad(U_); + const volTensorField& gradU = tgradU(); // generation term - tmp<volScalarField> S2 = symm(gradU_) && gradU_; + tmp<volScalarField> S2 = symm(gradU) && gradU; yStar_ = sqrt(k_)*y_/nu() + SMALL; tmp<volScalarField> Rt = sqr(k_)/(nu()*epsilon_); @@ -427,7 +427,7 @@ void LienCubicKELowRe::correct() volScalarField G ( "RASModel::G", - Cmu_*fMu*sqr(k_)/epsilon_*S2 - (nonlinearStress_ && gradU_) + Cmu_*fMu*sqr(k_)/epsilon_*S2 - (nonlinearStress_ && gradU) ); // Dissipation equation @@ -473,14 +473,14 @@ void LienCubicKELowRe::correct() // Re-calculate viscosity - eta_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU_ + gradU_.T()))); - ksi_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU_ - gradU_.T()))); + eta_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU + gradU.T()))); + ksi_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU - gradU.T()))); Cmu_ = 2.0/(3.0*(A1_ + eta_ + alphaKsi_*ksi_)); fEta_ = A2_ + pow(eta_, 3.0); C5viscosity_ = - 2.0*pow(Cmu_, 3.0)*pow(k_, 4.0)/pow(epsilon_, 3.0) - *(magSqr(gradU_ + gradU_.T()) - magSqr(gradU_ - gradU_.T())); + *(magSqr(gradU + gradU.T()) - magSqr(gradU - gradU.T())); nut_ = Cmu_*fMu*sqr(k_)/epsilon_ @@ -498,27 +498,27 @@ void LienCubicKELowRe::correct() *( Ctau1_/fEta_ *( - (gradU_ & gradU_) - + (gradU_ & gradU_)().T() + (gradU & gradU) + + (gradU & gradU)().T() ) - + Ctau2_/fEta_*(gradU_ & gradU_.T()) - + Ctau3_/fEta_*(gradU_.T() & gradU_) + + Ctau2_/fEta_*(gradU & gradU.T()) + + Ctau3_/fEta_*(gradU.T() & gradU) ) // cubic term C4 - 20.0*pow(k_, 4.0)/pow(epsilon_, 3.0) *pow(Cmu_, 3.0) *( - ((gradU_ & gradU_) & gradU_.T()) - + ((gradU_ & gradU_.T()) & gradU_.T()) - - ((gradU_.T() & gradU_) & gradU_) - - ((gradU_.T() & gradU_.T()) & gradU_) + ((gradU & gradU) & gradU.T()) + + ((gradU & gradU.T()) & gradU.T()) + - ((gradU.T() & gradU) & gradU) + - ((gradU.T() & gradU.T()) & gradU) ) // cubic term C5, explicit part + min ( C5viscosity_, dimensionedScalar("0", C5viscosity_.dimensions(), 0.0) - )*gradU_ + )*gradU ); } diff --git a/src/turbulenceModels/incompressible/RAS/LienCubicKELowRe/LienCubicKELowRe.H b/src/turbulenceModels/incompressible/RAS/LienCubicKELowRe/LienCubicKELowRe.H index 4cf5143e747..0efd63a454c 100644 --- a/src/turbulenceModels/incompressible/RAS/LienCubicKELowRe/LienCubicKELowRe.H +++ b/src/turbulenceModels/incompressible/RAS/LienCubicKELowRe/LienCubicKELowRe.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -103,7 +103,6 @@ protected: wallDist y_; - volTensorField gradU_; volScalarField eta_; volScalarField ksi_; volScalarField Cmu_; diff --git a/src/turbulenceModels/incompressible/RAS/NonlinearKEShih/NonlinearKEShih.C b/src/turbulenceModels/incompressible/RAS/NonlinearKEShih/NonlinearKEShih.C index 5fdb54af7e4..09c025dc02f 100644 --- a/src/turbulenceModels/incompressible/RAS/NonlinearKEShih/NonlinearKEShih.C +++ b/src/turbulenceModels/incompressible/RAS/NonlinearKEShih/NonlinearKEShih.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -190,16 +190,15 @@ NonlinearKEShih::NonlinearKEShih mesh_ ), - gradU_(fvc::grad(U)), eta_ ( k_/bound(epsilon_, epsilonMin_) - *sqrt(2.0*magSqr(0.5*(gradU_ + gradU_.T()))) + *sqrt(2.0*magSqr(0.5*(fvc::grad(U) + T(fvc::grad(U))))) ), ksi_ ( k_/epsilon_ - *sqrt(2.0*magSqr(0.5*(gradU_ - gradU_.T()))) + *sqrt(2.0*magSqr(0.5*(fvc::grad(U) - T(fvc::grad(U))))) ), Cmu_(2.0/(3.0*(A1_ + eta_ + alphaKsi_*ksi_))), fEta_(A2_ + pow(eta_, 3.0)), @@ -215,11 +214,11 @@ NonlinearKEShih::NonlinearKEShih *( Ctau1_/fEta_ *( - (gradU_ & gradU_) - + (gradU_ & gradU_)().T() + (fvc::grad(U) & fvc::grad(U)) + + (fvc::grad(U) & fvc::grad(U))().T() ) - + Ctau2_/fEta_*(gradU_ & gradU_.T()) - + Ctau3_/fEta_*(gradU_.T() & gradU_) + + Ctau2_/fEta_*(fvc::grad(U) & T(fvc::grad(U))) + + Ctau3_/fEta_*(T(fvc::grad(U)) & fvc::grad(U)) ) ) ) @@ -323,16 +322,17 @@ void NonlinearKEShih::correct() return; } - gradU_ = fvc::grad(U_); + tmp<volTensorField> tgradU = fvc::grad(U_); + const volTensorField& gradU = tgradU(); // generation term - tmp<volScalarField> S2 = symm(gradU_) && gradU_; + tmp<volScalarField> S2 = symm(gradU) && gradU; volScalarField G ( "RASModel::G", Cmu_*sqr(k_)/epsilon_*S2 - - (nonlinearStress_ && gradU_) + - (nonlinearStress_ && gradU) ); #include "nonLinearWallFunctionsI.H" @@ -375,8 +375,8 @@ void NonlinearKEShih::correct() // Re-calculate viscosity - eta_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU_ + gradU_.T()))); - ksi_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU_ - gradU_.T()))); + eta_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU + T(gradU)))); + ksi_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU - T(gradU)))); Cmu_ = 2.0/(3.0*(A1_ + eta_ + alphaKsi_*ksi_)); fEta_ = A2_ + pow(eta_, 3.0); @@ -390,11 +390,11 @@ void NonlinearKEShih::correct() *( Ctau1_/fEta_ *( - (gradU_ & gradU_) - + (gradU_ & gradU_)().T() + (gradU & gradU) + + (gradU & gradU)().T() ) - + Ctau2_/fEta_*(gradU_ & gradU_.T()) - + Ctau3_/fEta_*(gradU_.T() & gradU_) + + Ctau2_/fEta_*(gradU & T(gradU)) + + Ctau3_/fEta_*(T(gradU) & gradU) ) ); } diff --git a/src/turbulenceModels/incompressible/RAS/NonlinearKEShih/NonlinearKEShih.H b/src/turbulenceModels/incompressible/RAS/NonlinearKEShih/NonlinearKEShih.H index 9c18ab71e6d..c7ad8a37131 100644 --- a/src/turbulenceModels/incompressible/RAS/NonlinearKEShih/NonlinearKEShih.H +++ b/src/turbulenceModels/incompressible/RAS/NonlinearKEShih/NonlinearKEShih.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -82,7 +82,6 @@ protected: volScalarField k_; volScalarField epsilon_; - volTensorField gradU_; volScalarField eta_; volScalarField ksi_; volScalarField Cmu_; diff --git a/src/turbulenceModels/incompressible/RAS/include/nonLinearWallFunctionsI.H b/src/turbulenceModels/incompressible/RAS/include/nonLinearWallFunctionsI.H index 9489ad078fa..f5be2572913 100644 --- a/src/turbulenceModels/incompressible/RAS/include/nonLinearWallFunctionsI.H +++ b/src/turbulenceModels/incompressible/RAS/include/nonLinearWallFunctionsI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -104,7 +104,7 @@ Description *magFaceGradU[facei] *Cmu25*sqrt(k_[faceCelli]) /(kappa_.value()*y_[patchi][facei]) - - (nonlinearStress_[faceCelli] && gradU_[faceCelli]); + - (nonlinearStress_[faceCelli] && gradU[faceCelli]); } } } -- GitLab