mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: syncTools: added sync of set of edges
This commit is contained in:
@ -145,6 +145,18 @@ public:
|
||||
const TransformOp& top
|
||||
);
|
||||
|
||||
//- Synchronize values on selected mesh edges.
|
||||
template <class T, class CombineOp, class TransformOp>
|
||||
static void syncEdgeList
|
||||
(
|
||||
const polyMesh&,
|
||||
const labelList& meshEdges,
|
||||
List<T>&,
|
||||
const CombineOp& cop,
|
||||
const T& nullValue,
|
||||
const TransformOp& top
|
||||
);
|
||||
|
||||
//- Synchronize values on boundary faces only.
|
||||
template <class T, class CombineOp, class TransformOp>
|
||||
static void syncBoundaryFaceList
|
||||
@ -265,7 +277,7 @@ public:
|
||||
);
|
||||
}
|
||||
|
||||
//- Synchronize values on all mesh edges.
|
||||
//- Synchronize locations on all mesh edges.
|
||||
template <class CombineOp>
|
||||
static void syncEdgePositions
|
||||
(
|
||||
@ -285,6 +297,51 @@ public:
|
||||
);
|
||||
}
|
||||
|
||||
//- Synchronize values on selected mesh edges.
|
||||
template <class T, class CombineOp>
|
||||
static void syncEdgeList
|
||||
(
|
||||
const polyMesh& mesh,
|
||||
const labelList& meshEdges,
|
||||
List<T>& l,
|
||||
const CombineOp& cop,
|
||||
const T& nullValue
|
||||
)
|
||||
{
|
||||
syncEdgeList
|
||||
(
|
||||
mesh,
|
||||
meshEdges,
|
||||
l,
|
||||
cop,
|
||||
nullValue,
|
||||
mapDistribute::transform()
|
||||
);
|
||||
}
|
||||
|
||||
//- Synchronize locations on selected mesh edges.
|
||||
template <class CombineOp>
|
||||
static void syncEdgePositions
|
||||
(
|
||||
const polyMesh& mesh,
|
||||
const labelList& meshEdges,
|
||||
List<point>& l,
|
||||
const CombineOp& cop,
|
||||
const point& nullValue
|
||||
)
|
||||
{
|
||||
syncEdgeList
|
||||
(
|
||||
mesh,
|
||||
meshEdges,
|
||||
l,
|
||||
cop,
|
||||
nullValue,
|
||||
mapDistribute::transformPosition()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Synchronise face-wise data
|
||||
|
||||
|
||||
@ -1251,6 +1251,65 @@ void Foam::syncTools::syncEdgeList
|
||||
//}
|
||||
|
||||
|
||||
template <class T, class CombineOp, class TransformOp>
|
||||
void Foam::syncTools::syncEdgeList
|
||||
(
|
||||
const polyMesh& mesh,
|
||||
const labelList& meshEdges,
|
||||
List<T>& edgeValues,
|
||||
const CombineOp& cop,
|
||||
const T& nullValue,
|
||||
const TransformOp& top
|
||||
)
|
||||
{
|
||||
if (edgeValues.size() != meshEdges.size())
|
||||
{
|
||||
FatalErrorIn
|
||||
(
|
||||
"syncTools<class T, class CombineOp>::syncEdgeList"
|
||||
"(const polyMesh&, List<T>&, 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<label>& mpm = gd.coupledPatchMeshEdgeMap();
|
||||
|
||||
List<T> cppFld(cpp.nEdges(), nullValue);
|
||||
|
||||
forAll(meshEdges, i)
|
||||
{
|
||||
label edgeI = meshEdges[i];
|
||||
Map<label>::const_iterator iter = mpm.find(edgeI);
|
||||
if (iter != mpm.end())
|
||||
{
|
||||
cppFld[iter()] = edgeValues[i];
|
||||
}
|
||||
}
|
||||
|
||||
globalMeshData::syncData
|
||||
(
|
||||
cppFld,
|
||||
gd.globalEdgeSlaves(),
|
||||
gd.globalEdgeTransformedSlaves(),
|
||||
gd.globalEdgeSlavesMap(),
|
||||
gd.globalTransforms(),
|
||||
cop,
|
||||
top
|
||||
);
|
||||
|
||||
forAll(meshEdges, i)
|
||||
{
|
||||
label edgeI = meshEdges[i];
|
||||
Map<label>::const_iterator iter = mpm.find(edgeI);
|
||||
if (iter != mpm.end())
|
||||
{
|
||||
edgeValues[i] = cppFld[iter()];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template <class T, class CombineOp, class TransformOp>
|
||||
void Foam::syncTools::syncBoundaryFaceList
|
||||
(
|
||||
|
||||
Reference in New Issue
Block a user