Forward compatibility: flex
[foam-extend-3.2.git] / src / turbulenceModels / compressible / LES / GenEddyVisc / GenEddyVisc.H
blob60a17dbfb2b53323178453f6ff7685cf514a3e8a
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation, either version 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::compressible::LESModels::GenEddyVisc
27 Description
28     General base class for all compressible models that can be implemented as
29     an eddy viscosity, i.e. algebraic and one-equation models.
31     Contains fields for k (SGS turbulent kinetic energy), gamma
32     (modelled viscosity) and epsilon (SGS dissipation).
34 SourceFiles
35     GenEddyVisc.C
37 \*---------------------------------------------------------------------------*/
39 #ifndef compressibleGenEddyVisc_H
40 #define compressibleGenEddyVisc_H
42 #include "LESModel.H"
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 namespace Foam
48 namespace compressible
50 namespace LESModels
53 /*---------------------------------------------------------------------------*\
54                            Class GenEddyVisc Declaration
55 \*---------------------------------------------------------------------------*/
57 class GenEddyVisc
59     virtual public LESModel
61     // Private Member Functions
63         // Disallow default bitwise copy construct and assignment
64         GenEddyVisc(const GenEddyVisc&);
65         GenEddyVisc& operator=(const GenEddyVisc&);
68 protected:
70     // Model coefficients
72         dimensionedScalar ce_;
73         dimensionedScalar Prt_;
76     // Fields
78         volScalarField k_;
79         volScalarField muSgs_;
80         volScalarField alphaSgs_;
83 public:
85     // Constructors
87         //- Construct from components
88         GenEddyVisc
89         (
90             const volScalarField& rho,
91             const volVectorField& U,
92             const surfaceScalarField& phi,
93             const basicThermo& thermoPhysicalModel
94         );
97     //- Destructor
98     virtual ~GenEddyVisc()
99     {}
102     // Member Functions
104         //- Return SGS kinetic energy
105         virtual tmp<volScalarField> k() const
106         {
107             return k_;
108         }
110         //- Return sub-grid disipation rate
111         virtual tmp<volScalarField> epsilon() const
112         {
113             return ce_*k_*sqrt(k_)/delta();
114         }
116         //- Return viscosity
117         virtual tmp<volScalarField> muSgs() const
118         {
119             return muSgs_;
120         }
122         //- Return thermal diffusivity
123         virtual tmp<volScalarField> alphaSgs() const
124         {
125             return alphaSgs_;
126         }
128         //- Return thermal diffusivity
129         virtual tmp<volScalarField> alphaEff() const
130         {
131             return tmp<volScalarField>
132             (
133                 new volScalarField("alphaEff", alphaSgs_ + alpha())
134             );
135         }
137         //- Return the sub-grid stress tensor.
138         virtual tmp<volSymmTensorField> B() const;
140         //- Return the deviatoric part of the effective sub-grid
141         //  turbulence stress tensor including the laminar stress
142         virtual tmp<volSymmTensorField> devRhoBeff() const;
144         //- Returns div(rho*dev(B)).
145         // This is the additional term due to the filtering of the NSE.
146         virtual tmp<fvVectorMatrix> divDevRhoBeff(volVectorField& U) const;
148         //- Correct Eddy-Viscosity and related properties
149         virtual void correct(const tmp<volTensorField>& gradU);
151         //- Read LESProperties dictionary
152         virtual bool read();
156 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
158 } // End namespace LESModels
159 } // End namespace compressible
160 } // End namespace Foam
162 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
164 #endif
166 // ************************************************************************* //