From f1a48a3c2f006fd27dd53d63b07fecf3dbf2e9bc Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 12 Jul 2019 08:54:34 +0200 Subject: [PATCH] ENH: accept bitSet for MeshedSurface::subsetMesh - add triSurface::subsetMesh single-parameter variant --- .../surface/surfaceCheck/surfaceCheck.C | 25 +---------- .../surface/surfaceClean/collapseBase.C | 4 +- .../surfaceSplitByPatch/surfaceSplitByPatch.C | 12 +----- .../surfaceSplitByTopology.C | 6 +-- .../surface/surfaceSubset/surfaceSubset.C | 9 +--- .../Identifiers/surface/surfZoneIdentifier.C | 16 ++------ .../Identifiers/surface/surfZoneIdentifier.H | 41 ++++++------------- .../subTriSurfaceMesh/subTriSurfaceMesh.C | 6 +-- src/surfMesh/MeshedSurface/MeshedSurface.C | 18 ++++++-- src/surfMesh/MeshedSurface/MeshedSurface.H | 18 ++++---- .../UnsortedMeshedSurface.C | 3 +- .../UnsortedMeshedSurface.H | 19 +++++---- src/surfMesh/surfZone/surfZone.H | 2 +- src/surfMesh/triSurface/triSurface.C | 11 ++++- src/surfMesh/triSurface/triSurface.H | 23 +++++++---- 15 files changed, 89 insertions(+), 124 deletions(-) diff --git a/applications/utilities/surface/surfaceCheck/surfaceCheck.C b/applications/utilities/surface/surfaceCheck/surfaceCheck.C index c42f3e3fe8..adaab390f4 100644 --- a/applications/utilities/surface/surfaceCheck/surfaceCheck.C +++ b/applications/utilities/surface/surfaceCheck/surfaceCheck.C @@ -177,18 +177,7 @@ void writeParts } } - labelList pointMap; - labelList faceMap; - - triSurface subSurf - ( - surf.subsetMesh - ( - includeMap, - pointMap, - faceMap - ) - ); + triSurface subSurf(surf.subsetMesh(includeMap)); fileName subName ( @@ -483,17 +472,7 @@ int main(int argc, char *argv[]) boolList isIllegalFace(surf.size(), false); UIndirectList(isIllegalFace, illegalFaces) = true; - labelList pointMap; - labelList faceMap; - triSurface subSurf - ( - surf.subsetMesh - ( - isIllegalFace, - pointMap, - faceMap - ) - ); + triSurface subSurf(surf.subsetMesh(isIllegalFace)); // Transcribe faces diff --git a/applications/utilities/surface/surfaceClean/collapseBase.C b/applications/utilities/surface/surfaceClean/collapseBase.C index cd0fa4f164..8060df9b10 100644 --- a/applications/utilities/surface/surfaceClean/collapseBase.C +++ b/applications/utilities/surface/surfaceClean/collapseBase.C @@ -64,9 +64,7 @@ using namespace Foam; // } // } // -// labelList pointMap, faceMap; -// -// triSurface regionSurf(surf.subsetMesh(include, pointMap, faceMap)); +// triSurface regionSurf(surf.subsetMesh(include)); // // Pout<< "Region " << regionI << " surface:" << nl; // regionSurf.writeStats(Pout); diff --git a/applications/utilities/surface/surfaceSplitByPatch/surfaceSplitByPatch.C b/applications/utilities/surface/surfaceSplitByPatch/surfaceSplitByPatch.C index a50cbe08ba..6981d6aefa 100644 --- a/applications/utilities/surface/surfaceSplitByPatch/surfaceSplitByPatch.C +++ b/applications/utilities/surface/surfaceSplitByPatch/surfaceSplitByPatch.C @@ -99,18 +99,8 @@ int main(int argc, char *argv[]) } // Subset triSurface - labelList pointMap; - labelList faceMap; - triSurface subSurf - ( - surf.subsetMesh - ( - includeMap, - pointMap, - faceMap - ) - ); + triSurface subSurf(surf.subsetMesh(includeMap)); subSurf.write(outFile); } diff --git a/applications/utilities/surface/surfaceSplitByTopology/surfaceSplitByTopology.C b/applications/utilities/surface/surfaceSplitByTopology/surfaceSplitByTopology.C index a4371520e8..23b11e1982 100644 --- a/applications/utilities/surface/surfaceSplitByTopology/surfaceSplitByTopology.C +++ b/applications/utilities/surface/surfaceSplitByTopology/surfaceSplitByTopology.C @@ -198,10 +198,7 @@ int main(int argc, char *argv[]) for (label z = 0; z < nZones; z++) { - boolList include(faceZone.size(), false); - labelList pointMap; - labelList faceMap; forAll(faceZone, f) { @@ -211,8 +208,7 @@ int main(int argc, char *argv[]) } } - triSurface zoneSurf = surf.subsetMesh(include, pointMap, faceMap); - + triSurface zoneSurf = surf.subsetMesh(include); fileName remainingPartFileName = outFileBaseName diff --git a/applications/utilities/surface/surfaceSubset/surfaceSubset.C b/applications/utilities/surface/surfaceSubset/surfaceSubset.C index a6996224f0..fd532644bd 100644 --- a/applications/utilities/surface/surfaceSubset/surfaceSubset.C +++ b/applications/utilities/surface/surfaceSubset/surfaceSubset.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2015-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -379,12 +379,7 @@ int main(int argc, char *argv[]) // Create subsetted surface - labelList pointMap; - labelList faceMap; - triSurface surf2 - ( - surf1.subsetMesh(facesToSubset, pointMap, faceMap) - ); + triSurface surf2(surf1.subsetMesh(facesToSubset)); Info<< "Subset:" << endl; surf2.writeStats(Info); diff --git a/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.C b/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.C index 0923776157..abe9e2f593 100644 --- a/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.C +++ b/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.C @@ -2,10 +2,8 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2009-2019 OpenCFD Ltd. \\/ M anipulation | -------------------------------------------------------------------------------- - | Copyright (C) 2011 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -91,12 +89,6 @@ Foam::surfZoneIdentifier::surfZoneIdentifier {} -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::surfZoneIdentifier::~surfZoneIdentifier() -{} - - // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // void Foam::surfZoneIdentifier::write(Ostream& os) const @@ -127,11 +119,11 @@ bool Foam::operator!=(const surfZoneIdentifier& a, const surfZoneIdentifier& b) } -// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // Foam::Istream& Foam::operator>>(Istream& is, surfZoneIdentifier& obj) { - is >> obj.name_ >> obj.geometricType_; + is >> obj.name() >> obj.geometricType(); return is; } @@ -139,7 +131,7 @@ Foam::Istream& Foam::operator>>(Istream& is, surfZoneIdentifier& obj) Foam::Ostream& Foam::operator<<(Ostream& os, const surfZoneIdentifier& obj) { // Newlines to separate, since that is what triSurface currently expects - os << nl << obj.name_ << nl << obj.geometricType_; + os << nl << obj.name() << nl << obj.geometricType(); os.check(FUNCTION_NAME); return os; } diff --git a/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.H b/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.H index ed0fbb821f..2f70240d99 100644 --- a/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.H +++ b/src/OpenFOAM/meshes/Identifiers/surface/surfZoneIdentifier.H @@ -2,10 +2,8 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2009-2019 OpenCFD Ltd. \\/ M anipulation | -------------------------------------------------------------------------------- - | Copyright (C) 2011 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -48,14 +46,9 @@ SourceFiles namespace Foam { +// Forward declarations class dictionary; -// Forward declaration of friend functions and operators - -class surfZoneIdentifier; -Istream& operator>>(Istream& is, surfZoneIdentifier& p); -Ostream& operator<<(Ostream& os, const surfZoneIdentifier& p); - /*---------------------------------------------------------------------------*\ Class surfZoneIdentifier Declaration \*---------------------------------------------------------------------------*/ @@ -84,7 +77,7 @@ public: // Constructors - //- Construct null + //- Construct null, with index zero surfZoneIdentifier(); //- Construct null with specified index @@ -115,7 +108,7 @@ public: //- Destructor - virtual ~surfZoneIdentifier(); + virtual ~surfZoneIdentifier() = default; // Member Functions @@ -159,29 +152,19 @@ public: //- Write identifier as a dictionary void write(Ostream& os) const; - - - // Ostream Operator - - //- Read name/type. - friend Istream& operator>> - ( - Istream& is, - surfZoneIdentifier& ob - ); - - //- Write name/type. - friend Ostream& operator<< - ( - Ostream& os, - const surfZoneIdentifier& obj - ); - }; // Global Operators +// Ostream Operator + +//- Read name/type +Istream& operator>>(Istream& is, surfZoneIdentifier& obj); + +//- Write name/type +Ostream& operator<<(Ostream& os, const surfZoneIdentifier& obj); + //- Compare zone indentifiers for equality bool operator==(const surfZoneIdentifier& a, const surfZoneIdentifier& b); diff --git a/src/meshTools/searchableSurfaces/subTriSurfaceMesh/subTriSurfaceMesh.C b/src/meshTools/searchableSurfaces/subTriSurfaceMesh/subTriSurfaceMesh.C index ff7a935112..3818d7dccb 100644 --- a/src/meshTools/searchableSurfaces/subTriSurfaceMesh/subTriSurfaceMesh.C +++ b/src/meshTools/searchableSurfaces/subTriSurfaceMesh/subTriSurfaceMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2015-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -118,9 +118,7 @@ Foam::triSurface Foam::subTriSurfaceMesh::subset } } - labelList pointMap; - labelList faceMap; - return s.subsetMesh(isSelected, pointMap, faceMap); + return s.subsetMesh(isSelected); } diff --git a/src/surfMesh/MeshedSurface/MeshedSurface.C b/src/surfMesh/MeshedSurface/MeshedSurface.C index 468ed66f83..ee5b5a14da 100644 --- a/src/surfMesh/MeshedSurface/MeshedSurface.C +++ b/src/surfMesh/MeshedSurface/MeshedSurface.C @@ -994,9 +994,10 @@ Foam::label Foam::MeshedSurface::triangulate template +template Foam::MeshedSurface Foam::MeshedSurface::subsetMesh ( - const labelHashSet& include, + const BoolListType& include, labelList& pointMap, labelList& faceMap ) const @@ -1069,8 +1070,7 @@ Foam::MeshedSurface Foam::MeshedSurface::subsetMesh zone.size() = newFacei - zone.start(); } - - // construct a sub-surface + // Construct a sub-surface return MeshedSurface ( std::move(newPoints), @@ -1083,7 +1083,7 @@ Foam::MeshedSurface Foam::MeshedSurface::subsetMesh template Foam::MeshedSurface Foam::MeshedSurface::subsetMesh ( - const labelHashSet& include + const bitSet& include ) const { labelList pointMap, faceMap; @@ -1091,6 +1091,16 @@ Foam::MeshedSurface Foam::MeshedSurface::subsetMesh } +template +Foam::MeshedSurface Foam::MeshedSurface::subsetMesh +( + const labelHashSet& include +) const +{ + labelList pointMap, faceMap; + return subsetMesh(include, pointMap, faceMap); +} + template void Foam::MeshedSurface::swap diff --git a/src/surfMesh/MeshedSurface/MeshedSurface.H b/src/surfMesh/MeshedSurface/MeshedSurface.H index 7f3aa2b32b..0e544c18a4 100644 --- a/src/surfMesh/MeshedSurface/MeshedSurface.H +++ b/src/surfMesh/MeshedSurface/MeshedSurface.H @@ -54,6 +54,7 @@ SourceFiles #include "pointField.H" #include "face.H" #include "labelledTri.H" +#include "bitSet.H" #include "HashSet.H" #include "surfZoneList.H" #include "surfaceFormatsCore.H" @@ -464,20 +465,23 @@ public: virtual label triangulate(List