47 sigmaNut_(dimensioned<scalar>::lookupOrAddToDict(
51 kappa_(dimensioned<scalar>::lookupOrAddToDict(
56 Cb1_(dimensioned<scalar>::lookupOrAddToDict(
60 Cb2_(dimensioned<scalar>::lookupOrAddToDict(
64 Cw1_(Cb1_ / sqr(kappa_) + (1.0 + Cb2_) / sigmaNut_),
65 Cw2_(dimensioned<scalar>::lookupOrAddToDict(
69 Cw3_(dimensioned<scalar>::lookupOrAddToDict(
73 Cv1_(dimensioned<scalar>::lookupOrAddToDict(
77 Cs_(dimensioned<scalar>::lookupOrAddToDict(
82 nuTilda_(const_cast<volScalarField&>(
83 mesh.thisDb().lookupObject<volScalarField>(
"nuTilda"))),
87 mesh.time().timeName(),
92 dimensionedScalar(
"nuTildaRes", dimensionSet(0, 0, 0, 0, 0, 0, 0), 0.0),
93 zeroGradientFvPatchField<scalar>::typeName),
94 y_(
mesh.thisDb().lookupObject<volScalarField>(
"yWall")),
98 mesh.time().timeName(),
100 IOobject::READ_IF_PRESENT,
101 IOobject::AUTO_WRITE),
103 dimensionedScalar(
"betaFINuTilda", dimensionSet(0, 0, 0, 0, 0, 0, 0), 1.0),
105 psiNuTildaPC_(nullptr),
106 dPsiNuTilda_(
"dPsiNuTilda", nuTilda_)
111 nuTildaRes_.dimensions().reset(dimensionSet(0, 2, -2, 0, 0, 0, 0));
116 nuTildaRes_.dimensions().reset(dimensionSet(1, -1, -2, 0, 0, 0, 0));
130 const volScalarField& chi)
const
132 const volScalarField chi3(pow3(
chi));
133 return chi3 / (chi3 + pow3(
Cv1_));
137 const volScalarField& chi,
138 const volScalarField& fv1)
const
144 const volScalarField& chi,
145 const volScalarField& fv1)
const
147 volScalarField Omega(::sqrt(2.0) * mag(skew(fvc::grad(
U_))));
157 const volScalarField& Stilda)
const
164 dimensionedScalar(
"SMALL",
Stilda.dimensions(), SMALL))
167 r.boundaryFieldRef() == 0.0;
169 const volScalarField g(r +
Cw2_ * (pow6(r) - r));
171 return g * pow((1.0 + pow6(
Cw3_)) / (pow6(g) + pow6(
Cw3_)), 1.0 / 6.0);
176 return tmp<volScalarField>(
207 word stateName = modelStates[idxI];
208 if (stateName ==
"nut")
210 modelStates[idxI] =
"nuTilda";
223 const volScalarField
chi(this->
chi());
224 const volScalarField
fv1(this->
fv1(chi));
227 nut_.correctBoundaryConditions();
243 nuTilda_.correctBoundaryConditions();
296 forAll(stateCon[idxI], idxJ)
298 word conStateName = stateCon[idxI][idxJ];
299 if (conStateName ==
"nut")
301 stateCon[idxI][idxJ] =
"nuTilda";
347 if (
mesh_.thisDb().foundObject<volScalarField>(
"p"))
351 else if (
mesh_.thisDb().foundObject<volScalarField>(
"p_rgh"))
358 "Neither p nor p_rgh was found in mesh.thisDb()!"
359 "addModelResidualCon failed to setup turbulence residuals!")
369 {
"U",
"nuTilda",
"phi"},
379 {
"U",
"T", pName,
"nuTilda",
"phi"},
380 {
"U",
"T", pName,
"nuTilda"},
381 {
"T", pName,
"nuTilda"}
399 dictionary dummyOptions;
400 dummyOptions.set(
"printToScreen", printToScreen);
429 word divNuTildaScheme =
"div(phi,nuTilda)";
433 label printToScreen = options.lookupOrDefault(
"printToScreen", 0);
437 isPC = options.getLabel(
"isPC");
441 divNuTildaScheme =
"div(pc)";
445 const volScalarField
chi(this->
chi());
446 const volScalarField
fv1(this->
fv1(chi));
450 volScalarField
rho = this->
rho();
452 tmp<fvScalarMatrix> nuTildaEqn(
460 nuTildaEqn.ref().relax();
466 SolverPerformance<scalar> solverNuTilda =
solve(nuTildaEqn);
471 nuTilda_.correctBoundaryConditions();
502 if (varName !=
"nuTilda")
505 "varName not valid. It has to be nuTilda")
509 const volScalarField
chi(this->
chi());
510 const volScalarField
fv1(this->
fv1(chi));
514 volScalarField
rho = this->
rho();
516 fvScalarMatrix nuTildaEqn(
526 diag = nuTildaEqn.D();
527 upper = nuTildaEqn.upper();
528 lower = nuTildaEqn.lower();
533 const scalarList& rhs,
536 if (varName !=
"nuTilda")
539 "varName not valid. It has to be nuTilda")
543 const fvSolution& myFvSolution =
mesh_.thisDb().lookupObject<fvSolution>(
"fvSolution");
544 dictionary solverDictNuTilda = myFvSolution.subDict(
"solvers").subDict(
"nuTilda");
550 const volScalarField
chi(this->
chi());
551 const volScalarField
fv1(this->
fv1(chi));
555 volScalarField
rho = this->
rho();
608 const volScalarField
chi(this->
chi());
609 const volScalarField
fv1(this->
fv1(chi));
613 volScalarField
rho = this->
rho();
620 PoD[cellI] = P[cellI] / (
D[cellI] + P[cellI] + 1e-16);
631 const volScalarField
chi(this->
chi());
632 const volScalarField
fv1(this->
fv1(chi));
636 volScalarField
rho = this->
rho();
643 CoP[cellI] = C[cellI] / (P[cellI] + C[cellI] + 1e-16);