diff --git a/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.C b/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.C index 25aaf37ef40c52e4b6c09901df51130a7e239b84..4541bdcabb516bfc331aa2440add97c52c4c387e 100644 --- a/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.C +++ b/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.C @@ -121,11 +121,10 @@ kOmegaSSTSAS::kOmegaSSTSAS const volVectorField& U, const surfaceScalarField& phi, transportModel& transport, - const word& turbulenceModelName, const word& modelName ) : - LESModel(modelName, U, phi, transport, turbulenceModelName), + LESModel(modelName, U, phi, transport), alphaK1_ ( @@ -263,7 +262,8 @@ kOmegaSSTSAS::kOmegaSSTSAS ) ), - omegaMin_("omegaMin", dimless/dimTime, SMALL), + omega0_("omega0", dimless/dimTime, SMALL), + omegaSmall_("omegaSmall", dimless/dimTime, SMALL), y_(mesh_), Cmu_ ( @@ -323,12 +323,7 @@ kOmegaSSTSAS::kOmegaSSTSAS mesh_ ) { - omegaMin_.readIfPresent(*this); - - bound(k_, kMin_); - bound(omega_, omegaMin_); - - updateSubGridScaleFields(magSqr(symm(fvc::grad(U)))); + updateSubGridScaleFields(magSqr(2.0*symm(fvc::grad(U)))); printCoeffs(); } @@ -345,15 +340,16 @@ void kOmegaSSTSAS::correct(const tmp<volTensorField>& gradU) y_.correct(); } - volScalarField S2 = magSqr(symm(gradU())); + volScalarField S2 = magSqr(2.0*symm(gradU())); gradU.clear(); volVectorField gradK = fvc::grad(k_); volVectorField gradOmega = fvc::grad(omega_); - volScalarField L = sqrt(k_)/(pow025(Cmu_)*omega_); - volScalarField CDkOmega = (2.0*alphaOmega2_)*(gradK & gradOmega)/omega_; + volScalarField L = sqrt(k_)/(pow(Cmu_, 0.25)*(omega_ + omegaSmall_)); + volScalarField CDkOmega = + (2.0*alphaOmega2_)*(gradK & gradOmega)/(omega_ + omegaSmall_); volScalarField F1 = this->F1(CDkOmega); - volScalarField G = nuSgs_*2.0*S2; + volScalarField G = nuSgs_*0.5*S2; // Turbulent kinetic energy equation { @@ -371,12 +367,14 @@ void kOmegaSSTSAS::correct(const tmp<volTensorField>& gradU) kEqn.relax(); kEqn.solve(); } - bound(k_, kMin_); + bound(k_, k0()); volScalarField grad_omega_k = max ( - magSqr(gradOmega)/sqr(omega_), - magSqr(gradK)/sqr(k_) + magSqr(gradOmega)/ + sqr(omega_ + omegaSmall_), + magSqr(gradK)/ + sqr(k_ + k0()) ); // Turbulent frequency equation @@ -388,7 +386,7 @@ void kOmegaSSTSAS::correct(const tmp<volTensorField>& gradU) - fvm::Sp(fvc::div(phi()), omega_) - fvm::laplacian(DomegaEff(F1), omega_) == - gamma(F1)*2.0*S2 + gamma(F1)*0.5*S2 - fvm::Sp(beta(F1)*omega_, omega_) - fvm::SuSp // cross diffusion term ( @@ -398,7 +396,7 @@ void kOmegaSSTSAS::correct(const tmp<volTensorField>& gradU) + FSAS_ *max ( - dimensionedScalar("zero",dimensionSet(0, 0, -2, 0, 0), 0.0), + dimensionedScalar("zero",dimensionSet(0, 0 , -2, 0, 0),0. ), zetaTilda2_*kappa_*S2*(L/Lvk2(S2)) - 2.0/alphaPhi_*k_*grad_omega_k ) @@ -407,7 +405,7 @@ void kOmegaSSTSAS::correct(const tmp<volTensorField>& gradU) omegaEqn.relax(); omegaEqn.solve(); } - bound(omega_, omegaMin_); + bound(omega_, omega0_); updateSubGridScaleFields(S2); } @@ -460,8 +458,6 @@ bool kOmegaSSTSAS::read() zetaTilda2_.readIfPresent(coeffDict()); FSAS_.readIfPresent(coeffDict()); - omegaMin_.readIfPresent(*this); - return true; } else diff --git a/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.H b/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.H index 8a27d515a22276d55a593a1e4f4d605b343b5344..444392668b6a86f66fcb24dc8039ac4b185d3452 100644 --- a/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.H +++ b/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.H @@ -27,7 +27,11 @@ Class Description kOmegaSSTSAS LES turbulence model for incompressible flows - Reference: + References: + A Scale-Adaptive Simulation Model using Two-Equation Models + AIAA 2005-1095 + F. R. Menter and Y. Egorov + DESider A European Effort on Hybrid RANS-LES Modelling: Results of the European-Union Funded Project, 2004 - 2007 (Notes on Numerical Fluid Mechanics and Multidisciplinary Design).