ENH: snappyHexMesh: handle parallel cyclics. Fixes #1731.

This commit is contained in:
mattijs
2020-07-08 16:47:26 +01:00
parent 423bbcefa8
commit c06c63f49f
7 changed files with 532 additions and 111 deletions

View File

@ -676,15 +676,42 @@ void Foam::snappySnapDriver::calcNearestFacePointProperties
List<point>(),
mapDistribute::transform()
);
syncTools::syncPointList
(
mesh,
pp.meshPoints(),
pointFaceCentres,
listPlusEqOp<point>(),
List<point>(),
mapDistribute::transformPosition()
);
{
// Make into displacement before synchronising to avoid any problems
// with parallel cyclics
pointField localPoints(pp.points(), pp.meshPoints());
forAll(pointFaceCentres, pointi)
{
const point& pt = pp.points()[pp.meshPoints()[pointi]];
List<point>& pFc = pointFaceCentres[pointi];
for (point& p : pFc)
{
p -= pt;
}
}
syncTools::syncPointList
(
mesh,
pp.meshPoints(),
pointFaceCentres,
listPlusEqOp<point>(),
List<point>(),
mapDistribute::transform()
);
forAll(pointFaceCentres, pointi)
{
const point& pt = pp.points()[pp.meshPoints()[pointi]];
List<point>& pFc = pointFaceCentres[pointi];
for (point& p : pFc)
{
p += pt;
}
}
}
syncTools::syncPointList
(
mesh,