ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / turbulenceModels / incompressible / turbulenceModel / turbulenceModel.H
bloba39482e4395724d0929bab459770f7d92e378348
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 Namespace
25     Foam::incompressible::turbulenceModels
27 Description
28     Namespace for incompressible turbulence turbulence models.
30 Class
31     Foam::incompressible::turbulenceModel
33 Description
34     Abstract base class for incompressible turbulence models
35     (RAS, LES and laminar).
37 SourceFiles
38     turbulenceModel.C
39     newTurbulenceModel.C
41 \*---------------------------------------------------------------------------*/
43 #ifndef turbulenceModel_H
44 #define turbulenceModel_H
46 #include "primitiveFieldsFwd.H"
47 #include "volFieldsFwd.H"
48 #include "surfaceFieldsFwd.H"
49 #include "fvMatricesFwd.H"
50 #include "incompressible/transportModel/transportModel.H"
51 #include "autoPtr.H"
52 #include "runTimeSelectionTables.H"
54 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
56 namespace Foam
59 // Forward declarations
60 class fvMesh;
62 namespace incompressible
65 /*---------------------------------------------------------------------------*\
66                            Class turbulenceModel Declaration
67 \*---------------------------------------------------------------------------*/
69 class turbulenceModel
71     public regIOobject
74 protected:
76     // Protected data
78         const Time& runTime_;
79         const fvMesh& mesh_;
81         const volVectorField& U_;
82         const surfaceScalarField& phi_;
84         transportModel& transportModel_;
87 private:
89     // Private Member Functions
91         //- Disallow default bitwise copy construct
92         turbulenceModel(const turbulenceModel&);
94         //- Disallow default bitwise assignment
95         void operator=(const turbulenceModel&);
98 public:
100     //- Runtime type information
101     TypeName("turbulenceModel");
104     // Declare run-time New selection table
106         declareRunTimeNewSelectionTable
107         (
108             autoPtr,
109             turbulenceModel,
110             turbulenceModel,
111             (
112                 const volVectorField& U,
113                 const surfaceScalarField& phi,
114                 transportModel& transport,
115                 const word& turbulenceModelName
116             ),
117             (U, phi, transport, turbulenceModelName)
118         );
121     // Constructors
123         //- Construct from components
124         turbulenceModel
125         (
126             const volVectorField& U,
127             const surfaceScalarField& phi,
128             transportModel& transport,
129             const word& turbulenceModelName = typeName
130         );
133     // Selectors
135         //- Return a reference to the selected turbulence model
136         static autoPtr<turbulenceModel> New
137         (
138             const volVectorField& U,
139             const surfaceScalarField& phi,
140             transportModel& transport,
141             const word& turbulenceModelName = typeName
142         );
145     //- Destructor
146     virtual ~turbulenceModel()
147     {}
150     // Member Functions
152         //- Access function to velocity field
153         inline const volVectorField& U() const
154         {
155             return U_;
156         }
158         //- Access function to flux field
159         inline const surfaceScalarField& phi() const
160         {
161             return phi_;
162         }
164         //- Access function to incompressible transport model
165         inline transportModel& transport() const
166         {
167             return transportModel_;
168         }
170         //- Return the laminar viscosity
171         inline tmp<volScalarField> nu() const
172         {
173             return transportModel_.nu();
174         }
176         //- Return the turbulence viscosity
177         virtual tmp<volScalarField> nut() const = 0;
179         //- Return the effective viscosity
180         virtual tmp<volScalarField> nuEff() const = 0;
182         //- Return the turbulence kinetic energy
183         virtual tmp<volScalarField> k() const = 0;
185         //- Return the turbulence kinetic energy dissipation rate
186         virtual tmp<volScalarField> epsilon() const = 0;
188         //- Return the Reynolds stress tensor
189         virtual tmp<volSymmTensorField> R() const = 0;
191         //- Return the effective stress tensor including the laminar stress
192         virtual tmp<volSymmTensorField> devReff() const = 0;
194         //- Return the source term for the momentum equation
195         virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const = 0;
197         //- Solve the turbulence equations and correct the turbulence viscosity
198         virtual void correct() = 0;
200         //- Read LESProperties or RASProperties dictionary
201         virtual bool read() = 0;
203         //- Default dummy write function
204         virtual bool writeData(Ostream&) const
205         {
206             return true;
207         }
211 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
213 } // End namespace incompressible
214 } // End namespace Foam
216 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
218 #endif
220 // ************************************************************************* //