3. Analogous to the two dimensional case, this construction is only possible for the dual of a hexahedral mesh. A chord represents a column of hexes passing ...
Forming and Resolving Wedges in the Spatial Twist Continuum Ted Blacker Fluid Dynamics International, 500 Davis St., Suite 600, Evanston, IL 60201
Scott A. Mitchell Comp. Mechanics and Visualization Dept, Sandia National Laboratories, Albuquerque, NM 87185
Timothy J. Tautges Comp. Mechanics and Visualization Dept., Sandia National Laboratories, Albuquerque, NM 87185
Peter Murdoch Mercury Marine, 455 Rd., Oshkosh, WI 56901
Steven Benzley Brigham Young University, 270 CB, Provo, UT 89604
Abstract The spatial twist continuum (STC) is a powerful extension of the dual of a hexahedral mesh[1]. The STC captures the global connectivity constraints inherent in hexahedral meshing. Whisker Weaving is an advancing-front type of algorithm based on the STC[2]. During the Whisker Weaving algorithm, certain types of degenerate elements called wedges[3] arise. This paper describes wedges and how they are formed, and presents collapsing and driving, two strategies for removing these degeneracies.
1. Introduction The spatial twist continuum[1] (STC) and the Whisker Weaving algorithm[2] were recently introduced. The STC is a powerful way to represent the connectivity of a hexahedral mesh, based on the mesh dual. The STC captures the global connectivity of the mesh. Given a partial mesh, the STC provides insight into how the rest of the mesh must be formed in order to be properly connected. In particular, a quadrilateral mesh of a surface imposes numerous constraints about how a hexahedral mesh may fill the volume it encloses. Whisker Weaving is an advancing-front type of algorithm based on the STC. Starting with a surface mesh, Whisker Weaving incrementally builds the STC one centroid (hexahedron) at a time. Whisker Weaving takes advantage of the global constraints encoded in the STC it order to generate valid connectivity. However, certain types of local degeneracies arise during Whisker Weaving. These degeneracies can be easily detected from the STC. This paper describes how to remove one type of degeneracy called a wedge, working entirely
1
within the STC. These wedges are strikingly similar to their hexahedral namesakes found in Plastering[3]. The rest of this paper is organized as follows. Section 2 reviews the STC and Section 3 reviews Whisker Weaving. Section 4 presents a degenerate geometric entity called a wedge and describes its formation by Whisker Weaving and representation in the STC. Section 5 describes some algorithms for removing wedges and using them to refine a mesh. Section 6 presents conclusions.
2. STC review This section reviews the definitions of the STC entities. Any type of mesh admits a dual, but the dual of a quadrilateral or hexahedral mesh has a special structure that allows it to be represented as an arrangement of curves (chords) or surfaces (sheets). The STC is described in full by Murdoch et. al[1], where sheets were called twist planes. As an introduction, the STC for a quadrilateral mesh is described first. The dual entities of dimension 0, 1 and 2 are called STC centroids, STC edges, and STC 2-cells. Each mesh quadrilateral has a STC centroid at its center. Two quadrilaterals that share a mesh edge have a STC edge joining the corresponding centroids. Each mesh node is surrounded by a STC 2-cell, a polygon of STC edges. The STC contains all this standard dual information, plus a “higher level” interpretation of the global connectivity of the mesh. Since each mesh element has four edges, each STC centroid has exactly four edges, ordered around the centroid in the same way that mesh edges are ordered around the quadrilateral element. A special property exists for the dual of a quadrilateral mesh: opposite edges can be considered to be part of the same continuous curve, called a chord. This observation forms the basis for the STC. Identifying opposite edges for centroids throughout the mesh, chords form either closed curves (blind chords) or have both endpoints on the object boundary; see Figure 1. A centroid is the simple, nontangent intersection of two chords. For hexahedral meshes, the dual has an additional, three-dimensional entity called a STC 3-cell. STC 3-cells correspond to mesh nodes, for example the (+x,+y,+z) octant corresponds to the (+x,+y,+z) node in Figure 4. In the 3D STC, 2-cells correspond to mesh edges, STC edges correspond to quadrilaterals, and centroids correspond to hexahedra, as enumerated in Table 1 Each centroid now has six edges. Analogous to the two-dimensional case, STC edges passing through opposite hex-quadrilaterals are identified as belonging to the same chord.
2
blind chord
centroid edge 2-cell
selfintersecting chord Figure 1. A quadrilateral mesh and the corresponding chords of the STC, shown as wide curves. Mesh Entity
Dimension
STC Entity
Dimension
Hex Element
3
Centroid
0
Face
2
Edge
1
Edge
1
2-Cell
2
Node
0
3-Cell
3
Table 1: Correspondence of hex mesh entities to 3D STC dual entities. Analogous to the two dimensional case, this construction is only possible for the dual of a hexahedral mesh. A chord represents a column of hexes passing through the mesh; see Figure 3. The real power of the STC is demonstrated by the identification of two-dimensional surfaces called sheets. As seen in Figure 4, each chord perpendicularly intersects four 2-cells at a centroid. These four 2-cells are identified as belonging to the same sheet. For example, in Figure 4 the horizontal sheet cuts the four faces parallel to the z-axis. Each hexahedron contains three such sheets and the STC centroid is actually the intersection of these three. Similarly identifying 2-cells throughout the mesh, each sheet is can be thought of as a smooth, continuous surface, extending until it closes on itself or hits the geometric boundary; see Figure 5. Any topological type of manifold is theoretically possible for a sheet. Holes appear as loops on the surface mesh (see below). Whisker Weaving only creates sheets that can be combinatorially represented in a plane. A sheet has a standard logical projection in the plane called a sheet diagram, which is described below.
Surface Loop Chords Whisker Weaving starts with (the STC of) a quadrilateral surface mesh and works inward to incrementally build the full three-dimensional STC of a hexahedral mesh. As such, the chords (loops) of the two-dimensional surface mesh serve as the start of the three-dimen3
edge
centroid chord y 2-cell
2-cell
edge
Figure 2. A four hex mesh and its dual. The 2-cells divide the volume inside the mesh into 3-cells, one for each hex node.
Figure 3.
A chord in the three-dimensional STC represents a column of hexahedra.
sional STC constructed by Whisker Weaving. In particular, each loop forms a component of the boundary of a sheet. Note that all chords on a surface mesh form closed curves, i.e. 2D blind chords, called loops. This follows from the fact that the object’s surface encloses a volume. A loop is drawn as a combinatorial circle in the plane, with the sheet represented in the disk enclosed by the circle. This drawing is called a sheet diagram; see Figure 6. A sheet diagram is a combinatorial representation of the loop and sheet. In particular, the spacing of the chords around the circle is regular, regardless of where the corresponding faces lie in relationship to one another. Only the sequence of faces is important.
4
z
x y
Figure 4.
The 3D STC inside a single hexahedron.
ch o z rd
chord x
sh yz eet
chord y sheet xy centroid xyz
sheet xz chord y sheet xy
chord x
chord y Figure 5.
The STC of a four hex mesh. Like colored surfaces are the same sheet.
In this diagram, each segment initially perpendicular to the circle represents a 2D centroid, where the loop crosses another loop (or itself) on the surface. That is, it represents a quadrilateral of the surface mesh. In the three-dimensional STC, there will be a chord emanating from that quadrilateral and travelling into the interior of the mesh. Thus a segment also represents the beginning of a chord. A chord is the intersection of two sheets, so each chord has a segment representing it on both of the sheet diagrams. The segment itself is called a sheetchord, to distinguish it from the abstract chord of intersection that it represents. The sheetchord of an uncompleted chord is called a whisker. Whiskers that have no other whiskers between them on the meshing front are called adjacent. At some 2D surface centroids, a loop crosses itself. This situation is actually quite common: the more irregular the surface mesh, the more centroids are the self-intersection of a loop. The chord emanating from such a centroid is called a self-intersecting chord, and plays an
5
21
20
22
rd
6
19
3
7
ll
ce 2-
5
adjacent chords
co m
2
18
23
pl et ed
loop
1
9
ch o
7
4
hex
17
1
= 3D centroid Sheet 1 meshing front
6
surface quadrilateral = 2D surface centroid
24
2
9
8
34
2
16
1
chord 1-3
whisker
5
8
15
hex 1-2-3 chord 1-2 2
3
4
4
3
14
3
13
Figure 6.
A sheet diagram after some Whisker Weaving progress.
important role in Whisker Weaving. In particular, it is these chords which give rise to the formation of wedges. It is important to note that even when a loop intersects itself, it can still be drawn as a circle in the plane; see Figure 7. The centroids of self-intersection merely appear twice on the combinatorial circle, once for each time the loop passes through the corresponding face. The two segments representing a self-intersecting chord appear on the same sheet, instead of on two different sheets. Before describing wedges, it is first necessary to review the basic operations of Whisker Weaving.
3. Whisker Weaving basics The whisker weaving algorithm is reviewed in this section. The goal of Whisker Weaving is to create an all-hexahedral mesh of an arbitrary volume. Whisker Weaving first creates a three-dimensional STC, and then converts it to a hexahedral mesh. Whisker Weaving is an advancing-front type of algorithm, constructing the STC starting from the geometric boundaries and moving inward. At the highest level, Whisker Weaving has the following outline. These steps are described in more detail below. 1. Construct initial loops, sheets, chords and sheetchords from the given surface mesh. While any chord remains uncompleted: 2. Find three pairwise adjacent chords. 3. Construct a centroid (hexahedron) by crossing these three chords. 4. Join chords. 1. Forming loops is the first step of the whisker weaving algorithm. The loops for a given surface mesh can be easily generated by traversing the meshes quadrilaterals in an ordered
6
25
128
124
119
104
112
95
85
4
5
62
69
1
3
3
3
1
5
27
Y
6
14 9
4
22
48
3
X
1
135
7
146
10
2
4
3
8
147
21
3
3
148
20 5
3
6
3
139
10
5
10
2
44
31
1
7
4
58
73
2 Z
Y
8
9
77
89
9
6
35
116
4
5
6
122
2
3
X
Y
25 1
126
W
17 1
3
3
Z
1 107
1
3 16
2
3
2
98
6
4
8
39
65
9
7
3
81
51
6
6
10
83
132
5
3
4
110
129
3
5
Z
152 6
10 149
X
7
140
8
5
W
43
9
4 57
108
3
107
3
106
1
3 105
5
2
78
104
6
1
3
9 2
4
103
36
102
5
91
17
18 8
2
2 109
3
1
W
1
75 33
1
1
X 3 W
Y
5 4
6 Z
6 3
2
Figure 7. A self-intersecting loop on the “macaroni” test problem: Left is the loop with the input geometry/surface mesh, lower right is a drawing of the loop in the plane, and upper right is the loop’s sheet diagram. Letters W, X, Y, and Z are 2D centroids of self-intersection, while points 1-6 are only for reference. Arrows show the relative orientations of the drawings. Note that since the loop passes through W, X, Y, and Z twice, they each appear twice on the sheet diagram in the upper right. way. Loops are drawn as combinatorial circles, with the 3D chord emanating from each loop centroid pointing towards the circle center. Since the hexahedral mesh has not yet been created, each of these “chords” is simply a small segment called a whisker. A chord is called completed if it has both ends on the surface mesh, or closes upon itself to form a closed curve. Initially, no chord is complete. 2. The next main task is to find three chords, 1-2, 1-3 and 2-3, such that 1-2 is adjacent to 1-3, 1-3 is adjacent to 2-3, and 2-3 is adjacent to 1-2 on some sheet diagrams. Here chord 1-2 is a chord of intersection between sheets 1 and 2, etc. As a technicality, sheet 1 and sheet 2 are the same in the case of a self-intersecting chord. This corresponds to finding three quadrilaterals on the meshing front that pairwise share edges. Note that this means that the quadrilaterals are connected so as to form three faces of a hexahedron that share a corner. Occasionally, no such triple of chords can be found. In this case, two chords that are adjacent suffice, and the third chord is created. This third chord does not intersect the surface mesh, and is called blind. This corresponds to finding only two quadrilaterals on
7
the meshing front that share an edge, and creating a third quadrilateral that forms a hexahedron corner. 3. These three chords are then pairwise crossed, locally constructing the STC shown in Figure 4. This corresponds to adding additional faces to the three previous faces to form a hexahedron. Recall that a chord lies on two sheets, and a whisker hex on three sheets. In the sheet diagrams, this means three pairs of whiskers are crossed to form 3 vertices. For example, suppose hex 1-2-3 was just formed in the bottom center of Figure 6 by crossing chord 1-2 and chord 1-3. Then similar figures appear on sheets 2 and 3: chord 1-2 crosses some chord 2-3 to form hex 1-2-3 on sheet 2, and chord 1-3 crosses chord 2-3 to form hex 1-2-3 on sheet 3. 4. Whenever two chords are adjacent to each other on two sheet diagrams the chords are joined. Note that both chords are necessarily the intersection of these two sheets. This double adjacency corresponds to two quadrilaterals that share two edges, and joining the chords corresponds to merging the two faces into one. This type of operation is called seaming[3] in the Plastering algorithm. Occasionally chords are joined that are only adjacent on one sheet, where the second sheets through the chords are different. This results in merging the two second sheets into a single sheet that resembles a cylinder (topological sphere with two holes). Before merging two sheets, certain geometric tests are performed to determine if this is a good idea. If the chords that are joined start on a loop (i.e. start on the sheet boundary), then the combined chord has both ends on the geometric boundary and the chord is complete. Occasionally a blind chord will be joined to itself to form a closed loop, also completing the chord. Completed chords are not crossed, so aggressively joining chords tends to lead to earlier termination of the algorithm, and to adding fewer centroids (hexes). In most mesh generation algorithms, the twin goals of small mesh size and good element shape compete. However, in this phase of the whisker weaving algorithm there is little geometric information, so element shape is not a consideration. Hence the algorithm simply tries to add as few elements as possible by joining chords whenever possible. Ideally, a self-intersecting chord is completed by joining it with some other selfintersecting chord on the same sheet. However, in practice it is often the case that after some weaving the two sheetchords for a self-intersecting chord are immediately adjacent to one another. This implies a certain type of degeneracy in the mesh called a wedge; see Section 4. In order to make progress, the algorithm (temporarily) joins these two sheetchords and calls the chord completed. The degeneracy is resolved later; see Section 5. Other types of improper connectivity are also detected and resolved in step 4, but these are beyond the scope of this paper.
8
4. Wedge Formation This section describes the connectivity of a wedge. In the next section we discuss how to remove wedges. A wedge hexahedron occurs when the two sheetchords of a self-intersecting chord are adjacent to each other. This chord is called the base chord of the wedge. As is always the case, the last centroid on each of its sheetchords represent the same hexahedron (a chord passes through certain hexahedron, regardless of which sheetchord one happens to be looking at). Recall that a STC edge corresponds to a mesh face, as shown in Figure 1. Let z be the face corresponding to the dangling end of the base chord beyond the last centroid. Call the other hex’s face that the base chord passes through, the face between the last and second to last centroid, the base face and denote it by y. Consider the four side faces of this hexahedron, a, b, c, and d, perpendicular to the base chord; see Figure 8. Since the base sheetchords are immediately adjacent, without loss of generality the STC edges representing faces a and b are in the same 2-cell as face z (the left 2-cell in Figure 8 bottom). Since a 2-cell represents a mesh edge, a and b share a mesh edge in common with face z. Moreover, z appears twice in this 2-cell, and thus two of its mesh edges are the same! Assuming that the meshing front of the base sheet containing c and d is eventually completed, faces c, d, and z will be in another common 2-cell and will share mesh edges as well. The side faces also appear (ordered abdc) around a 2-cell on another sheet, called the side sheet; see Figure 8 lower right and upper left. The chords through ad and cb are called the side chords. A wedge is a special kind of degenerate hexahedron: A wedge can be obtained from a hexahedron by merging two nodes that are opposite each other on a face (z). For obvious reasons, the edges of degenerate face z are called the blade edges[3]. In order to save wedges for later and continue with weaving, the algorithm joins the two base sheetchords. Technically, in order for the sheet to be a smooth surface, there is a small singularity at the point where the sheetchords are “joined.” This singularity represents the fact that a chord of intersection (the base chord) terminates inside the mesh: Along the line of the base chord the sheet suddenly goes from crossing itself to not crossing itself; see Figure 9. This transition is impossible to make smoothly. Figure 10 shows the completely woven sheet for the loop in Figure 7. Note that this sheet contains two wedges, formed by self-intersecting chords W and Y respectively. Whisker Weaving doesn’t always form wedges: chords X and Z were successfully joined to each other during the course of the algorithm. The collapsing of wedge base chord W is chronicled below.
9
c
d
c
d
bas
y
z
z
she
b
et
eet
e sh
y
a
b
side
a
base chord y d wedge centroid
2-cell base sheet
a
z
wedge centroid
Singularity c
z
b
b d
a
2-cell
c
y base chord
side sheet
Figure 8. A wedge in three-dimensional space (top) and represented by sheet diagrams (bottom). Lower case letters denote faces. z is a degenerate face consisting of just two edges.
base sheet doesn’t cross itself driving
collapsing
base sheet crosses itself Figure 9. Collapsing/driving a wedge. Faded lines shows how the base sheet intersects the mesh. The chord in the center is the base chord, with the singularity at the arrow tip.
5. Wedge Resolution 10
Y
X
25
128 119
124
104
112
85
95
62
69
1
1
3
3
3
1
5
27
48
3
6
135
14 8
9
98 76
36
114 7
4 4
146
22 3 33
97 10
10
75
124 113
35 128
149 159 147
21
3
3
171 34
59
123
129
20
148
163 5
3 152
127
38 164 3
6
172 69
10
139
153 130
156 170
5 10
10
44
31 31
37
2 138 7
4
77
58
73
99
8
9
115 32 77
89
181 9
6 182
126
123
35
116
4
5
29
122
6
1
10
3 190
194
Y
W
116
25
17
1
1 186
30
125 126
3
3
1
196
100
179
Z
62
1
3
107
16 176 176 144
46 150
79
10
3
2
98 135
10 180
4
8
65
39
47 40 151
131
9
7
81
51
81
147 6
191
6
10
39
83
132
102 5
3
168 78
176
129
110 109
3
5 132
193
152
169
109
42 111
6
3
186 1
10
108
149 194
100
134 7
185 41 3
7
107
140 105 125 182 165
3
8
108 164 44
43
106 133
1
9
97
104 80
101 3
4
Z
105
57 30 30
8 5
10 45 43 43 78
104
6
1
9
3 10
4 99 103
36
5
W
102
91
17
X
75
18 8
33
Figure 10. The completely woven sheet from the “macaroni”. Whisker Weaving joined X to Z, and formed a wedge for each of W and Y. Whisker weaving resolves wedges in a separate pass, after the mesh is otherwise completely woven. A wedge can be “moved” by one of two operations, collapsing or driving[3]. Moving a wedge destroys it and, generally, causes a new one to be created next to it. Either collapsing or driving must be repeated until the geometric boundary is reached, where no new wedge is formed, and the wedge is said to be resolved. In very rare circumstances it is also possible to resolve a wedge by driving it into the blade edges of another wedge. Collapsing moves the wedge backwards by collapsing the base face. Driving moves the wedge forward by opening the blade edges into a new face. Figure 9 shows how a wedge moves as it is collapsed or driven. Note that there is often some flexibility about which direction a wedge can be driven, but a collapsed wedge must follow its base chord. When successful, driving tends to produce elements that are better shaped than collapsing. However, a wedge can only be driven in a fairly regular mesh: there must be two faces that share an edge, each of which contains one of the blade edges. Collapsing, and then fixing up the poor elements, promises to be much more robust. A preprocessing step to resolve a wedge is to “un-join” the base sheetchords which were artificially joined earlier to allow Whisker Weaving to continue. This step is shown in Figure 11 upper left.
Collapsing a wedge To collapse a wedge in the STC: • The three vertices representing the wedge are removed from the base sheet and side sheet diagrams; see Figure 11 center. • The side chords are rejoined in a new way as the base face is collapsed and the side
11
faces are merged; see Figure 11 left. Originally, side chords connect opposite side faces of the wedge (Figure 8). Removing the wedge vertices breaks each of the side chords into two, leaving four dangling whiskers on each of the sheets. The whiskers corresponding to side faces that share a blade edge are adjacent to each other on the base sheet diagram; see Figure 11 center top. As the side faces sharing a blade edge are merged into one, the whiskers corresponding to those faces are joined. 25
128
48
146
128
D
149 159 147
3
3
171 34
59
123
129
20
62
5 152
33
97
10 124
D
10
75 113
35 128
149 159
21
147
3
3
171
34
59
148
163
3
123
129
20
135
7
146
3
5
152
33
97
10 124
D
10
75 113
35 128
149 159
21
147
3
3
171
34
59
148
163
3
1
48
8
22
3
21
114
4
146
22
10
95
98
4
3
75 113
3
9
76
36
33
97
124
104
14
7
4
4
10
35
1
6
135 8
114 4
22
124
5
27
3
98
7
3
3
1
9
76
36
114 4
1
3
3
6
14
98 76
36
25
69
1
1
3 3
5
27
135 8
9
85
62
69
1
48
3
6
112
95
85
62
1
5
119
104
112
95
3
3
128 124
119
104
1
3
25
128 124
119
112
85
69
27
14
123
129
20
148
163
3
5
152
127 127
127
38
38
38
164 3
6
172
3 139
153
6
164
172 69
10
3
6
164
172 139
10
139
10
69 130
69
153
130
153
130
156
156
156
170
170
170
5
5
5
10
10
10
10
10
10
31
44
31
31
44
31
44
31
31
37
37
37 138
138
2 2
2
138 7
4
7
4
58
7
4
77
77
73
77
58
73
58
73
126
99
126
99
8
9
99
8
9
8
9
32 115
32
115
115
32 77
89
77
89
77
89
181
181
181 9
6 182
9
6
9
6
126 182
123
182
123
35
116
35
116
4
5
123
35
116
4
5
4
5
29
29
29
122
6
1
6
122
194
25
17 1
1 186
30
6 1
10
3
190
116
10
3
190
W
190
194
116
25
17 1
1 186
30
125
W
3
3
1
126
W
194
116
25
17
1
1 186
30
125
196
125 126
122
1
10
3
196 3
3
1
126
3
3
1
196 100
100
100
179 179
179
62 62
1
3
62
1
107
16
3
1
107
16
3
107
16
176 144
144
144
150
150
46 46
150
46
79
79
79
10
3
10
3
2
98
10
3
2
98
2
98
135 135
135
10 10
180
10
180 4
8
65
180 4
8
39
47
4
8
40
65
39
40
65
39
47
40
47
151 131
131 151
151
131
9
7
9
7
9
7
147 81
51
81
147
81
51
81
51
81
6
147
81
6
6
191
191 6
10
191 6
10
6
10
39
39
A
39
A
83
132
102 5
3
168 78
176
129
110 109
3
5 132
83
132
102
3
5
78
168
110
129
109 3
5 132
102
3
168
110
109 3
5 132
169
169
193
193
42 109
42 111
6
C
108 100
185 41 3
107
140
42
6
C
1 194
134 7
7
109
152
3
186 10 149
105 125
111
6
C
1 108 194
100
7
185
41 134
3
7
107
140
109
152
3
186 10 149
111
1 108 194
100
7
185
41 134
3
7
107
140 105
182
182
165
165
3
165
3
8
3
8
108
108
108
164
164 44
106
43
3
186 10 149
105
182
8
43
5
78
129
169
193
152
A
83
132
164 106
125
43
106
125
133 44 1
9
44 1
9
1
9 97
133
97
97
133
104
104
104
101
101
80
101
80 3
4
80 3
4 105
57
3
4 105
57
105
57
30
8
8
8 30
5
10
30 5
10
3
78
43
3
78
10
3
9
4
10
4
9 103
18
102
5
91
17
B
75 33
103
36
102
5
91
17
9 103
36
102
18
75
W
8
33
86
W
18
75 8
33
85
86
84
A
1
3
3
87
84
6
86
A
1
3
3
87
83
84
6
3
87
6
83
76
76
82
3
1
A
1
3
83
76
82
B 91
17
B
85
85
104
6
1
9
4 9
8
104
6
1
9 10
5
3
45
43 104
6
1
36
W
5
10
45
45 43 78
1
82
3
1
87
87
87
149
149
149
90 90
90
81
81
88
81
88
82
82
88
82
141
141
141 3
3
3
3
3
3
152
152
152
151
92 92
92
94 94
94
151
151
177 156
156
89
156
89
55
55
89
55
177
1
177
77
1
8
8
77
1
8
77
180
180
155
155 74
74
155 74
180
86
86
90
3
41
7
90
86
7
3
41
90
3
7
41
175
28 175
175
28
134
28
134
134
80
B
80
176
80
1
10
91
142
63
132
B
1
10
91
142
63
132
B
1
10
91
142
63
132
93
93
93
126
126
3
126
3
3
3
3
3
42 42
92
150
42
92
150
92
150
73
73
73
31
31
31
8
8
1
C
27 59
149
7
1
10
45
D 148
138
8
1
27
59
149
7
1
10
45
148
138
C
D
1
C
27
59
149
7
1
10
45
D 148
138
Figure 11. Collapsing a wedge. Left shows the base sheet (top) and side sheet (bottom) of the wedge before collapsing: Chords A-D, B-C, and W cross at the wedge. Center shows the breaking of chords by the removal of the wedge centroid vertices from the base sheet (top) and side sheet (bottom): Two whisker are left for each of A, B, C, D, and W. Left shows the new way of joining side chords as the side faces are merged: A is joined with B, and C is joined with D. Note A-B and C-D do not cross. Removing the wedge vertices shortens the base chord by one hex. The last hex of the base chord becomes the new wedge; see Figure 11 left top. The old base face of the wedge gets collapsed and becomes the blade edges for the new wedge; see Figure 9. Note that Figure 11 left top bears a certain symmetry to Figure 11 right top: the wedge has moved and is now ready to be collapsed again. These two steps are repeated until the object’s boundary is reached. In this particular example, in Figure 11 lower right, a new type of degeneracy called a degree-2 2-cell is formed. That is, there is an STC 2-cell that is a polygon of only two
12
D
D
D C
C
B
B A W
C
A
B
A
W
Figure 12. The changes in the side chords as a wedge is collapsed. edges. This corresponds to two hexahedra sharing two quadrilaterals. Forming this type of degeneracy is quite common when collapsing wedges. A robust strategy to remove all such degeneracies will be described in future work.
Driving a wedge When a wedge is driven its blade opens into a face and the wedge becomes a hexahedron; see Figure 9. The STC changes are the reverse of what happens when a wedge is collapsed: First one STC edge in each of the 2-cells containing the whiskers of the base chord is broken to form side whiskers. Second the side whiskers adjacent to a base whisker are joined. This crosses two chords on the side sheet, and the base whisker is extended to cross the joined chords on the base sheet. The new vertices of crossing are the new wedge. For an example, simply read Figures 11 and 12 from right to left. When driving a wedge, the segments of the side chords that are broken correspond to mesh faces. This pair of faces each contain a blade edge and also share an edge in common. There is often some choice as to which face pair to use. For example, in a completely regular mesh, there are three choices (left, right or straight). However, in an irregular mesh, often the point is reached where no pair of faces meet these criteria and it is impossible to drive; see Figure 13.
Figure 13. To drive, two faces must share an edge and each contain a blade edge (left). Often it is not possible to drive (right).
13
Reaching the surface. Recall that when a wedge is collapsed or driven, the side chords are broken and rejoined in a new way. The analogous changes happen to loops when a wedge eventually reaches the surface mesh. Consider collapsing a wedge whose base face lies on the surface mesh. Suppose mesh edges a, b, c and d define the base face as shown in Figure 14. Also assume that in collapsing the wedge, edge a is merged with b, and likewise edge c is merged with d. There are three cases of what happens to the loop(s) when a surface face is collapsed, depending on the order in which a, b, c and d are passed through by the loop(s). These cases are illustrated in Figure 14.
Case 1: a, b consecutive
Case 2: a, c consecutive
a
b
driving
a
b
c
d
collapsing
c
d
a
b
driving
a
b
c
d
c
d
a
b
c
d
collapsing Case 3: a, d consecutive
a
b
c
d
driving collapsing
Opened
Collapsed
Figure 14. Splicing loops as a face is collapsed or opened. In Case 1 a loop breaks into two separate loops. In Case 2 the loop stays as one loop. In Case 3 two loops are spliced into one. Consider driving a wedge whose blade edges lie on the surface mesh. This corresponds to opening a face on the surface. There are three cases, which are just the reverse of the three cases for collapsing faces in Figure 14. Collapsing a wedge after Whisker Weaving always leads to Case 1 of Figure 14. The reasons are as follows. In Whisker Weaving, the base chord of a wedge always starts from a surface face where a loop self-intersects. Hence Case 3 does not occur. Furthermore, when collapsing a wedge, side chords A and B are joined and chords C and D are joined. When the surface mesh is reached, this breaks the sheet into two; see Figure 15. Hence the loop breaks into two, which is Case 1. The alternative of consistently joining A with C and B with D leads to Case 2, but also always leaves a complicated degeneracy at the original wedge blade. Thus Whisker Weaving avoids collapsing wedges in that way. Figure 15
14
shows the base sheet and Figure 16 shows the surface mesh when base chord W is collapsed all the way to the surface of the “macaroni.”
119 112 95
128 85
104
62
25
69 124
48
124
27
104 135
25
14 3
5
1 3
1
3
6
11
95
8
1 9
22
3
3
76
36
7
128
98
4
146
4
62 1
114
1
10
3
10 21 35 3
128 149
33
48
147
119
124
3
159 3
3
8
20 59 171
75
129
3
135 113 113 152
97 97
163
34
7
5
3
75 75 10
148
112
38
97 97 123
3
33 33 33
130 146 10
172
156 5 170
5
10
31
6
127 113 3
139
85
37 147
69
34 164
4
73
127 77 153
6
10
5
148
153
99 9
69
44
31
69 89 6 115 114
164 2
9
7
98
139 6
124
116
138
10
123
76 138
58
27 31
5 44
2 182
8
4
181 36 7
123 122
3
32
58
4
159
14
77
8
9
10
190 190
25
149 171 126
116 1 194 194 126
128
77 32
9
186 35
181
126
35
22
3
163
4
3
196 196
100
35
29
4
152
179
172
107 1
129
1
59 1 29
10
182
6 21
10
3
6
150 150
79
3 98
3
170 1
8
10
3 156 38 130
65
8
20
5
40
3 131
16
147
62 7
44
51 46 6
10
10
36
10
132
55
2 128
4
25
119
10
124
39 10
112
104
194 37 37
132
132
85
4
95
190
135 69
9
4
39
123 123
3
115 115
47 99 99
1
1
179
77 77
78
62
3 3
3 41
31 5
27
1
48
144
78
9
129
6
3 196 151 42 5
14
186
81
135 9
8 81 98
8
9
76 6
36 114 4
7
152
4
22
146
180
6
3
191
124
147
83
10 97
57
73 41
10 33 75
5
113
35 128
102
149 159
21
147 44
149
7
6
7
150 3
168
3
116
10 7 171 42
110 34
109
3
59
129
20
123
43
89
148
163
3
5
152
193 140
7 169 10
5
134
127
3
111
109 38
131 3
78
100
6 172
164
10
139
8
69 130
43
133
153
186 140
116
1 194
156 170
6
3
100 108 5
9 10
10
8 185 79
31
57
44
3
37
182
4
105 39
107
165
5
1
2
31
149
122 3
4
7 108
78
164 10
40
77 43 80 1
138
73
58
106
97
45 1
101
3
3
104 3
36
99
25 9
10
11
8 5
152
6
3
105
10 6 4
3
9
9
115
5
89
7 8
77
104 129
126
17
181
6
103
9
123
18
182
107
132
102 8 32
91 33
98
75
51 65
116
35 126
5
4
122
6
3
10 190
W
1
194
116
29 25
17
1
1 186
196
126
3
3 100
102
119 112 128 85 25
69
91
103 124
27
1
179
104 5
11
14 3
5
1 3
6 95 1 6
9
22
3 3
76
36
98
4 4 1
3
107
62
16
1
114 150
75 104
10 21 35 62
3
128
79
149 48 124
3
159
46
3
10 8
20
104
59 98
101
171
2
9 1
3
129 135 113 113 152
97 97
163
10 7
75 75 10 8
38
4
123
3
97 33 33 33
147
40 131
130
65
146
39
10
172 135 156
47 5
164
170 10
31 132
80 7
9 33
3 105
37 147
144 34 164 6
51
81 151
4
73
81
127 77 4
39
153
10
182
3
45
5
6
108
148
99 9 132
165
83 180 78
69 89 191 6
3
115
5 102
139 6 42
168
129
110
5
109
116
3
9
185
10
123 138
31 41 105 5 44 193 44
2
169 152
109 182 6
181
3 111 8 7
106
134 122
194
10 3 3 10
186
7
1
149
108
58
100
194 133
8
185 190 190
25 7
3
116 140
107 1 194 194
105
126 186
182
134
165 77 8
3
32
9
108
133 164
186
8
43
106
9
126
1 97
3
80 104 101 45
4
43 100
3
43
57
105
196 196
100
35 4
10
5
78
1
104
6
179 107 1
3
9 193 10
4 9 3
36
107
103
18
1
1 29
10
6
150 150 5
102 79
3 17
91
18
W
98
75 8
33
169
3 1
8
65 40
3 131 111 16
147
62 7
144
51 46 6
180
10
62 3 132
3
2
191 10
39 1
10 108
132 4
135 78
39 168
3 47
144
9
129
151 42
109
5 81
81
6 151 152
180
6 41
3
191 83
3
5 102 46 44
149
135 168 16
10 109
7
102
110 109
3
193 140
7 169 134
3
111
109
8
43
133 186 1
10
81
194
5 100 108
9 8 185
57
10
3 47
182
4
105 107
165
2 110
3
108
78
164 10 43 80 1 106
97
45
4 6
1
101
104 3
36
3 5
105
9
10 6 4 9
9
5
104
39 83 17
103
18
102 81
8 91 33
75
Figure 15. Eventually, a collapsing wedge reaches the object surface and its loop and sheet are broken into two. The sheet diagrams are angularly scaled and smoothed so that they resemble disks. The “broken” gap on each loop is next filled with a loop edge.
Wedges for refinement In addition to finishing a mesh of a volume, a wedge may also be used to refine a completed mesh. To coarsen a mesh, a surface face is collapsed, forming a wedge which is then resolved by collapsing. This can always be done, but element quality may suffer. To make a mesh more fine, two surface edges that share a vertex are opened into a face, forming a wedge which is then driven. In mapping algorithms refinement is usually propagated along all three principle directions. However, wedges only propagate in one direction. In the case of driving through a fairly regular mesh, the direction of propagation may curve according to the desires of an analyst. However, if the mesh is irregular, the wedge may become stuck in the middle of the mesh with nowhere to drive. Any surface face may be collapsed: its chord need not be, and usually is not, the selfintersection of a loop. This is Case 3 from left to right, which was forbidden for weaving. However, once the face is collapsed, the loops join, splicing the sheets into one. Thus the wedge still exists on a self-intersecting sheet. The base chord of the wedge is necessarily a chord of some other intersection of the loops. When the chord is completely collapsed, the sheet breaks into two again (by Case 1). Figures 17 and 18 illustrate this sequence for a simple 4x4x4 mesh of a cube.
15
4 5
5
4
2
1
1
2 Z
Y X 6
6
3 3 1 X 5
3
Y
6
4
Z 2
Figure 16. The surface mesh after collapsing self-intersecting chord W. The loop containing W was split into two. Note the degenerate faces formed near where W collapsed: two surface quadrilaterals share two edges and look like triangles.
A
A
C
C
B
B
D
D
Figure 17. Splicing two sheets by a face collapse (Case 3). Originally A connects to D, and B connects to C on the far side of the cube. After the wedge collapses, the loops split back into two: on the far side, A connects to B, and C connects to D. Note that a non-surface face of a completed mesh may also be collapsed. This creates two wedges. In this case each base chord need not start at the self intersection of a loop. However, the base chords are the self-intersection of a sheet: The sheets for the two loops
16
27
23 10
9
31
19 11
8 40
38 67
11
2
26 12
12
23
27
57 62 19
31
55
33 2 2
10
71
6
2
67
5
5
8
11
23
27
19
12
31
12
11
26 2 2
6
10
71 38 40
2
67 8
5
11
5
58 12
12
64
11
26
38 33
40 55 6
10
71
75
34 57 56 62 6
6 5
5
6
6
33
55
75
10
34 57 56 10
75 62
14
79
58
6
6
64 7
7
34 19
56
31
14
79
64
50
7
19
31
34
7
46
8
19
11
50
7
7
31
79
14
34
46 50
8
37
1
10
11
42
11
8
2
10 46
34
37
1
10
42
21
7
3
95
39
42 51
21
7
44
3
58 95 6
39
4
91
40
60
23
51
44 42
57
6
4
37
5
7 46
59 91
87
40
62
39
95
23
1
9
60
12
6
45
13
42
5
7
3
7
38
57 46
87
37 83
62
58
59
1
5
21
17
12
6
13
40
91
45
2
12
24
54 38
83 3
58
4
4
6
37
1
23
5
50
17
22
21
2
12
24
54
4
44
51
3
23
50
21
62 7
58 59
13
83
6
12
57
46
42
60
58
5
87
23
22
23
27
19 45
31
2 2
10
2 38
67
5
11
54
24
1
8
38 11 12
12
26 40
6
37
71
5
5
33
17
55
10
75
2
12
62
6
50
23
6
56
4
3
34
14
79
64 7
21
22
7
31
19
34
46
8
11
50
37
1
10
42
21
23
27
19
31
7
3
95
39
2 2
10
2
67 8
51
11
44
26
12
12
11
40
6
6
4
71
91
40
23
5
5
60
55
33
42
5
10
7
75
87
62 6
62
46
6
59
12
6
13 56
14
45
79
83
7
58
38
7
1
5 37
34
17 31
2
12
24
54
3
4
64 34
46 19
8
11
23
50
22
21
50
37
1
10
42
21
44
7
3
51
95
39
60
6
4
91
40
23
42
5
7 46
87
62 59
12
6
13
45
83
58
1
5
37
17
2
12
24
54
3
4
23
50
22
21
71 10
75
67 5 6
2
14
6
6
12 7
5
79
31 26 11
7 55 56
34
2
8
12
40 31 19
27
46
34
10
11 62
33
11
64 50 3
22 8
10
1
42
37
19
21
59 37 44
60 51 4
3
42
21
39 17
7
1
95
24
13
45 46 23 12
4
50
40
6
12
7
5 91
83
13
6
5
62
54 58 87
10
58
62
6
54
2
14
6
13
6
7
7
5
5
40
50
4
12
23
46
34
45
2
8
12
17
19
39
21
3
4
34
51
33
60
59
11
37
37
1
8
19
42
10
3
22
50 21
64
44
62
40
42 11
13
10
46
27
31
7
1
95
24
56
55
26
11
7
31
79
12
6
12
6
83
91
5
5
67
75
87
71
Figure 18. A surface face is collapsed, splicing two loops into one and creating a wedge. The wedge is then collapsed, until the surface mesh is reached again and the loop breaks into two again. Note that each final sheet contains pieces of both of the original sheets.
17
are joined smoothly between the two wedge singularities, but intersect each other along the base chords. Similarly, any surface edge pair that shares a node and are contained in two internal faces that share an internal edge may be opened into the base face of a wedge. Any one of the three cases is possible. Most likely, a pair of loops will be spliced into one by Case 1, then split back into two by Case 3 when the wedge is resolved. Figure 19 illustrates a wedge that 59
63 6
7
55
44 5
4 24 52
51
43
12
3 40
51
wedge base chord
Z
22 25
314
71
72
4
13 73 70 61
26
3
2
38
47 62 69 37 58
Z
57 2
13 68 48
27
244 65
Y
66 67 1
Y
1 18
28
41 12 35 36 12
7
82
94 5
6 9
86
90
Figure 19. A regular mesh with a wedge driven through it. is opened at Y, then driven in and curved back near its starting point to Z. Note that the areas of the sheet inside and outside of the thick base chord were originally on separate sheets that were spliced together. There is also another sheet with the same basic structure passing perpendicularly through faces Y and Z. The intersection of these two sheets forms the thick base chord in Figure 19.
6. Conclusions The spatial twist continuum (STC) captures the connectivity of a hexahedral mesh. It also compactly represents global connectivity information that is non-obvious in either a hexahedral or simple dual representation of a mesh. The STC is used to guide an advancing-front type of algorithm called Whisker Weaving. A certain type of degeneracy called a wedge sometimes arises as Whisker Weaving builds the STC. A wedge can be easily detected and two strategies (collapsing and driving) exist for resolving it. Driving is not always possible, but yields well shaped elements when successful. Although collapsing always removes the wedge, another type of degeneracy called a degree-2 2-cell can result. Driving and collapsing wedges has been implemented in the CUBIT mesh generation environment developed at Sandia National Labs. A robust
18
algorithm to remove degree-2 2-cells will be described in future work. Once wedges are resolved, the STC can be converted into a hexahedral mesh. Wedges can also be used to coarsen and refine a completed mesh.
References 1. P. Murdoch, S. Benzley, T. D. Blacker, S. A. Mitchell, “The spatial twist continuum captures the connectivity of an all-hexahedral mesh”. Submitted to Int. J. Numer. Methods Eng. (1995). 2. T. J. Tautges, T. D. Blacker, S. A. Mitchell, “The Whisker Weaving algorithm: a connectivity based method for constructing all–hexahedral finite element meshes”. Submitted to Int. J. Numer. Methods Eng. (1995). 3. T. D. Blacker, R. J. Meyers, “Seams and wedges in Plastering: a 3-D hexahedral mesh generation algorithm”. Engineering with Computers, 9:83-93 (1993).
19
20