diff --git a/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.C index 1592f3f382..7a9c170d7a 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.C @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation + Copyright (C) 2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -92,6 +93,38 @@ movingWallVelocityFvPatchVectorField // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +Foam::tmp +Foam::movingWallVelocityFvPatchVectorField::Uwall() const +{ + const fvMesh& mesh = internalField().mesh(); + 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 auto& U = static_cast(internalField()); + + tmp phip = + p.patchField(fvc::meshPhi(U)); + + const vectorField n(p.nf()); + const scalarField& magSf = p.magSf(); + tmp Un = phip/(magSf + VSMALL); + + return (Up + n*(Un - (n & Up))); +} + + void Foam::movingWallVelocityFvPatchVectorField::updateCoeffs() { if (updated()) @@ -103,35 +136,7 @@ void Foam::movingWallVelocityFvPatchVectorField::updateCoeffs() 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(internalField()); - - scalarField phip - ( - p.patchField(fvc::meshPhi(U)) - ); - - const vectorField n(p.nf()); - const scalarField& magSf = p.magSf(); - tmp Un = phip/(magSf + VSMALL); - - - vectorField::operator=(Up + n*(Un - (n & Up))); + vectorField::operator=(Uwall()()); } fixedValueFvPatchVectorField::updateCoeffs(); diff --git a/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.H index bd272e9317..9b5b05cd7e 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2015 OpenCFD Ltd. + Copyright (C) 2015-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -71,7 +71,6 @@ class movingWallVelocityFvPatchVectorField : public fixedValueFvPatchVectorField { - public: //- Runtime type information @@ -140,7 +139,10 @@ public: } - // Member functions + // Member Functions + + //- Return wall velocity field + tmp Uwall() const; //- Update the coefficients associated with the patch field virtual void updateCoeffs();