void Foam::movingWallVelocityFvPatchVectorField::updateCoeffs() { if (updated()) { return; } const fvPatch& p = patch(); const polyPatch& pp = p.patch(); const fvMesh& mesh = dimensionedInternalField().mesh(); const pointField& oldPoints = mesh.oldPoints(); vectorField oldFc(pp.size()); forAll(oldFc, i) { oldFc[i] = pp[i].centre(oldPoints); }
void movingWallVelocityFvPatchVectorField::updateCoeffs() { if (updated()) { return; } const fvMesh& mesh = dimensionedInternalField().mesh(); if (mesh.changing()) { const fvPatch& p = patch(); const polyPatch& pp = p.patch(); const pointField& oldPoints = mesh.oldPoints(); vectorField oldFc(pp.size()); forAll(oldFc, i) { oldFc[i] = pp[i].centre(oldPoints); } // Get wall-parallel mesh motion velocity from geometry vectorField Up = (pp.faceCentres() - oldFc)/mesh.time().deltaT().value(); const volVectorField& U = mesh.lookupObject<volVectorField> ( dimensionedInternalField().name() ); scalarField phip = p.patchField<surfaceScalarField, scalar>(fvc::meshPhi(U)); vectorField n = p.nf(); const scalarField& magSf = p.magSf(); scalarField Un = phip/(magSf + VSMALL); // Adjust for surface-normal mesh motion flux vectorField::operator=(Up + n*(Un - (n & Up))); }
void Foam::movingWallVelocityFvPatchVectorField::updateCoeffs() { if (updated()) { return; } const fvMesh& mesh = internalField().mesh(); if (mesh.moving()) { const fvPatch& p = patch(); const polyPatch& pp = p.patch(); const pointField& oldPoints = mesh.oldPoints(); vectorField oldFc(pp.size()); forAll(oldFc, i) { oldFc[i] = pp[i].centre(oldPoints); } const scalar deltaT = mesh.time().deltaTValue(); const vectorField Up((pp.faceCentres() - oldFc)/deltaT); const volVectorField& U = static_cast<const volVectorField&>(internalField()); scalarField phip ( p.patchField<surfaceScalarField, scalar>(fvc::meshPhi(U)) ); const vectorField n(p.nf()); const scalarField& magSf = p.magSf(); tmp<scalarField> Un = phip/(magSf + vSmall); vectorField::operator=(Up + n*(Un - (n & Up))); }