1. donorSuitability::suitabilityFaction(...) - now checks whether the donor has
been found (in case we don't have any eligible donors due to poor settings),
2. overlapFringe/adaptiveOverlapFringe::updateIteration(...) - now checks
whether we have found at least 1 new acceptor when going through the
iterative process.
adaptiveOverlapFringe:
1. When combining user specified holes and cut holes, we need to get rid of
possible duplicates,
2. All holes transferred to fringeHolesPtr_, not just cutHoles,
3. Removed minLocalSuit_ data member as the donorSuitability::threshold is
basically the same thing.
donorSuitability:
1. Correct definition of isDonorSuitable
Added optional cellSet for hole cells to start the overlap and adaptiveOverlap
from. Useful when the background mesh is very coarse compared to the hole patch
in the front mesh and no hole is actually found in triSurface hole cutting
procedure.
Previously, we only checked whether the acceptor point is within bounding box of
donor, which may not be fair. Now, we also check whether the donor point is
within bounding box of acceptor.
Having both checks makes sense since there's no reason to prefer one criterion
over the other.
1. Clearing out temporary worker data for dynamic cases,
2. minLocalSuitability and orphanSuitability now given as fractions (0 to 1)
instead of percentages (0 to 100%).
1. Avoid deleting holeCells and eligibleDonorCells if region has not found
suitable overlap,
2. When choosing donors, make a preference depending on whether the donor is
within acceptors bounding box (among other things).
This strategy allows us to protect the initial refinement done using
snappyHexMesh or similar meshers where the cellLevel and pointLevel are used and
written down. The strategy protects refined cells (during the meshing stage)
from unrefinement. To be used as part of compositeRefinement.
Base class "refinement" that contains necessary interface and all the data
members and member function used by both derived classes:
1. polyhedralRefinement: used for 3D isotropic refinement,
2. prismatic2DRefinement: used for 2D isotropic refinement.
Note: refactorisation not tested yet.
1. Make sure that we don't refine over maximum refinement level when extending
refinement cells over additional buffer layers,
2. Removed redundancy check which becomes wrong in case we are running dynamic
load balancing,
3. Removed deprecated hard-code where the cells protected from unrefinement are
extended by nUnrefinementBufferLayers_ + 2 instead of just
nUnrefinementBufferLayers_
Ported prismatic2DRefinement class from other temporary repository. Basically a
version of polyhedralRefinement specifically designed for 2D cases.
Status:
Refinement seems to work well on simple cases:
1. 4 by 4 hex cells (quad prisms),
2. 28 triangular prisms,
3. Tested both in serial and parallel up to 9 refinement levels.
To do:
1. Implement proper 2D unrefinement,
2. Refactor prismatic2DRefinement and polyhedralRefinement to avoid duplicate
functions used by both classes.