34 namespace compressible
47 void SpalartAllmaras::updateSubGridScaleFields()
49 muSgs_.internalField() =
rho()*fv1()*nuTilda_.internalField();
50 muSgs_.correctBoundaryConditions();
52 alphaSgs_ = muSgs_/Prt_;
53 alphaSgs_.correctBoundaryConditions();
57 tmp<volScalarField> SpalartAllmaras::fv1()
const
60 return chi3/(chi3 +
pow3(Cv1_));
64 tmp<volScalarField> SpalartAllmaras::fv2()
const
66 return 1.0/
pow3(scalar(1) +
rho()*nuTilda_/(
mu()*Cv2_));
70 tmp<volScalarField> SpalartAllmaras::fv3()
const
76 (scalar(1) + chi*fv1())
78 *(3*(scalar(1) + chiByCv2) +
sqr(chiByCv2))
79 /
pow3(scalar(1) + chiByCv2);
83 tmp<volScalarField> SpalartAllmaras::fw(
const volScalarField& Stilda)
const
94 r.boundaryField() == 0.0;
104 SpalartAllmaras::SpalartAllmaras
112 LESModel(typeName, rho, U, phi, thermoPhysicalModel),
196 Cw1_(Cb1_/
sqr(kappa_) + (1.0 + Cb2_)/sigmaNut_),
256 updateSubGridScaleFields();
296 if (mesh_.changing())
310 (nuTilda_*
rho() +
mu())/sigmaNut_,
312 "laplacian(DnuTildaEff,nuTilda)"
316 rho()*Cb1_*Stilda*nuTilda_
317 -
fvm::Sp(
rho()*Cw1_*fw(Stilda)*nuTilda_/
sqr(dTilda_), nuTilda_)
321 nuTilda_.correctBoundaryConditions();
323 updateSubGridScaleFields();
327 bool SpalartAllmaras::read()
329 if (LESModel::read())
331 sigmaNut_.readIfPresent(coeffDict());
332 Prt_.readIfPresent(coeffDict());
333 Cb1_.readIfPresent(coeffDict());
334 Cb2_.readIfPresent(coeffDict());
335 Cw1_ = Cb1_/
sqr(kappa_) + (1.0 + Cb2_)/sigmaNut_;
337 Cw3_.readIfPresent(coeffDict());
338 Cv1_.readIfPresent(coeffDict());
339 Cv2_.readIfPresent(coeffDict());
340 CDES_.readIfPresent(coeffDict());
341 ck_.readIfPresent(coeffDict());
342 kappa_.readIfPresent(*
this);