mixtureKEpsilon.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2013-2026 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
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.
15 
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.
20 
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/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
26 #include "mixtureKEpsilon.H"
27 #include "fvModels.H"
28 #include "bound.H"
29 #include "phaseSystem.H"
30 #include "dispersedDragModel.H"
36 #include "fvmSup.H"
37 
38 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
39 
40 namespace Foam
41 {
42 namespace RASModels
43 {
44 
45 
46 // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
47 
48 template<class BasicMomentumTransportModel>
50 (
51  const volScalarField& Cc2
52 )
53 {
54  epsilonm_() = max
55  (
56  epsilonm_(),
57  Cmu_*sqr(k_)/(this->nutMaxCoeff_*Cc2*this->nu())
58  );
59 }
60 
61 
62 template<class BasicMomentumTransportModel>
64 {
65  this->nut_ = Cmu_*sqr(k_)/epsilon_;
66  this->nut_.correctBoundaryConditions();
67  fvConstraints::New(this->mesh_).constrain(this->nut_);
68 }
69 
70 
71 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
72 
73 template<class BasicMomentumTransportModel>
75 (
76  const alphaField& alpha,
77  const rhoField& rho,
78  const volVectorField& U,
79  const surfaceScalarField& alphaRhoPhi,
80  const surfaceScalarField& phi,
81  const viscosity& viscosity,
82  const word& type
83 )
84 :
85  eddyViscosity<RASModel<BasicMomentumTransportModel>>
86  (
87  type,
88  alpha,
89  rho,
90  U,
91  alphaRhoPhi,
92  phi,
93  viscosity
94  ),
95 
96  gasTurbulencePtr_(nullptr),
97 
98  Cmu_("Cmu", this->typeDict(type), 0.09),
99  C1_("C1", this->typeDict(type), 1.44),
100  C2_("C2", this->typeDict(type), 1.92),
101  C3_("C3", this->typeDict(type), C2_.value()),
102  Cp_("Cp", this->typeDict(type), 0.25),
103  alphap_("alphap", this->typeDict(type), 1),
104  sigmak_("sigmak", this->typeDict(type), 1.0),
105  sigmaEps_("sigmaEps", this->typeDict(type), 1.3),
106 
107  k_
108  (
109  IOobject
110  (
111  this->groupName("k"),
112  this->runTime_.name(),
113  this->mesh_,
114  IOobject::MUST_READ,
115  IOobject::AUTO_WRITE
116  ),
117  this->mesh_,
118  dimensions::turbulentKineticEnergy
119  ),
120  epsilon_
121  (
122  IOobject
123  (
124  this->groupName("epsilon"),
125  this->runTime_.name(),
126  this->mesh_,
127  IOobject::MUST_READ,
128  IOobject::AUTO_WRITE
129  ),
130  this->mesh_,
131  dimensions::turbulentEpsilon
132  )
133 {
134  bound(k_, this->kMin_);
135 
136  const phaseModel& phase = refCast<const phaseModel>(this->properties());
137 
138  // Construct mixture properties only for liquid phase (phase 1)
139  if (phase.index() == 1)
140  {
141  km_.set
142  (
143  new volScalarField
144  (
145  IOobject
146  (
147  "km",
148  this->runTime_.name(),
149  this->mesh_,
152  ),
153  this->mesh_,
155  )
156  );
157 
158  epsilonm_.set
159  (
160  new volScalarField
161  (
162  IOobject
163  (
164  "epsilonm",
165  this->runTime_.name(),
166  this->mesh_,
169  ),
170  this->mesh_,
172  )
173  );
174 
175  Ct2_.set
176  (
177  new volScalarField
178  (
179  IOobject
180  (
181  "Ct2",
182  this->runTime_.name(),
183  this->mesh_,
186  ),
187  this->mesh_,
189  )
190  );
191 
192  rhom_.set
193  (
194  new volScalarField
195  (
196  IOobject
197  (
198  "rhom",
199  this->runTime_.name(),
200  this->mesh_,
203  ),
204  this->mesh_,
206  )
207  );
208  }
209 }
210 
211 
212 template<class BasicMomentumTransportModel>
214 {
215  static bool initialised = false;
216 
217  if (!initialised)
218  {
219  Ct2_() = Ct2();
220  rhom_() = rhom();
221  initialised = true;
222  }
223 }
224 
225 
226 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
227 
228 template<class BasicMomentumTransportModel>
230 {
232  {
233  Cmu_.readIfPresent(this->typeDict());
234  C1_.readIfPresent(this->typeDict());
235  C2_.readIfPresent(this->typeDict());
236  C3_.readIfPresent(this->typeDict());
237  Cp_.readIfPresent(this->typeDict());
238  sigmak_.readIfPresent(this->typeDict());
239  sigmaEps_.readIfPresent(this->typeDict());
240 
241  return true;
242  }
243  else
244  {
245  return false;
246  }
247 }
248 
249 
250 template<class BasicMomentumTransportModel>
253 {
254  if (!gasTurbulencePtr_)
255  {
256  const volVectorField& U = this->U_;
257 
258  const phaseModel& liquid =
259  refCast<const phaseModel>(this->properties());
260  const phaseSystem& fluid = liquid.fluid();
261  const phaseModel& gas = fluid.otherPhase(liquid);
262 
263  gasTurbulencePtr_ =
265  (
266  U.db().lookupObject
267  <
269  >
270  (
272  (
274  gas.name()
275  )
276  )
277  );
278  }
279 
280  return *gasTurbulencePtr_;
281 }
282 
283 
284 template<class BasicMomentumTransportModel>
286 {
287  const mixtureKEpsilon<BasicMomentumTransportModel>& gasTurbulence =
288  this->gasTurbulence();
289 
290  const phaseModel& liquid = refCast<const phaseModel>(this->properties());
291  const phaseSystem& fluid = liquid.fluid();
292  const phaseModel& gas = fluid.otherPhase(liquid);
293 
297 
298  const volScalarField& alphag = gasTurbulence.alpha();
299  const volScalarField magUr(mag(this->U() - gasTurbulence.U()));
300 
301  volScalarField beta
302  (
303  (6*this->Cmu_/(4*sqrt(3.0/2.0)))
304  *drag.K()/liquid.rho()
305  *(k_/epsilon_)
306  );
307  volScalarField Ct0((3 + beta)/(1 + beta + 2*gas.rho()/liquid.rho()));
308  volScalarField fAlphad((180 + (-4.71e3 + 4.26e4*alphag)*alphag)*alphag);
309 
310  return sqr(1 + (Ct0 - 1)*exp(-fAlphad));
311 }
312 
313 
314 template<class BasicMomentumTransportModel>
317 {
318  const phaseModel& liquid = refCast<const phaseModel>(this->properties());
319  return liquid.rho();
320 }
321 
322 
323 template<class BasicMomentumTransportModel>
326 {
327  const phaseModel& liquid = refCast<const phaseModel>(this->properties());
328  const phaseSystem& fluid = liquid.fluid();
329  const phaseModel& gas = fluid.otherPhase(liquid);
330 
335 
336  return gas.rho() + virtualMass.Cvm()*liquid.rho();
337 }
338 
339 
340 template<class BasicMomentumTransportModel>
342 {
343  const volScalarField& alphal = this->alpha_;
344  const volScalarField& alphag = this->gasTurbulence().alpha_;
345 
346  return alphal*rholEff() + alphag*rhogEff();
347 }
348 
349 
350 template<class BasicMomentumTransportModel>
352 (
353  const volScalarField& fc,
354  const volScalarField& fd
355 ) const
356 {
357  const volScalarField& alphal = this->alpha_;
358  const volScalarField& alphag = this->gasTurbulence().alpha_;
359 
360  return (alphal*rholEff()*fc + alphag*rhogEff()*fd)/rhom_();
361 }
362 
363 
364 template<class BasicMomentumTransportModel>
366 (
367  const volScalarField& fc,
368  const volScalarField& fd
369 ) const
370 {
371  const volScalarField& alphal = this->alpha_;
372  const volScalarField& alphag = this->gasTurbulence().alpha_;
373 
374  return
375  (alphal*rholEff()*fc + alphag*rhogEff()*Ct2_()*fd)
376  /(alphal*rholEff() + alphag*rhogEff()*Ct2_());
377 }
378 
379 
380 template<class BasicMomentumTransportModel>
382 (
383  const surfaceScalarField& fc,
384  const surfaceScalarField& fd
385 ) const
386 {
387  const volScalarField& alphal = this->alpha_;
388  const volScalarField& alphag = this->gasTurbulence().alpha_;
389 
390  surfaceScalarField alphalf(fvc::interpolate(alphal));
391  surfaceScalarField alphagf(fvc::interpolate(alphag));
392 
393  surfaceScalarField rholEfff(fvc::interpolate(rholEff()));
394  surfaceScalarField rhogEfff(fvc::interpolate(rhogEff()));
395 
396  return
397  (alphalf*rholEfff*fc + alphagf*rhogEfff*fvc::interpolate(Ct2_())*fd)
398  /(alphalf*rholEfff + alphagf*rhogEfff*fvc::interpolate(Ct2_()));
399 }
400 
401 
402 template<class BasicMomentumTransportModel>
405 {
406  const mixtureKEpsilon<BasicMomentumTransportModel>& gasTurbulence =
407  this->gasTurbulence();
408 
409  const phaseModel& liquid = refCast<const phaseModel>(this->properties());
410  const phaseSystem& fluid = liquid.fluid();
411  const phaseModel& gas = fluid.otherPhase(liquid);
412 
416 
417  volScalarField magUr(mag(this->U() - gasTurbulence.U()));
418 
419  // Lahey model
420  tmp<volScalarField> bubbleG
421  (
422  Cp_
423  *pos(alphap_ - gas)*liquid*liquid.rho()
424  *(
425  pow3(magUr)
426  + pow(drag.CdRe()*liquid.fluidThermo().nu()/gas.d(), 4.0/3.0)
427  *pow(magUr, 5.0/3.0)
428  )
429  *gas
430  /gas.d()
431  );
432 
433  // Simple model
434  // tmp<volScalarField> bubbleG
435  // (
436  // Cp_*liquid*drag.K()*sqr(magUr)
437  // );
438 
439  return bubbleG;
440 }
441 
442 
443 template<class BasicMomentumTransportModel>
446 {
447  return fvm::Su(bubbleG()/rhom_(), km_());
448 }
449 
450 
451 template<class BasicMomentumTransportModel>
454 {
455  return fvm::Su(C3_*epsilonm_()*bubbleG()/(rhom_()*km_()), epsilonm_());
456 }
457 
458 
459 template<class BasicMomentumTransportModel>
461 {
462  const phaseModel& phase = refCast<const phaseModel>(this->properties());
463 
464  // Only solve the mixture turbulence for the liquid phase (phase 1)
465  if (phase.index() == 0)
466  {
467  // This is the liquid phase but check the model for the gas-phase
468  // is consistent
469  this->gasTurbulence();
470 
471  return;
472  }
473  else
474  {
475  initMixtureFields();
476  }
477 
478  if (!this->turbulence_)
479  {
480  return;
481  }
482 
483  // Local references to liquid-phase properties
484  tmp<surfaceScalarField> phil = this->phi();
485  const volVectorField& Ul = this->U_;
486  const volScalarField& alphal = this->alpha_;
487  volScalarField& kl = this->k_;
488  volScalarField& epsilonl = this->epsilon_;
489  volScalarField& nutl = this->nut_;
490 
491  // Local references to gas-phase properties
493  this->gasTurbulence();
494  tmp<surfaceScalarField> phig = gasTurbulence.phi();
495  const volVectorField& Ug = gasTurbulence.U_;
496  const volScalarField& alphag = gasTurbulence.alpha_;
497  volScalarField& kg = gasTurbulence.k_;
498  volScalarField& epsilong = gasTurbulence.epsilon_;
499  volScalarField& nutg = gasTurbulence.nut_;
500 
501  // Local references to mixture properties
502  volScalarField& rhom = rhom_();
503  volScalarField& km = km_();
504  volScalarField& epsilonm = epsilonm_();
505 
506  const Foam::fvModels& fvModels(Foam::fvModels::New(this->mesh_));
508  (
509  Foam::fvConstraints::New(this->mesh_)
510  );
511 
513 
514  // Update the effective mixture density
515  rhom = this->rhom();
516 
517  // Mixture flux
518  const surfaceScalarField phim("phim", mixFlux(phil, phig));
519 
520  // Mixture velocity divergence
521  const volScalarField divUm
522  (
523  mixU
524  (
525  fvc::div(fvc::absolute(phil, Ul)),
526  fvc::div(fvc::absolute(phig, Ug))
527  )
528  );
529 
531  {
532  tmp<volTensorField> tgradUl = fvc::grad(Ul);
534  (
535  new volScalarField
536  (
537  this->GName(),
538  nutl*(tgradUl() && dev(twoSymm(tgradUl())))
539  )
540  );
541  tgradUl.clear();
542 
543  // Update k, epsilon and G at the wall
545  epsilonl.boundaryFieldRef().updateCoeffs();
546 
547  Gc.ref().checkOut();
548  }
549 
551  {
552  tmp<volTensorField> tgradUg = fvc::grad(Ug);
554  (
555  new volScalarField
556  (
557  this->GName(),
558  nutg*(tgradUg() && dev(twoSymm(tgradUg())))
559  )
560  );
561  tgradUg.clear();
562 
563  // Update k, epsilon and G at the wall
565  epsilong.boundaryFieldRef().updateCoeffs();
566 
567  Gd.ref().checkOut();
568  }
569 
570  // Mixture turbulence generation
571  const volScalarField Gm(mix(Gc, Gd));
572 
573  // Mixture turbulence viscosity
574  const volScalarField nutm(mixU(nutl, nutg));
575 
576  // Update the mixture k and epsilon boundary conditions
577  km == mix(kl, kg);
578  epsilonm == mix(epsilonl, epsilong);
579 
580  // Dissipation equation
581  tmp<fvScalarMatrix> epsEqn
582  (
583  fvm::ddt(epsilonm)
584  + fvm::div(phim, epsilonm)
585  + fvm::SuSp(-fvc::div(phim), epsilonm)
586  - fvm::laplacian(DepsilonEff(nutm), epsilonm)
587  ==
588  C1_*Gm*epsilonm/km
589  - fvm::SuSp(((2.0/3.0)*C1_)*divUm, epsilonm)
590  - fvm::Sp(C2_*epsilonm/km, epsilonm)
591  + epsilonSource()
592  + fvModels.source(rhom, epsilonm)/rhom
593  );
594 
595  epsEqn.ref().relax();
596  fvConstraints.constrain(epsEqn.ref());
597  epsEqn.ref().boundaryManipulate(epsilonm.boundaryFieldRef());
598  solve(epsEqn);
599  fvConstraints.constrain(epsilonm);
600 
601  const volScalarField Cc2(rhom/(alphal*rholEff() + alphag*rhogEff()*Ct2_()));
602  boundEpsilonm(Cc2);
603 
604  // Turbulent kinetic energy equation
605  tmp<fvScalarMatrix> kmEqn
606  (
607  fvm::ddt(km)
608  + fvm::div(phim, km)
609  + fvm::SuSp(-fvc::div(phim), km)
610  - fvm::laplacian(DkEff(nutm), km)
611  ==
612  Gm
613  - fvm::SuSp((2.0/3.0)*divUm, km)
614  - fvm::Sp(epsilonm/km, km)
615  + kSource()
616  + fvModels.source(rhom, km)/rhom
617  );
618 
619  kmEqn.ref().relax();
620  fvConstraints.constrain(kmEqn.ref());
621  solve(kmEqn);
623  bound(km, this->kMin_);
625  boundEpsilonm(Cc2);
626 
627  kl = Cc2*km;
629  epsilonl = Cc2*epsilonm;
630  epsilonl.correctBoundaryConditions();
631  correctNut();
632 
633  Ct2_() = Ct2();
634  kg = Ct2_()*kl;
636  epsilong = Ct2_()*epsilonl;
637  epsilong.correctBoundaryConditions();
638  nutg = Ct2_()*(this->nu()/gasTurbulence.nu())*nutl;
639 }
640 
641 
642 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
643 
644 } // End namespace RASModels
645 } // End namespace Foam
646 
647 // ************************************************************************* //
Bound the given scalar field where it is below the specified minimum.
static fvConstraints & New(const word &name, const fvMesh &mesh)
Construct and return the named DemandDrivenMeshObject.
void updateCoeffs()
Update the boundary condition coefficients.
Generic GeometricField class.
Boundary & boundaryFieldRef()
Return a reference to the boundary field.
void correctBoundaryConditions()
Correct boundary field.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Definition: IOobject.H:99
static word groupName(Name name, const word &group)
Templated abstract base class for RAS turbulence models.
Definition: RASModel.H:56
Mixture k-epsilon turbulence model for two-phase gas-liquid systems.
virtual tmp< fvScalarMatrix > epsilonSource() const
tmp< volScalarField > Ct2() const
tmp< volScalarField > rhogEff() const
tmp< volScalarField > mixU(const volScalarField &fc, const volScalarField &fd) const
virtual void correct()
Solve the turbulence equations and correct the turbulence viscosity.
tmp< volScalarField > rhom() const
tmp< volScalarField > bubbleG() const
autoPtr< volScalarField > rhom_
autoPtr< volScalarField > km_
autoPtr< volScalarField > Ct2_
virtual void correctNut()
Correct the eddy-viscosity nut.
virtual tmp< fvScalarMatrix > kSource() const
tmp< surfaceScalarField > mixFlux(const surfaceScalarField &fc, const surfaceScalarField &fd) const
tmp< volScalarField > rholEff() const
autoPtr< volScalarField > epsilonm_
tmp< volScalarField > mix(const volScalarField &fc, const volScalarField &fd) const
void boundEpsilonm(const volScalarField &Cc2)
Bound epsilonm.
virtual bool read()
Re-read model coefficients if they have changed.
mixtureKEpsilon(const alphaField &alpha, const rhoField &rho, const volVectorField &U, const surfaceScalarField &alphaRhoPhi, const surfaceScalarField &phi, const viscosity &viscosity, const word &type=typeName)
Construct from components.
Class to represent a interface between phases where one phase is considered dispersed within the othe...
Eddy viscosity turbulence model base class.
Definition: eddyViscosity.H:52
volScalarField nut_
Definition: eddyViscosity.H:60
Finite volume constraints.
Definition: fvConstraints.H:68
bool constrain(fvMatrix< Type > &eqn) const
Apply constraints to an equation.
Finite volume models.
Definition: fvModels.H:69
tmp< fvMatrix< Type > > source(const VolField< Type > &field) const
Return source for an equation.
BasicMomentumTransportModel::alphaField alphaField
BasicMomentumTransportModel::rhoField rhoField
Generic thermophysical properties class for a liquid in which the functions and coefficients for each...
Definition: liquid.H:53
scalar rho(scalar p, scalar T) const
Liquid density [kg/m^3].
Definition: liquidI.H:26
tmp< volScalarField > d() const
Return the Sauter-mean diameter.
Definition: phaseModel.C:128
label index() const
Return the index of the phase.
Definition: phaseModel.C:104
const word & name() const
Return the name of this phase.
Definition: phaseModel.C:92
virtual const volScalarField & rho() const =0
Return the density field.
Class to represent a system of phases.
Definition: phaseSystem.H:74
const phaseModel & otherPhase(const phaseModel &phase) const
Return the phase not given as an argument in a two-phase system.
Definition: phaseSystemI.H:174
const ModelType & lookupInterfacialModel(const phaseInterface &interface) const
Return a sub model for an interface.
A class for managing temporary objects.
Definition: tmp.H:55
void clear() const
If object pointer points to valid object:
Definition: tmpI.H:253
T & ref() const
Return non-const reference or generate a fatal error.
Definition: tmpI.H:197
virtual tmp< volScalarField > Cvm() const =0
Return the virtual mass coefficient.
Abstract base class for all fluid physical properties.
Definition: viscosity.H:50
A class for handling words, derived from string.
Definition: word.H:63
Foam::fvConstraints & fvConstraints(Foam::fvConstraints::New(mesh))
Foam::fvModels & fvModels(Foam::fvModels::New(mesh))
Calculate the matrix for implicit and explicit sources.
Info<< "Reading strained laminar flame speed field Su\n"<< endl;volScalarField Su(IOobject("Su", runTime.name(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE), mesh);Info<< "Reading field betav\n"<< endl;volScalarField betav(IOobject("betav", mesh.facesInstance(), mesh, IOobject::MUST_READ, IOobject::NO_WRITE), mesh);Info<< "Reading field Lobs\n"<< endl;volScalarField Lobs(IOobject("Lobs", mesh.facesInstance(), mesh, IOobject::MUST_READ, IOobject::NO_WRITE), mesh);Info<< "Reading field CT\n"<< endl;volSymmTensorField CT(IOobject("CT", mesh.facesInstance(), mesh, IOobject::MUST_READ, IOobject::NO_WRITE), mesh);Info<< "Reading field Nv\n"<< endl;volScalarField Nv(IOobject("Nv", mesh.facesInstance(), mesh, IOobject::MUST_READ, IOobject::NO_WRITE), mesh);Info<< "Reading field nsv\n"<< endl;volSymmTensorField nsv(IOobject("nsv", mesh.facesInstance(), mesh, IOobject::MUST_READ, IOobject::NO_WRITE), mesh);IOdictionary PDRProperties(IOobject("PDRProperties", runTime.constant(), mesh, IOobject::MUST_READ_IF_MODIFIED, IOobject::NO_WRITE));autoPtr< PDRDragModel > drag
Definition: createFields.H:198
U
Definition: pEqn.H:72
rho
Definition: pEqn.H:1
volScalarField alpha(IOobject("alpha", runTime.name(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE), lambda *max(Ua &U, zeroSensitivity))
void correct(const RdeltaTType &rDeltaT, const RhoType &rho, volScalarField &psi, const surfaceScalarField &phiCorr, const SpType &Sp)
const dimensionSet turbulentKineticEnergy
const dimensionSet dimless
const dimensionSet turbulentEpsilon
static tmp< SurfaceField< Type > > interpolate(const VolField< Type > &tvf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
tmp< VolField< typename outerProduct< vector, Type >::type > > grad(const SurfaceField< Type > &ssf)
Definition: fvcGrad.C:46
tmp< VolField< Type > > div(const SurfaceField< Type > &ssf)
Definition: fvcDiv.C:47
tmp< surfaceScalarField > absolute(const tmp< surfaceScalarField > &tphi, const volVectorField &U)
Return the given relative flux in absolute form.
Definition: fvcMeshPhi.C:202
tmp< fvMatrix< Type > > laplacian(const VolField< Type > &vf, const word &name)
Definition: fvmLaplacian.C:47
tmp< fvMatrix< Type > > div(const surfaceScalarField &flux, const VolField< Type > &vf, const word &name)
Definition: fvmDiv.C:48
tmp< fvMatrix< Type > > Sp(const volScalarField::Internal &, const VolField< Type > &)
tmp< fvMatrix< Type > > SuSp(const volScalarField::Internal &, const VolField< Type > &)
tmp< fvMatrix< Type > > Su(const DimensionedField< Type, fvMesh > &, const VolField< Type > &)
tmp< fvMatrix< Type > > ddt(const VolField< Type > &vf)
Definition: fvmDdt.C:46
Namespace for OpenFOAM.
dimensionedScalar pos(const dimensionedScalar &ds)
dimensionedScalar exp(const dimensionedScalar &ds)
bool read(const char *, int32_t &)
Definition: int32IO.C:85
String typeName(const std::type_info &info)
Return the un-mangled name given the standard type info.
tmp< DimensionedField< typename outerProduct< Type, Type >::type, GeoMesh, Field >> sqr(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
void dev(pointPatchField< tensor > &, const pointPatchField< tensor > &)
const dimensionSet & dimDensity
Definition: dimensions.C:289
bool bound(volScalarField &, const dimensionedScalar &min)
Bound the given scalar field where it is below the specified min value.
Definition: bound.C:31
void pow3(LagrangianPatchField< scalar > &f, const LagrangianPatchField< scalar > &f1)
word name(const LagrangianState state)
Return a string representation of a Lagrangian state enumeration.
tmp< DimensionedField< typename powProduct< Type, r >::type, GeoMesh, Field > > pow(const DimensionedField< Type, GeoMesh, PrimitiveField > &df, typename powProduct< Type, r >::type)
tmp< DimensionedField< scalar, GeoMesh, Field > > mag(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
void twoSymm(pointPatchField< tensor > &, const pointPatchField< tensor > &)
void sqrt(LagrangianPatchField< scalar > &f, const LagrangianPatchField< scalar > &f1)
dimensioned< Type > max(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.
Definition: POSIX.C:488
SolverPerformance< Type > solve(fvMatrix< Type > &, const word &)
Solve returning the solution statistics given convergence tolerance.