GRUMMP --- Generation and Refinement of Unstructured, Mixed-Element
Goals of the GRUMMP Project
The goal of the GRUMMP project is to develop automatic mesh generation
software for unstructured meshes with mixed element types. The software
should produce high-quality meshes that meet user-defined mesh density
requirements, using elements appropriate for the geometry and physics
a particular problem.
Automatic mesh generation for complex two and three dimensional
is a topic of intensive research. It is imperative that automatic mesh
generation tools be capable of generating quality finite element and
volume meshes. There must be a balance between resolution of the
and surface features and complexity of the problem. In addition, for
with isotropic physics, element aspect ratio must be small to minimize
linear system condition number and interpolation error. On the other
problems with anisotropic physics (for example, a shear layer in
fluid flow) require highly anisotropic elements for efficient solution.
A further level of complication is that for some physical problems and
applications, quadrilateral (2D) or hexahedral (3D) elements are
even though filling space with high quality elements is easier using
(2D) or tetrahedral (3D) elements.
A general-purpose automatic mesh generator should address all of
issues without excessive user intervention. We envision a system in
common types of physical problems have predefined mesh sizing and
aspect ratio functions, allowing easy generation of meshes for these
areas. For flexibility and generality, the user will also be able to
these functions (for totally different applications) or modify the
behaviors (to provide a quality mesh in the wake of an airplane wing,
GRUMMP addresses these issues by implementing mesh manipulation
to generate or modify existing meshes so that criteria for element size
and quality are met. In addition, automatic computation of local length
scale is performed to provide a default in cases where solution-based
length scales are not available.
Current Status of GRUMMP
The current release of GRUMMP is version 0.5.0. This version consists
eight executable programs. More information is available in the online
user manual about general command
line options, command line options specific to 2D or 3D meshing, and input
and output file formats.
tri generates two-dimensional triangular isotropic
meshes. The input can include not only straight line segments, but also
circles, circular arcs, Bezier curves, and interpolated splines.
boundaries are also allowed, supporting simultaneous meshing of
subdomains. Provided that no small angles exist in the input, the
mesh is guaranteed to have well-shaped triangles (theory: angles >
26 degrees; practice: > about 30 degrees). Also, the output mesh is
meshopt2d improves existing two-dimensional triangular
unstructured meshes, providing the same quality guarantees as
while preserving the length scale of the input mesh.
coarsen2d produces a triangular isotropic unstructured
approximately twice the local length scale of the input mesh. Also, coarsen2d
does a credible job of coarsening meshes with anisotropic,
fragments embedded in them; both isotropic and anisotropic coarsening
anisotropic mesh fragments is possible.
tetra generates three-dimensional tetrahedral isotropic
meshes. The input must be a polyhedral surface, including possible
boundaries. Provided that no small angles exist in the input, the
mesh is guaranteed to have no tetrahedra with circumradius more than
times the length of the shortest edge. In practice, with
the worst dihedral angle in the mesh is often in the range of
Again, the output mesh is of optimal size.
meshopt3d improves existing three-dimensional tetrahedral
unstructured meshes by smoothing and swapping. While there are no
on output mesh quality, meshopt3d typically improves meshes
coarsen3d produces a tetrahedral isotropic unstructured
approximately twice the local length scale of the input mesh.
of anisotropic unstructured meshes does not currently work well.
scat2d performs linear interpolation of two-dimensional
scat3d performs linear interpolation of three-dimensional
GRUMMP is available via anonymous ftp as ftp://tetra.mech.ubc.ca/pub/GRUMMP/GRUMMP.tar.gz.
This is a symbolic link to the most recent version (currently 0.5.0).
is available free for non-commercial use. See the online version of the
license agreement for details.
A guide to installing GRUMMP is found here.
The complete User Guide is available in
gzipped PostScript formats.
- The biggest change for 0.5.0 is the addition of support for the
ITAPS mesh interface. This interface provides mesh query and basic
modification functionality in a data-structure neutral way, as well
as supporting collections of mesh entities (sets) and arbitrary
application-defined data on mesh entities and sets (tags). Of
particular interest to Fortran users who might be interested in
using the GRUMMP mesh database but reluctant to switch to C++, the
API can be accessed from Fortran (77 through 2003). For a complete
list of changes in this version, see
- Take a look at our to-do
list to see what's on tap for the future.
A list of known bugs is also online.
Algorithms used in GRUMMP.
Publications related to
Report bugs to firstname.lastname@example.org.
Always include the command line used and the error message that was
If at all possible, include the input file (gzipped and uuencoded, for
large files) as well to be sure that I can reproduce the problem.