diff --git a/src/surfMesh/mergedSurf/mergedSurf.C b/src/surfMesh/mergedSurf/mergedSurf.C index 48cf9e2175..65ca1e06c3 100644 --- a/src/surfMesh/mergedSurf/mergedSurf.C +++ b/src/surfMesh/mergedSurf/mergedSurf.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,24 +29,42 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::mergedSurf::mergedSurf() -: - points_(), - faces_(), - zones_(), - pointsMap_() -{} - - Foam::mergedSurf::mergedSurf ( - const meshedSurf& surf, + const meshedSurf& unmergedSurface, const scalar mergeDim ) : mergedSurf() { - merge(surf, mergeDim); + merge(unmergedSurface, mergeDim); +} + + +Foam::mergedSurf::mergedSurf +( + const pointField& unmergedPoints, + const faceList& unmergedFaces, + const scalar mergeDim +) +: + mergedSurf() +{ + merge(unmergedPoints, unmergedFaces, mergeDim); +} + + +Foam::mergedSurf::mergedSurf +( + const pointField& unmergedPoints, + const faceList& unmergedFaces, + const labelList& originalIds, + const scalar mergeDim +) +: + mergedSurf() +{ + merge(unmergedPoints, unmergedFaces, originalIds, mergeDim); } @@ -69,15 +87,43 @@ void Foam::mergedSurf::clear() bool Foam::mergedSurf::merge ( - const meshedSurf& surf, + const meshedSurf& unmergedSurface, const scalar mergeDim ) { - // needed for extra safety? - // clear(); + return + merge + ( + unmergedSurface.points(), + unmergedSurface.faces(), + unmergedSurface.zoneIds(), + mergeDim + ); +} + +bool Foam::mergedSurf::merge +( + const pointField& unmergedPoints, + const faceList& unmergedFaces, + const scalar mergeDim +) +{ + return merge(unmergedPoints, unmergedFaces, labelList(), mergeDim); +} + + +bool Foam::mergedSurf::merge +( + const pointField& unmergedPoints, + const faceList& unmergedFaces, + const labelList& originalIds, + const scalar mergeDim +) +{ if (!use()) { + clear(); // Extra safety? return false; } @@ -86,8 +132,8 @@ bool Foam::mergedSurf::merge mergeDim, primitivePatch ( - SubList(surf.faces(), surf.faces().size()), - surf.points() + SubList(unmergedFaces, unmergedFaces.size()), + unmergedPoints ), points_, faces_, @@ -96,7 +142,7 @@ bool Foam::mergedSurf::merge // Now handle zone/region information List allZones(Pstream::nProcs()); - allZones[Pstream::myProcNo()] = surf.zoneIds(); + allZones[Pstream::myProcNo()] = originalIds; Pstream::gatherList(allZones); if (Pstream::master()) diff --git a/src/surfMesh/mergedSurf/mergedSurf.H b/src/surfMesh/mergedSurf/mergedSurf.H index fea99158a2..86886f9bc7 100644 --- a/src/surfMesh/mergedSurf/mergedSurf.H +++ b/src/surfMesh/mergedSurf/mergedSurf.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,7 +25,9 @@ Class Foam::mergedSurf Description - Simple class to manage surface merging information + Simple class to manage surface merging information. + + Merging is done with PatchTools::gatherAndMerge() SourceFiles mergedSurf.C @@ -55,20 +57,43 @@ class mergedSurf labelList zones_; labelList pointsMap_; - //- No copy construct - mergedSurf(const mergedSurf&) = delete; - - // Assignment is needed for lists public: // Constructors //- Construct null - mergedSurf(); + mergedSurf() = default; - //- Construct and merge meshed surfaces immediately (in parallel only). - mergedSurf(const meshedSurf&, const scalar mergeDim); + //- Copy construct null + mergedSurf(const mergedSurf&) = default; + + //- Move construct + mergedSurf(mergedSurf&&) = default; + + //- Construct and merge. + mergedSurf + ( + const meshedSurf& unmergedSurface, + const scalar mergeDim + ); + + //- Construct and merge. + mergedSurf + ( + const pointField& unmergedPoints, + const faceList& unmergedFaces, + const scalar mergeDim + ); + + //- Construct and merge + mergedSurf + ( + const pointField& unmergedPoints, + const faceList& unmergedFaces, + const labelList& originalIds, + const scalar mergeDim + ); //- Destructor @@ -117,7 +142,37 @@ public: void clear(); //- Merge meshed surfaces (in parallel only). - bool merge(const meshedSurf&, const scalar mergeDim); + bool merge + ( + const meshedSurf& unmergedSurface, + const scalar mergeDim + ); + + //- Merge meshed surfaces (in parallel only). + bool merge + ( + const pointField& unmergedPoints, + const faceList& unmergedFaces, + const scalar mergeDim + ); + + //- Merge meshed surfaces (in parallel only). + bool merge + ( + const pointField& unmergedPoints, + const faceList& unmergedFaces, + const labelList& originalIds, + const scalar mergeDim + ); + + + // Member Operators + + //- Copy assignment + mergedSurf& operator=(const mergedSurf&) = default; + + //- Move assignment + mergedSurf& operator=(mergedSurf&&) = default; }; diff --git a/src/surfMesh/meshedSurf/meshedSurfRef.H b/src/surfMesh/meshedSurf/meshedSurfRef.H index cd60394e19..f228a0c11c 100644 --- a/src/surfMesh/meshedSurf/meshedSurfRef.H +++ b/src/surfMesh/meshedSurf/meshedSurfRef.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -69,7 +69,7 @@ public: ( const pointField& pts, const faceList& faces, - const labelUList& ids = Foam::emptyLabelList + const labelList& ids = labelList() ) : points_(pts),