kOmegaSSTLM.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) 2016-2017 OpenFOAM Foundation
9  Copyright (C) 2019 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 "kOmegaSSTLM.H"
30 
31 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
32 
33 namespace Foam
34 {
35 namespace RASModels
36 {
37 
38 // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
39 
40 template<class BasicTurbulenceModel>
41 tmp<volScalarField> kOmegaSSTLM<BasicTurbulenceModel>::F1
42 (
43  const volScalarField& CDkOmega
44 ) const
45 {
46  const volScalarField Ry(this->y_*sqrt(this->k_)/this->nu());
47  const volScalarField F3(exp(-pow(Ry/120.0, 8)));
48 
49  return max(kOmegaSST<BasicTurbulenceModel>::F1(CDkOmega), F3);
50 }
51 
52 
53 template<class BasicTurbulenceModel>
55 (
57 ) const
58 {
59  return gammaIntEff_*kOmegaSST<BasicTurbulenceModel>::Pk(G);
60 }
61 
62 
63 template<class BasicTurbulenceModel>
65 (
66  const volScalarField& F1,
67  const volTensorField& gradU
68 ) const
69 {
70  return
71  min(max(gammaIntEff_, scalar(0.1)), scalar(1))
73 }
74 
75 
76 template<class BasicTurbulenceModel>
78 (
80  const volScalarField::Internal& Omega,
82 ) const
83 {
84  const volScalarField::Internal& omega = this->omega_();
85  const volScalarField::Internal& y = this->y_();
86 
87  dimensionedScalar deltaMin("deltaMin", dimLength, SMALL);
89  (
90  max(375*Omega*nu*ReThetat_()*y/sqr(Us), deltaMin)
91  );
92 
93  const volScalarField::Internal ReOmega(sqr(y)*omega/nu);
94  const volScalarField::Internal Fwake(exp(-sqr(ReOmega/1e5)));
95 
97  (
99  (
100  IOobject::groupName("Fthetat", this->alphaRhoPhi_.group()),
101  min
102  (
103  max
104  (
105  Fwake*exp(-pow4((y/delta))),
106  (1 - sqr((gammaInt_() - 1.0/ce2_)/(1 - 1.0/ce2_)))
107  ),
108  scalar(1)
109  )
110  )
111  );
112 }
113 
114 
115 template<class BasicTurbulenceModel>
118 {
120  (
122  (
123  IOobject
124  (
125  IOobject::groupName("ReThetac", this->alphaRhoPhi_.group()),
126  this->runTime_.timeName(),
127  this->mesh_
128  ),
129  this->mesh_,
130  dimless
131  )
132  );
133  volScalarField::Internal& ReThetac = tReThetac.ref();
134 
135  forAll(ReThetac, celli)
136  {
137  const scalar ReThetat = ReThetat_[celli];
138 
139  ReThetac[celli] =
140  ReThetat <= 1870
141  ?
142  ReThetat
143  - 396.035e-2
144  + 120.656e-4*ReThetat
145  - 868.230e-6*sqr(ReThetat)
146  + 696.506e-9*pow3(ReThetat)
147  - 174.105e-12*pow4(ReThetat)
148  :
149  ReThetat - 593.11 - 0.482*(ReThetat - 1870);
150  }
151 
152  return tReThetac;
153 }
154 
155 
156 template<class BasicTurbulenceModel>
158 (
160 ) const
161 {
163  (
165  (
166  IOobject
167  (
168  IOobject::groupName("Flength", this->alphaRhoPhi_.group()),
169  this->runTime_.timeName(),
170  this->mesh_
171  ),
172  this->mesh_,
173  dimless
174  )
175  );
176  volScalarField::Internal& Flength = tFlength.ref();
177 
178  const volScalarField::Internal& omega = this->omega_();
179  const volScalarField::Internal& y = this->y_();
180 
181  forAll(ReThetat_, celli)
182  {
183  const scalar ReThetat = ReThetat_[celli];
184 
185  if (ReThetat < 400)
186  {
187  Flength[celli] =
188  398.189e-1
189  - 119.270e-4*ReThetat
190  - 132.567e-6*sqr(ReThetat);
191  }
192  else if (ReThetat < 596)
193  {
194  Flength[celli] =
195  263.404
196  - 123.939e-2*ReThetat
197  + 194.548e-5*sqr(ReThetat)
198  - 101.695e-8*pow3(ReThetat);
199  }
200  else if (ReThetat < 1200)
201  {
202  Flength[celli] = 0.5 - 3e-4*(ReThetat - 596);
203  }
204  else
205  {
206  Flength[celli] = 0.3188;
207  }
208 
209  const scalar Fsublayer =
210  exp(-sqr(sqr(y[celli])*omega[celli]/(200*nu[celli])));
211 
212  Flength[celli] = Flength[celli]*(1 - Fsublayer) + 40*Fsublayer;
213  }
214 
215  return tFlength;
216 }
217 
218 
219 template<class BasicTurbulenceModel>
221 (
223  const volScalarField::Internal& dUsds,
225 ) const
226 {
228  (
230  (
231  IOobject
232  (
233  IOobject::groupName("ReThetat0", this->alphaRhoPhi_.group()),
234  this->runTime_.timeName(),
235  this->mesh_
236  ),
237  this->mesh_,
238  dimless
239  )
240  );
241  volScalarField::Internal& ReThetat0 = tReThetat0.ref();
242 
243  const volScalarField& k = this->k_;
244 
245  label maxIter = 0;
246 
247  forAll(ReThetat0, celli)
248  {
249  const scalar Tu
250  (
251  max(100*sqrt((2.0/3.0)*k[celli])/Us[celli], scalar(0.027))
252  );
253 
254  // Initialize lambda to zero.
255  // If lambda were cached between time-steps convergence would be faster
256  // starting from the previous time-step value.
257  scalar lambda = 0;
258 
259  scalar lambdaErr;
260  scalar thetat;
261  label iter = 0;
262 
263  do
264  {
265  // Previous iteration lambda for convergence test
266  const scalar lambda0 = lambda;
267 
268  if (Tu <= 1.3)
269  {
270  const scalar Flambda =
271  dUsds[celli] <= 0
272  ?
273  1
274  - (
275  - 12.986*lambda
276  - 123.66*sqr(lambda)
277  - 405.689*pow3(lambda)
278  )*exp(-pow(Tu/1.5, 1.5))
279  :
280  1
281  + 0.275*(1 - exp(-35*lambda))
282  *exp(-Tu/0.5);
283 
284  thetat =
285  (1173.51 - 589.428*Tu + 0.2196/sqr(Tu))
286  *Flambda*nu[celli]
287  /Us[celli];
288  }
289  else
290  {
291  const scalar Flambda =
292  dUsds[celli] <= 0
293  ?
294  1
295  - (
296  -12.986*lambda
297  -123.66*sqr(lambda)
298  -405.689*pow3(lambda)
299  )*exp(-pow(Tu/1.5, 1.5))
300  :
301  1
302  + 0.275*(1 - exp(-35*lambda))
303  *exp(-2*Tu);
304 
305  thetat =
306  331.50*pow((Tu - 0.5658), -0.671)
307  *Flambda*nu[celli]/Us[celli];
308  }
309 
310  lambda = sqr(thetat)/nu[celli]*dUsds[celli];
311  lambda = max(min(lambda, 0.1), -0.1);
312 
313  lambdaErr = mag(lambda - lambda0);
314 
315  maxIter = max(maxIter, ++iter);
316 
317  } while (lambdaErr > lambdaErr_);
318 
319  ReThetat0[celli] = max(thetat*Us[celli]/nu[celli], scalar(20));
320  }
321 
322  if (maxIter > maxLambdaIter_)
323  {
325  << "Number of lambda iterations exceeds maxLambdaIter("
326  << maxLambdaIter_ << ')'<< endl;
327  }
328 
329  return tReThetat0;
330 }
331 
332 
333 template<class BasicTurbulenceModel>
335 (
336  const volScalarField::Internal& Rev,
337  const volScalarField::Internal& ReThetac,
338  const volScalarField::Internal& RT
339 ) const
340 {
341  const volScalarField::Internal Fonset1(Rev/(2.193*ReThetac));
342 
343  const volScalarField::Internal Fonset2
344  (
345  min(max(Fonset1, pow4(Fonset1)), scalar(2))
346  );
347 
348  const volScalarField::Internal Fonset3(max(1 - pow3(RT/2.5), scalar(0)));
349 
351  (
353  (
354  IOobject::groupName("Fonset", this->alphaRhoPhi_.group()),
355  max(Fonset2 - Fonset3, scalar(0))
356  )
357  );
358 }
359 
360 
361 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
362 
363 template<class BasicTurbulenceModel>
365 (
366  const alphaField& alpha,
367  const rhoField& rho,
368  const volVectorField& U,
369  const surfaceScalarField& alphaRhoPhi,
370  const surfaceScalarField& phi,
371  const transportModel& transport,
372  const word& propertiesName,
373  const word& type
374 )
375 :
377  (
378  alpha,
379  rho,
380  U,
381  alphaRhoPhi,
382  phi,
383  transport,
384  propertiesName,
385  typeName
386  ),
387 
388  ca1_
389  (
391  (
392  "ca1",
393  this->coeffDict_,
394  2
395  )
396  ),
397  ca2_
398  (
400  (
401  "ca2",
402  this->coeffDict_,
403  0.06
404  )
405  ),
406  ce1_
407  (
409  (
410  "ce1",
411  this->coeffDict_,
412  1
413  )
414  ),
415  ce2_
416  (
418  (
419  "ce2",
420  this->coeffDict_,
421  50
422  )
423  ),
424  cThetat_
425  (
427  (
428  "cThetat",
429  this->coeffDict_,
430  0.03
431  )
432  ),
433  sigmaThetat_
434  (
436  (
437  "sigmaThetat",
438  this->coeffDict_,
439  2
440  )
441  ),
442  lambdaErr_
443  (
444  this->coeffDict_.lookupOrDefault("lambdaErr", 1e-6)
445  ),
446  maxLambdaIter_
447  (
448  this->coeffDict_.lookupOrDefault("maxLambdaIter", 10)
449  ),
450  deltaU_("deltaU", dimVelocity, SMALL),
451 
452  ReThetat_
453  (
454  IOobject
455  (
456  IOobject::groupName("ReThetat", alphaRhoPhi.group()),
457  this->runTime_.timeName(),
458  this->mesh_,
461  ),
462  this->mesh_
463  ),
464 
465  gammaInt_
466  (
467  IOobject
468  (
469  IOobject::groupName("gammaInt", alphaRhoPhi.group()),
470  this->runTime_.timeName(),
471  this->mesh_,
474  ),
475  this->mesh_
476  ),
477 
478  gammaIntEff_
479  (
480  IOobject
481  (
482  IOobject::groupName("gammaIntEff", alphaRhoPhi.group()),
483  this->runTime_.timeName(),
484  this->mesh_
485  ),
486  this->mesh_,
488  )
489 {
490  if (type == typeName)
491  {
492  this->printCoeffs(type);
493  }
494 }
495 
496 
497 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
498 
499 template<class BasicTurbulenceModel>
501 {
503  {
504  ca1_.readIfPresent(this->coeffDict());
505  ca2_.readIfPresent(this->coeffDict());
506  ce1_.readIfPresent(this->coeffDict());
507  ce2_.readIfPresent(this->coeffDict());
508  sigmaThetat_.readIfPresent(this->coeffDict());
509  cThetat_.readIfPresent(this->coeffDict());
510  this->coeffDict().readIfPresent("lambdaErr", lambdaErr_);
511  this->coeffDict().readIfPresent("maxLambdaIter", maxLambdaIter_);
512 
513  return true;
514  }
515 
516  return false;
517 }
518 
519 
520 template<class BasicTurbulenceModel>
522 {
523  // Local references
524  const alphaField& alpha = this->alpha_;
525  const rhoField& rho = this->rho_;
526  const surfaceScalarField& alphaRhoPhi = this->alphaRhoPhi_;
527  const volVectorField& U = this->U_;
528  const volScalarField& k = this->k_;
529  const volScalarField& omega = this->omega_;
530  const tmp<volScalarField> tnu = this->nu();
531  const volScalarField::Internal& nu = tnu()();
532  const volScalarField::Internal& y = this->y_();
533  fv::options& fvOptions(fv::options::New(this->mesh_));
534 
535  // Fields derived from the velocity gradient
536  tmp<volTensorField> tgradU = fvc::grad(U);
537  const volScalarField::Internal Omega(sqrt(2*magSqr(skew(tgradU()()))));
538  const volScalarField::Internal S(sqrt(2*magSqr(symm(tgradU()()))));
539  const volScalarField::Internal Us(max(mag(U()), deltaU_));
540  const volScalarField::Internal dUsds((U() & (U() & tgradU()()))/sqr(Us));
541  tgradU.clear();
542 
543  const volScalarField::Internal Fthetat(this->Fthetat(Us, Omega, nu));
544 
545  {
546  const volScalarField::Internal t(500*nu/sqr(Us));
547  const volScalarField::Internal Pthetat
548  (
549  alpha()*rho()*(cThetat_/t)*(1 - Fthetat)
550  );
551 
552  // Transition onset momentum-thickness Reynolds number equation
553  tmp<fvScalarMatrix> ReThetatEqn
554  (
555  fvm::ddt(alpha, rho, ReThetat_)
556  + fvm::div(alphaRhoPhi, ReThetat_)
557  - fvm::laplacian(alpha*rho*DReThetatEff(), ReThetat_)
558  ==
559  Pthetat*ReThetat0(Us, dUsds, nu) - fvm::Sp(Pthetat, ReThetat_)
560  + fvOptions(alpha, rho, ReThetat_)
561  );
562 
563  ReThetatEqn.ref().relax();
564  fvOptions.constrain(ReThetatEqn.ref());
565  solve(ReThetatEqn);
566  fvOptions.correct(ReThetat_);
567  bound(ReThetat_, 0);
568  }
569 
570  const volScalarField::Internal ReThetac(this->ReThetac());
571  const volScalarField::Internal Rev(sqr(y)*S/nu);
572  const volScalarField::Internal RT(k()/(nu*omega()));
573 
574  {
575  const volScalarField::Internal Pgamma
576  (
577  alpha()*rho()
578  *ca1_*Flength(nu)*S*sqrt(gammaInt_()*Fonset(Rev, ReThetac, RT))
579  );
580 
581  const volScalarField::Internal Fturb(exp(-pow4(0.25*RT)));
582 
583  const volScalarField::Internal Egamma
584  (
585  alpha()*rho()*ca2_*Omega*Fturb*gammaInt_()
586  );
587 
588  // Intermittency equation
589  tmp<fvScalarMatrix> gammaIntEqn
590  (
591  fvm::ddt(alpha, rho, gammaInt_)
592  + fvm::div(alphaRhoPhi, gammaInt_)
593  - fvm::laplacian(alpha*rho*DgammaIntEff(), gammaInt_)
594  ==
595  Pgamma - fvm::Sp(ce1_*Pgamma, gammaInt_)
596  + Egamma - fvm::Sp(ce2_*Egamma, gammaInt_)
597  + fvOptions(alpha, rho, gammaInt_)
598  );
599 
600  gammaIntEqn.ref().relax();
601  fvOptions.constrain(gammaIntEqn.ref());
602  solve(gammaIntEqn);
603  fvOptions.correct(gammaInt_);
604  bound(gammaInt_, 0);
605  }
606 
607  const volScalarField::Internal Freattach(exp(-pow4(RT/20.0)));
608  const volScalarField::Internal gammaSep
609  (
610  min(2*max(Rev/(3.235*ReThetac) - 1, scalar(0))*Freattach, scalar(2))
611  *Fthetat
612  );
613 
614  gammaIntEff_ = max(gammaInt_(), gammaSep);
615 }
616 
617 
618 template<class BasicTurbulenceModel>
620 {
621  if (!this->turbulence_)
622  {
623  return;
624  }
625 
626  // Correct k and omega
628 
629  // Correct ReThetat and gammaInt
630  correctReThetatGammaInt();
631 }
632 
633 
634 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
635 
636 } // End namespace RASModels
637 } // End namespace Foam
638 
639 // ************************************************************************* //
Foam::IOobject
Defines the attributes of an object for which implicit objectRegistry management is supported,...
Definition: IOobject.H:104
F1
#define F1(B, C, D)
Definition: SHA1.C:150
Foam::symm
dimensionedSymmTensor symm(const dimensionedSymmTensor &dt)
Definition: dimensionedSymmTensor.C:84
Foam::IOobject::AUTO_WRITE
Definition: IOobject.H:129
Foam::RASModels::kOmegaSSTLM::Pk
virtual tmp< volScalarField::Internal > Pk(const volScalarField::Internal &G) const
Modified form of the k-omega SST k production rate.
Definition: kOmegaSSTLM.C:55
Foam::dimless
const dimensionSet dimless(0, 0, 0, 0, 0, 0, 0)
Dimensionless.
Definition: dimensionSets.H:50
Foam::fvc::grad
tmp< GeometricField< typename outerProduct< vector, Type >::type, fvPatchField, volMesh >> grad(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
Definition: fvcGrad.C:54
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:62
Foam::tmp::clear
void clear() const noexcept
Definition: tmpI.H:325
Foam::skew
dimensionedTensor skew(const dimensionedTensor &dt)
Definition: dimensionedTensor.C:137
Foam::RASModels::kOmegaSST
Implementation of the k-omega-SST turbulence model for incompressible and compressible flows.
Definition: kOmegaSST.H:129
Foam::dimLength
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
Definition: dimensionSets.H:53
Foam::constant::universal::G
const dimensionedScalar G
Newtonian constant of gravitation.
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:59
Foam::Zero
static constexpr const zero Zero
Global zero.
Definition: zero.H:128
Foam::dimVelocity
const dimensionSet dimVelocity
Foam::RASModels::kOmegaSSTLM::Fthetat
tmp< volScalarField::Internal > Fthetat(const volScalarField::Internal &Us, const volScalarField::Internal &Omega, const volScalarField::Internal &nu) const
Freestream blending-function.
Definition: kOmegaSSTLM.C:78
Foam::fv::options::New
static options & New(const fvMesh &mesh)
Construct fvOptions and register to database if not present.
Definition: fvOptions.C:104
Foam::RASModels::kOmegaSSTLM::correctReThetatGammaInt
void correctReThetatGammaInt()
Solve the turbulence equations and correct the turbulence viscosity.
Definition: kOmegaSSTLM.C:521
Foam::constant::atomic::alpha
const dimensionedScalar alpha
Fine-structure constant: default SI units: [].
Definition: readThermalProperties.H:212
Foam::bound
volScalarField & bound(volScalarField &, const dimensionedScalar &lowerBound)
Bound the given scalar field if it has gone unbounded.
Definition: bound.C:35
Foam::kOmegaSSTBase< eddyViscosity< RASModel< BasicTurbulenceModel > > >::epsilonByk
virtual tmp< volScalarField::Internal > epsilonByk(const volScalarField &F1, const volTensorField &gradU) const
Return epsilon/k which for standard RAS is betaStar*omega.
Definition: kOmegaSSTBase.C:147
Foam::Ry
tensor Ry(const scalar &omega)
Rotational transformation tensor about the y-axis by omega radians.
Definition: transform.H:97
Foam::RASModels::kOmegaSSTLM::ReThetat0
tmp< volScalarField::Internal > ReThetat0(const volScalarField::Internal &Us, const volScalarField::Internal &dUsds, const volScalarField::Internal &nu) const
Return the transition onset momentum-thickness Reynolds number.
Definition: kOmegaSSTLM.C:221
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:337
Foam::kOmegaSSTBase< eddyViscosity< RASModel< BasicTurbulenceModel > > >::Pk
virtual tmp< volScalarField::Internal > Pk(const volScalarField::Internal &G) const
Return k production rate.
Definition: kOmegaSSTBase.C:136
Foam::exp
dimensionedScalar exp(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:261
rho
rho
Definition: readInitialConditions.H:96
Foam::RASModels::kOmegaSST::alphaField
BasicTurbulenceModel::alphaField alphaField
Definition: kOmegaSST.H:152
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
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:290
Foam::magSqr
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)
nu
volScalarField & nu
Definition: readMechanicalProperties.H:176
Foam::RASModels::kOmegaSST::rhoField
BasicTurbulenceModel::rhoField rhoField
Definition: kOmegaSST.H:153
Foam::pow4
dimensionedScalar pow4(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:100
Foam::tmp::ref
T & ref() const
Definition: tmpI.H:258
Foam::label
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:62
Foam::fvm::Sp
tmp< fvMatrix< Type > > Sp(const volScalarField::Internal &, const GeometricField< Type, fvPatchField, volMesh > &)
fvOptions
fv::options & fvOptions
Definition: setRegionFluidFields.H:23
Foam::pow3
dimensionedScalar pow3(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:89
Foam::fvm::laplacian
tmp< fvMatrix< Type > > laplacian(const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
Definition: fvmLaplacian.C:48
Foam::GeometricField< scalar, fvPatchField, volMesh >::Internal
DimensionedField< scalar, volMesh > Internal
Type of the internal field from which this GeometricField is derived.
Definition: GeometricField.H:107
F3
#define F3(B, C, D)
Definition: SHA1.C:152
delta
scalar delta
Definition: LISASMDCalcMethod2.H:8
Foam::RASModels::kOmegaSSTLM
Langtry-Menter 4-equation transitional SST model based on the k-omega-SST RAS model.
Definition: kOmegaSSTLM.H:107
Foam::RASModels::kOmegaSSTLM::F1
virtual tmp< volScalarField > F1(const volScalarField &CDkOmega) const
Modified form of the k-omega SST F1 function.
Definition: kOmegaSSTLM.C:42
Foam::solve
SolverPerformance< Type > solve(faMatrix< Type > &, Istream &)
Solve returning the solution statistics given convergence tolerance.
Foam::dimensionedScalar
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Definition: dimensionedScalarFwd.H:43
phi
surfaceScalarField & phi
Definition: setRegionFluidFields.H:8
Foam::pow
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
Definition: dimensionedScalar.C:75
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
kOmegaSSTLM.H
Foam::fv::options
Finite-volume options.
Definition: fvOptions.H:55
lambda
dimensionedScalar lambda("lambda", dimTime/sqr(dimLength), laminarTransport)
Foam::dimensioned< scalar >
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::RASModels::kOmegaSST::transportModel
BasicTurbulenceModel::transportModel transportModel
Definition: kOmegaSST.H:154
Foam::kOmegaSSTBase< eddyViscosity< RASModel< BasicTurbulenceModel > > >::correct
virtual void correct()
Solve the turbulence equations and correct the turbulence viscosity.
Definition: kOmegaSSTBase.C:483
Foam::RASModels::kOmegaSSTLM::ReThetac
tmp< volScalarField::Internal > ReThetac() const
Empirical correlation for critical Reynolds number where the.
Definition: kOmegaSSTLM.C:117
Foam::dimensioned::lookupOrAddToDict
static dimensioned< Type > lookupOrAddToDict(const word &name, dictionary &dict, const dimensionSet &dims=dimless, const Type &deflt=Type(Zero))
Construct dimensioned from dictionary, with default value.
Definition: dimensionedType.H:425
U
U
Definition: pEqn.H:72
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::RASModels::kOmegaSSTLM::epsilonByk
virtual tmp< volScalarField::Internal > epsilonByk(const volScalarField &F1, const volTensorField &gradU) const
Modified form of the k-omega SST epsilon/k.
Definition: kOmegaSSTLM.C:65
Foam::RASModels::kOmegaSSTLM::Fonset
tmp< volScalarField::Internal > Fonset(const volScalarField::Internal &Rev, const volScalarField::Internal &ReThetac, const volScalarField::Internal &RT) const
Transition onset location control function.
Definition: kOmegaSSTLM.C:335
Foam::RASModels::kOmegaSSTLM::Flength
tmp< volScalarField::Internal > Flength(const volScalarField::Internal &nu) const
Empirical correlation that controls the length of the.
Definition: kOmegaSSTLM.C:158
Foam::sqrt
dimensionedScalar sqrt(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:144
Foam::IOobject::groupName
static word groupName(StringType name, const word &group)
Create dot-delimited name.group.
Us
Us
Definition: createFaFields.H:51
Foam::mag
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
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
k
label k
Boltzmann constant.
Definition: LISASMDCalcMethod2.H:41
Foam::constant::electromagnetic::e
const dimensionedScalar e
Elementary charge.
Definition: createFields.H:11
Foam::RASModels::kOmegaSSTLM::read
virtual bool read()
Re-read model coefficients if they have changed.
Definition: kOmegaSSTLM.C:500
Foam::GeometricField< scalar, fvPatchField, volMesh >
Foam::fvm::div
tmp< fvMatrix< Type > > div(const surfaceScalarField &flux, const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
Definition: fvmDiv.C:48
WarningInFunction
#define WarningInFunction
Report a warning using Foam::Warning.
Definition: messageStream.H:294
Foam::RASModels::kOmegaSSTLM::correct
virtual void correct()
Solve the turbulence equations and correct the turbulence viscosity.
Definition: kOmegaSSTLM.C:619
y
scalar y
Definition: LISASMDCalcMethod1.H:14
Foam::IOobject::MUST_READ
Definition: IOobject.H:120