ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / turbulenceModels / incompressible / LES / Smagorinsky / Smagorinsky.H
blobe110591917adad56a27931e7ec2c2d17b8cbc624
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
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::LESModels::Smagorinsky
27 Description
28     The Isochoric Smagorinsky Model for incompressible flows.
30     Algebraic eddy viscosity SGS model founded on the assumption that
31     local equilibrium prevails.
32     Thus,
33     \verbatim
34         B = 2/3*k*I - 2*nuSgs*dev(D)
35         Beff = 2/3*k*I - 2*nuEff*dev(D)
37     where
39         D = symm(grad(U));
40         k = (2*ck/ce)*delta^2*||D||^2
41         nuSgs = ck*sqrt(k)*delta
42         nuEff = nuSgs + nu
43     \endverbatim
45 SourceFiles
46     Smagorinsky.C
48 \*---------------------------------------------------------------------------*/
50 #ifndef Smagorinsky_H
51 #define Smagorinsky_H
53 #include "GenEddyVisc.H"
55 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
57 namespace Foam
59 namespace incompressible
61 namespace LESModels
64 /*---------------------------------------------------------------------------*\
65                            Class Smagorinsky Declaration
66 \*---------------------------------------------------------------------------*/
68 class Smagorinsky
70     public GenEddyVisc
72     // Private data
74         dimensionedScalar ck_;
77     // Private Member Functions
79         //- Update sub-grid scale fields
80         void updateSubGridScaleFields(const volTensorField& gradU);
82         // Disallow default bitwise copy construct and assignment
83         Smagorinsky(const Smagorinsky&);
84         Smagorinsky& operator=(const Smagorinsky&);
87 public:
89     //- Runtime type information
90     TypeName("Smagorinsky");
92     // Constructors
94         //- Construct from components
95         Smagorinsky
96         (
97             const volVectorField& U,
98             const surfaceScalarField& phi,
99             transportModel& transport,
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 incompressible
138 } // End namespace Foam
140 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
142 #endif
144 // ************************************************************************* //