GRUMMP  Generation and Refinement of Unstructured, MixedElement
Meshes
in Parallel
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 highquality meshes that meet userdefined mesh density
requirements, using elements appropriate for the geometry and physics
of
a particular problem.
Automatic mesh generation for complex two and three dimensional
domains
is a topic of intensive research. It is imperative that automatic mesh
generation tools be capable of generating quality finite element and
finite
volume meshes. There must be a balance between resolution of the
boundary
and surface features and complexity of the problem. In addition, for
problems
with isotropic physics, element aspect ratio must be small to minimize
linear system condition number and interpolation error. On the other
hand,
problems with anisotropic physics (for example, a shear layer in
viscous
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
preferred,
even though filling space with high quality elements is easier using
triangular
(2D) or tetrahedral (3D) elements.
A generalpurpose automatic mesh generator should address all of
these
issues without excessive user intervention. We envision a system in
which
common types of physical problems have predefined mesh sizing and
element
aspect ratio functions, allowing easy generation of meshes for these
applications
areas. For flexibility and generality, the user will also be able to
prescribe
these functions (for totally different applications) or modify the
predefined
behaviors (to provide a quality mesh in the wake of an airplane wing,
for
example).
GRUMMP addresses these issues by implementing mesh manipulation
primitives
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 solutionbased
adaptive
length scales are not available.
Current Status of GRUMMP
The current release of GRUMMP is version 0.5.0. This version consists
of
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 twodimensional triangular isotropic
unstructured
meshes. The input can include not only straight line segments, but also
circles, circular arcs, Bezier curves, and interpolated splines.
Internal
boundaries are also allowed, supporting simultaneous meshing of
multiple
subdomains. Provided that no small angles exist in the input, the
output
mesh is guaranteed to have wellshaped triangles (theory: angles >
about
26 degrees; practice: > about 30 degrees). Also, the output mesh is
of
optimal size.

meshopt2d improves existing twodimensional triangular
isotropic
unstructured meshes, providing the same quality guarantees as
tri
while preserving the length scale of the input mesh.

coarsen2d produces a triangular isotropic unstructured
mesh with
approximately twice the local length scale of the input mesh. Also, coarsen2d
does a credible job of coarsening meshes with anisotropic,
quasistructured
fragments embedded in them; both isotropic and anisotropic coarsening
of
anisotropic mesh fragments is possible.

tetra generates threedimensional tetrahedral isotropic
unstructured
meshes. The input must be a polyhedral surface, including possible
internal
boundaries. Provided that no small angles exist in the input, the
output
mesh is guaranteed to have no tetrahedra with circumradius more than
sqrt(2)
times the length of the shortest edge. In practice, with
postprocessing,
the worst dihedral angle in the mesh is often in the range of
1520°.
Again, the output mesh is of optimal size.

meshopt3d improves existing threedimensional tetrahedral
isotropic
unstructured meshes by smoothing and swapping. While there are no
guarantees
on output mesh quality, meshopt3d typically improves meshes
significantly.

coarsen3d produces a tetrahedral isotropic unstructured
mesh with
approximately twice the local length scale of the input mesh.
Coarsening
of anisotropic unstructured meshes does not currently work well.

scat2d performs linear interpolation of twodimensional
scattered
data.

scat3d performs linear interpolation of threedimensional
scattered
data.
GRUMMP Links

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).
GRUMMP
is available free for noncommercial 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
HTML,
PDF, or
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 datastructure neutral way, as well
as supporting collections of mesh entities (sets) and arbitrary
applicationdefined 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
Changes.
 Take a look at our todo
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
GRUMMP.
User Services
Bug Reporting
Report bugs to cfog@mech.ubc.ca.
Always include the command line used and the error message that was
given.
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.