From 2fd5224c90eb5328392cb499d8a2d39326de9f82 Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Wed, 1 Sep 2010 10:04:16 +0100
Subject: [PATCH] ENH: pointMVCWeight : handle zero field. (div by zero)

---
 .../interpolationPoint/interpolationPoint.H            |  2 +-
 .../interpolation/interpolationPoint/pointMVCWeight.C  | 10 +++++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/finiteVolume/interpolation/interpolation/interpolationPoint/interpolationPoint.H b/src/finiteVolume/interpolation/interpolation/interpolationPoint/interpolationPoint.H
index 49ee13e308e..a3dc106eb02 100644
--- a/src/finiteVolume/interpolation/interpolation/interpolationPoint/interpolationPoint.H
+++ b/src/finiteVolume/interpolation/interpolation/interpolationPoint/interpolationPoint.H
@@ -60,7 +60,7 @@ protected:
 public:
 
     //- Runtime type information
-    TypeName("cellPoint");
+    TypeName("point");
 
 
     // Constructors
diff --git a/src/finiteVolume/interpolation/interpolation/interpolationPoint/pointMVCWeight.C b/src/finiteVolume/interpolation/interpolation/interpolationPoint/pointMVCWeight.C
index 2945198e46d..42e201c6ab6 100644
--- a/src/finiteVolume/interpolation/interpolation/interpolationPoint/pointMVCWeight.C
+++ b/src/finiteVolume/interpolation/interpolation/interpolationPoint/pointMVCWeight.C
@@ -119,7 +119,15 @@ void Foam::pointMVCWeight::calcWeights
             //Pout<< "    uj:" << u[j] << " ujPlus1:" << u[jPlus1] << endl;
 
             vector temp = u[j] ^ u[jPlus1];
-            temp /= mag(temp);
+
+            scalar magTemp = mag(temp);
+
+            if (magTemp < VSMALL)
+            {
+                continue;
+            }
+
+            temp /= magTemp;
 
             //Pout<< "    uj:" << u[j] << " ujPlus1:" << u[jPlus1]
             //    << " temp:" << temp << endl;
-- 
GitLab