BUG: UListIO: byteSize overflowing on really big faceLists
[OpenFOAM-2.0.x.git] / src / turbulenceModels / incompressible / LES / SpalartAllmaras / SpalartAllmaras.H
blob7ed507712a2eafc893ca10cdbb2abd1faaac8b88
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::SpalartAllmaras
27 Description
28     SpalartAllmaras DES (SA + LES) turbulence model for incompressible flows
30 SourceFiles
31     SpalartAllmaras.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef SpalartAllmaras_H
36 #define SpalartAllmaras_H
38 #include "LESModel.H"
39 #include "volFields.H"
40 #include "wallDist.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 namespace Foam
46 namespace incompressible
48 namespace LESModels
51 /*---------------------------------------------------------------------------*\
52                         Class SpalartAllmaras Declaration
53 \*---------------------------------------------------------------------------*/
55 class SpalartAllmaras
57     public LESModel
59     // Private Member Functions
61         //- Update sub-grid scale fields
62         void updateSubGridScaleFields();
64         // Disallow default bitwise copy construct and assignment
65         SpalartAllmaras(const SpalartAllmaras&);
66         SpalartAllmaras& operator=(const SpalartAllmaras&);
69 protected:
71     // Protected data
73         dimensionedScalar sigmaNut_;
74         dimensionedScalar kappa_;
77         // Model constants
79             dimensionedScalar Cb1_;
80             dimensionedScalar Cb2_;
81             dimensionedScalar Cv1_;
82             dimensionedScalar Cv2_;
83             dimensionedScalar CDES_;
84             dimensionedScalar ck_;
85             dimensionedScalar Cw1_;
86             dimensionedScalar Cw2_;
87             dimensionedScalar Cw3_;
90         // Fields
92             wallDist y_;
93             volScalarField nuTilda_;
94             volScalarField nuSgs_;
97     // Protected Member Functions
99         virtual tmp<volScalarField> fv1() const;
100         virtual tmp<volScalarField> fv2() const;
101         virtual tmp<volScalarField> fv3() const;
102         virtual tmp<volScalarField> S(const volTensorField& gradU) const;
104         virtual tmp<volScalarField> STilda
105         (
106             const volScalarField& S,
107             const volScalarField& dTilda
108         ) const;
110         virtual tmp<volScalarField> r
111         (
112             const volScalarField& visc,
113             const volScalarField& S,
114             const volScalarField& dTilda
115         ) const;
117         virtual tmp<volScalarField> fw
118         (
119             const volScalarField& S,
120             const volScalarField& dTilda
121         ) const;
123         //- Length scale
124         virtual tmp<volScalarField> dTilda(const volScalarField& S) const;
127 public:
129     //- Runtime type information
130     TypeName("SpalartAllmaras");
133     // Constructors
135         //- Construct from components
136         SpalartAllmaras
137         (
138             const volVectorField& U,
139             const surfaceScalarField& phi,
140             transportModel& transport,
141             const word& turbulenceModelName = turbulenceModel::typeName,
142             const word& modelName = typeName
143         );
146     //- Destructor
147     virtual ~SpalartAllmaras()
148     {}
151     // Member Functions
153         //- Return SGS kinetic energy
154         virtual tmp<volScalarField> k() const;
156         //- Return sub-grid disipation rate
157         virtual tmp<volScalarField> epsilon() const;
159         tmp<volScalarField> nuTilda() const
160         {
161             return nuTilda_;
162         }
164         //- Return SGS viscosity
165         virtual tmp<volScalarField> nuSgs() const
166         {
167             return nuSgs_;
168         }
170         //- Return the sub-grid stress tensor.
171         virtual tmp<volSymmTensorField> B() const;
173         //- Return the effective sub-grid turbulence stress tensor
174         //  including the laminar stress
175         virtual tmp<volSymmTensorField> devBeff() const;
177         //- Return the deviatoric part of the divergence of Beff
178         //  i.e. the additional term in the filtered NSE.
179         virtual tmp<fvVectorMatrix> divDevBeff(volVectorField& U) const;
181         //- Correct nuTilda and related properties
182         virtual void correct(const tmp<volTensorField>& gradU);
184         //- Read LESProperties dictionary
185         virtual bool read();
189 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
191 } // End namespace LESModels
192 } // End namespace incompressible
193 } // End namespace Foam
195 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
197 #endif
199 // ************************************************************************* //