diff --git a/applications/utilities/surface/surfaceCheck/surfaceCheck.C b/applications/utilities/surface/surfaceCheck/surfaceCheck.C index eab6eff932..d049866425 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 7f2a4ef43c..5d8e40b9c7 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 0a91f3df87..ad614e6679 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 4dee1ec7b6..1e4eb09bb3 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 c8f3e03633..31295447ee 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 75f029a5d4..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) 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 cb5a2593d3..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) 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,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 ffe1ddef5a..86bcfc5a14 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 a01db0639d..5c0503e416 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