From 2ecef2c7b95686b63294755399be878fa1526897 Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Mon, 23 May 2011 16:07:00 +0100
Subject: [PATCH] BUG: globalPoints: handling shared points on V-cyclics

---
 .../polyMesh/globalMeshData/globalPoints.C    | 129 +++++++++---------
 1 file changed, 66 insertions(+), 63 deletions(-)

diff --git a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C
index 9a1954c507f..0b12acd728b 100644
--- a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C
+++ b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C
@@ -613,80 +613,83 @@ void Foam::globalPoints::receivePatchPoints
                 label meshPointA = meshPoints[i];
                 label meshPointB = coupledMeshPoints[i];
 
-                //Pout<< "Connection between point " << meshPointA
-                //    << " at " << mesh_.points()[meshPointA]
-                //    << " and " << meshPointB
-                //    << " at " << mesh_.points()[meshPointB] << endl;
+                if (meshPointA != meshPointB)
+                {
+                    //Pout<< "Connection between point " << meshPointA
+                    //    << " at " << mesh_.points()[meshPointA]
+                    //    << " and " << meshPointB
+                    //    << " at " << mesh_.points()[meshPointB] << endl;
 
-                label localA = meshToLocalPoint
-                (
-                    meshToPatchPoint,
-                    meshPointA
-                );
-                label localB = meshToLocalPoint
-                (
-                    meshToPatchPoint,
-                    meshPointB
-                );
+                    label localA = meshToLocalPoint
+                    (
+                        meshToPatchPoint,
+                        meshPointA
+                    );
+                    label localB = meshToLocalPoint
+                    (
+                        meshToPatchPoint,
+                        meshPointB
+                    );
 
 
-                // Do we have information on pointA?
-                Map<label>::iterator procPointA =
-                    meshToProcPoint_.find(localA);
+                    // Do we have information on pointA?
+                    Map<label>::iterator procPointA =
+                        meshToProcPoint_.find(localA);
 
-                labelPairList infoA;
-                if (procPointA != meshToProcPoint_.end())
-                {
-                    infoA = addSendTransform
-                    (
-                        cycPatch.index(),
-                        procPoints_[procPointA()]
-                    );
-                }
+                    labelPairList infoA;
+                    if (procPointA != meshToProcPoint_.end())
+                    {
+                        infoA = addSendTransform
+                        (
+                            cycPatch.index(),
+                            procPoints_[procPointA()]
+                        );
+                    }
 
-                // Same for info on pointB
-                Map<label>::iterator procPointB =
-                    meshToProcPoint_.find(localB);
+                    // Same for info on pointB
+                    Map<label>::iterator procPointB =
+                        meshToProcPoint_.find(localB);
 
-                labelPairList infoB;
-                if (procPointB != meshToProcPoint_.end())
-                {
-                    infoB = addSendTransform
-                    (
-                        cycPatch.neighbPatchID(),
-                        procPoints_[procPointB()]
-                    );
-                }
+                    labelPairList infoB;
+                    if (procPointB != meshToProcPoint_.end())
+                    {
+                        infoB = addSendTransform
+                        (
+                            cycPatch.neighbPatchID(),
+                            procPoints_[procPointB()]
+                        );
+                    }
 
 
-                if (infoA.size())
-                {
-                    if (mergeInfo(infoA, localB))
+                    if (infoA.size())
                     {
-                        //Pout<< "  Combined info at point "
-                        //    << mesh_.points()[meshPointB]
-                        //    << " now " << endl;
-                        //printProcPoints
-                        //(
-                        //    patchToMeshPoint,
-                        //    procPoints_[meshToProcPoint_[localB]]
-                        //);
-                        changedPoints.insert(localB);
+                        if (mergeInfo(infoA, localB))
+                        {
+                            //Pout<< "  Combined info at point "
+                            //    << mesh_.points()[meshPointB]
+                            //    << " now " << endl;
+                            //printProcPoints
+                            //(
+                            //    patchToMeshPoint,
+                            //    procPoints_[meshToProcPoint_[localB]]
+                            //);
+                            changedPoints.insert(localB);
+                        }
                     }
-                }
-                if (infoB.size())
-                {
-                    if (mergeInfo(infoB, localA))
+                    if (infoB.size())
                     {
-                        //Pout<< "  Combined info at point "
-                        //    << mesh_.points()[meshPointA]
-                        //    << " now " << endl;
-                        //printProcPoints
-                        //(
-                        //    patchToMeshPoint,
-                        //    procPoints_[meshToProcPoint_[localA]]
-                        //);
-                        changedPoints.insert(localA);
+                        if (mergeInfo(infoB, localA))
+                        {
+                            //Pout<< "  Combined info at point "
+                            //    << mesh_.points()[meshPointA]
+                            //    << " now " << endl;
+                            //printProcPoints
+                            //(
+                            //    patchToMeshPoint,
+                            //    procPoints_[meshToProcPoint_[localA]]
+                            //);
+                            changedPoints.insert(localA);
+                        }
                     }
                 }
             }
-- 
GitLab