Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / turbulenceModels / compressible / LES / Smagorinsky / Smagorinsky.H
blobb2968f33ccb8ae6175025149a3f8de09f26504a1
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::compressible::LESModels::Smagorinsky
27 Description
28     The choric Smagorinsky Model for compressible flows.
30     Algebraic eddy viscosity SGS model founded on the assumption that
31     local equilibrium prevails.
32     Thus,
33     \verbatim
35         B = 2/3*k*I - 2*nuSgs*dev(D)
37     where
39         D = symm(grad(U));
40         k from rho*D:B + ce*rho*k^3/2/delta = 0
41         muSgs = ck*rho*sqrt(k)*delta
42     \endverbatim
44 SourceFiles
45     Smagorinsky.C
47 \*---------------------------------------------------------------------------*/
49 #ifndef compressibleSmagorinsky_H
50 #define compressibleSmagorinsky_H
52 #include "GenEddyVisc.H"
54 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
56 namespace Foam
58 namespace compressible
60 namespace LESModels
63 /*---------------------------------------------------------------------------*\
64                            Class Smagorinsky Declaration
65 \*---------------------------------------------------------------------------*/
67 class Smagorinsky
69     public GenEddyVisc
71     // Private data
73         dimensionedScalar ck_;
76     // Private Member Functions
78         //- Update sub-grid scale fields
79         void updateSubGridScaleFields(const volTensorField& gradU);
81         // Disallow default bitwise copy construct and assignment
82         Smagorinsky(const Smagorinsky&);
83         Smagorinsky& operator=(const Smagorinsky&);
86 public:
88     //- Runtime type information
89     TypeName("Smagorinsky");
91     // Constructors
93         //- Construct from components
94         Smagorinsky
95         (
96             const volScalarField& rho,
97             const volVectorField& U,
98             const surfaceScalarField& phi,
99             const basicThermo& thermoPhysicalModel,
100             const word& turbulenceModelName = turbulenceModel::typeName,
101             const word& modelName = typeName
102         );
105     //- Destructor
106     virtual ~Smagorinsky()
107     {}
110     // Member Functions
112         //- Return SGS kinetic energy
113         //  calculated from the given velocity gradient
114         tmp<volScalarField> k(const tmp<volTensorField>& gradU) const
115         {
116             return (2.0*ck_/ce_)*sqr(delta())*magSqr(dev(symm(gradU)));
117         }
119         //- Return SGS kinetic energy
120         virtual tmp<volScalarField> k() const
121         {
122             return k(fvc::grad(U()));
123         }
126         //- Correct Eddy-Viscosity and related properties
127         virtual void correct(const tmp<volTensorField>& gradU);
129         //- Read LESProperties dictionary
130         virtual bool read();
134 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
136 } // End namespace LESModels
137 } // End namespace compressible
138 } // End namespace Foam
140 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
142 #endif
144 // ************************************************************************* //