P. Fleischmann and S. Selberherr: Fully Unstructured Delaunay Mesh Generation Using a Modified Advancing Front Approach for Applications in Technology CAD

next up previous
Next: 4. Local Regridding Up: Fully Unstructured Delaunay Mesh Previous: 2. Surface Modeling
 

3. Modified Advancing Front Algorithm

The generated Delaunay triangles representing the boundaries and interfaces form an oriented initial front. These triangles can be imagined as seeds which are inserted into a queue to ``grow'' tetrahedra. At the start, the algorithm needs a non-empty queue. It does not require the queue to hold all surface triangles. One triangle per enclosed segment is sufficient. The surface triangulation has two purposes:

  1. Provide the initial front for the advancing front algorithm to start with (One triangle per segment is enough and can be seen as a front)
  2. Provide a border for the advancing front algorithm which cannot be passed.
The triangles of the initial front and all later generated triangles of the advancing front have a well defined orientation depending on the order of their vertices. They ``face'' the half-space to which their normal vector points. Given a seed triangle (taken from the queue) a tetrahedron is attached which contains a fourth point that has a positive distance to the triangle relative to the normal vector. In other words, the tetrahedron will only be attached to that side of the triangle which faces the half-space to which the normal vector points. In this way, one can distinguish a ``front side'' and a ``back side'' of each triangle. Repeatedly attaching tetrahedra to the front sides of the triangles of the queue, removing them from the queue when they have been processed, and inserting newly generated triangles into the queue leads to a growth process of tetrahedra. Note, that the triangles of the queue form the advancing front at all times. It advances when a new tetrahedron (attached to a triangle which is removed from the queue) results in new triangles which are inserted into the queue. Generally, a created tetrahedron can produce any number between 0 and 3 new triangles. At the start of the tetrahedrization process with the given seed triangles each created tetrahedron will more likely produce 3 new triangles and the queue will increase its size rapidly. Later on, the advancing front will close in and merge with itself or parts of the surface triangulation. A tetrahedron consists of n new triangles, (3-n) previously generated triangles, and the triangle to which it is attached. The (3-n) previously generated triangles must have been previously inserted into the queue or belong to the initial surface triangulation. They are part of the advancing front. When they are encountered during the creation of a new tetrahedron, they are removed from the queue and the advancing front is stopped. (The front cannot pass through the boundary or itself.) In such cases the creation of the tetrahedron results in a decrease of the size of the queue. When the queue is empty and all its triangles have merged with each other, the tetrahedrization process is finished.

In the described manner a segment of the input domain is ``filled'' with tetrahedra, if there exists at least one seed triangle which has a normal vector that points into the volume of the segment. Another way of imagining the meshing process is to substitute the tetrahedra with ``water'' and the closed boundary with a watertight container. At the location of the seed triangles water will be poured into the container. The surface of the water as it fills the container is the advancing front.

The following questions arise:

  1. What degree of freedom does the algorithm have to choose a tetrahedron to be attached to a triangle of the queue ? What kind of tetrahedron will be chosen ?

  2. How is it guaranteed that the advancing front does not pass through itself or the given boundary triangulation ? (How is it guaranteed that ``water does not spill outside of the container'' ?)

  3. How is it guaranteed that no part of the domain remains untetrahedrized ?

First, consider that during the time instance when a triangle is taken from the queue and processed (it will be called the current ``base triangle'') the grid node placement is known and fixed. (Grid nodes can have several origins: They can partly be input to force certain nodes into the mesh and/or be generated through a quality improvement loop discussed in Section 4.) This is an important modification to general advancing front methods. Second, consider that for a fixed point set the Delaunay triangulation is well defined. To see the answers to the above questions let us first assume that the Delaunay triangulation is unique. Given a fixed grid node distribution and an oriented triangle only one grid node can complement the triangle to form a valid Delaunay tetrahedron to be attached to the triangle's front side. The meshing algorithm will choose to create exactly this tetrahedron. It is intrinsically not able to create any non-delaunay tetrahedra ! Below will be explained in detail how the fourth vertex which forms the only possible correct Delaunay tetrahedron is determined. To answer the second question we will show that a triangle existence test is sufficient to avoid cases where the advancing front generates loops or passes through borders. Such a test whether or not an identical triangle already exists is easy to implement and does not cost performance.

 
Assertion 1
Under the assumption of a unique Delaunay triangulation any arbitrary Delaunay triangle must be present within the triangulation. (There exists no Delaunay triangle which is not part of the triangulation. If one or more such triangles would exist the Delaunay triangulation would not be unique.) Given the facts that the algorithm only produces Delaunay tetrahedra and the advancing front separates the tetrahedrized domain from the untetrahedrized domain, it follows that at all times the advancing front consists entirely of Delaunay triangles. Assume that one part of the advancing front passed through another part of the advancing front. Then, part of the front must be located interior of a tetrahedrized region. Since the front consists of Delaunay triangles they must be part of the tetrahedrization. Hence, during the tetrahedrization Delaunay triangles must have been produced where identical copies already existed as part of the front.

