The coefficients in backwardDdtScheme::meshPhi did not correctly take into
account the possibility of having variable time steps.
Reported by Sopheak Seng, Bureau Veritas.
Basically a 2D version of minCellVolume refinement which is quite useful for
wedge geometries. If a per-cell-maximum face area on empty (or wedge) patch
exceeds a specified minimum face area, cell is selected for refinement. Used as
a part of composite refinement.
The values at the coupled boundaries haven't been properly uninitialized and the
coupled patches have been skipped from assignement to patch internal field.
MixingPlaneInterpolation is actually implemented in terms of GGIIinterpolation
and that one now has handling of partially overlapping faces (needed for bridge
overlap option). There's a tolerance GGIUncoveredFaceAreaTol (defaults to 0.999)
which needs to be set to 0 in case of Mixing Plane to properly re-scale the
weights. This is now done in MixingPlaneInterpolation.
1. Need to call fvPatchField::coupled() instead of fvPatch::coupled() since the
patch type can be coupled and the field doesn't have to be (e.g. regionCouple
fvPatch with zeroGradient fvPatchField).
2. Clean-up of old debugging statements.
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.
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