diff --git a/src/OpenFOAM/meshes/polyMesh/syncTools/syncTools.H b/src/OpenFOAM/meshes/polyMesh/syncTools/syncTools.H index a241e36e56..ebc4ba60c3 100644 --- a/src/OpenFOAM/meshes/polyMesh/syncTools/syncTools.H +++ b/src/OpenFOAM/meshes/polyMesh/syncTools/syncTools.H @@ -145,6 +145,18 @@ public: const TransformOp& top ); + //- Synchronize values on selected mesh edges. + template + static void syncEdgeList + ( + const polyMesh&, + const labelList& meshEdges, + List&, + const CombineOp& cop, + const T& nullValue, + const TransformOp& top + ); + //- Synchronize values on boundary faces only. template static void syncBoundaryFaceList @@ -265,7 +277,7 @@ public: ); } - //- Synchronize values on all mesh edges. + //- Synchronize locations on all mesh edges. template static void syncEdgePositions ( @@ -285,6 +297,51 @@ public: ); } + //- Synchronize values on selected mesh edges. + template + static void syncEdgeList + ( + const polyMesh& mesh, + const labelList& meshEdges, + List& l, + const CombineOp& cop, + const T& nullValue + ) + { + syncEdgeList + ( + mesh, + meshEdges, + l, + cop, + nullValue, + mapDistribute::transform() + ); + } + + //- Synchronize locations on selected mesh edges. + template + static void syncEdgePositions + ( + const polyMesh& mesh, + const labelList& meshEdges, + List& l, + const CombineOp& cop, + const point& nullValue + ) + { + syncEdgeList + ( + mesh, + meshEdges, + l, + cop, + nullValue, + mapDistribute::transformPosition() + ); + } + + // Synchronise face-wise data diff --git a/src/OpenFOAM/meshes/polyMesh/syncTools/syncToolsTemplates.C b/src/OpenFOAM/meshes/polyMesh/syncTools/syncToolsTemplates.C index e9764e93a2..7db1a14178 100644 --- a/src/OpenFOAM/meshes/polyMesh/syncTools/syncToolsTemplates.C +++ b/src/OpenFOAM/meshes/polyMesh/syncTools/syncToolsTemplates.C @@ -1251,6 +1251,65 @@ void Foam::syncTools::syncEdgeList //} +template +void Foam::syncTools::syncEdgeList +( + const polyMesh& mesh, + const labelList& meshEdges, + List& edgeValues, + const CombineOp& cop, + const T& nullValue, + const TransformOp& top +) +{ + if (edgeValues.size() != meshEdges.size()) + { + FatalErrorIn + ( + "syncTools::syncEdgeList" + "(const polyMesh&, List&, const CombineOp&, const T&)" + ) << "Number of values " << edgeValues.size() + << " is not equal to the number of meshEdges " + << meshEdges.size() << abort(FatalError); + } + const globalMeshData& gd = mesh.globalData(); + const indirectPrimitivePatch& cpp = gd.coupledPatch(); + const Map