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.
1. Forgot to define typeName and debug level for
nutWallFunctionFvPatchScalarField and mutWallFunctionFvPatchScalarField
2. Forgot to remove declaration of write(Ostream&) member function in
nutSpalartAllmarasWallFunction and mutSpalartAllmarasWallFunction
1. mutSpalartAllmarasStandardWallFunction: same as mutUWallFunction
2. mutSpalartAllmarasStandardRoughWallFunction: same as mutURoughWallFunction
3. mutSpalartAllmarasWallFunction: refactored such that it derives from
mutWallFunction