Also, the triangle existence test guarantees that the algorithm terminates. Since no Delaunay triangles are generated more than once and the overall number of Delaunay triangles t in a Delaunay triangulation is finite, the algorithm terminates after at most t steps. The answer to the third question is straightforward.

Assertion 2
Assume that part of the domain remains untetrahedrized and the algorithm has finished running. The algorithm may only finish if the queue holding the advancing front is empty. The untetrahedrized region must be separated from the tetrahedrized region or the outside of the domain by a surface triangulation. First, assume that this triangulation consists of at least one triangle that is part of a tetrahedron and was generated during the tetrahedrization process. Then, this triangle must have been inserted into the queue. It can be attached to at most one tetrahedron being at the border of the tetrahedrized region towards the untetrahedrized region. Since it would have only been removed from the queue if a second tetrahedron would have been attached to it, the queue cannot be empty and the algorithm cannot not have finished. Second, assume the the triangulation does not contain triangles produced during the tetrahedrization. Then, it must entirely consist of triangles present in the given boundary and interface triangulation. Since it is a closed region, the boundaries and interfaces define a segment. Under the requirement that at least one boundary or interface triangle per segment was inserted into the queue the algorithm cannot yet have finished running.

In Fig. 8 the current base triangles at each step are shaded.

  figure1508
Figure 8: Modified advancing front method.

We will now describe how the fourth vertex is determined which completes the given base triangle to yield a Delaunay tetrahedron. (Remember that due to the surface treatment and the way the advancing front is built all triangles and hence all base triangle always satisfy the Delaunay triangle property.) A local region around the base triangle is examined to find the correct fourth point. The border of this region is defined by a sphere containing the circumcircle of the base triangle. The radius of the sphere will be increased as long as the sphere does not contain other points. For an easier understanding you may imagine the circumcircle of the base triangle to be a ring which was dipped in soap water and the sphere to be the soap bubble which is blown up. That one sphere must exist which does not hold any other points is evident due to the Delaunay property of the base triangle. In fact, the way the region around the base triangle is examined closely resembles the Delaunay property. The size of the sphere is increased so that exactly one other point (than the three points of the base triangle) is located on the perimeter of the sphere. This point is the seeked fourth vertex of the tetrahedron. It is evident that the tetrahedron must satisfy the Delaunay property, because its circumsphere does not contain any other point. For one base triangle two spheres exist that correspond to a tetrahedron on each side. The algorithm will only attach a tetrahedron to the front side of the base triangle as previously explained. It will therefore increase the size of the sphere in this manner that the positive normal distance tex2html_wrap_inline640 between the center M of the sphere and the base triangle is increased. The normal distance can be negative (H denotes the circumcenter of the base triangle and tex2html_wrap_inline2771 its unit length normal vector.):

tex2html_wrap_inline6863

The time complexity of the algorithm depends heavily on the point location method. We implemented a fast point bucket octree which provides us with a recursive search function for arbitrary rectangular search regions parallel to the bounding box. Fig. 9 shows the two-dimensional analogy.

  figure3026
Figure 9: Point location within a given search region.

The sphere defining the search region always fits into a cube which is parallel to the bounding box. The gradual increase of the size of the search region does not cost extra performance: If the sphere is too small no points will be located inside the search region and the effort of traversing the octree is minimal. The case when exactly one point (the fourth vertex of the tetrahedron) is found is ideal. Usually, The search region will contain several points. In such a case the size of the sphere defining the search region will not be reduced until only a single point is contained. Instead, tex2html_wrap_inline2773 will be computed from tex2html_wrap_inline2775 which is the center of the sphere defined by the point tex2html_wrap_inline2777 and the base triangle. The point tex2html_wrap_inline2779 with minimal tex2html_wrap_inline2781 is the correct fourth vertex of the tetrahedron. The octree search and the minimizing of tex2html_wrap_inline640 (tex2html_wrap_inline640-criterion) introduces the logarithm into the overall time complexity tex2html_wrap_inline658 where n is the number of tetrahedra. The scope of the possible tex2html_wrap_inline640 values is numerically a delicate matter. For a robust implementation additional geometric tests (like an in-sphere-test) are required. Fig. 10 shows the two-dimensional analogy: The normal distance of a point P to the plane containing the base triangle (in two dimensions the ``base edge'') is d . Fig. 10 shows a point tex2html_wrap_inline2797 with d = 0 and a point tex2html_wrap_inline2801 with a positive d (on the front side of the base edge). Starting from the base edge the algorithm has to determine which of the two points tex2html_wrap_inline2797 and tex2html_wrap_inline2801 is the correct point with which to create a triangle (two-dimensional analogy). The correct triangle is drawn with dashed lines. The various possible geometric locations of a point are illustrated with their corresponding tex2html_wrap_inline640 values. The location of points with tex2html_wrap_inline2811 is denoted by the dashed circle. The point tex2html_wrap_inline2797 is on a numerical critical location:

