From d1dc882633c9cbf87132d567c5ad2e2242e8461a Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Tue, 15 Nov 2011 17:58:43 +0000
Subject: [PATCH] BUG: ZoneSet: fix inverting functionality

---
 src/meshTools/sets/topoSets/cellZoneSet.C  | 15 ++++++++++++++-
 src/meshTools/sets/topoSets/faceZoneSet.C  | 16 ++++++++++++++--
 src/meshTools/sets/topoSets/pointZoneSet.C | 14 +++++++++++++-
 3 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/src/meshTools/sets/topoSets/cellZoneSet.C b/src/meshTools/sets/topoSets/cellZoneSet.C
index d3498f19988..80528e3192d 100644
--- a/src/meshTools/sets/topoSets/cellZoneSet.C
+++ b/src/meshTools/sets/topoSets/cellZoneSet.C
@@ -136,17 +136,30 @@ cellZoneSet::~cellZoneSet()
 
 void cellZoneSet::invert(const label maxLen)
 {
+    // Count
     label n = 0;
 
     for (label cellI = 0; cellI < maxLen; cellI++)
     {
         if (!found(cellI))
         {
-            addressing_[n] = cellI;
             n++;
         }
     }
+
+    // Fill
     addressing_.setSize(n);
+    n = 0;
+
+    for (label cellI = 0; cellI < maxLen; cellI++)
+    {
+        if (!found(cellI))
+        {
+            addressing_[n] = cellI;
+            n++;
+        }
+    }
+
     updateSet();
 }
 
diff --git a/src/meshTools/sets/topoSets/faceZoneSet.C b/src/meshTools/sets/topoSets/faceZoneSet.C
index 5d7cd831db7..10d9c0b9bfd 100644
--- a/src/meshTools/sets/topoSets/faceZoneSet.C
+++ b/src/meshTools/sets/topoSets/faceZoneSet.C
@@ -141,19 +141,31 @@ faceZoneSet::~faceZoneSet()
 
 void faceZoneSet::invert(const label maxLen)
 {
+    // Count
     label n = 0;
 
     for (label faceI = 0; faceI < maxLen; faceI++)
     {
         if (!found(faceI))
         {
-            addressing_[n] = faceI;
-            flipMap_[n] = false;         //? or true?
             n++;
         }
     }
+
+    // Fill
     addressing_.setSize(n);
     flipMap_.setSize(n);
+    n = 0;
+
+    for (label faceI = 0; faceI < maxLen; faceI++)
+    {
+        if (!found(faceI))
+        {
+            addressing_[n] = faceI;
+            flipMap_[n] = false;         //? or true?
+            n++;
+        }
+    }
     updateSet();
 }
 
diff --git a/src/meshTools/sets/topoSets/pointZoneSet.C b/src/meshTools/sets/topoSets/pointZoneSet.C
index 783cd78431a..8a02f718a24 100644
--- a/src/meshTools/sets/topoSets/pointZoneSet.C
+++ b/src/meshTools/sets/topoSets/pointZoneSet.C
@@ -138,17 +138,29 @@ pointZoneSet::~pointZoneSet()
 
 void pointZoneSet::invert(const label maxLen)
 {
+    // Count
     label n = 0;
 
     for (label pointI = 0; pointI < maxLen; pointI++)
     {
         if (!found(pointI))
         {
-            addressing_[n] = pointI;
             n++;
         }
     }
+
+    // Fill
     addressing_.setSize(n);
+    n = 0;
+
+    for (label pointI = 0; pointI < maxLen; pointI++)
+    {
+        if (!found(pointI))
+        {
+            addressing_[n] = pointI;
+            n++;
+        }
+    }
     updateSet();
 }
 
-- 
GitLab