Commit b85bb664 authored by Mark Olesen's avatar Mark Olesen

BUG: incorrect blocked face synchronisation crashes regionSplit (#1370)

- now catch these and emit a warning.
  Still need to investigate the root cause in the caller(s) or regionSplit.
parent ae7cd03d
......@@ -532,6 +532,8 @@ Foam::autoPtr<Foam::globalIndex> Foam::regionSplit::reduceRegions
// Buffer for swapping boundary information
labelList nbrRegion(mesh().nFaces()-mesh().nInternalFaces());
bool emitWarning = true;
do
{
if (debug)
......@@ -597,9 +599,22 @@ Foam::autoPtr<Foam::globalIndex> Foam::regionSplit::reduceRegions
const label sent = localToGlobal[orig];
const label recv = patchNbrRegion[patchFacei];
// Record the minimum value seen
if (recv < sent)
if (recv == UNASSIGNED)
{
if (emitWarning)
{
Pout<<"Warning in regionSplit:"
" received unassigned on "
<< pp.name() << " at patchFace "
<< patchFacei
<< ". Check synchronisation in caller"
<< nl;
}
}
else if (recv < sent)
{
// Record the minimum value seen
auto fnd = updateLookup.find(sent);
if (!fnd.found())
{
......@@ -644,6 +659,7 @@ Foam::autoPtr<Foam::globalIndex> Foam::regionSplit::reduceRegions
<< " local regions" << endl;
}
emitWarning = false;
// Continue until there are no further changes
}
while (returnReduce(!updateLookup.empty(), orOp<bool>()));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment