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::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() ) ); }