From 2d7b3363edc7ffabb092a0c5daa3543a76fe5b4b Mon Sep 17 00:00:00 2001 From: mattijs Date: Mon, 12 Dec 2011 16:33:11 +0000 Subject: [PATCH] ENH: patchToFace: allow patch groups in patchToFace --- .../mesh/manipulation/topoSet/topoSetDict | 3 +- .../faceSources/patchToFace/patchToFace.C | 39 ++++++++++--------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/applications/utilities/mesh/manipulation/topoSet/topoSetDict b/applications/utilities/mesh/manipulation/topoSet/topoSetDict index 9c910aa7ec..5b8a4b73bb 100644 --- a/applications/utilities/mesh/manipulation/topoSet/topoSetDict +++ b/applications/utilities/mesh/manipulation/topoSet/topoSetDict @@ -211,7 +211,8 @@ FoamFile // source patchToFace; // sourceInfo // { -// name ".*Wall"; // Name of patch, regular expressions allowed +// name ".*Wall"; // Name of patch or patch group, +// // (regular expressions allowed) // } // // // All faces of faceZone diff --git a/src/meshTools/sets/faceSources/patchToFace/patchToFace.C b/src/meshTools/sets/faceSources/patchToFace/patchToFace.C index 4ee6ead863..4dec426303 100644 --- a/src/meshTools/sets/faceSources/patchToFace/patchToFace.C +++ b/src/meshTools/sets/faceSources/patchToFace/patchToFace.C @@ -54,33 +54,34 @@ Foam::topoSetSource::addToUsageTable Foam::patchToFace::usage_ void Foam::patchToFace::combine(topoSet& set, const bool add) const { - bool hasMatched = false; + labelHashSet patchIDs = mesh_.boundaryMesh().patchSet + ( + List(1, patchName_), + true, // warn if not found + true // use patch groups if available + ); - forAll(mesh_.boundaryMesh(), patchI) + forAllConstIter(labelHashSet, patchIDs, iter) { + label patchI = iter.key(); + const polyPatch& pp = mesh_.boundaryMesh()[patchI]; - if (patchName_.match(pp.name())) + Info<< " Found matching patch " << pp.name() + << " with " << pp.size() << " faces." << endl; + + for + ( + label faceI = pp.start(); + faceI < pp.start() + pp.size(); + faceI++ + ) { - Info<< " Found matching patch " << pp.name() - << " with " << pp.size() << " faces." << endl; - - hasMatched = true; - - - for - ( - label faceI = pp.start(); - faceI < pp.start() + pp.size(); - faceI++ - ) - { - addOrDelete(set, faceI, add); - } + addOrDelete(set, faceI, add); } } - if (!hasMatched) + if (patchIDs.empty()) { WarningIn("patchToFace::combine(topoSet&, const bool)") << "Cannot find any patch named " << patchName_ << endl