Automatic Unstructured Quadrilateral Grid Generation
QuadMesh is a MATLAB cross compatible automatic and unstructured quadrilateral grid generation code, developed to be used with the FEATool Multiphysics MATLAB Finite Element simulation toolbox.
Using quadrilateral grid cells are often advantageous to simplex or triangular cells in that they can provide somewhat more accuracy when aligned with geometry features, and also tend to require less overall grid cells. Quadrilaterals and hexahedrals unfortunately do not tend to allow for easy automatic grid generation although it is possible to subdivide triangles into quads via the Catmull-Clark splitting algorithm, the resulting grids are often of poor quality.
QuadMesh, originally devised to align quadrilateral cell edges with immersed interfaces, uses distance or level set functions to describe implicit geometry objects (such as those defined by FEATool geometry objects). The algorithm employs the zero level set contour from the distance functions to align grid cell edges with external geometry object boundaries. Furthermore, the cells are split in a “somewhat intelligent” way to treat edge cases such as when and interface segment crosses cell diagonals.
QuadMesh can be used with the FEATool GUI instead of the built-in default gridgen function to generate quadrilateral structured grids for two-dimensional and axisymmetric models. To call QuadMesh, first switch to Grid mode, and then select the Generate Quadrilateral Grid option from the Grid menu. One can also apply mesh smoothing with the Grid Smoothing menu option.
QuadMesh is included with the default FEATool installation and is comprised of the following functions
gridgen_quadis a FEATool compatible grid generation wrapper function, see the grid documentation in the FEATool User’s Guide for information about the grid input and output syntax.
quadmeshcreates the quadrilateral vertex and connectivity information with syntax compatible with P.O. Persson’s DistMesh.
gridalign2utility function for the grid alignment process.
The quadmesh function only depends on gridalign2 and can also be
used by itself without FEATool with a similar syntax to DistMesh (used
- Currently, very sharp corners are not treated properly (when several interface sections intersect a single grid cell), to avoid these issues it is recommended to increase the grid resolution.