Triangle Utility


For mesh refinement, we will use the constrained Delaunay triangulation utility Triangle, written by Jonathan Shewchuck.  Triangle is a C program which produces a finite element mesh from a set of points and domain boundaries.  A MATLAB interface to the utility is provided which returns a triangle mesh for a set of points and boundary edges.



Note for PC users: the ! shell commands in triangulate.m will require alteration to run in DOS.


Interface Details

The triangulate function provides an interface to the Triangle utility in MATLAB. triangulate accepts a set of points and a list of boundary edges as input, and returns a triangulation of the domain by Triangle as a new set of points and a list of mesh triangles. See the tridemo program for an example of this procedure.

To implement a general mesh refinement procedure, one might repeat the following steps until a desirable triangulation is obtained:

  1. For each triangle in the mesh, decide whether the triangle is a candidate for refinement. Terminate once there are no such candidates.
  2. For each refinement candidate, add a new point to the point set at the centroid of the triangle.
  3. Invoke the triangulate function with the augmented point set and the boundary description to obtain the new mesh.
To obtain the initial triangulation, execute the triangulate function on a domain description consisting of the corner boundary vertices and the boundary edges. Note that the boundary edge set will not change from iteration to iteration if new points are added to the end of the point list. The Triangle utility will not change the order of the input points in the output, although it may add new points to the end of the set during the constrained Delaunay triangulation.

Copyright © 1999 Peter Schröder, Fehmi Cirak, Nathan Litke. Last modified: Wed May 26 23:21:16 PDT 1999