From de46ee40da035613ef28faea8be641b4628d4567 Mon Sep 17 00:00:00 2001
From: andy <andy>
Date: Mon, 29 Oct 2012 15:17:52 +0000
Subject: [PATCH] ENH: Enable moving wall velocity BC to be used for non-moving
 mesh cases

---
 .../movingWallVelocityFvPatchVectorField.C    | 42 +++++++++++--------
 1 file changed, 24 insertions(+), 18 deletions(-)

diff --git a/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.C
index cd94de26cab..11f811e4433 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.C
@@ -105,32 +105,38 @@ void Foam::movingWallVelocityFvPatchVectorField::updateCoeffs()
         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)
+    if (mesh.changing())
     {
-        oldFc[i] = pp[i].centre(oldPoints);
-    }
+        const fvPatch& p = patch();
+        const polyPatch& pp = p.patch();
+        const pointField& oldPoints = mesh.oldPoints();
 
-    const vectorField Up((pp.faceCentres() - oldFc)/mesh.time().deltaTValue());
+        vectorField oldFc(pp.size());
 
-    const volVectorField& U = db().lookupObject<volVectorField>(UName_);
-    scalarField phip
-    (
-        p.patchField<surfaceScalarField, scalar>(fvc::meshPhi(U))
-    );
+        forAll(oldFc, i)
+        {
+            oldFc[i] = pp[i].centre(oldPoints);
+        }
 
-    const vectorField n(p.nf());
-    const scalarField& magSf = p.magSf();
-    tmp<scalarField> Un = phip/(magSf + VSMALL);
+        const scalar deltaT = mesh.time().deltaTValue();
 
+        const vectorField Up((pp.faceCentres() - oldFc)/deltaT);
 
-    vectorField::operator=(Up + n*(Un - (n & Up)));
+        const volVectorField& U = db().lookupObject<volVectorField>(UName_);
+        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)));
+    }
 
     fixedValueFvPatchVectorField::updateCoeffs();
 }
-- 
GitLab