1 #ifndef PATRAN_ORDER_H
2 #define PATRAN_ORDER_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 namespace moab
7 {
8 #endif
9
10 /* Define maps that, when indexed by the PATRAN connectivity index return
11 the corresponding index in the MOAB connectivity. */
12
13 static const int patran_tet8_order[] = { 0, 1, 2, 3, 7, 5, 6, 4 };
14 static const int patran_tet9_order[] = { 0, 1, 2, 3, 8, 7, 5, 6, 4 };
15 static const int patran_tet14_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 11, 12, 10 };
16 static const int patran_tet15_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 14, 13, 11, 12, 10 };
17
18 static const int patran_hex14_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 12, 13, 11, 9, 8, 10 };
19 static const int patran_hex15_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 14, 12, 13, 11, 9, 8, 10 };
20 static const int patran_hex26_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
21 13, 14, 15, 16, 17, 18, 19, 24, 25, 23, 21, 20, 22 };
22 static const int patran_hex27_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
23 14, 15, 16, 17, 18, 19, 26, 24, 25, 23, 21, 20, 22 };
24
25 static const int patran_pri11_order[] = { 0, 1, 2, 3, 4, 5, 9, 10, 7, 8, 6 };
26 static const int patran_pri12_order[] = { 0, 1, 2, 3, 4, 5, 11, 9, 10, 7, 8, 6 };
27 static const int patran_pri20_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 19, 16, 17, 15 };
28 static const int patran_pri21_order[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
29 11, 12, 13, 14, 20, 18, 19, 16, 17, 15 };
30
31 /* Define list of maps for an element type, indexed by the number
32 of nodes in the element. Entries are NULL where MBCN connectivity
33 is the same as PATRAN (or the number of nodes is invalid.) */
34
35 static const int* const patran_null_order[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
36 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
37 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
38 static const int* const patran_tet_order[] = { 0,
39 0,
40 0,
41 0,
42 0,
43 0,
44 0,
45 0,
46 patran_tet8_order,
47 patran_tet9_order,
48 0,
49 0,
50 0,
51 0,
52 patran_tet14_order,
53 patran_tet15_order,
54 0,
55 0,
56 0,
57 0,
58 0,
59 0,
60 0,
61 0,
62 0,
63 0,
64 0,
65 0,
66 0,
67 0,
68 0,
69 0,
70 0,
71 0,
72 0,
73 0,
74 0,
75 0,
76 0,
77 0,
78 0,
79 0,
80 0,
81 0,
82 0,
83 0,
84 0,
85 0,
86 0,
87 0,
88 0,
89 0,
90 0,
91 0,
92 0,
93 0,
94 0 };
95 static const int* const patran_hex_order[] = { 0,
96 0,
97 0,
98 0,
99 0,
100 0,
101 0,
102 0,
103 0,
104 0,
105 0,
106 0,
107 0,
108 0,
109 patran_hex14_order,
110 patran_hex15_order,
111 0,
112 0,
113 0,
114 0,
115 0,
116 0,
117 0,
118 0,
119 0,
120 0,
121 patran_hex26_order,
122 patran_hex27_order,
123 0,
124 0,
125 0,
126 0,
127 0,
128 0,
129 0,
130 0,
131 0,
132 0,
133 0,
134 0,
135 0,
136 0,
137 0,
138 0,
139 0,
140 0,
141 0,
142 0,
143 0,
144 0,
145 0,
146 0,
147 0,
148 0,
149 0,
150 0,
151 0,
152 0,
153 0,
154 0,
155 0,
156 0,
157 0,
158 0,
159 0 };
160 static const int* const patran_pri_order[] = { 0,
161 0,
162 0,
163 0,
164 0,
165 0,
166 0,
167 0,
168 0,
169 0,
170 0,
171 patran_pri11_order,
172 patran_pri12_order,
173 0,
174 0,
175 0,
176 0,
177 0,
178 0,
179 0,
180 patran_pri20_order,
181 patran_pri21_order,
182 0,
183 0,
184 0,
185 0,
186 0,
187 0,
188 0,
189 0,
190 0,
191 0,
192 0,
193 0,
194 0,
195 0,
196 0,
197 0,
198 0,
199 0,
200 0,
201 0,
202 0,
203 0,
204 0,
205 0,
206 0,
207 0,
208 0,
209 0,
210 0,
211 0,
212 0,
213 0,
214 0,
215 0,
216 0,
217 0,
218 0,
219 0,
220 0,
221 0,
222 0,
223 0,
224 0 };
225
226 /* Define matrix of maps indexed by element topology (EntityType) and
227 number of nodes. Entries are NULL where MBCN connectivity
228 is the same as PATRAN (or the number of nodes is invalid.) */
229
230 static const int* const* const patran_elem_order_map[] = { patran_null_order, /* MBVERTEX */
231 patran_null_order, /* MBEDGE */
232 patran_null_order, /* MBTRI */
233 patran_null_order, /* MBQUAD */
234 patran_null_order, /* MBPOLYGON */
235 patran_tet_order, /* MBTET */
236 patran_null_order, /* MBPYRAMID */
237 patran_pri_order, /* MBPRISM */
238 patran_null_order, /* MBKNIFE */
239 patran_hex_order, /* MBHEX */
240 patran_null_order, /* MBPOLYHEDRON */
241 patran_null_order };
242
243 #ifdef __cplusplus
244 } // namespace moab
245
246 /* extern "C" */
247 } /* namespace moab */
248 #endif
249
250 #endif