kineticTheoryModel.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2011-2016 OpenFOAM Foundation
9  Copyright (C) 2020 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::kineticTheoryModel
29 
30 Description
31  Kinetic theory particle phase RAS model
32 
33  Reference:
34  \verbatim
35  "Derivation, implementation, and validation of computer simulation
36  models for gas-solid fluidized beds",
37  van Wachem, B.G.M.,
38  Ph.D. Thesis, Delft University of Technology, Amsterdam, 2000.
39  \endverbatim
40 
41  There are no default model coefficients.
42 
43 SourceFiles
44  kineticTheoryModel.C
45 
46 \*---------------------------------------------------------------------------*/
47 
48 #ifndef kineticTheoryModel_H
49 #define kineticTheoryModel_H
50 
51 #include "RASModel.H"
52 #include "eddyViscosity.H"
53 #include "phaseCompressibleTurbulenceModel.H"
54 #include "EddyDiffusivity.H"
55 #include "phaseModel.H"
56 #include "dragModel.H"
57 #include "viscosityModel.H"
58 #include "conductivityModel.H"
59 #include "radialModel.H"
60 #include "granularPressureModel.H"
61 #include "frictionalStressModel.H"
62 
63 
64 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
65 
66 namespace Foam
67 {
68 namespace RASModels
69 {
70 
71 /*---------------------------------------------------------------------------*\
72  Class kineticTheoryModel Declaration
73 \*---------------------------------------------------------------------------*/
74 
75 class kineticTheoryModel
76 :
77  public eddyViscosity
78  <
79  RASModel<EddyDiffusivity<phaseCompressibleTurbulenceModel>>
80  >
81 {
82  // Private data
83 
84  // Input Fields
85 
86  const phaseModel& phase_;
87 
88 
89  // Sub-models
90 
91  //- Run-time selected viscosity model
92  autoPtr<kineticTheoryModels::viscosityModel> viscosityModel_;
93 
94  //- Run-time selected conductivity model
95  autoPtr<kineticTheoryModels::conductivityModel> conductivityModel_;
96 
97  //- Run-time selected radial distribution model
98  autoPtr<kineticTheoryModels::radialModel> radialModel_;
99 
100  //- Run-time selected granular pressure model
101  autoPtr<kineticTheoryModels::granularPressureModel>
102  granularPressureModel_;
103 
104  //- Run-time selected frictional stress model
105  autoPtr<kineticTheoryModels::frictionalStressModel>
106  frictionalStressModel_;
107 
108 
109  // Kinetic Theory Model coefficients
110 
111  //- Use equilibrium approximation: generation == dissipation
112  bool equilibrium_;
113 
114  //- Coefficient of restitution
116 
117  //- Maximum packing phase-fraction
118  dimensionedScalar alphaMax_;
119 
120  //- Min value for which the frictional stresses are zero
121  dimensionedScalar alphaMinFriction_;
122 
123  //- Residual phase fraction
124  dimensionedScalar residualAlpha_;
125 
126  //- Maximum turbulent viscosity
127  dimensionedScalar maxNut_;
128 
129 
130  // Kinetic Theory Model Fields
131 
132  //- The granular energy/temperature
133  volScalarField Theta_;
134 
135  //- The granular bulk viscosity
136  volScalarField lambda_;
137 
138  //- The granular radial distribution
139  volScalarField gs0_;
140 
141  //- The granular "thermal" conductivity
142  volScalarField kappa_;
143 
144  //- The frictional viscosity
145  volScalarField nuFric_;
146 
147 
148  // Private Member Functions
149 
150  void correctNut()
151  {}
152 
153  //- No copy construct
154  kineticTheoryModel(const kineticTheoryModel&) = delete;
155 
156  //- No copy assignment
157  void operator=(const kineticTheoryModel&) = delete;
158 
159 
160 public:
161 
162  //- Runtime type information
163  TypeName("kineticTheory");
164 
165 
166  // Constructors
167 
168  //- Construct from components
169  kineticTheoryModel
170  (
171  const volScalarField& alpha,
172  const volScalarField& rho,
173  const volVectorField& U,
175  const surfaceScalarField& phi,
176  const phaseModel& transport,
178  const word& type = typeName
179  );
180 
181 
182  //- Destructor
183  virtual ~kineticTheoryModel();
184 
185 
186  // Member Functions
187 
188  //- Re-read model coefficients if they have changed
189  virtual bool read();
190 
191  //- Return the effective viscosity
192  virtual tmp<volScalarField> nuEff() const
193  {
194  return this->nut();
195  }
196 
197  //- Return the effective viscosity on patch
198  virtual tmp<scalarField> nuEff(const label patchi) const
199  {
200  return this->nut(patchi);
201  }
202 
203  //- Return the turbulence kinetic energy
204  virtual tmp<volScalarField> k() const;
205 
206  //- Return the turbulence kinetic energy dissipation rate
207  virtual tmp<volScalarField> epsilon() const;
208 
209  //- Return the specific dissipation rate
210  virtual tmp<volScalarField> omega() const;
211 
212  //- Return the Reynolds stress tensor
213  virtual tmp<volSymmTensorField> R() const;
214 
215  //- Return the phase-pressure'
216  // (derivative of phase-pressure w.r.t. phase-fraction)
217  virtual tmp<volScalarField> pPrime() const;
218 
219  //- Return the face-phase-pressure'
220  // (derivative of phase-pressure w.r.t. phase-fraction)
221  virtual tmp<surfaceScalarField> pPrimef() const;
222 
223  //- Return the effective stress tensor
224  virtual tmp<volSymmTensorField> devRhoReff() const;
225 
226  //- Return the effective stress tensor based on a given velocity field
227  virtual tmp<volSymmTensorField> devRhoReff
228  (
229  const volVectorField& U
230  ) const;
231 
232  //- Return the source term for the momentum equation
234 
235  //- Solve the kinetic theory equations and correct the viscosity
236  virtual void correct();
237 };
238 
239 
240 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
242 } // End namespace RASModels
243 } // End namespace Foam
244 
245 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
246 
247 #endif
248 
249 // ************************************************************************* //
virtual tmp< volScalarField > nut() const
Return the turbulence viscosity.
const volVectorField & U() const
Access function to velocity field.
virtual tmp< volSymmTensorField > R() const
Return the Reynolds stress tensor.
TypeName("kineticTheory")
Runtime type information.
virtual tmp< volScalarField > nuEff() const
Return the effective viscosity.
GeometricField< vector, fvPatchField, volMesh > volVectorField
Definition: volFieldsFwd.H:82
virtual bool read()
Re-read model coefficients if they have changed.
const transportModel & transport() const
Access function to incompressible transport model.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:81
virtual tmp< fvVectorMatrix > divDevRhoReff(volVectorField &U) const
Return the source term for the momentum equation.
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Definition: POSIX.C:799
virtual void correct()
Solve the kinetic theory equations and correct the viscosity.
static const word propertiesName
Default name of the turbulence properties dictionary.
virtual tmp< surfaceScalarField > pPrimef() const
Return the face-phase-pressure&#39;.
const surfaceScalarField & alphaRhoPhi() const
Access function to phase flux field.
virtual tmp< volScalarField > omega() const
Return the specific dissipation rate.
const volScalarField & rho() const
Return the density field.
virtual tmp< volScalarField > k() const
Return the turbulence kinetic energy.
virtual tmp< volSymmTensorField > devRhoReff() const
Return the effective stress tensor.
virtual tmp< volScalarField > pPrime() const
Return the phase-pressure&#39;.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
virtual tmp< surfaceScalarField > phi() const
Return the volumetric flux field.
A class for managing temporary objects.
Definition: HashPtrTable.H:50
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
virtual tmp< volScalarField > alpha() const
Return the laminar thermal diffusivity for enthalpy [kg/m/s].
virtual tmp< volScalarField > epsilon() const
Return the turbulence kinetic energy dissipation rate.
Namespace for OpenFOAM.