void epsilonLowReWallFunctionFvPatchScalarField::calculate ( const turbulenceModel& turbulence, const List<scalar>& cornerWeights, const fvPatch& patch, scalarField& G, scalarField& epsilon ) { const label patchi = patch.index(); const scalarField& y = turbulence.y()[patchi]; const scalar Cmu25 = pow025(Cmu_); const scalar Cmu75 = pow(Cmu_, 0.75); const tmp<volScalarField> tk = turbulence.k(); const volScalarField& k = tk(); const tmp<scalarField> tnuw = turbulence.nu(patchi); const scalarField& nuw = tnuw(); const tmp<scalarField> tnutw = turbulence.nut(patchi); const scalarField& nutw = tnutw(); const fvPatchVectorField& Uw = turbulence.U().boundaryField()[patchi]; const scalarField magGradUw(mag(Uw.snGrad())); // Set epsilon and G forAll(nutw, faceI) { label cellI = patch.faceCells()[faceI]; scalar yPlus = Cmu25*sqrt(k[cellI])*y[faceI]/nuw[faceI]; scalar w = cornerWeights[faceI]; if (yPlus > yPlusLam_) { epsilon[cellI] += w*Cmu75*pow(k[cellI], 1.5)/(kappa_*y[faceI]); } else { epsilon[cellI] += w*2.0*k[cellI]*nuw[faceI]/sqr(y[faceI]); } G[cellI] += w *(nutw[faceI] + nuw[faceI]) *magGradUw[faceI] *Cmu25*sqrt(k[cellI]) /(kappa_*y[faceI]); }
void Foam::functionObjects::yPlus::calcYPlus ( const turbulenceModel& turbModel, const fvMesh& mesh, volScalarField& yPlus ) { volScalarField::Boundary d = nearWallDist(mesh).y(); const volScalarField::Boundary nutBf = turbModel.nut()().boundaryField(); const volScalarField::Boundary nuEffBf = turbModel.nuEff()().boundaryField(); const volScalarField::Boundary nuBf = turbModel.nu()().boundaryField(); const fvPatchList& patches = mesh.boundary(); volScalarField::Boundary& yPlusBf = yPlus.boundaryFieldRef(); forAll(patches, patchi) { const fvPatch& patch = patches[patchi]; if (isA<nutWallFunctionFvPatchScalarField>(nutBf[patchi])) { const nutWallFunctionFvPatchScalarField& nutPf = dynamic_cast<const nutWallFunctionFvPatchScalarField&> ( nutBf[patchi] ); yPlusBf[patchi] = nutPf.yPlus(); } else if (isA<wallFvPatch>(patch)) { yPlusBf[patchi] = d[patchi] *sqrt ( nuEffBf[patchi] *mag(turbModel.U().boundaryField()[patchi].snGrad()) )/nuBf[patchi]; } } }
void Foam::epsilonLowReWallFunctionFvPatchScalarField::calculate ( const turbulenceModel& turbModel, const List<scalar>& cornerWeights, const fvPatch& patch, scalarField& G0, scalarField& epsilon0 ) { const label patchi = patch.index(); const scalarField& y = turbModel.y()[patchi]; const scalar Cmu25 = pow025(Cmu_); const scalar Cmu75 = pow(Cmu_, 0.75); const tmp<volScalarField> tk = turbModel.k(); const volScalarField& k = tk(); const tmp<scalarField> tnuw = turbModel.nu(patchi); const scalarField& nuw = tnuw(); const tmp<scalarField> tnutw = turbModel.nut(patchi); const scalarField& nutw = tnutw(); const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchi]; const scalarField magGradUw(mag(Uw.snGrad())); const DimensionedField<scalar, volMesh>& G = db().lookupObject<DimensionedField<scalar, volMesh> > ( turbModel.GName() ); // Set epsilon and G forAll(nutw, facei) { label celli = patch.faceCells()[facei]; scalar yPlus = Cmu25*sqrt(k[celli])*y[facei]/nuw[facei]; scalar w = cornerWeights[facei]; if (yPlus > yPlusLam_) { epsilon0[celli] += w*Cmu75*pow(k[celli], 1.5)/(kappa_*y[facei]); G0[celli] += w *(nutw[facei] + nuw[facei]) *magGradUw[facei] *Cmu25*sqrt(k[celli]) /(kappa_*y[facei]); } else { epsilon0[celli] += w*2.0*k[celli]*nuw[facei]/sqr(y[facei]); G0[celli] += G[celli]; } }
void epsilonLowReWallFunctionFvPatchScalarField::calculate ( const turbulenceModel& turbulence, const gpuList<scalar>& cornerWeights, const fvPatch& patch, scalargpuField& G, scalargpuField& epsilon ) { const label patchi = patch.index(); const scalargpuField& y = turbulence.y()[patchi]; const scalar Cmu25 = pow025(Cmu_); const scalar Cmu75 = pow(Cmu_, 0.75); const tmp<volScalarField> tk = turbulence.k(); const volScalarField& k = tk(); const tmp<scalargpuField> tnuw = turbulence.nu(patchi); const scalargpuField& nuw = tnuw(); const tmp<scalargpuField> tnutw = turbulence.nut(patchi); const scalargpuField& nutw = tnutw(); const fvPatchVectorField& Uw = turbulence.U().boundaryField()[patchi]; const scalargpuField magGradUw(mag(Uw.snGrad())); matrixPatchOperation ( patchi, epsilon, patch.boundaryMesh().mesh().lduAddr(), EpsilonLowReCalculateEpsilonFunctor ( yPlusLam_, Cmu25, Cmu75, kappa_, cornerWeights.data(), y.data(), k.getField().data(), nuw.data() ) ); matrixPatchOperation ( patchi, G, patch.boundaryMesh().mesh().lduAddr(), EpsilonLowReCalculateGFunctor ( Cmu25, kappa_, cornerWeights.data(), y.data(), k.getField().data(), nuw.data(), nutw.data(), magGradUw.data() ) ); }