1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
5 \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
7 -------------------------------------------------------------------------------
9 This file is part of OpenFOAM.
11 OpenFOAM is free software: you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by
13 the Free Software Foundation, either version 3 of the License, or
14 (at your option) any later version.
16 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 You should have received a copy of the GNU General Public License
22 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 Foam::incompressible::LESModels::kOmegaSSTSAS
28 kOmegaSSTSAS LES turbulence model for incompressible flows
31 "Evaluation of the SST-SAS model: channel flow, asymmetric diffuser
32 and axi-symmetric hill".
33 European Conference on Computational Fluid Dynamics ECCOMAS CFD 2006.
37 The first term of the Qsas expression is corrected following:
39 DESider A European Effort on Hybrid RANS-LES Modelling:
40 Results of the European-Union Funded Project, 2004 - 2007
41 (Notes on Numerical Fluid Mechanics and Multidisciplinary Design).
42 Chapter 2, section 8 Formulation of the Scale-Adaptive Simulation (SAS)
43 Model during the DESIDER Project. Published in Springer-Verlag Berlin
45 F. R. Menter and Y. Egorov.
51 \*---------------------------------------------------------------------------*/
53 #ifndef kOmegaSSTSAS_H
54 #define kOmegaSSTSAS_H
57 #include "volFields.H"
60 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
64 namespace incompressible
69 /*---------------------------------------------------------------------------*\
70 Class kOmegaSSTSAS Declaration
71 \*---------------------------------------------------------------------------*/
77 // Private Member Functions
79 //- Update sub-grid scale fields
80 void updateSubGridScaleFields(const volScalarField& D);
82 // Disallow default bitwise copy construct and assignment
83 kOmegaSSTSAS(const kOmegaSSTSAS&);
84 kOmegaSSTSAS& operator=(const kOmegaSSTSAS&);
93 dimensionedScalar alphaK1_;
94 dimensionedScalar alphaK2_;
96 dimensionedScalar alphaOmega1_;
97 dimensionedScalar alphaOmega2_;
99 dimensionedScalar gamma1_;
100 dimensionedScalar gamma2_;
102 dimensionedScalar beta1_;
103 dimensionedScalar beta2_;
105 dimensionedScalar betaStar_;
107 dimensionedScalar a1_;
108 dimensionedScalar c1_;
109 dimensionedScalar Cs_;
111 dimensionedScalar alphaPhi_;
112 dimensionedScalar zetaTilda2_;
113 dimensionedScalar FSAS_;
115 dimensionedScalar omegaMin_;
118 dimensionedScalar Cmu_;
119 dimensionedScalar kappa_;
125 volScalarField omega_;
126 volScalarField nuSgs_;
129 // Protected Member Functions
131 tmp<volScalarField> Lvk2
133 const volScalarField& S2
136 tmp<volScalarField> F1(const volScalarField& CDkOmega) const;
137 tmp<volScalarField> F2() const;
139 tmp<volScalarField> blend
141 const volScalarField& F1,
142 const dimensionedScalar& psi1,
143 const dimensionedScalar& psi2
146 return F1*(psi1 - psi2) + psi2;
149 tmp<volScalarField> alphaK
151 const volScalarField& F1
154 return blend(F1, alphaK1_, alphaK2_);
157 tmp<volScalarField> alphaOmega
159 const volScalarField& F1
162 return blend(F1, alphaOmega1_, alphaOmega2_);
165 tmp<volScalarField> beta
167 const volScalarField& F1
170 return blend(F1, beta1_, beta2_);
173 tmp<volScalarField> gamma
175 const volScalarField& F1
178 return blend(F1, gamma1_, gamma2_);
184 //- Runtime type information
185 TypeName("kOmegaSSTSAS");
190 //- Construct from components
193 const volVectorField& U,
194 const surfaceScalarField& phi,
195 transportModel& transport,
196 const word& turbulenceModelName = turbulenceModel::typeName,
197 const word& modelName = typeName
202 virtual ~kOmegaSSTSAS()
208 //- Return SGS kinetic energy
209 virtual tmp<volScalarField> k() const
215 virtual tmp<volScalarField> omega() const
220 //- Return the effective diffusivity for k
221 tmp<volScalarField> DkEff(const volScalarField& F1) const
223 return tmp<volScalarField>
225 new volScalarField("DkEff", alphaK(F1)*nuSgs_ + nu())
229 //- Return the effective diffusivity for omega
230 tmp<volScalarField> DomegaEff(const volScalarField& F1) const
232 return tmp<volScalarField>
234 new volScalarField("DomegaEff", alphaOmega(F1)*nuSgs_ + nu())
238 //- Return sub-grid disipation rate
239 virtual tmp<volScalarField> epsilon() const;
241 //- Return SGS viscosity
242 virtual tmp<volScalarField> nuSgs() const
247 //- Return the sub-grid stress tensor.
248 virtual tmp<volSymmTensorField> B() const;
250 //- Return the effective sub-grid turbulence stress tensor
251 // including the laminar stress
252 virtual tmp<volSymmTensorField> devBeff() const;
254 //- Return the deviatoric part of the divergence of Beff
255 // i.e. the additional term in the filtered NSE.
256 virtual tmp<fvVectorMatrix> divDevBeff(volVectorField& U) const;
258 //- Solve the turbulence equations (k-w) and correct the turbulence
260 virtual void correct(const tmp<volTensorField>& gradU);
262 //- Read LESProperties dictionary
267 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
269 } // End namespace LESModels
270 } // End namespace incompressible
271 } // End namespace Foam
273 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
277 // ************************************************************************* //