bool Foam::patchDistMethods::Poisson::correct ( volScalarField& y, volVectorField& n ) { if (!tyPsi_.valid()) { tyPsi_ = tmp<volScalarField> ( volScalarField::New ( "yPsi", mesh_, dimensionedScalar(sqr(dimLength), 0), y.boundaryFieldRef().types() ) ); } volScalarField& yPsi = tyPsi_.ref(); solve(fvm::laplacian(yPsi) == dimensionedScalar(dimless, -1.0)); volVectorField gradyPsi(fvc::grad(yPsi)); volScalarField magGradyPsi(mag(gradyPsi)); y = sqrt(magSqr(gradyPsi) + 2*yPsi) - magGradyPsi; // Cache yPsi if the mesh is moving otherwise delete if (!mesh_.changing()) { tyPsi_.clear(); } // Only calculate n if the field is defined if (notNull(n)) { n = -gradyPsi /max ( magGradyPsi, dimensionedScalar(dimLength, small) ); } return true; }
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::heThermo<BasicThermo, MixtureType>:: heBoundaryCorrection(volScalarField& h) { volScalarField::Boundary& hBf = h.boundaryFieldRef(); forAll(hBf, patchi) { if (isA<gradientEnergyFvPatchScalarField>(hBf[patchi])) { refCast<gradientEnergyFvPatchScalarField>(hBf[patchi]).gradient() = hBf[patchi].fvPatchField::snGrad(); } else if (isA<mixedEnergyFvPatchScalarField>(hBf[patchi])) { refCast<mixedEnergyFvPatchScalarField>(hBf[patchi]).refGrad() = hBf[patchi].fvPatchField::snGrad(); } } }