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