Generating a Mixed Mesh of Hexahedra, Pentahedra and Tetrahedra from an Underlying Tetrahedral Mesh Sia Meshkat Dafna Talmor sia@lmscadsi.com dafna@lmscadsi.com (408) 445-3934 (408) 445-3934 LMS CADSI Fax: (408) 445-3936 3150 Almaden Expressway, Suite 104 San Jose, CA 95118, USA. Key words. Hex-dominant, hexahedra, tetrahedra, Pentahedra, indirect hexahedral meshing. Abstract. The decomposition of an arbitrary polyhedral domain into tetrahedra is currently more tractable than its decomposition into hexahedra. However, for some engineering applications, a mesh composed of hexahedra, or even a mixture of hexahedra, pentahedra and tetrahedra, is preferable. One such application is the p-type finite element method, where the total number of elements should be as small as possible. We show in this paper, that given a tetrahedral decomposition, some of the tetrahedra can be efficiently combined into hexahedra and pentahedra. The basis of the method is a classification, using a generalized graph representation, of all possible tetrahedral decompositions of pentahedra and hexahedra. We then present a tetrahedral merge algorithm that utilizes this result to search for the subgraphs of hexahedra and pentahedra in a tetrahedral mesh. The problem of finding an optimal solution is NP-complete. We present heuristics to increase the number of hexahedra and pentahedra, given a reasonable amount of computation time. The algorithm has been implemented in the PolyFEM mesher, and examples showing the typical merge success of the algorithm are included. 1. Introduction Many applications require arbitrary polyhedra to be decomposed into simple polyhedra of fixed topology called elements, such as tetrahedra, pentahedra and hexahedra. Elements are made up of vertices (nodes), edges and faces. Predefined rules restrict how two elements may be geometrically connected. The most common restriction is that the two elements should be either disjoint, or share one or more vertices. Occasionally, further restrictions are placed to require that the elements must share a whole face, edge, vertex, or nothing. This is known as a geometric complex [1] in topology. Most applications allow a variety of element types such as tetrahedra, pentahedra (triangular prisms) and hexahedra with quadrilateral faces. Furthermore, using a balanced mixture of these elements in decomposition is occasionally preferable to using only one element type. This could be due to technical reasons such as better performance, or to human preference, such as easier visualization of the results. For most geometric objects used in engineering, a tetrahedral decomposition has more elements than a mixed decomposition which uses quadrilateral hexahedra (or bricks) and triangular pentahedra (or prisms). For a P-type finite element solver, such as PolyFEM [2], it is crucial that the total number of elements should be as small as possible, while maintaining their geometrical quality. The problem of decomposition of arbitrary polyhedra into simple polyhedra of fixed topologies is very difficult. Even its simplest form, i.e., tetrahedralization, is difficult enough [3]. It is not surprising that most of the research to date has concentrated on decomposition into tetrahedra. However, the state of tetrahedralization of arbitrary polyhedra is improving, both on the theoretical and practical front. Theoretical results give bounds on the number of tetrahedra necessary to decompose a domain [4], supply conditions for the existence of such a decomposition [3,5], or provide algorithms with theoretical guarantees [6-10]. In practice, several programs to decompose a domain into tetrahedra exist [2.11-14]. The problem addressed by this paper is, given a tetrahedral decomposition can one merge some of the tetrahedra into other types of elements, such as pentahedra and hexahedra. Since the PolyFEM solver allows it, we sometimes take the following liberty to increase the chances of success: A quadrilateral face of one element may be connected to two triangular faces of two other elements. We try to use this option as rarely as possible, since it encumbers the solver. We discuss a new method to find and construct pentahedra and hexahedra in a tetrahedralization. Our method is based on finding sub-graphs in the tetrahedralization that can be replaced by a single node representing the new element. To do this we first present a complete enumeration of all the ways of combining tetrahedra into pentahedra and hexahedra. Section 2 presents the decomposition graphs and proves they represent all possible graphs for a decomposition of the cube into five or six tetrahedra. Section 3 details our algorithm that uses the decomposition graphs to search for hexahedra and pentahedra. Section 4 presents global heuristics incorporating the local search, and briefly mentions other strategies incorporated into PolyFEM that use topological and geometrical changes to increase the number of hexahedra and pentahedra. We conclude with several examples. 2. Base Graphs Hexahedra and pentahedra may be decomposed into tetrahedra in a number of ways. Each decomposition is a 3-dimensional subdivision of space, and therefore can be topologically described by a 3-dimensional generalized graph of vertex, edge, face and region entities. For efficient, computations, it is useful to extract a subgraph of the dual graph, containing only two types of entities. This is the Region-Face-graph or RF-graph of the 3-D subdivision. In this type of graph, the vertices and edges of the graph correspond to the (tetrahedral) regions and (triangular) faces of the subdivision, respectively. This graph has several advantages, which will be proved later. For example, the RF-graph of a tetrahedral subdivision of a hexahedron or pentahedron is planar. Obviously, any graph extracted from the generalized graph of a 3-D subdivision is certain to leave out some of the original information. For our purposes, it is important to distinguish between internal and external faces of the subdivision. Internal faces of the subdivision provide the connectivity between a pair of adjacent tetrahedra. We represent internal faces as solid edges in the RF-graph. The external faces can be deduced, since each tetrahedron has four faces in total. On the other hand, some pairs of external (triangular) faces are combined to make a quadrilateral face on the boundary of a hexahedron or pentahedron. We call such a pair of faces a quadrilateral pair. For pentahedra some external faces end up as triangles on the boundary of the pentahedron, as well. Note that in the decomposition of a hexahedron or a pentahedron, two tetrahedra can have at most one quadrilateral pair in common. Therefore, a quadrilateral pair is uniquely identified by a pair of tetrahedra. We extend the RF-graph representation using dashed edges to represent external quadrilateral pairs. Figure 1(a) shows a pair of tetrahedra, which share an internal face and have a quadrilateral pair of external faces. Figure 1(b) shows the corresponding extended RF-graph. These tetrahedra together form a pyramid and in fact the graph shown here is the extended RF-graph for pyramids. The term RF-graph will continue to refer to the solidly outlined sub-graph of the extended RFgraph. (a) (b) Figure 1: (a) adjacent tetrahedra (b) their extended RF-graph 2.1 Pentahedron Graphs There is only one unique RF-graph for a pentahedron. It is shown in Figure 2. The numbers on the graph vertices record the number of boundary triangular faces for the corresponding tetrahedron. Whereas this is a useful notation, it contains no additional information since that number is always four minus the degree of the node in the RF-graph. 3 2 3 Figure 2: Pentahedron Graph 2.2 Hexahedron Graphs It has been known for centuries that a cube can be decomposed into five or six tetrahedra. Bigdeli [15] and de Loera [16] both supply an enumeration of the different, possible decompositions of the cube. Their work is more general but does not contain the RF-graph representation that was found helpful in the mesh generation context. (It is interesting to point out that the decomposition work in this paper was carried out earlier than the above authors' work, but was not published due to a pending patent application [17]). The general non-regular hexahedron can be decomposed into 5 to 13 tetrahedra. If the hexahedron is close to a cube, as is desirable in mesh generation applications, this is only possible by the addition of thin and flat (sliver-shaped) tetrahedra with all four vertices nearly coplanar. For the remainder of this paper, we focus on tetrahedral decompositions of hexahedra into five or six tetrahedra, though our implementation does include cases that are more general. The RF-graph representation enables the simple addition of slivers, but currently we know of no complete enumeration of all decompositions of general hexahedra and pentahedra. Theorem 1. There are six distinct RF-graphs for decomposing hexahedra into five or six tetrahedra. The details of the proof are contained in the rest of this section. The following three lemmas provide powerful tools in eliminating many candidate decomposition graphs. Lemma 1. The RF-graph of a tetrahedral decomposition of a hexahedron into 5 or 6 tetrahedra is planar. Proof: By Kuratowski's Theorem, we know that every non-planar graph must contain as a sub-graph or a minor either the star graph or the utility graph [18]. Recall that the star graph is a complete graph with five vertices and l0 edges, and that the utility graph is a complete bipartite graph with six vertices and nine edges. Let N 5,6 be the number of nodes in the RF-graph. Let E be the number of edges, then 2E 4N 12 , or E 2N 6 . The edge counts indicate that, for both N 5 and N 6 , the RF-graph can not contain the Kuratowski graphs either as a sub-graph or a minor. o Lemma 2. The RF-graph of all tetrahedral decompositions of a hexahedron into six tetrahedra has exactly one cycle. The decomposition into five tetrahedra contains no cycles. Proof: Let F and R 5,6 denote the number of faces and regions in the original subdivision. There are 12 triangular faces on the boundary of the subdivision. Let Fint be the number of internal faces, and let Fext 12 be the number of external faces. We get 4 R 12 2 Fint , or, Fint 2R 6 . Therefore, R 5 implies Fint 4 , and R 6 implies Fint 6 . Now recall that the RF-graph for all tetrahedral decompositions is planar, therefore it obeys Euler's formula for 2-dimensional subdivisions of zero genus: v e f 2, Note that v is the number of tetrahedra, and e Fint is the number of interior faces. This V2 , f 2 . One face of the planar graph is the infinite region. Therefore, 36A2 the other face must be a cycle. For v 5 , f 1 and the graph, since it is connected, is a tree. o Lemma 3. In a tetrahedral decomposition of a hexahedron, a tetrahedron with 3 boundary faces cannot be connected to another tetrahedron with 2 or 3 boundary faces. Proof: Let t be a tetrahedron with three boundary faces which is connected to another tetrahedron u with n 2 boundary faces. A tetrahedron with three boundary faces must be sliced implies that for from a corner of the hexahedron. Then u can be one of only four possible tetrahedra made with the interior face of t and the vertices not in t . It is easy to see that in three of these cases u has one boundary face, and in one case u has no boundary faces. Therefore, u cannot have two or three boundary faces. o We label each node in the RF-graph with its number of boundary faces. The previous Lemma can be graphically depicted as the forbidden sub-graphs shown in Figure 3. 3 2 3 3 Figure 3: Forbidden sub-graphs Equipped with the three lemmas, we can proceed to search for the graphs. First, for a decomposition into five tetrahedra, the graph is a tree, and Lemma 3 implies that the only possible decomposition is as in Figure 4: the graph contains at least two nodes of degree one. By Lemma 3, both these nodes must be connected to a. node of degree three at least, so both are connected to the same node. Clearly, the fifth node must also be connected to this central node, resulting in the graph of Figure 4. 3 3 0 3 3 Figure 4: Hexahodral Graph of 5 tetrahedra For a decomposition into six tetrahedra, there must be a single cycle of n 3,4,5,6 vertices in the graph: For n 6 we get a single possible graph shown in Figure 5. This is known as Kuhn's decomposition of a cube [19]. 2 2 2 2 2 2 Figure 5: Hexahedral Graph of 6 tetrahedra with a 6-cycle For n 5 we also get a single possible graph shown in Figure 6. 2 2 2 2 1 3 Figure 6: Hexahedral Graph of 6 tetrahedra with a 5-cycle For n 4 we also get three possible graphs, but one is easily ruled out via Lemma 3. The remaining two are shown in Figure 7 and Figure 8. 3 1 2 2 1 3 Figure 7: Hexahedral Graph of 6 tetrahedra with a 4-cycle 2 2 1 1 3 3 Figure 8: Hexahcdral Graph of 6 tetrahedra with a 4-cycle For n 3 we also get three possible graphs, but two are easily dismissed via Lemma 3. The remaining one is shown in Figure 9. 3 3 1 1 1 3 Figure 9: Hexahedral Graph of 6 tetrahedra with a 3-cycle This completes the enumeration of RF-graphs of all possible decompositions of a hexahedron into five or six tetrahedra. 3. Local Search As mentioned earlier, each RF-graph is extended with additional information about pairs of tetrahedra that must share a quadrilateral pair. In addition, symmetrically distinct graph-vertices are labeled with an arrow. The arrows show the possible roots of search trees for the graphs. Extended RF-graphs are a good compact way of storing conceptual templates for a tetrahedral decomposition. However, since finding hexahedra and pentahedra in a tetrahedrization involves finding a subgraph that matches a given graph, the use of a graph is somewhat inefficient. Instead, for a given graph we construct all possible search trees, one for each root node. The six RF-graphs are therefore converted into 14 search trees in total. (Our implementation, that includes decompositions of up to thirteen tetrahedra, uses about thirty search trees.) As an example, two search trees extracted from Figure 9 are shown in Figure 10. The numbers on the nodes are sequence numbers used to assign a node to a tetrahedron. The solid lines depict the tetrahedra that share a face, whereas dashed lines represent the constraint to find a quadrilateral pair. LINK 1, 2 QUAD 1, 2 LINK 2, 3 LINK 2, 4 LINK 3, 4 LINK 3, 5 QUAD 1, 5 QUAD 3, 5 LINK 4, 6 QUAD 1, 6 QUAD 4, 6 QUAD 5, 6 1 2 3 4 5 LINK 1, 2 LINK 1, 3 LINK 1, 4 QUAD 1, 3 LINK 2, 4 LINK 2, 5 QUAD 2, 5 QUAD 3, 5 LINK 4, 6 QUAD 4, 6 QUAD 3, 6 QUAD 5, 6 1 2 3 4 5 6 6 Figure 10: Search Trees fur 6-tetrahedra 3-cycle graph From each tree, a program is generated with 10-12 steps. There are two instructions in this program called LINK and QUAD, each with two operands, which are the nodes of the tree. A "LINK a, b" instruction starts a search from the tetrahedron assigned to node a for a tetrahedron to assign to node b of the graph. A "QUAD a, b" instruction verifies that the tetrahedra already assigned to nodes a and b have a valid quadrilateral pair, i.e. two faces which can be paired together to form a valid quadrilateral. The LINK and QUAD may either succeed or fail. If they fail, a backtrack to an earlier LINK is performed. If all possible assignments have failed for a LINK or there is no earlier LINK statement, the search fails for this particular search tree. LINK and QUAD statements correspond to the solid and dashed edges in a search tree, respectively. The program corresponding to a search tree in Figure 10 is shown adjacent to the tree. As each face of the tetrahedrization is assigned to a LINK or QUAD, it becomes unavailable for further assignment. As each backtrack takes place, the assigned faces become available for other assignments. If the search program is executed to completion, the search is successful. The RF-graph only establishes graph-theoretical conditions for existence of a given polyhedron, i.e. hexahedron or pentahedron. Additional topological criteria are necessary to ensure the validity of the polyhedron. For example, in a tetrahedrization that represents tetrahedra made of various material, coded as such, it must be ensured that the material boundaries are not crossed during the template matching. Depending on the application, there may also be geometric constraints that the recomposed polyhedron must have. For example, for the Finite Element Method the total distortion of the quadrilateral faces of the polyhedron from a plane must be controlled to ensure accurate numerical results. We use two quantities to measure the distortion of a quadrilateral face. The first quantity is the Minimum Acceptable Dihedral Angle or dangle. The second quantity is the Maximum Acceptable Face Angle or fangle. The best possible shapes are achieved with the strictest values for these parameters, i.e. dangle = 180° and fangle = 90°. As these values are relaxed, the probability of a successful match is increased. It is possible to have several polyhedra with different search trees incident to a starting tetrahedron. For this reason, it is best to find all such polyhedra, and pick the one with the least amount of total distortion. In addition to the criteria already mentioned, we have used a nondimensional volume to area ratio as a general shape measure. For example, we use V2 36A2 where V and A are the volume and total surface area of the polyhedron. It is normalized to give positive values less than 1. 4. Global Search The global search algorithm is a process of taking the original tetrahedralization and replacing recognized subgraphs of it by single nodes (i.e. hexahedral or pentahedral elements). In general, this transformation is not unique. It is also difficult to define a single global objective function by which to choose between two transformations. The objective function is largely application-dependent, but should generally contain the following components: 1. The final number of elements is as small as possible. 2. The number of situations where the quadrilateral face of one element is connected to triangular faces of two other elements is minimal. 3. Average distortion of the elements is as small as possible. The problem of finding a globally optimal merge is NP-complete in three dimensions. In contrast, the two-dimensional problem of merging triangles into quadrilaterals can be phrased as a maximum-weight matching problem which is solvable in polynomial time [20]. The basic step in our merge algorithm is to search the combinatorial space of threedimensional tetrahedra matches to detect the set of potential matches for each tetrahedron. The backtracking property of the local search-tree algorithm eliminates unnecessary search work in the presence of geometric or combinatorial constraints. We identify two global strategies based on the local search: Exhaustively greedy: a two-phase approach. In the first phase, the set of possible matches of all tetrahedra is exposed. In the second phase, the next best available match is iteratively picked. Greedy: an unmatched tetrahedron is picked, the set of its possible matches is exposed, and the best match out of this set is picked. The greedy strategy is computationally more efficient than the exhaustively greedy strategy, since previously picked matches limit the space of possible matches for the current tetrahedron. We therefore employ the exhaustively greedy strategy to the boundary faces only. The merging algorithm is composed of the following four steps: Generating a high-quality initial solution to the merge problem over the boundary tetrahedra using the exhaustively greedy strategy. Using local search techniques [21] to step from the initial solution to a solution closer to optimal. If the initial solution is within the neighborhood of the optimal solution, the local search technique will converge to it, which emphasizes the importance of obtaining a high-quality initial merge. Post-merge transformations enhance the solution by changing the merge structure to accommodate more hexahedra and pentahedra. Since the mesh structure changes, the solution may exceed in quality the optimal solution targeted in the two previous steps. Employing the greedy strategy on the remaining unmatched internal tetrahedra. 4.1 Exhaustively greedy boundary merge In the first step of the initial boundary merge, a list of the possible elements at each boundary face is prepared. Whereas the number of topologically valid elements may be large, geometrical constraints typically limit the number of possible elements at a face to 1-5. Naturally, when the edge sizes relative to the model are smaller the average number of matches increases accordingly. The process of merging starts by inspecting the set of possible elements and greedily picking the best element available. The best element is defined as the one having (criteria are listed from most to least important): best element type (hexahedra being preferable to pentahedra) belongs to boundary tetrahedron with fewest number of possible matches left least non-conformities (quadrilateral face neighboring two triangular faces) highest quality. 4.2 Local optimization Local optimization aims to improve the current solution by repeatedly selecting a near-by solution that improves the score of the current solution. Whereas local optimization converges to an optimum using low-cost incremental steps, that optimum might be local, rather than global. However, if the initial solution is close to the maximum then local optimization can lead to the globally optimal solution. Our initial solution is based on a thorough search of all matches and is of reasonably high quality. Furthermore, the initial exhaustive search supplies us with a loose upper bound that enables us to estimate the distance of the solution from global optimality. The local optimization considers all solutions that are close to the current solution, and selects the one that is the most improving. Given a solution, the set of nearby solutions is constructed by considering local rearrangement of elements around unmatched boundary faces. For an example taken from a sample run, see Figure 11. An example of a local optimization transformation: (a) the initial configuration includes a prism, a brick, and an unmatched boundary face; (b) the final configuration contains two bricks. Figure 11: an example of a local optimization transformation 4.3 Post-Merge Transformations This section describes transformations applied to the mesh after the local optimization step. The transformations operate on a mesh composed of bricks, pentahedra and tetrahedra, and are characterized by the fact they alter the underlying tetrahedral mesh structure. Note that the previous section described transformations that merged or unmerged elements, but the underlying tetrahedral structure was left unchanged. We use the following types of transformations: Smoothing transformations. Vertex-split transformations. (Changes the mesh topology and geometry.) Edge contractions. (Changes the mesh topology and geometry.) 4.3.1 Smoothing transformations: Two adjacent pentahedra that share a common quadrilateral face can be merged into a brick if their triangular faces can be merged into quadrilateral faces. In general, it is the case that such a brick was not identified at earlier phases because the resulting brick would have unacceptable geometric quality. Smoothing can make the resulting brick geometrically valid. For example, see Figure 12. Similar transformations can be applied to a topological pentahedron, and a topological pentahedron neighboring a pentahedron. 4.3.2 Vertex splitting This transformation identifies two neighboring tetrahedra that can form a pyramid, and employs a vertex split to transfer the pyramid into a pentahedron. Figure 13 demonstrates one such split transformation. First, a pyramid is identified. The basis of the split transformation is that of splitting a vertex into an edge. In this case, the apex of the pyramid is to be split into an edge. The second row shows the object after the split: on the left, the two original tetrahedra forming the pyramid, with the new edge. On the right, the new edge, together with the new triangular faces added. The disadvantage of a split transformation is that several tetrahedral regions must be added around the new edge. In this example, 6 new tetrahedrons are added. Finally, a new pentahedron element is merged using the pyramid's tetrahedra. and one of the new tetrahedra added. This is a trade-off between adding a pentahedron on the boundary, and in this case the quadrilateral face of the pentahedron was on the boundary, to adding new tetrahedra to the interior of the mesh. Using two split transformation, a tetrahedron can be turned into a pentahedron. 4.3.3 Edge contraction A tetrahedron "sandwiched" between two merged elements is identified, and collapsed if possible. The tetrahedron can be collapsed if its collapse will not form illegal non-conformities or geometrically invalid elements. Figure 12: two pentahedra merged into a, brick using smoothing Figure (a) showst he initial pyramid element. Figures (b) and (e) shows the split node p hase: a new edge is added (b), and a ring of faces аnd regions is added around the new edge. Figure (d) shows the initial prism element. Figure 13: Split transformation takes a pyramid to a pentahedron 5. Examples This algorithm was implemented in the PolyFEM mesher, an automatic 3-D mesh generator [2]. If all tetrahedra are combined into hexahedra, each consisting of 6 tetras, the percentage of reduction is around 83%. This is an approximate upper bound on what can be achieved. The primary application of this program is Finite Element Analysis [22]. We have used this new method to generate Finite Element meshes for both h- and p-version to reduce the solution time, without affecting the accuracy of the solution. Although our approach can employ pyramid elements to further reduce the number of elements and the number of non-conformities, this type of element is not available in the FEM solvers that we have used. In figures 14-16, we show the results of our algorithm on three realistic models. We report the original number of tetrahedra, the final number of mixed elements and the percentage of reduction in the number of elements. As expected, the success ratio increases with the number of tetrahedra in the original mesh. The results reported here do not. reflect the impact of the post-merge transformations, which tends to improve mergeabilty further. For mostly historical reasons, the acceptance of automatic mesh generators in the Finite Element community increases with its ability to produce hexahedra and pentahedra instead of tetrahedra. Acknowledgement Some of this work was completed while Sia Meshkat was at IBM Almaden Research Center. The original idea of transforming a tetrahedrization into a mixed decomposition is due to V.T. Rajan at IBM T.J. Watson Research Center. References Hocking JG, Young GS. Topology, Dover: New York, 1961. Meshkat S, Ruppert J, Li H. Three-Dimensional Unstructured Grid Generation Based On Delaunay Tetrahedrization. Proceeding of the Third International Conference on Numerical Grid Generation. Barcelona, Spain, 1991; 841-851. Ruppert J, Seidel R. On the Difficulty of Tetrahedralizing 3-Dimensional Non-Convex Polyhedra, Proceeding of the Fifth Annual Symposium on Computational Geometry. Saarbruchen, Germany, 1989; 380-392. Chazelle B, Palios L. Triangulating a Nonconvex Polytope. Proceeding of the Fifth Annual Symposium on Computational Geometry. Saarbruchen, Germany, 1989; 393-400. Shewchuk JR. A Condition Guaranteeing the Existence of Higher-Dimensional Constrained Delaunay Triangulations. Proceedings of the Fourteenth Annual ACM Symposium on Computational Geometry, 1998. Bern M, Eppstein D. Provably Good Mesh. Generation. Proceeding of the 31st IEEE Symposium, on Foundations of Computer Science. 1990. Miller GL, Talmor D, Teng SH, Walkington N, WangH.. Control volume meshes using sphere packing: generation, refinement and coarsening. Proceeding of the 5th International Meshing Roundtable, Sandia National Laboratories, Albuquerque, NM, 1996; 47-61. Mitchell SA, Vavasis SA, Quality mesh generation in three dimensions. Proceeding of the 8th Annual ACM Symposium on Computational Geometry 1992; 212-221. Shewchuk JR. Tetrahedral Mesh Generation by Delaunay Refinement. Proceedings of the Fourteenth Annual Symposium on Computational Geometry 1998. Chew LP. Guaranteed quality Delaunay meshing in 3D. Proceeding of the 13th Annual ACM Symposium on Computational Geometry, 1997: 391-393. Cavendish JС, Field DA, Frey WH. An Approach to Automatic Three-Dimensional Finite Element Mesh Generation. International Journal of Numerical Methods in Engineering 1985; 21: 329-347. Sapidis N, Perucchio R. Domain Delaunay Tetrahedrization of Arbitrarily Shaped Curved Polyhedra Defined in a Solid Modelling System. Proceeding of the ACM Symposium on Solid Modelling Foundations and CAD/CAM Applications. Austin, Texas, 1991. Schroeder WJ. Shephard MS. Geometry-Based Fully Automatic Mesh Generation and the Delaunay Triangulation. International Journal of Numerical Methods in Engineering 1988; 26: 2503-2515. Vavasis S, QMG: a finite element mesh generation package. http://www.cs.cornell.edu/Info/People/vavasis/qmg-home.html. Last access July 1999. Bigdeli F. Regular Triangulations of Convex Polytopes and d-Cubes. PhD thesis. University of Kentucky, Lexington, 1991. de Loera J, Triangulations of Polytopes and Computational Algebra. PhD thesis, Cornell University, Ithaca, 1995 Meshkat S. Method and system for producing mesh representations of objects. U.S. Patent 5553206, Sept. 1996. Liu CL. Introduction to Combinatorial Mathematics. McGraw-Hill: New York, 1968. Moore D, Warren J. Adaptive Mesh Generation I: Packing Space. Technical Report 90-106, Department of Computer Science, Rice university, 1990. Cook WJ, Cunningham WH, Pulleyblank WR, Schrijver A. Combinatorial optimization. John Wiley and Sons: New York. 1998. Aarts E, Lenstra JK. Local Search in Combinatorial optimization. John Wiley and Sons: New York, 1997. Zienkiewicz ОС, Morgan К. Finite, Elements and Approximation. John Wiley and Sons: New York, 1983.