tex2html_wrap_inline7718

tex2html_wrap_inline7720

  figure1518
Figure 10: tex2html_wrap_inline640 regions (2D analogy).

So far, we assumed that the Delaunay triangulation is unique. We remove this restriction to allow an arbitrary positioning of grid nodes. In a practical meshing application any restriction on the placement of grid nodes, e.g. to avoid degenerate Delaunay cases, would not be feasible. Therefore, we allow the occurrence of the following cases, which are very closely related to each other and represent the ambiguity of the Delaunay triangulation:

Cospherical point set:
More than four points are located on the perimeter of a sphere and no points are inside the sphere.

Cocircular point set:
More than three points are located on a circle in three dimensions and no points are inside the circle in the plane spanned by the circle.

Untetrahedrizable cavity:
A surface triangulation of a cospherical point set consisting of Delaunay triangles that form an untetrahedrizable polyhedron.

Note that cocircular point sets are more complex to deal with than cospherical point sets. Indeed, a cocircular point set implies two neighboring cospherical point sets ! Under exact arithmetics these cases result in a compound of points tex2html_wrap_inline2817 with identical tex2html_wrap_inline2819. We developed an approach which takes both the topography as well as the at the moment existing topology into account to avoid inconsistencies due to tex2html_wrap_inline2817. The robust implementation under finite precision arithmetics detects these compounds tex2html_wrap_inline2817 and processes them separately as an isolated triangulation sub-problem. Starting with a base triangle a fourth point from the set of cospherical points is chosen to generate a tetrahedron. This first tetrahedron penetrating the sphere defined by the cospherical point set forms a temporary convex boundary to which the other points of tex2html_wrap_inline2817 are added one after another. The temporary boundary is kept convex by ``looking back'' from each fourth point of the last generated tetrahedron to link it to all triangles with a positive minimum distance and thereby creating several tetrahedra in one step. Once the sphere is completely tetrahedrized, the ``looking back'' algorithm becomes unnecessary and it is returned to the normal tetrahedra growth process. Note that ``looking back'' and checking the minimum distance to the triangles is only required for triangles which belong to the triangulation of the sphere. In fact, we use a temporary second queue for the advancing front within the sphere. Therefore, we have to examine only a very small number of triangles to determine their minimum distance to the current fourth point. A more detailed description of this algorithm can be found in [2].

The cocircular point sets and the untetrahedrizable Delaunay polyhedron merit further discussion. Concerning the latter one should distinguish a general untetrahedrizable polyhedron (Schoenhardt polyhedron, twisted prism [4]) and an untetrahedrizable cavity formed by Delaunay triangles. The modified advancing front algorithm will not create or encounter the general non-Delaunay twisted prism case. This follows directly from the fact that the advancing front consists of Delaunay triangles only. Thus, such a case may only occur if the input structure forms a Schoenhardt polyhedron. It will be transformed or refined by the surface preprocessor, because the triangles do not fulfill the delaunay criterion. The question remains how to deal with the Delaunay twisted prism case. The points of such a cavity/polyhedron form a cospherical point set (Fig. 11).

  figure9639
Figure 11: A surface triangulation of 6 cospherical points. If the upper three points which define a circle are rotated (``twisted'') clockwise, an untetrahedrizable polyhedron is formed.

If such a polyhedron evolves in the interior of the mesh during the tetrahedrization process, the surface of the polyhedron is not imperative. The algorithm is allowed to modify the Delaunay triangles that form the polyhedron in a local remeshing step. In Section 4 the interesting fact is shown that cocircular point sets, the untetrahedrizable Delaunay polyhedron, and a special type of sliver can all be treated in a similar way.

Furthermore, some general aspects are worthwhile to mention:

Finally, Fig. 1 shows snapshots of the advancing front during the meshing of a hand. Merely for demonstration purposes we meshed the region of one material after sputter deposition. The tetrahedra growth process is depicted in Fig. 13 and the mesh is shown in Fig. 17. The minimum of information is sufficient which is a boundary description of the non-convex part of the surface.

  figure1548
Figure 13: The tetrahedra growth process.


next up previous
Next: 4. Local Regridding Up: Fully Unstructured Delaunay Mesh Previous: 2. Surface Modeling

P. Fleischmann and S. Selberherr: Fully Unstructured Delaunay Mesh Generation Using a Modified Advancing Front Approach for Applications in Technology CAD