diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C index f117968fe11e11823e73274b8da827f8cea2db25..4cfba30501e21a3676290aa06deba01e5f505cc6 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C @@ -2875,6 +2875,8 @@ Foam::labelList Foam::hexRef8::consistentSlowRefinement2 } // 2. Extend to 2:1. I don't understand yet why this is not done + // 2. Extend to 2:1. For non-cube cells the scalar distance does not work + // so make sure it at least provides 2:1. PackedList<1> refineCell(mesh_.nCells(), 0); forAll(allCellInfo, cellI) { @@ -2887,6 +2889,25 @@ Foam::labelList Foam::hexRef8::consistentSlowRefinement2 } faceConsistentRefinement(true, refineCell); + while (true) + { + label nChanged = faceConsistentRefinement(true, refineCell); + + reduce(nChanged, sumOp<label>()); + + if (debug) + { + Pout<< "hexRef8::consistentSlowRefinement2 : Changed " << nChanged + << " refinement levels due to 2:1 conflicts." + << endl; + } + + if (nChanged == 0) + { + break; + } + } + // 3. Convert back to labelList. label nRefined = 0;