ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / turbulenceModels / compressible / turbulenceModel / turbulenceModel.C
blob6d998d74a442c39625226ace7aab24d75e862b37
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 \*---------------------------------------------------------------------------*/
26 #include "turbulenceModel.H"
27 #include "volFields.H"
28 #include "surfaceFields.H"
29 #include "fvcGrad.H"
31 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
33 namespace Foam
35 namespace compressible
38 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
40 defineTypeNameAndDebug(turbulenceModel, 0);
41 defineRunTimeSelectionTable(turbulenceModel, turbulenceModel);
43 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
45 turbulenceModel::turbulenceModel
47     const volScalarField& rho,
48     const volVectorField& U,
49     const surfaceScalarField& phi,
50     const basicThermo& thermophysicalModel,
51     const word& turbulenceModelName
54     regIOobject
55     (
56         IOobject
57         (
58             turbulenceModelName,
59             U.time().constant(),
60             U.db(),
61             IOobject::NO_READ,
62             IOobject::NO_WRITE
63         )
64     ),
65     runTime_(U.time()),
66     mesh_(U.mesh()),
68     rho_(rho),
69     U_(U),
70     phi_(phi),
71     thermophysicalModel_(thermophysicalModel)
75 // * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * //
77 autoPtr<turbulenceModel> turbulenceModel::New
79     const volScalarField& rho,
80     const volVectorField& U,
81     const surfaceScalarField& phi,
82     const basicThermo& thermophysicalModel,
83     const word& turbulenceModelName
86     // get model name, but do not register the dictionary
87     // otherwise it is registered in the database twice
88     const word modelType
89     (
90         IOdictionary
91         (
92             IOobject
93             (
94                 "turbulenceProperties",
95                 U.time().constant(),
96                 U.db(),
97                 IOobject::MUST_READ_IF_MODIFIED,
98                 IOobject::NO_WRITE,
99                 false
100             )
101         ).lookup("simulationType")
102     );
104     Info<< "Selecting turbulence model type " << modelType << endl;
106     turbulenceModelConstructorTable::iterator cstrIter =
107         turbulenceModelConstructorTablePtr_->find(modelType);
109     if (cstrIter == turbulenceModelConstructorTablePtr_->end())
110     {
111         FatalErrorIn
112         (
113             "turbulenceModel::New(const volScalarField&, "
114             "const volVectorField&, const surfaceScalarField&, "
115             "basicThermo&, const word&)"
116         )   << "Unknown turbulenceModel type "
117             << modelType << nl << nl
118             << "Valid turbulenceModel types:" << endl
119             << turbulenceModelConstructorTablePtr_->sortedToc()
120             << exit(FatalError);
121     }
123     return autoPtr<turbulenceModel>
124     (
125         cstrIter()(rho, U, phi, thermophysicalModel, turbulenceModelName)
126     );
130 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
132 tmp<volScalarField> turbulenceModel::rhoEpsilonEff() const
134     tmp<volTensorField> tgradU = fvc::grad(U_);
135     return mu()*(tgradU() && dev(twoSymm(tgradU()))) + rho_*epsilon();
139 void turbulenceModel::correct()
143 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
145 } // End namespace compressible
146 } // End namespace Foam
148 // ************************************************************************* //