check, identifying faces that have bad quality, identifying the points
that support the faces, and 'limiting' them.
Wrong faces are also those that are attached to a cell with 1-3 faces.
At each iteration of filtering, the Delaunay cells are all reindexed.
Now a separate function.
Currently 'limiting' means: do not collapse any face that has any
vertex that has been limited at all and do not move a vertex to the
boundary during the surface smooth if it has been limited. This is
the most agressive form of limiting and leaves faces in the mesh that
might be safely removed with an less aggressive filter.
Limiting of all points connected to a cell which has a limited
point could be used (comment out code).
Removed some redundant code from indexedCell.
area faces). The intention is that if checkMesh returns a non zero
number of bad faces, then no amount of collapsing and backtracking can
satisfy the criteria (as long as the value of mergeClosenessCoeff is
appropriate - a more rigorous zero area face collapse may be
appropriate) and the mesher will halt (or at least not filter at
all). The mesh quality criteria and the surface conformation controls
can be altered and the internalDelaunayVertices read in to try again,
or more cell size resolution can be applied in areas where problems
are occuring.
collapsed to a single edge had their vertices aligned and were just
not created. This causes topolgical nonclosedness, and can cause
geometrical nonclosedness - not a good plan.
Fixed return logic error in smoothSurfaceDualFaces.
Not moving points for deferredCollapseFaces during collapseFace.
Gives the ability to make a a decision about the face at the polyMesh
level and only move the points then.
Adding function for extracting the owner and neighbour for a dual
face, and a bool on when to reverse.
Returning faceCollapseMode from collapseFace to allow decisions to be
made.
Adding removeUnusedCells function to get rid of cells with no faces.
Adding an early collapse to point option for faces that are 0.2 of the
maxCollapseFaceToPointSideLengthCoeff.
Adding a HashSet<labelPair... to record the faces that are to be
collapsed to edges. Using owner and neighbour labels to index. WIP
for all mentions.
Decisions to skip faces with an already indexed point was wrong, the
continue would be operating on the while loop, not the for loop over
the face, adding a bool to be used afterwards.
limitToQuadsOrTris logic would not work when it was false, it would
never operate regardless of the size of the face.
returning validCollapse as the status of the faceCollapse was wrong,
it didn't necessarily mean the face was collapsed.
Adding mpre filtering controls to cvContol and using them in the
filtering functions.
Removing minimumEdgeLength(const point& pt) - not needed, always using
the stored vertex size.
Moving removeUnusedPoints to calcDualMesh from
createFacesOwnerNeighbourAndPatches to allow the latter to be used to
build an intermediate mesh.
Adding the use of motionSmoother::checkMesh (as per snappyHexMesh) to
a new function: checkPolyMeshQuality. Will be the analysis component
of a filtering back-tracking scheme.
longest edge as the collapse direction. Discovered that, for long
thin faces, det(J)*aspectRatio^2 ~= 0.35. Could probably analyse this
to see what the actual value is, but it gives a good empirical measure
for the moment.
Using the middle of the line of all the projected vertices as the
split and applying the guardFraction- gives better handling of
triangles.
Making collapseFace use the cvMeshControls minimumEdgeLengthCoeff
value.
aggressive to take out line-like faces. Normalising the inertia tensor
is essential for small faces to avoid the calculation of eigenvectors
from falling off the bottom of SMALL. Normalsing by mag(J) instead of
cmptMax(J).
Moving face point merge, surface smoothing and face filtering
do-while loops to seprate functions.
Implementing point grouping and collapsing for collapseFaceToEdge.
- Rewrote globalPoints to use globalIndex class so now only transfers
single label instead of labelPair
- Added addressing in globalMeshData
- from coupled master points to slave points
- ,, edges ,, edges
- from coupled points (master or slave) to uncoupled boundary faces
- ,, ,, cells
- See test/globalMeshData for simple test
Scotch is now built using its own build system which builds
an additional metis.h which conflicts with the metis one so
to have separate include directory settings we also need separate
Make/ structures.