From 0ceb2cd23015412f6c6ff8551137eac885a05bb1 Mon Sep 17 00:00:00 2001
From: Andrew Heather <a.heather@opencfd.co.uk>
Date: Wed, 28 Sep 2016 16:59:57 +0100
Subject: [PATCH] ENH: wallDist - added option to evaluate every XXX steps

---
 .../fvMesh/wallDist/wallDist/wallDist.C       | 30 ++++++++++++++++---
 .../fvMesh/wallDist/wallDist/wallDist.H       | 12 +++++++-
 2 files changed, 37 insertions(+), 5 deletions(-)

diff --git a/src/finiteVolume/fvMesh/wallDist/wallDist/wallDist.C b/src/finiteVolume/fvMesh/wallDist/wallDist/wallDist.C
index ae5be722b1b..7d53f566b2d 100644
--- a/src/finiteVolume/fvMesh/wallDist/wallDist/wallDist.C
+++ b/src/finiteVolume/fvMesh/wallDist/wallDist/wallDist.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2015-2016 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -98,7 +98,13 @@ Foam::wallDist::wallDist(const fvMesh& mesh, const word& patchTypeName)
         static_cast<const fvSchemes&>(mesh).subDict(patchTypeName_ & "Dist")
        .lookupOrDefault<Switch>("nRequired", false)
     ),
-    n_(volVectorField::null())
+    n_(volVectorField::null()),
+    updateInterval_
+    (
+        static_cast<const fvSchemes&>(mesh).subDict(patchTypeName_ & "Dist")
+       .lookupOrDefault<label>("updateInterval", 1)
+    ),
+    requireUpdate_(true)
 {
     if (nRequired_)
     {
@@ -146,7 +152,13 @@ Foam::wallDist::wallDist
         static_cast<const fvSchemes&>(mesh).subDict(patchTypeName_ & "Dist")
        .lookupOrDefault<Switch>("nRequired", false)
     ),
-    n_(volVectorField::null())
+    n_(volVectorField::null()),
+    updateInterval_
+    (
+        static_cast<const fvSchemes&>(mesh).subDict(patchTypeName_ & "Dist")
+       .lookupOrDefault<label>("updateInterval", 1)
+    ),
+    requireUpdate_(true)
 {
     if (nRequired_)
     {
@@ -185,8 +197,17 @@ const Foam::volVectorField& Foam::wallDist::n() const
 
 bool Foam::wallDist::movePoints()
 {
-    if (pdm_->movePoints())
+    if ((mesh_.time().timeIndex() % updateInterval_) == 0)
     {
+        requireUpdate_ = true;
+    }
+
+    if (requireUpdate_ && pdm_->movePoints())
+    {
+        DebugInfo<< "Updating wall distance" << endl;
+
+        requireUpdate_ = false;
+
         if (nRequired_)
         {
             return pdm_->correct(y_, n_.ref());
@@ -206,6 +227,7 @@ bool Foam::wallDist::movePoints()
 void Foam::wallDist::updateMesh(const mapPolyMesh& mpm)
 {
     pdm_->updateMesh(mpm);
+    requireUpdate_ = true;
     movePoints();
 }
 
diff --git a/src/finiteVolume/fvMesh/wallDist/wallDist/wallDist.H b/src/finiteVolume/fvMesh/wallDist/wallDist/wallDist.H
index 9d4f0263b42..4cddaaa4760 100644
--- a/src/finiteVolume/fvMesh/wallDist/wallDist/wallDist.H
+++ b/src/finiteVolume/fvMesh/wallDist/wallDist/wallDist.H
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -37,6 +37,10 @@ Description
             // Optional entry enabling the calculation
             // of the normal-to-wall field
             nRequired false;
+
+            // Optional entry delaying wall distance update to every n steps
+            // Default is 1 (update every step)
+            updateInterval 5;
         }
     \endverbatim
 
@@ -90,6 +94,12 @@ class wallDist
         //- Normal-to-wall field
         mutable tmp<volVectorField> n_;
 
+        //- Update wall distance every updateInterval_ steps
+        const label updateInterval_;
+
+        //- Flag to indicate whether the wall distance requires updating
+        bool requireUpdate_;
+
 
     // Private Member Functions
 
-- 
GitLab