- shoot rays to nearest point on surface and two perpendicular rays
(instead of always shooting in the 3 coordinate directions)
- avoid bleeding through the surface intersection
1. multi-ray shooting. It now shoots rays in all the 3 coordinate directions
from the cell centre. Before it would shoot just a single ray from the
nearest point on the surface, going through the cell centre.
There is a cost overhead in that now it shoots 6 rays (+-x, +-y, +-z)
instead of just 1.
2. bleeding of refinement. It marks the cells inside a gap and walks out
the gap-size to neighbouring cells (which are just outside the gap). This
should make for a smoother refinement pattern.
The start of the layer addition loop does a synchronisation of the wanted
displacement. This also does a truncation of the displacement if it is <
minThickness. At the first iteration the displacement was initialised to
vector::one which might trigger the truncation logic (and then disable
extrusion altogether). Instead we now initialise the displacement to
vector::GREAT before entering the synchronisation.
Refinement:
-----------
// Optionally avoid patch merging - keeps hexahedral cells
// (to be used with automatic refinement/unrefinement)
//mergePatchFaces off;
// Optional multiple locationsInMesh with corresponding optional cellZone
// (automatically generates faceZones inbetween)
locationsInMesh
(
((-0.09 -0.039 -0.049) bottomAir) // cellZone bottomAir
((-0.09 0.009 -0.049) topAir) // cellZone topAir
);
// Optional faceType and patchType specification for these faceZones
faceZoneControls
{
bottomAir_to_topAir
{
faceType baffle;
}
}
/ Optional checking of 'bleeding' of mesh through a specifying a locations
// outside the mesh
locationsOutsideMesh ((0 0 0)(12.3 101.17 3.98));
// Improved refinement: refine all cells with all (or all but one) sides refined
// Improved refinement: refine all cells with opposing faces with different
// refinement level. These cells can happen on multiply curved surfaces.
// Default on, can be switched off with
//interfaceRefine false;
Snapping
--------
// Optional smoothing of points at refinement interfaces. This will reduce
// the non-orthogonality at refinement interfaces.
//nSmoothInternal $nSmoothPatch;
Layering
--------
// Layers can be added to patches or to any side of a faceZone.
// (Any faceZone internally gets represented as two patches)
// The angle to merge patch faces can be set independently of the
// featureAngle. This is especially useful for large feature angles
// Default is the same as the featureAngle.
//mergePatchFacesAngle 45;
// Optional mesh shrinking type 'displacementMotionSolver'. It uses any
// displacementMotionSolver, e.g. displacementSBRStress
// (default is the medial-axis algorithm, 'displacementMedialAxis')
//meshShrinker displacementMotionSolver;
Refinement:
-----------
// Optionally avoid patch merging - keeps hexahedral cells
// (to be used with automatic refinement/unrefinement)
//mergePatchFaces off;
// Optional multiple locationsInMesh with corresponding optional cellZone
// (automatically generates faceZones inbetween)
locationsInMesh
(
((-0.09 -0.039 -0.049) bottomAir) // cellZone bottomAir
((-0.09 0.009 -0.049) topAir) // cellZone topAir
);
// Optional faceType and patchType specification for these faceZones
faceZoneControls
{
bottomAir_to_topAir
{
faceType baffle;
}
}
/ Optional checking of 'bleeding' of mesh through a specifying a locations
// outside the mesh
locationsOutsideMesh ((0 0 0)(12.3 101.17 3.98));
// Improved refinement: refine all cells with all (or all but one) sides refined
// Improved refinement: refine all cells with opposing faces with different
// refinement level. These cells can happen on multiply curved surfaces.
// Default on, can be switched off with
//interfaceRefine false;
Snapping
--------
// Optional smoothing of points at refinement interfaces. This will reduce
// the non-orthogonality at refinement interfaces.
//nSmoothInternal $nSmoothPatch;
Layering
--------
// Layers can be added to patches or to any side of a faceZone.
// (Any faceZone internally gets represented as two patches)
// The angle to merge patch faces can be set independently of the
// featureAngle. This is especially useful for large feature angles
// Default is the same as the featureAngle.
//mergePatchFacesAngle 45;
// Optional mesh shrinking type 'displacementMotionSolver'. It uses any
// displacementMotionSolver, e.g. displacementSBRStress
// (default is the medial-axis algorithm, 'displacementMedialAxis')
//meshShrinker displacementMotionSolver;