diff --git a/src/OSspecific/Unix/Unix.C b/src/OSspecific/Unix/Unix.C index 659eca203e..278a904678 100644 --- a/src/OSspecific/Unix/Unix.C +++ b/src/OSspecific/Unix/Unix.C @@ -23,7 +23,7 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Description - UNIX versions of the functions declated in OSspecific.H. + UNIX versions of the functions declared in OSspecific.H. \*---------------------------------------------------------------------------*/ diff --git a/src/OpenFOAM/fields/Fields/Field/Field.C b/src/OpenFOAM/fields/Fields/Field/Field.C index 1336bc9eff..9e9cef28c9 100644 --- a/src/OpenFOAM/fields/Fields/Field/Field.C +++ b/src/OpenFOAM/fields/Fields/Field/Field.C @@ -155,6 +155,13 @@ Field::Field(Field& f, bool reUse) {} +template +Field::Field(const Xfer >& f) +: + List(f) +{} + + template Field::Field(const Xfer >& f) : diff --git a/src/OpenFOAM/fields/Fields/Field/Field.H b/src/OpenFOAM/fields/Fields/Field/Field.H index ee4529d75e..a66af31c5d 100644 --- a/src/OpenFOAM/fields/Fields/Field/Field.H +++ b/src/OpenFOAM/fields/Fields/Field/Field.H @@ -114,6 +114,9 @@ public: //- Construct as copy of a UList explicit Field(const UList&); + //- Construct by transferring the List contents + explicit Field(const Xfer >&); + //- Construct by 1 to 1 mapping from the given field Field ( diff --git a/src/dynamicMesh/polyMeshAdder/polyMeshAdder.H b/src/dynamicMesh/polyMeshAdder/polyMeshAdder.H index 8d5a04c780..e2e6a00582 100644 --- a/src/dynamicMesh/polyMeshAdder/polyMeshAdder.H +++ b/src/dynamicMesh/polyMeshAdder/polyMeshAdder.H @@ -55,7 +55,7 @@ class IOobject; class polyTopoChange; /*---------------------------------------------------------------------------*\ - Class polyMeshAdder Declaration + Class polyMeshAdder Declaration \*---------------------------------------------------------------------------*/ class polyMeshAdder diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C index 0a46952306..05204fb1b0 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C @@ -2952,9 +2952,9 @@ Foam::autoPtr Foam::polyTopoChange::changeMesh mesh.resetPrimitives ( xferMove(renumberedMeshPoints), - xferMoveTo(faces_), - xferMoveTo(faceOwner_), - xferMoveTo(faceNeighbour_), + faces_.xfer(), + faceOwner_.xfer(), + faceNeighbour_.xfer(), patchSizes, patchStarts, syncParallel @@ -2968,9 +2968,9 @@ Foam::autoPtr Foam::polyTopoChange::changeMesh mesh.resetPrimitives ( xferMove(newPoints), - xferMoveTo(faces_), - xferMoveTo(faceOwner_), - xferMoveTo(faceNeighbour_), + faces_.xfer(), + faceOwner_.xfer(), + faceNeighbour_.xfer(), patchSizes, patchStarts, syncParallel @@ -3195,9 +3195,9 @@ Foam::autoPtr Foam::polyTopoChange::makeMesh ( io, xferMove(newPoints), - xferMoveTo(faces_), - xferMoveTo(faceOwner_), - xferMoveTo(faceNeighbour_) + faces_.xfer(), + faceOwner_.xfer(), + faceNeighbour_.xfer() ) ); fvMesh& newMesh = newMeshPtr(); diff --git a/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.C b/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.C index da78384e5c..38ee335d33 100644 --- a/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.C +++ b/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.C @@ -110,7 +110,7 @@ bool Foam::surfaceIntersection::excludeEdgeHit // << " e0Vec:" << e0Vec << " n:" << n // << " normalComponent:" << (n & surf.faceNormals()[faceI]) // << " tol:" << tol << endl; -// +// // return true; // } // else @@ -399,7 +399,7 @@ void Foam::surfaceIntersection::classifyHit { // 4. Edge hits edge. - // Cut edge with new point (creates duplicates when + // Cut edge with new point (creates duplicates when // doing the surf2 with surf1 intersection but these // are merged later on) @@ -509,7 +509,7 @@ void Foam::surfaceIntersection::classifyHit << " coords:" << surf1.localPoints()[e.start()] << surf1.localPoints()[e.end()] << endl; } - + // Reclassify as normal edge-face pierce (see below) allCutPoints.append(hitPt); @@ -533,7 +533,7 @@ void Foam::surfaceIntersection::classifyHit << " since edge " << e << " on inside of surf2." << " surf2 normal:" << surf2.faceNormals()[surf2FaceI] << endl; - } + } } } else @@ -636,7 +636,7 @@ void Foam::surfaceIntersection::doCutEdges // Label of face on surface2 edgeI intersected label hitFaceI = pHit.index(); - if + if ( !excludeEdgeHit ( @@ -803,8 +803,8 @@ Foam::surfaceIntersection::surfaceIntersection // Transfer to straight label(List)List transfer(edgeCuts2, surf2EdgeCuts_); - transfer(allCutEdges, cutEdges_); - transfer(allCutPoints, cutPoints_); + cutEdges_.transfer(allCutEdges); + cutPoints_.transfer(allCutPoints); if (debug) @@ -936,8 +936,8 @@ Foam::surfaceIntersection::surfaceIntersection // Transfer to straight label(List)List - transfer(allCutEdges, cutEdges_); - transfer(allCutPoints, cutPoints_); + cutEdges_.transfer(allCutEdges); + cutPoints_.transfer(allCutPoints); if (debug) @@ -1040,10 +1040,10 @@ Foam::surfaceIntersection::surfaceIntersection // Transfer to straight label(List)List transfer(edgeCuts1, surf1EdgeCuts_); - transfer(allCutEdges, cutEdges_); - transfer(allCutPoints, cutPoints_); + cutEdges_.transfer(allCutEdges); + cutPoints_.transfer(allCutPoints); - // Shortcut. + // Shortcut. if (cutPoints_.empty() && cutEdges_.empty()) { if (debug) @@ -1071,7 +1071,7 @@ Foam::surfaceIntersection::surfaceIntersection // Merge points labelList pointMap; pointField newPoints; - + bool hasMerged = mergePoints ( cutPoints_, diff --git a/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.H b/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.H index 62fd58c576..3f23e9e370 100644 --- a/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.H +++ b/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersection.H @@ -120,10 +120,6 @@ class surfaceIntersection Ostream& ); - //- Transfer contents of DynamicList to straight List - template - static void transfer(DynamicList&, List&); - //- Transfer contents of List > to List> template static void transfer(List >&, List >&); diff --git a/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersectionTemplates.C b/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersectionTemplates.C index d992a2adff..aeec3a8daf 100644 --- a/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersectionTemplates.C +++ b/src/meshTools/triSurface/booleanOps/surfaceIntersection/surfaceIntersectionTemplates.C @@ -34,27 +34,15 @@ Description template void Foam::surfaceIntersection::transfer ( - DynamicList& dList, - List& lList + List >& srcLst, + List >& dstLst ) { - lList.transfer(dList); -} + dstLst.setSize(srcLst.size()); - -// Transfer contents of DynamicList to List -template -void Foam::surfaceIntersection::transfer -( - List >& dList, - List >& lList -) -{ - lList.setSize(dList.size()); - - forAll(dList, elemI) + forAll(srcLst, elemI) { - transfer(dList[elemI], lList[elemI]); + dstLst[elemI].transfer(srcLst[elemI]); } } diff --git a/src/surfMesh/BasicMeshedSurface/BasicMeshedSurface.C b/src/surfMesh/BasicMeshedSurface/BasicMeshedSurface.C index 73cdeb6b11..6135f70378 100644 --- a/src/surfMesh/BasicMeshedSurface/BasicMeshedSurface.C +++ b/src/surfMesh/BasicMeshedSurface/BasicMeshedSurface.C @@ -131,6 +131,29 @@ void Foam::BasicMeshedSurface::reset } +template +void Foam::BasicMeshedSurface::reset +( + const Xfer >& pointLst, + const Xfer >& faceLst +) +{ + ParentType::clearOut(); + + // Take over new primitive data. + // Optimized to avoid overwriting data at all + if (&pointLst) + { + storedPoints().transfer(pointLst()); + } + + if (&faceLst) + { + storedFaces().transfer(faceLst()); + } +} + + // Remove badly degenerate faces, double faces. template void Foam::BasicMeshedSurface::cleanup(const bool verbose) diff --git a/src/surfMesh/BasicMeshedSurface/BasicMeshedSurface.H b/src/surfMesh/BasicMeshedSurface/BasicMeshedSurface.H index b807b72f56..bb31595d0a 100644 --- a/src/surfMesh/BasicMeshedSurface/BasicMeshedSurface.H +++ b/src/surfMesh/BasicMeshedSurface/BasicMeshedSurface.H @@ -138,6 +138,13 @@ public: const Xfer >& ); + //- Transfer components (points, faces). + virtual void reset + ( + const Xfer >&, + const Xfer >& + ); + //- Remove invalid faces virtual void cleanup(const bool verbose); diff --git a/src/surfMesh/MeshedSurface/MeshedSurfaceIO.C b/src/surfMesh/MeshedSurface/MeshedSurfaceIO.C index c49ea825a0..0d147477c4 100644 --- a/src/surfMesh/MeshedSurface/MeshedSurfaceIO.C +++ b/src/surfMesh/MeshedSurface/MeshedSurfaceIO.C @@ -62,7 +62,7 @@ bool Foam::MeshedSurface::read(Istream& is) surf.reset ( Xfer::null(), - xferMove(faceLst) + faceLst.xfer() ); surf.addPatches(patches_); diff --git a/src/surfMesh/surfaceFormats/nas/NASsurfaceFormat.C b/src/surfMesh/surfaceFormats/nas/NASsurfaceFormat.C index 2c214162d0..7f4cad25dc 100644 --- a/src/surfMesh/surfaceFormats/nas/NASsurfaceFormat.C +++ b/src/surfMesh/surfaceFormats/nas/NASsurfaceFormat.C @@ -389,12 +389,7 @@ bool Foam::fileFormats::NASsurfaceFormat::read } - sortFacesAndStore - ( - xferMoveTo >(dynFaces), - xferMoveTo >(dynRegions), - sorted - ); + sortFacesAndStore(dynFaces.xfer(), dynRegions.xfer(), sorted); // add patches, culling empty groups this->addPatches(dynSizes, names, true); diff --git a/src/surfMesh/surfaceFormats/obj/OBJsurfaceFormat.C b/src/surfMesh/surfaceFormats/obj/OBJsurfaceFormat.C index 490e477ff8..93bee6e737 100644 --- a/src/surfMesh/surfaceFormats/obj/OBJsurfaceFormat.C +++ b/src/surfMesh/surfaceFormats/obj/OBJsurfaceFormat.C @@ -202,12 +202,7 @@ bool Foam::fileFormats::OBJsurfaceFormat::read // transfer to normal lists this->storedPoints().transfer(dynPoints); - sortFacesAndStore - ( - xferMoveTo >(dynFaces), - xferMoveTo >(dynRegions), - sorted - ); + sortFacesAndStore(dynFaces.xfer(), dynRegions.xfer(), sorted); // add patches, culling empty groups this->addPatches(dynSizes, dynNames, true); diff --git a/src/surfMesh/surfaceFormats/off/OFFsurfaceFormat.C b/src/surfMesh/surfaceFormats/off/OFFsurfaceFormat.C index 17c8dcd981..c679edc963 100644 --- a/src/surfMesh/surfaceFormats/off/OFFsurfaceFormat.C +++ b/src/surfMesh/surfaceFormats/off/OFFsurfaceFormat.C @@ -143,11 +143,7 @@ bool Foam::fileFormats::OFFsurfaceFormat::read } // transfer to normal lists - reset - ( - xferMove(pointLst), - xferMoveTo >(dynFaces) - ); + reset(pointLst.xfer(), dynFaces.xfer()); // no region information this->onePatch(); diff --git a/src/surfMesh/surfaceFormats/starcd/STARCDsurfaceFormat.C b/src/surfMesh/surfaceFormats/starcd/STARCDsurfaceFormat.C index 3831dd5938..f6aa76f307 100644 --- a/src/surfMesh/surfaceFormats/starcd/STARCDsurfaceFormat.C +++ b/src/surfMesh/surfaceFormats/starcd/STARCDsurfaceFormat.C @@ -212,12 +212,7 @@ bool Foam::fileFormats::STARCDsurfaceFormat::read } mapPointId.clear(); - sortFacesAndStore - ( - xferMoveTo >(dynFaces), - xferMoveTo >(dynRegions), - sorted - ); + sortFacesAndStore(dynFaces.xfer(), dynRegions.xfer(), sorted); // add patches, culling empty groups this->addPatches(dynSizes, dynNames, true); diff --git a/src/surfMesh/surfaceFormats/stl/STLsurfaceFormat.C b/src/surfMesh/surfaceFormats/stl/STLsurfaceFormat.C index cc32362da1..d60e49180c 100644 --- a/src/surfMesh/surfaceFormats/stl/STLsurfaceFormat.C +++ b/src/surfMesh/surfaceFormats/stl/STLsurfaceFormat.C @@ -293,9 +293,9 @@ bool Foam::fileFormats::STLsurfaceFormat::read this->storedPoints().transfer(reader.points()); // retrieve the original region information - List names(xferMove(reader.names())); - List