Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / turbulenceModels / incompressible / RAS / realizableKE / realizableKE.H
blobc870cfeb9946b6cc3ad4c440e9c9582d18ace166
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2011 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
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
19     for more details.
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/>.
24 Class
25     Foam::incompressible::RASModels::realizableKE
27 Description
28     Realizable k-epsilon turbulence model for incompressible flows.
30     Model described in the paper:
31     \verbatim
32         "A New k-epsilon Eddy Viscosity Model for High Reynolds Number
33         Turbulent Flows"
35         Tsan-Hsing Shih, William W. Liou, Aamir Shabbir, Zhigang Tang and
36         Jiang Zhu
38         Computers and Fluids Vol. 24, No. 3, pp. 227-238, 1995
39     \endverbatim
41     The default model coefficients correspond to the following:
42     \verbatim
43         realizableKECoeffs
44         {
45             Cmu         0.09;
46             A0          4.0;
47             C2          1.9;
48             sigmak      1.0;
49             sigmaEps    1.2;
50         }
51     \endverbatim
53 SourceFiles
54     realizableKE.C
56 \*---------------------------------------------------------------------------*/
58 #ifndef realizableKE_H
59 #define realizableKE_H
61 #include "RASModel.H"
63 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
65 namespace Foam
67 namespace incompressible
69 namespace RASModels
72 /*---------------------------------------------------------------------------*\
73                            Class realizableKE Declaration
74 \*---------------------------------------------------------------------------*/
76 class realizableKE
78     public RASModel
81 protected:
83     // Protected data
85         // Model coefficients
87             dimensionedScalar Cmu_;
88             dimensionedScalar A0_;
89             dimensionedScalar C2_;
90             dimensionedScalar sigmak_;
91             dimensionedScalar sigmaEps_;
94         // Fields
96             volScalarField k_;
97             volScalarField epsilon_;
98             volScalarField nut_;
101     // Protected Member Functions
103         tmp<volScalarField> rCmu
104         (
105             const volTensorField& gradU,
106             const volScalarField& S2,
107             const volScalarField& magS
108         );
110         tmp<volScalarField> rCmu(const volTensorField& gradU);
113 public:
115     //- Runtime type information
116     TypeName("realizableKE");
118     // Constructors
120         //- Construct from components
121         realizableKE
122         (
123             const volVectorField& U,
124             const surfaceScalarField& phi,
125             transportModel& transport,
126             const word& turbulenceModelName = turbulenceModel::typeName,
127             const word& modelName = typeName
128         );
131     //- Destructor
132     virtual ~realizableKE()
133     {}
136     // Member Functions
138         //- Return the turbulence viscosity
139         virtual tmp<volScalarField> nut() const
140         {
141             return nut_;
142         }
144         //- Return the effective diffusivity for k
145         tmp<volScalarField> DkEff() const
146         {
147             return tmp<volScalarField>
148             (
149                 new volScalarField("DkEff", nut_/sigmak_ + nu())
150             );
151         }
153         //- Return the effective diffusivity for epsilon
154         tmp<volScalarField> DepsilonEff() const
155         {
156             return tmp<volScalarField>
157             (
158                 new volScalarField("DepsilonEff", nut_/sigmaEps_ + nu())
159             );
160         }
162         //- Return the turbulence kinetic energy
163         virtual tmp<volScalarField> k() const
164         {
165             return k_;
166         }
168         //- Return the turbulence kinetic energy dissipation rate
169         virtual tmp<volScalarField> epsilon() const
170         {
171             return epsilon_;
172         }
174         //- Return the Reynolds stress tensor
175         virtual tmp<volSymmTensorField> R() const;
177         //- Return the effective stress tensor including the laminar stress
178         virtual tmp<volSymmTensorField> devReff() const;
180         //- Return the source term for the momentum equation
181         virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const;
183         //- Solve the turbulence equations and correct the turbulence viscosity
184         virtual void correct();
186         //- Read RASProperties dictionary
187         virtual bool read();
191 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
193 } // End namespace RASModels
194 } // End namespace incompressible
195 } // End namespace Foam
197 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
199 #endif
201 // ************************************************************************* //