Now an example of the challenges of nonuniform mesh generation. Obtain the program sweep2.c from the Voronoi directory from netlib. Once you have received sweep2.c, extract it and compile it. Run sweep2 with the -t option on the complete set of x,y grid points in mesh.pts. This will output the triangle connectivities needed for the finite element calculation. Look at the mesh you've created with GridDraw. You should notice that you have triangles that have been created outside (inside) the contours of interest. This is because, while the triangles are outside the contour, they are inside the convex hull of the point set, which is the property that sweep2 uses to create the triangulation. Now write a program which extracts the triangles outside (or inside) the region of interest using the GB (or other) algorithm. There are other ways to extract the extra triangles. See if you can figure out a more computationally efficient method (for some problems, the process of extracting unwanted elements can take a significant amount of time). Once the extraneous triangles are removed, save the connectivities for later input into the finite element solver.