kineticTheoryModel.C
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-2018 OpenFOAM Foundation
9  Copyright (C) 2019-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 \*---------------------------------------------------------------------------*/
28 
29 #include "kineticTheoryModel.H"
30 #include "mathematicalConstants.H"
31 #include "twoPhaseSystem.H"
32 #include "fvOptions.H"
33 
34 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
35 
36 Foam::RASModels::kineticTheoryModel::kineticTheoryModel
37 (
38  const volScalarField& alpha,
39  const volScalarField& rho,
40  const volVectorField& U,
41  const surfaceScalarField& alphaRhoPhi,
42  const surfaceScalarField& phi,
43  const transportModel& phase,
44  const word& propertiesName,
45  const word& type
46 )
47 :
48  eddyViscosity
49  <
51  >
52  (
53  type,
54  alpha,
55  rho,
56  U,
57  alphaRhoPhi,
58  phi,
59  phase,
60  propertiesName
61  ),
62 
63  phase_(phase),
64 
65  viscosityModel_
66  (
67  kineticTheoryModels::viscosityModel::New
68  (
69  coeffDict_
70  )
71  ),
72  conductivityModel_
73  (
74  kineticTheoryModels::conductivityModel::New
75  (
76  coeffDict_
77  )
78  ),
79  radialModel_
80  (
81  kineticTheoryModels::radialModel::New
82  (
83  coeffDict_
84  )
85  ),
86  granularPressureModel_
87  (
88  kineticTheoryModels::granularPressureModel::New
89  (
90  coeffDict_
91  )
92  ),
93  frictionalStressModel_
94  (
95  kineticTheoryModels::frictionalStressModel::New
96  (
97  coeffDict_
98  )
99  ),
100 
101  equilibrium_(coeffDict_.get<bool>("equilibrium")),
102  e_("e", dimless, coeffDict_),
103  alphaMax_("alphaMax", dimless, coeffDict_),
104  alphaMinFriction_("alphaMinFriction", dimless, coeffDict_),
105  residualAlpha_("residualAlpha", dimless, coeffDict_),
106  maxNut_("maxNut", dimViscosity, 1000, coeffDict_),
107 
108  Theta_
109  (
110  IOobject
111  (
112  IOobject::groupName("Theta", phase.name()),
113  U.time().timeName(),
114  U.mesh(),
115  IOobject::MUST_READ,
116  IOobject::AUTO_WRITE
117  ),
118  U.mesh()
119  ),
120 
121  lambda_
122  (
123  IOobject
124  (
125  IOobject::groupName("lambda", phase.name()),
126  U.time().timeName(),
127  U.mesh(),
128  IOobject::NO_READ,
129  IOobject::NO_WRITE
130  ),
131  U.mesh(),
133  ),
134 
135  gs0_
136  (
137  IOobject
138  (
139  IOobject::groupName("gs0", phase.name()),
140  U.time().timeName(),
141  U.mesh(),
142  IOobject::NO_READ,
143  IOobject::NO_WRITE
144  ),
145  U.mesh(),
147  ),
148 
149  kappa_
150  (
151  IOobject
152  (
153  IOobject::groupName("kappa", phase.name()),
154  U.time().timeName(),
155  U.mesh(),
156  IOobject::NO_READ,
157  IOobject::NO_WRITE
158  ),
159  U.mesh(),
161  ),
162 
163  nuFric_
164  (
165  IOobject
166  (
167  IOobject::groupName("nuFric", phase.name()),
168  U.time().timeName(),
169  U.mesh(),
170  IOobject::NO_READ,
171  IOobject::AUTO_WRITE
172  ),
173  U.mesh(),
175  )
176 {
177  if (type == typeName)
178  {
179  printCoeffs(type);
180  }
181 }
182 
183 
184 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
185 
187 {}
188 
189 
190 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
191 
193 {
194  if
195  (
197  <
199  >::read()
200  )
201  {
202  coeffDict().readEntry("equilibrium", equilibrium_);
203  e_.readIfPresent(coeffDict());
204  alphaMax_.readIfPresent(coeffDict());
205  alphaMinFriction_.readIfPresent(coeffDict());
206 
207  viscosityModel_->read();
208  conductivityModel_->read();
209  radialModel_->read();
210  granularPressureModel_->read();
211  frictionalStressModel_->read();
212 
213  return true;
214  }
215 
216  return false;
217 }
218 
219 
222 {
224  return nut_;
225 }
226 
227 
230 {
232  return nut_;
233 }
234 
235 
238 {
240  return nullptr;
241 }
242 
243 
246 {
248  (
250  (
251  IOobject
252  (
253  IOobject::groupName("R", U_.group()),
254  runTime_.timeName(),
255  mesh_,
258  ),
259  - (nut_)*dev(twoSymm(fvc::grad(U_)))
260  - (lambda_*fvc::div(phi_))*symmTensor::I
261  )
262  );
263 }
264 
265 
268 {
269  const volScalarField& rho = phase_.rho();
270 
271  tmp<volScalarField> tpPrime
272  (
273  Theta_
274  *granularPressureModel_->granularPressureCoeffPrime
275  (
276  alpha_,
277  radialModel_->g0(alpha_, alphaMinFriction_, alphaMax_),
278  radialModel_->g0prime(alpha_, alphaMinFriction_, alphaMax_),
279  rho,
280  e_
281  )
282  + frictionalStressModel_->frictionalPressurePrime
283  (
284  phase_,
285  alphaMinFriction_,
286  alphaMax_
287  )
288  );
289 
290  volScalarField::Boundary& bpPrime =
291  tpPrime.ref().boundaryFieldRef();
292 
293  forAll(bpPrime, patchi)
294  {
295  if (!bpPrime[patchi].coupled())
296  {
297  bpPrime[patchi] == 0;
298  }
299  }
300 
301  return tpPrime;
302 }
303 
304 
307 {
308  return fvc::interpolate(pPrime());
309 }
310 
311 
314 {
315  return devRhoReff(U_);
316 }
317 
318 
321 (
322  const volVectorField& U
323 ) const
324 {
326  (
328  (
329  IOobject
330  (
331  IOobject::groupName("devRhoReff", U.group()),
332  runTime_.timeName(),
333  mesh_,
336  ),
337  - (rho_*nut_)
338  *dev(twoSymm(fvc::grad(U)))
339  - ((rho_*lambda_)*fvc::div(phi_))*symmTensor::I
340  )
341  );
342 }
343 
344 
347 (
349 ) const
350 {
351  return
352  (
353  - fvm::laplacian(rho_*nut_, U)
354  - fvc::div
355  (
356  (rho_*nut_)*dev2(T(fvc::grad(U)))
357  + ((rho_*lambda_)*fvc::div(phi_))
359  )
360  );
361 }
362 
363 
365 {
366  // Local references
367  volScalarField alpha(max(alpha_, scalar(0)));
368  const volScalarField& rho = phase_.rho();
369  const surfaceScalarField& alphaRhoPhi = alphaRhoPhi_;
370  const volVectorField& U = U_;
371  const volVectorField& Uc_ =
372  refCast<const twoPhaseSystem>(phase_.fluid()).otherPhase(phase_).U();
373 
374  const scalar sqrtPi = sqrt(constant::mathematical::pi);
375  dimensionedScalar ThetaSmall("ThetaSmall", Theta_.dimensions(), 1e-6);
376  dimensionedScalar ThetaSmallSqrt(sqrt(ThetaSmall));
377 
378  tmp<volScalarField> tda(phase_.d());
379  const volScalarField& da = tda();
380 
381  tmp<volTensorField> tgradU(fvc::grad(U_));
382  const volTensorField& gradU(tgradU());
383  volSymmTensorField D(symm(gradU));
384 
385  // Calculating the radial distribution function
386  gs0_ = radialModel_->g0(alpha, alphaMinFriction_, alphaMax_);
387 
388  if (!equilibrium_)
389  {
390  // Particle viscosity (Table 3.2, p.47)
391  nut_ = viscosityModel_->nu(alpha, Theta_, gs0_, rho, da, e_);
392 
393  volScalarField ThetaSqrt("sqrtTheta", sqrt(Theta_));
394 
395  // Bulk viscosity p. 45 (Lun et al. 1984).
396  lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0_*(1 + e_)*ThetaSqrt/sqrtPi;
397 
398  // Stress tensor, Definitions, Table 3.1, p. 43
400  (
401  rho*(2*nut_*D + (lambda_ - (2.0/3.0)*nut_)*tr(D)*I)
402  );
403 
404  // Dissipation (Eq. 3.24, p.50)
405  volScalarField gammaCoeff
406  (
407  "gammaCoeff",
408  12*(1 - sqr(e_))
409  *max(sqr(alpha), residualAlpha_)
410  *rho*gs0_*(1.0/da)*ThetaSqrt/sqrtPi
411  );
412 
413  // Drag
415  (
416  refCast<const twoPhaseSystem>(phase_.fluid()).Kd()
417  );
418 
419  // Eq. 3.25, p. 50 Js = J1 - J2
420  volScalarField J1("J1", 3*beta);
421  volScalarField J2
422  (
423  "J2",
424  0.25*sqr(beta)*da*magSqr(U - Uc_)
425  /(
426  max(alpha, residualAlpha_)*rho
427  *sqrtPi*(ThetaSqrt + ThetaSmallSqrt)
428  )
429  );
430 
431  // particle pressure - coefficient in front of Theta (Eq. 3.22, p. 45)
432  volScalarField PsCoeff
433  (
434  granularPressureModel_->granularPressureCoeff
435  (
436  alpha,
437  gs0_,
438  rho,
439  e_
440  )
441  );
442 
443  // 'thermal' conductivity (Table 3.3, p. 49)
444  kappa_ = conductivityModel_->kappa(alpha, Theta_, gs0_, rho, da, e_);
445 
447 
448  // Construct the granular temperature equation (Eq. 3.20, p. 44)
449  // NB. note that there are two typos in Eq. 3.20:
450  // Ps should be without grad
451  // the laplacian has the wrong sign
452  fvScalarMatrix ThetaEqn
453  (
454  1.5*
455  (
456  fvm::ddt(alpha, rho, Theta_)
457  + fvm::div(alphaRhoPhi, Theta_)
458  - fvc::Sp(fvc::ddt(alpha, rho) + fvc::div(alphaRhoPhi), Theta_)
459  )
460  - fvm::laplacian(kappa_, Theta_, "laplacian(kappa,Theta)")
461  ==
462  - fvm::SuSp((PsCoeff*I) && gradU, Theta_)
463  + (tau && gradU)
464  + fvm::Sp(-gammaCoeff, Theta_)
465  + fvm::Sp(-J1, Theta_)
466  + fvm::Sp(J2/(Theta_ + ThetaSmall), Theta_)
467  + fvOptions(alpha, rho, Theta_)
468  );
469 
470  ThetaEqn.relax();
471  fvOptions.constrain(ThetaEqn);
472  ThetaEqn.solve();
473  fvOptions.correct(Theta_);
474  }
475  else
476  {
477  // Equilibrium => dissipation == production
478  // Eq. 4.14, p.82
479  volScalarField K1("K1", 2*(1 + e_)*rho*gs0_);
481  (
482  "K3",
483  0.5*da*rho*
484  (
485  (sqrtPi/(3*(3.0 - e_)))
486  *(1 + 0.4*(1 + e_)*(3*e_ - 1)*alpha*gs0_)
487  +1.6*alpha*gs0_*(1 + e_)/sqrtPi
488  )
489  );
490 
492  (
493  "K2",
494  4*da*rho*(1 + e_)*alpha*gs0_/(3*sqrtPi) - 2*K3/3.0
495  );
496 
497  volScalarField K4("K4", 12*(1 - sqr(e_))*rho*gs0_/(da*sqrtPi));
498 
499  volScalarField trD
500  (
501  "trD",
502  alpha/(alpha + residualAlpha_)
503  *fvc::div(phi_)
504  );
505  volScalarField tr2D("tr2D", sqr(trD));
506  volScalarField trD2("trD2", tr(D & D));
507 
508  volScalarField t1("t1", K1*alpha + rho);
509  volScalarField l1("l1", -t1*trD);
510  volScalarField l2("l2", sqr(t1)*tr2D);
511  volScalarField l3
512  (
513  "l3",
514  4.0
515  *K4
516  *alpha
517  *(2*K3*trD2 + K2*tr2D)
518  );
519 
520  Theta_ = sqr
521  (
522  (l1 + sqrt(l2 + l3))
523  /(2*max(alpha, residualAlpha_)*K4)
524  );
525 
526  kappa_ = conductivityModel_->kappa(alpha, Theta_, gs0_, rho, da, e_);
527  }
528 
529  Theta_.max(0);
530  Theta_.min(100);
531 
532  {
533  // particle viscosity (Table 3.2, p.47)
534  nut_ = viscosityModel_->nu(alpha, Theta_, gs0_, rho, da, e_);
535 
536  volScalarField ThetaSqrt("sqrtTheta", sqrt(Theta_));
537 
538  // Bulk viscosity p. 45 (Lun et al. 1984).
539  lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0_*(1 + e_)*ThetaSqrt/sqrtPi;
540 
541  // Frictional pressure
542  volScalarField pf
543  (
544  frictionalStressModel_->frictionalPressure
545  (
546  phase_,
547  alphaMinFriction_,
548  alphaMax_
549  )
550  );
551 
552  nuFric_ = frictionalStressModel_->nu
553  (
554  phase_,
555  alphaMinFriction_,
556  alphaMax_,
557  pf/rho,
558  D
559  );
560 
561  // Limit viscosity and add frictional viscosity
562  nut_.min(maxNut_);
563  nuFric_ = min(nuFric_, maxNut_ - nut_);
564  nut_ += nuFric_;
565  }
566 
567  if (debug)
568  {
569  Info<< typeName << ':' << nl
570  << " max(Theta) = " << max(Theta_).value() << nl
571  << " max(nut) = " << max(nut_).value() << endl;
572  }
573 }
574 
575 
576 // ************************************************************************* //
Foam::expressions::patchExpr::debug
int debug
Static debugging option.
Foam::IOobject::NO_WRITE
Definition: IOobject.H:195
Foam::IOobject
Defines the attributes of an object for which implicit objectRegistry management is supported,...
Definition: IOobject.H:169
Foam::RASModels::kineticTheoryModel::read
virtual bool read()
Re-read model coefficients if they have changed.
Definition: kineticTheoryModel.C:192
Foam::symm
dimensionedSymmTensor symm(const dimensionedSymmTensor &dt)
Definition: dimensionedSymmTensor.C:84
mathematicalConstants.H
Foam::fvc::grad
tmp< GeometricField< typename outerProduct< vector, Type >::type, fvPatchField, volMesh >> grad(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
Definition: fvcGrad.C:54
fvOptions.H
K1
#define K1
Definition: SHA1.C:144
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:61
Foam::RASModels::kineticTheoryModel::k
virtual tmp< volScalarField > k() const
Return the turbulence kinetic energy.
Definition: kineticTheoryModel.C:221
Foam::Zero
static constexpr const zero Zero
Global zero (0)
Definition: zero.H:131
Foam::RASModel
Templated abstract base class for RAS turbulence models.
Definition: RASModel.H:52
Foam::fv::options::New
static options & New(const fvMesh &mesh)
Construct fvOptions and register to database if not present.
Definition: fvOptions.C:103
Foam::constant::atomic::alpha
const dimensionedScalar alpha
Fine-structure constant: default SI units: [].
Definition: readThermalProperties.H:212
K4
#define K4
Definition: SHA1.C:147
Foam::read
bool read(const char *buf, int32_t &val)
Same as readInt32.
Definition: int32.H:108
Foam::phaseCompressibleTurbulenceModel
ThermalDiffusivity< PhaseCompressibleTurbulenceModel< phaseModel > > phaseCompressibleTurbulenceModel
Typedef for phaseCompressibleTurbulenceModel.
Definition: phaseCompressibleTurbulenceModel.H:47
Foam::RASModels::kineticTheoryModel::pPrimef
virtual tmp< surfaceScalarField > pPrimef() const
Return the face-phase-pressure'.
Definition: kineticTheoryModel.C:306
Foam::fvc::div
tmp< GeometricField< Type, fvPatchField, volMesh > > div(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
Definition: fvcDiv.C:49
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:369
Kd
const volScalarField Kd(fluid.Kd())
Foam::dev2
dimensionedSymmTensor dev2(const dimensionedSymmTensor &dt)
Definition: dimensionedSymmTensor.C:117
K3
#define K3
Definition: SHA1.C:146
rho
rho
Definition: readInitialConditions.H:88
Foam::GeometricField::min
void min(const dimensioned< Type > &dt)
Use the minimum of the field and specified value.
Definition: GeometricField.C:1132
Foam::min
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
Definition: hashSets.C:33
Foam::EddyDiffusivity< phaseCompressibleTurbulenceModel >
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:296
Foam::magSqr
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)
kineticTheoryModel.H
NotImplemented
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
Definition: error.H:517
Foam::fvm::SuSp
tmp< fvMatrix< Type > > SuSp(const volScalarField::Internal &, const GeometricField< Type, fvPatchField, volMesh > &)
Foam::tmp::ref
T & ref() const
Definition: tmpI.H:227
Foam::fvm::Sp
tmp< fvMatrix< Type > > Sp(const volScalarField::Internal &, const GeometricField< Type, fvPatchField, volMesh > &)
fvOptions
fv::options & fvOptions
Definition: setRegionFluidFields.H:23
Foam::Info
messageStream Info
Information stream (stdout output on master, null elsewhere)
Foam::fvm::laplacian
tmp< fvMatrix< Type > > laplacian(const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
Definition: fvmLaplacian.C:48
Foam::SymmTensor< scalar >::I
static const SymmTensor I
Definition: SymmTensor.H:78
Foam::fvMatrix::relax
void relax(const scalar alpha)
Relax matrix (for steady-state solution).
Definition: fvMatrix.C:1183
Foam::T
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
Definition: FieldFieldFunctions.C:58
beta
dimensionedScalar beta("beta", dimless/dimTemperature, laminarTransport)
Foam::dimensionedScalar
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Definition: dimensionedScalarFwd.H:42
Foam::RASModels::kineticTheoryModel::correct
virtual void correct()
Solve the kinetic theory equations and correct the viscosity.
Definition: kineticTheoryModel.C:364
phi
surfaceScalarField & phi
Definition: setRegionFluidFields.H:8
Foam::volScalarField
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:57
Foam::max
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
Definition: hashSets.C:47
K2
#define K2
Definition: SHA1.C:145
Foam::fv::options
Finite-volume options.
Definition: fvOptions.H:55
timeName
word timeName
Definition: getTimeIndex.H:3
Foam::dimViscosity
const dimensionSet dimViscosity
Foam::dimDynamicViscosity
const dimensionSet dimDynamicViscosity
mesh
dynamicFvMesh & mesh
Definition: createDynamicFvMesh.H:6
Foam::dimensioned
Generic dimensioned Type class.
Definition: dimensionedScalarFwd.H:42
Foam::fvc::interpolate
static tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate(const GeometricField< Type, fvPatchField, volMesh > &tvf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
Foam::RASModels::kineticTheoryModel::epsilon
virtual tmp< volScalarField > epsilon() const
Return the turbulence kinetic energy dissipation rate.
Definition: kineticTheoryModel.C:229
Foam::RASModels::kineticTheoryModel::pPrime
virtual tmp< volScalarField > pPrime() const
Return the phase-pressure'.
Definition: kineticTheoryModel.C:267
Foam::New
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tdf1, const word &name, const dimensionSet &dimensions)
Global function forwards to reuseTmpDimensionedField::New.
Definition: DimensionedFieldReuseFunctions.H:105
Foam::volVectorField
GeometricField< vector, fvPatchField, volMesh > volVectorField
Definition: volFieldsFwd.H:62
U
U
Definition: pEqn.H:72
Foam::RASModels::kineticTheoryModel::devRhoReff
virtual tmp< volSymmTensorField > devRhoReff() const
Return the effective stress tensor.
Definition: kineticTheoryModel.C:313
Foam::RASModels::kineticTheoryModel::~kineticTheoryModel
virtual ~kineticTheoryModel()
Destructor.
Definition: kineticTheoryModel.C:186
Foam::fvm::ddt
tmp< fvMatrix< Type > > ddt(const GeometricField< Type, fvPatchField, volMesh > &vf)
Definition: fvmDdt.C:48
Foam::sqr
dimensionedSymmTensor sqr(const dimensionedVector &dv)
Definition: dimensionedSymmTensor.C:51
Foam::compressible::RASModel
RASModel< EddyDiffusivity< turbulenceModel > > RASModel
Definition: turbulentFluidThermoModel.H:66
Foam::constant::mathematical::pi
constexpr scalar pi(M_PI)
Foam::nl
constexpr char nl
Definition: Ostream.H:404
Foam::surfaceScalarField
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
Definition: surfaceFieldsFwd.H:54
Foam::sqrt
dimensionedScalar sqrt(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:144
Foam::type
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Definition: MSwindows.C:590
Foam::constant::electromagnetic::e
const dimensionedScalar e
Elementary charge.
Definition: createFields.H:11
bool
bool
Definition: EEqn.H:20
D
const dimensionedScalar & D
Definition: solveBulkSurfactant.H:4
Foam::fvMatrix
A special matrix type and solver, designed for finite volume solutions of scalar equations....
Definition: fvPatchField.H:68
Foam::RASModel< EddyDiffusivity< phaseCompressibleTurbulenceModel > >::printCoeffs
virtual void printCoeffs(const word &type)
Print model coefficients.
Definition: RASModel.C:34
Foam::fvMatrix::solve
SolverPerformance< Type > solve(const dictionary &)
Solve returning the solution statistics.
Definition: fvMatrixSolve.C:319
Foam::eddyViscosity
Eddy viscosity turbulence model base class.
Definition: eddyViscosity.H:55
Foam::roots::type
type
Types of root.
Definition: Roots.H:54
Foam::PtrListOps::get
List< ReturnType > get(const UPtrList< T > &list, const AccessOp &aop)
Foam::name
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
Definition: exprTraits.C:59
Foam::RASModels::kineticTheoryModel::omega
virtual tmp< volScalarField > omega() const
Return the specific dissipation rate.
Definition: kineticTheoryModel.C:237
Foam::fvc::ddt
tmp< GeometricField< Type, fvPatchField, volMesh > > ddt(const dimensioned< Type > dt, const fvMesh &mesh)
Definition: fvcDdt.C:47
Foam::tr
dimensionedScalar tr(const dimensionedSphericalTensor &dt)
Definition: dimensionedSphericalTensor.C:51
Foam::IOobject::groupName
static word groupName(StringType base, const word &group)
Create dot-delimited name.group string.
coupled
bool coupled(solutionDict.getOrDefault("coupledEnergyField", false))
Foam::fvc::Sp
tmp< GeometricField< Type, fvPatchField, volMesh > > Sp(const volScalarField &sp, const GeometricField< Type, fvPatchField, volMesh > &vf)
Definition: fvcSup.C:69
Foam::RASModels::kineticTheoryModel::R
virtual tmp< volSymmTensorField > R() const
Return the Reynolds stress tensor.
Definition: kineticTheoryModel.C:245
Foam::RASModels::kineticTheoryModel::divDevRhoReff
virtual tmp< fvVectorMatrix > divDevRhoReff(volVectorField &U) const
Return the source term for the momentum equation.
Definition: kineticTheoryModel.C:347
Foam::GeometricField< symmTensor, fvPatchField, volMesh >
Foam::IOobject::NO_READ
Definition: IOobject.H:188
Foam::fvm::div
tmp< fvMatrix< Type > > div(const surfaceScalarField &flux, const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
Definition: fvmDiv.C:48
Foam::twoSymm
dimensionedSymmTensor twoSymm(const dimensionedSymmTensor &dt)
Definition: dimensionedSymmTensor.C:95
Foam::I
static const Identity< scalar > I
Definition: Identity.H:95
Foam::dimless
const dimensionSet dimless
Dimensionless.
Definition: dimensionSets.C:189
Foam::dev
dimensionedSymmTensor dev(const dimensionedSymmTensor &dt)
Definition: dimensionedSymmTensor.C:106