35 namespace compressible
47 tmp<volScalarField> SpalartAllmaras::chi()
const
49 return rho_*nuTilda_/
mu();
53 tmp<volScalarField> SpalartAllmaras::fv1(
const volScalarField& chi)
const
56 return chi3/(chi3 +
pow3(Cv1_));
60 tmp<volScalarField> SpalartAllmaras::fv2
66 return 1.0/
pow3(scalar(1) + chi/Cv2_);
70 tmp<volScalarField> SpalartAllmaras::fv3
81 *(3*(scalar(1) + chiByCv2) +
sqr(chiByCv2))
82 /
pow3(scalar(1) + chiByCv2);
86 tmp<volScalarField> SpalartAllmaras::fw(
const volScalarField& Stilda)
const
97 r.boundaryField() == 0.0;
107 SpalartAllmaras::SpalartAllmaras
115 RASModel(typeName, rho, U, phi, thermophysicalModel),
163 Cw1_(Cb1_/
sqr(kappa_) + (1.0 + Cb2_)/sigmaNut_),
243 alphat_.correctBoundaryConditions();
303 bool SpalartAllmaras::read()
305 if (RASModel::read())
307 sigmaNut_.readIfPresent(coeffDict());
308 kappa_.readIfPresent(coeffDict());
309 Prt_.readIfPresent(coeffDict());
311 Cb1_.readIfPresent(coeffDict());
312 Cb2_.readIfPresent(coeffDict());
313 Cw1_ = Cb1_/
sqr(kappa_) + (1.0 + Cb2_)/sigmaNut_;
315 Cw3_.readIfPresent(coeffDict());
316 Cv1_.readIfPresent(coeffDict());
317 Cv2_.readIfPresent(coeffDict());
333 mut_ = rho_*nuTilda_*fv1(chi());
334 mut_.correctBoundaryConditions();
338 alphat_.correctBoundaryConditions();
345 if (mesh_.changing())
355 + fv2(chi, fv1)*nuTilda_/
sqr(kappa_*d_);
364 Cb1_*rho_*Stilda*nuTilda_
365 -
fvm::Sp(Cw1_*fw(Stilda)*nuTilda_*rho_/
sqr(d_), nuTilda_)
368 nuTildaEqn().relax();
371 nuTilda_.correctBoundaryConditions();
374 mut_.internalField() = fv1*nuTilda_.
internalField()*rho_.internalField();
375 mut_.correctBoundaryConditions();
379 alphat_.correctBoundaryConditions();