From c1ac184893b77cda69d65944bd33f49f131bf7dc Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Wed, 9 Nov 2011 12:34:03 +0000
Subject: [PATCH] ENH: decomposePar: implemented keeping faceSet on single
 processor

---
 .../decomposePar/decomposeParDict             |  4 +-
 .../domainDecompositionDistribute.C           | 42 ++++++-------------
 2 files changed, 15 insertions(+), 31 deletions(-)

diff --git a/applications/utilities/parallelProcessing/decomposePar/decomposeParDict b/applications/utilities/parallelProcessing/decomposePar/decomposeParDict
index c5b5c451352..b3270edb6b8 100644
--- a/applications/utilities/parallelProcessing/decomposePar/decomposeParDict
+++ b/applications/utilities/parallelProcessing/decomposePar/decomposeParDict
@@ -24,13 +24,13 @@ numberOfSubdomains  2;
 //  (makes sense only for cyclic patches)
 //preservePatches (cyclic_half0 cyclic_half1);
 
-//- Keep all of faceZone on a single processor. This puts all cells
+//- Keep all of faceSet on a single processor. This puts all cells
 //  connected with a point, edge or face on the same processor.
 //  (just having face connected cells might not guarantee a balanced
 //  decomposition)
 // The processor can be -1 (the decompositionMethod chooses the processor
 // for a good load balance) or explicitly provided (upsets balance).
-//singleProcessorFaceZones ((f0 -1));
+//singleProcessorFaceSets ((f0 -1));
 
 
 //- Use the volScalarField named here as a weight for each cell in the
diff --git a/applications/utilities/parallelProcessing/decomposePar/domainDecompositionDistribute.C b/applications/utilities/parallelProcessing/decomposePar/domainDecompositionDistribute.C
index 726f9071376..3578d8df78d 100644
--- a/applications/utilities/parallelProcessing/decomposePar/domainDecompositionDistribute.C
+++ b/applications/utilities/parallelProcessing/decomposePar/domainDecompositionDistribute.C
@@ -29,6 +29,7 @@ License
 #include "cellSet.H"
 #include "regionSplit.H"
 #include "Tuple2.H"
+#include "faceSet.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -110,11 +111,9 @@ void Foam::domainDecomposition::distributeCells()
     Map<label> specifiedProcessorFaces;
     List<Tuple2<word, label> > zNameAndProcs;
 
-    if (decompositionDict_.found("singleProcessorFaceZones"))
+    if (decompositionDict_.found("singleProcessorFaceSets"))
     {
-        decompositionDict_.lookup("singleProcessorFaceZones") >> zNameAndProcs;
-
-        const faceZoneMesh& fZones = faceZones();
+        decompositionDict_.lookup("singleProcessorFaceSets") >> zNameAndProcs;
 
         label nCells = 0;
 
@@ -122,23 +121,12 @@ void Foam::domainDecomposition::distributeCells()
 
         forAll(zNameAndProcs, i)
         {
-            Info<< "Keeping all cells connected to faceZone "
+            Info<< "Keeping all cells connected to faceSet "
                 << zNameAndProcs[i].first()
                 << " on processor " << zNameAndProcs[i].second() << endl;
 
-            label zoneI = fZones.findZoneID(zNameAndProcs[i].first());
-
-            if (zoneI == -1)
-            {
-                FatalErrorIn("domainDecomposition::distributeCells()")
-                    << "Unknown singleProcessorFaceZone "
-                    << zNameAndProcs[i].first()
-                    << endl << "Valid faceZones are " << fZones.names()
-                    << exit(FatalError);
-            }
-
-            const faceZone& fz = fZones[zoneI];
-
+            // Read faceSet
+            faceSet fz(*this, zNameAndProcs[i].first());
             nCells += fz.size();
         }
 
@@ -150,14 +138,13 @@ void Foam::domainDecomposition::distributeCells()
         // Fill
         forAll(zNameAndProcs, i)
         {
-            label zoneI = fZones.findZoneID(zNameAndProcs[i].first());
-            const faceZone& fz = fZones[zoneI];
+            faceSet fz(*this, zNameAndProcs[i].first());
 
             label procI = zNameAndProcs[i].second();
 
-            forAll(fz, fzI)
+            forAllConstIter(faceSet, fz, iter)
             {
-                label faceI = fz[fzI];
+                label faceI = iter.key();
 
                 specifiedProcessorFaces.insert(faceI, procI);
             }
@@ -333,7 +320,7 @@ void Foam::domainDecomposition::distributeCells()
         // For specifiedProcessorFaces rework the cellToProc to enforce
         // all on one processor since we can't guarantee that the input
         // to regionSplit was a single region.
-        // E.g. faceZone 'a' with the cells split into two regions
+        // E.g. faceSet 'a' with the cells split into two regions
         // by a notch formed by two walls
         //
         //          \   /
@@ -345,12 +332,9 @@ void Foam::domainDecomposition::distributeCells()
         // unbalanced.
         if (specifiedProcessorFaces.size())
         {
-            const faceZoneMesh& fZones = faceZones();
-
             forAll(zNameAndProcs, i)
             {
-                label zoneI = fZones.findZoneID(zNameAndProcs[i].first());
-                const faceZone& fz = fZones[zoneI];
+                faceSet fz(*this, zNameAndProcs[i].first());
 
                 if (fz.size())
                 {
@@ -362,9 +346,9 @@ void Foam::domainDecomposition::distributeCells()
                         procI = cellToProc_[faceOwner()[fz[0]]];
                     }
 
-                    forAll(fz, fzI)
+                    forAllConstIter(faceSet, fz, iter)
                     {
-                        label faceI = fz[fzI];
+                        label faceI = iter.key();
 
                         cellToProc_[faceOwner()[faceI]] = procI;
                         if (isInternalFace(faceI))
-- 
GitLab