diff --git a/applications/utilities/surface/surfaceCheck/surfaceCheck.C b/applications/utilities/surface/surfaceCheck/surfaceCheck.C index eab6eff932a547c07df2cb666ee2ed5f909fab21..d0498664252fdf0a72a90de6814e77ce304e269b 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<bool>(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 7f2a4ef43c604f61b24d2060b09ede48965cf74c..5d8e40b9c72b03cc36bbb5c294d56547bd47a9fe 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 0a91f3df879d19e93cb10f36445cc010c0bf5d61..ad614e66792f12871b8f7d285dc6c7cab7a94768 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 4dee1ec7b6a13684f7a59a36f48a37a04b50e6dc..1e4eb09bb3fb521ecb9d654f5240019c527574b2 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 c8f3e0363329b16c8a1b1909a9fc5a3c1f6308dc..31295447eef985c5ca9bf396c540c6a5576d390b 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) 2004-2011, 2015 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011, 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 75f029a5d43465dc0cbcf6cb1ae59463af722334..abe9e2f593088e881d32dfee2a26d1058120afa6 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) 2009-2010, 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 cb5a2593d3cd91e55556d1d93cdd0a247146295e..2f70240d993a7147df2761f846fc13dd9f8f6c26 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) 2009-2010, 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,28 +152,18 @@ 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); -// Global Operators +//- 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 ff7a935112e3a02e17f3e52aad7c86a18b192b8e..3818d7dccbba2a0b0dd04ad6bfe0ac27afd00189 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 ffe1ddef5ad458cb7787c902ccf9ef0fe978778e..86bcfc5a14161e321306f6abcf85080de3d88e1e 100644 --- a/src/surfMesh/MeshedSurface/MeshedSurface.C +++ b/src/surfMesh/MeshedSurface/MeshedSurface.C @@ -994,9 +994,10 @@ Foam::label Foam::MeshedSurface<Face>::triangulate template<class Face> +template<class BoolListType> Foam::MeshedSurface<Face> Foam::MeshedSurface<Face>::subsetMesh ( - const labelHashSet& include, + const BoolListType& include, labelList& pointMap, labelList& faceMap ) const @@ -1069,8 +1070,7 @@ Foam::MeshedSurface<Face> Foam::MeshedSurface<Face>::subsetMesh zone.size() = newFacei - zone.start(); } - - // construct a sub-surface + // Construct a sub-surface return MeshedSurface<Face> ( std::move(newPoints), @@ -1083,7 +1083,7 @@ Foam::MeshedSurface<Face> Foam::MeshedSurface<Face>::subsetMesh template<class Face> Foam::MeshedSurface<Face> Foam::MeshedSurface<Face>::subsetMesh ( - const labelHashSet& include + const bitSet& include ) const { labelList pointMap, faceMap; @@ -1091,6 +1091,16 @@ Foam::MeshedSurface<Face> Foam::MeshedSurface<Face>::subsetMesh } +template<class Face> +Foam::MeshedSurface<Face> Foam::MeshedSurface<Face>::subsetMesh +( + const labelHashSet& include +) const +{ + labelList pointMap, faceMap; + return subsetMesh(include, pointMap, faceMap); +} + template<class Face> void Foam::MeshedSurface<Face>::swap diff --git a/src/surfMesh/MeshedSurface/MeshedSurface.H b/src/surfMesh/MeshedSurface/MeshedSurface.H index a01db0639d2392844497d0913dad5f49e292966d..5c0503e416fbd3c8f69afbcb79834fe855d6fd98 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<label>& faceMap); //- Return new surface. - // Returns return pointMap, faceMap from subsetMeshMap + // + // \param[in] include the faces to select + // \param[out] pointMap from subsetMeshMap + // \param[out] faceMap from subsetMeshMap + template<class BoolListType> MeshedSurface subsetMesh ( - const labelHashSet& include, + const BoolListType& include, labelList& pointMap, labelList& faceMap ) const; - //- Return new surface. - MeshedSurface subsetMesh - ( - const labelHashSet& include - ) const; + //- Return new surface + MeshedSurface subsetMesh(const bitSet& include) const; + //- Return new surface + MeshedSurface subsetMesh(const labelHashSet& include) const; //- Swap contents void swap(MeshedSurface<Face>& surf); diff --git a/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.C b/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.C index 1a70d09e11f246e773839ec15d1b7628085f6583..3457665184c6b97897405b4d53b9de8d3cc743d6 100644 --- a/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.C +++ b/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.C @@ -528,10 +528,11 @@ Foam::surfZoneList Foam::UnsortedMeshedSurface<Face>::sortedZones template<class Face> +template<class BoolListType> Foam::UnsortedMeshedSurface<Face> Foam::UnsortedMeshedSurface<Face>::subsetMesh ( - const labelHashSet& include, + const BoolListType& include, labelList& pointMap, labelList& faceMap ) const diff --git a/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.H b/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.H index 3151cd475d704dca8b32d44186279606abda44e1..f4b1748f34987b5e9c1f57ccfc7076d6f6ef92fd 100644 --- a/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.H +++ b/src/surfMesh/UnsortedMeshedSurface/UnsortedMeshedSurface.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2008-2010, 2016-2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2008-2010, 2016-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -332,19 +332,22 @@ public: virtual void clear(); //- Return new surface. - // Returns return pointMap, faceMap from subsetMeshMap + // \param[in] include the faces to select + // \param[out] pointMap from subsetMeshMap + // \param[out] faceMap from subsetMeshMap + template<class BoolListType> UnsortedMeshedSurface subsetMesh ( - const labelHashSet& include, + const BoolListType& include, labelList& pointMap, labelList& faceMap ) const; - //- Return new surface. - UnsortedMeshedSurface subsetMesh - ( - const labelHashSet& include - ) const; + //- Return new surface + UnsortedMeshedSurface subsetMesh(const bitSet& include) const; + + //- Return new surface + UnsortedMeshedSurface subsetMesh(const labelHashSet& include) const; //- Swap contents - disabled diff --git a/src/surfMesh/surfZone/surfZone.H b/src/surfMesh/surfZone/surfZone.H index 152c593e3eb7f62f6357ac1a1fcb786ddf0f4ce0..f5df6c81c35ee4aa6fc3b0b699428082327f521b 100644 --- a/src/surfMesh/surfZone/surfZone.H +++ b/src/surfMesh/surfZone/surfZone.H @@ -83,7 +83,7 @@ public: // Constructors - //- Construct null + //- Construct null with zero start, size surfZone(); //- Construct from components diff --git a/src/surfMesh/triSurface/triSurface.C b/src/surfMesh/triSurface/triSurface.C index ddd68c2c6641d1c6368ae39b3bb717982524bd3e..f140bd136737348016b7e099e02616fc833d52ac 100644 --- a/src/surfMesh/triSurface/triSurface.C +++ b/src/surfMesh/triSurface/triSurface.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2011, 2016-2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011, 2016-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -784,7 +784,7 @@ void Foam::triSurface::subsetMeshMap pointMap.setSize(nPoints()); - bitSet pointHad(nPoints(), false); + bitSet pointHad(nPoints()); forAll(include, oldFacei) { @@ -854,6 +854,13 @@ Foam::triSurface Foam::triSurface::subsetMesh } +Foam::triSurface Foam::triSurface::subsetMesh(const boolList& include) const +{ + labelList pointMap, faceMap; + return subsetMesh(include, pointMap, faceMap); +} + + void Foam::triSurface::swapFaces(List<labelledTri>& faceLst) { clearOut(); // Topology changes diff --git a/src/surfMesh/triSurface/triSurface.H b/src/surfMesh/triSurface/triSurface.H index 46706252a6b53db63cca2847c5f4ee77ed87a55e..664803322f2f60457dfcf506a7e06a6618b8a60d 100644 --- a/src/surfMesh/triSurface/triSurface.H +++ b/src/surfMesh/triSurface/triSurface.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2011, 2016-2017 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011, 2016-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -418,10 +418,11 @@ public: labelList& faceZone ) const; - //- 'Create' sub mesh, including only faces for which boolList - //- entry is true - // Sets: pointMap: from new to old localPoints - // faceMap: new to old faces + //- 'Create' sub mesh + // + // \param[in] include the faces to select + // \param[out] pointMap from new to old localPoints + // \param[out] faceMap from new to old faces void subsetMeshMap ( const boolList& include, @@ -429,8 +430,11 @@ public: labelList& faceMap ) const; - //- Return new surface. Returns pointMap, faceMap from - // subsetMeshMap + //- Return new surface + // + // \param[in] include the faces to select + // \param[out] pointMap from subsetMeshMap + // \param[out] faceMap from subsetMeshMap triSurface subsetMesh ( const boolList& include, @@ -438,6 +442,11 @@ public: labelList& faceMap ) const; + //- Return new surface + // + // \param[in] include the faces to select + triSurface subsetMesh(const boolList& include) const; + //- Swap the list of faces being addressed void swapFaces(List<labelledTri>& faceLst);