/[escript]/trunk/finley/src/ReferenceElements.cpp
ViewVC logotype

Diff of /trunk/finley/src/ReferenceElements.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4491 by jfenwick, Tue Apr 2 04:46:45 2013 UTC revision 4492 by caltinay, Tue Jul 2 01:44:11 2013 UTC
# Line 14  Line 14 
14  *****************************************************************************/  *****************************************************************************/
15    
16    
17  /************************************************************************************/  /****************************************************************************
18    
19  /*   Finley: Reference elements */    Finley: Reference elements
20    
21  /************************************************************************************/  *****************************************************************************/
22    
23  #include "ReferenceElements.h"  #include "ReferenceElements.h"
24  #include "esysUtils/mem.h"  #include "esysUtils/mem.h"
25  #include <string.h>  #include <cstring>
26    #include <algorithm> // std::max
 #define MAX(X,Y) ((X)>(Y)?(X):(Y))  
   
 /************************************************************************************  
27    
28      this list has been generated by generateReferenceElementList.py:.  namespace finley {
 */  
29    
30  Finley_ReferenceElementInfo Finley_ReferenceElement_InfoList[]={  /// this list has been generated by generateReferenceElementList.py
31  { Finley_Point1, "Point1", 1, 1, 1, { 0, 1 }, Finley_Point1,  ReferenceElementInfo ReferenceElement_InfoList[]={
32    { Point1, "Point1", 1, 1, 1, { 0, 1 }, Point1,
33      { 0 }, PointQuad, Point1Shape, Point1Shape,      { 0 }, PointQuad, Point1Shape, Point1Shape,
34      { 0 },      { 0 },
35    1, { 0 },    1, { 0 },
36    1, { 0 },    1, { 0 },
37      { 0 },      { 0 },
38      { -1 } },      { -1 } },
39  { Finley_Line2, "Line2", 2, 1, 1, { 0, 2 }, Finley_Line2,  { Line2, "Line2", 2, 1, 1, { 0, 2 }, Line2,
40      { 0, 1 }, LineQuad, Line2Shape, Line2Shape,      { 0, 1 }, LineQuad, Line2Shape, Line2Shape,
41      { 0, 1 },      { 0, 1 },
42    2, { 0, 1 },    2, { 0, 1 },
43    2, { 0, 1 },    2, { 0, 1 },
44      { 1, 0 },      { 1, 0 },
45      { -1 } },      { -1 } },
46  { Finley_Line3, "Line3", 3, 1, 1, { 0, 3 }, Finley_Line2,  { Line3, "Line3", 3, 1, 1, { 0, 3 }, Line2,
47      { 0, 1 }, LineQuad, Line3Shape, Line3Shape,      { 0, 1 }, LineQuad, Line3Shape, Line3Shape,
48      { 0, 1, 2 },      { 0, 1, 2 },
49    3, { 0, 1, 2 },    3, { 0, 1, 2 },
50    3, { 0, 1, 2 },    3, { 0, 1, 2 },
51      { 1, 0, 2 },      { 1, 0, 2 },
52      { -1 } },      { -1 } },
53  { Finley_Line4, "Line4", 4, 1, 1, { 0, 4 }, Finley_Line2,  { Line4, "Line4", 4, 1, 1, { 0, 4 }, Line2,
54      { 0, 1 }, LineQuad, Line4Shape, Line4Shape,      { 0, 1 }, LineQuad, Line4Shape, Line4Shape,
55      { 0, 1, 2, 3 },      { 0, 1, 2, 3 },
56    4, { 0, 1, 2, 3 },    4, { 0, 1, 2, 3 },
57    4, { 0, 1, 2, 3 },    4, { 0, 1, 2, 3 },
58      { 1, 0, 3, 2 },      { 1, 0, 3, 2 },
59      { -1 } },      { -1 } },
60  { Finley_Tri3, "Tri3", 3, 1, 1, { 0, 3 }, Finley_Tri3,  { Tri3, "Tri3", 3, 1, 1, { 0, 3 }, Tri3,
61      { 0, 1, 2 }, TriQuad, Tri3Shape, Tri3Shape,      { 0, 1, 2 }, TriQuad, Tri3Shape, Tri3Shape,
62      { 0, 1, 2 },      { 0, 1, 2 },
63    3, { 0, 1, 2 },    3, { 0, 1, 2 },
64    3, { 0, 1, 2 },    3, { 0, 1, 2 },
65      { 1, 2, 0 },      { 1, 2, 0 },
66      { 0, 2, 1 } },      { 0, 2, 1 } },
67  { Finley_Tri6, "Tri6", 6, 1, 1, { 0, 6 }, Finley_Tri3,  { Tri6, "Tri6", 6, 1, 1, { 0, 6 }, Tri3,
68      { 0, 1, 2 }, TriQuad, Tri6Shape, Tri6Shape,      { 0, 1, 2 }, TriQuad, Tri6Shape, Tri6Shape,
69      { 0, 1, 2, 3, 4, 5 },      { 0, 1, 2, 3, 4, 5 },
70    6, { 0, 1, 2, 3, 4, 5 },    6, { 0, 1, 2, 3, 4, 5 },
71    6, { 0, 1, 2, 3, 4, 5 },    6, { 0, 1, 2, 3, 4, 5 },
72      { 1, 2, 0, 4, 5, 3 },      { 1, 2, 0, 4, 5, 3 },
73      { 0, 2, 1, 5, 4, 3 } },      { 0, 2, 1, 5, 4, 3 } },
74  { Finley_Tri9, "Tri9", 9, 1, 1, { 0, 9 }, Finley_Tri3,  { Tri9, "Tri9", 9, 1, 1, { 0, 9 }, Tri3,
75      { 0, 1, 2 }, TriQuad, Tri9Shape, Tri9Shape,      { 0, 1, 2 }, TriQuad, Tri9Shape, Tri9Shape,
76      { 0, 1, 2, 3, 4, 5, 6, 7, 8 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
77    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
78    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
79      { 1, 2, 0, 5, 6, 7, 8, 3, 4 },      { 1, 2, 0, 5, 6, 7, 8, 3, 4 },
80      { 0, 2, 1, 8, 7, 6, 5, 4, 3 } },      { 0, 2, 1, 8, 7, 6, 5, 4, 3 } },
81  { Finley_Tri10, "Tri10", 10, 1, 1, { 0, 10 }, Finley_Tri3,  { Tri10, "Tri10", 10, 1, 1, { 0, 10 }, Tri3,
82      { 0, 1, 2 }, TriQuad, Tri10Shape, Tri10Shape,      { 0, 1, 2 }, TriQuad, Tri10Shape, Tri10Shape,
83      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
84    10, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },    10, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
85    10, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },    10, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
86      { 1, 2, 0, 5, 6, 7, 8, 3, 4, 9 },      { 1, 2, 0, 5, 6, 7, 8, 3, 4, 9 },
87      { 0, 2, 1, 8, 7, 6, 5, 4, 3, 9 } },      { 0, 2, 1, 8, 7, 6, 5, 4, 3, 9 } },
88  { Finley_Rec4, "Rec4", 4, 1, 1, { 0, 4 }, Finley_Rec4,  { Rec4, "Rec4", 4, 1, 1, { 0, 4 }, Rec4,
89      { 0, 1, 2, 3 }, RecQuad, Rec4Shape, Rec4Shape,      { 0, 1, 2, 3 }, RecQuad, Rec4Shape, Rec4Shape,
90      { 0, 1, 2, 3 },      { 0, 1, 2, 3 },
91    4, { 0, 1, 2, 3 },    4, { 0, 1, 2, 3 },
92    4, { 0, 1, 2, 3 },    4, { 0, 1, 2, 3 },
93      { 1, 2, 3, 0 },      { 1, 2, 3, 0 },
94      { 0, 3, 2, 1 } },      { 0, 3, 2, 1 } },
95  { Finley_Rec8, "Rec8", 8, 1, 1, { 0, 8 }, Finley_Rec4,  { Rec8, "Rec8", 8, 1, 1, { 0, 8 }, Rec4,
96      { 0, 1, 2, 3 }, RecQuad, Rec8Shape, Rec8Shape,      { 0, 1, 2, 3 }, RecQuad, Rec8Shape, Rec8Shape,
97      { 0, 1, 2, 3, 4, 5, 6, 7 },      { 0, 1, 2, 3, 4, 5, 6, 7 },
98    8, { 0, 1, 2, 3, 4, 5, 6, 7 },    8, { 0, 1, 2, 3, 4, 5, 6, 7 },
99    8, { 0, 1, 2, 3, 4, 5, 6, 7 },    8, { 0, 1, 2, 3, 4, 5, 6, 7 },
100      { 1, 2, 3, 0, 5, 6, 7, 4 },      { 1, 2, 3, 0, 5, 6, 7, 4 },
101      { 0, 3, 2, 1, 7, 6, 5, 4 } },      { 0, 3, 2, 1, 7, 6, 5, 4 } },
102  { Finley_Rec9, "Rec9", 9, 1, 1, { 0, 9 }, Finley_Rec4,  { Rec9, "Rec9", 9, 1, 1, { 0, 9 }, Rec4,
103      { 0, 1, 2, 3 }, RecQuad, Rec9Shape, Rec9Shape,      { 0, 1, 2, 3 }, RecQuad, Rec9Shape, Rec9Shape,
104      { 0, 1, 2, 3, 4, 5, 6, 7, 8 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
105    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
106    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
107      { 1, 2, 3, 0, 5, 6, 7, 4, 8 },      { 1, 2, 3, 0, 5, 6, 7, 4, 8 },
108      { 0, 3, 2, 1, 7, 6, 5, 4, 8 } },      { 0, 3, 2, 1, 7, 6, 5, 4, 8 } },
109  { Finley_Rec12, "Rec12", 12, 1, 1, { 0, 12 }, Finley_Rec4,  { Rec12, "Rec12", 12, 1, 1, { 0, 12 }, Rec4,
110      { 0, 1, 2, 3 }, RecQuad, Rec12Shape, Rec12Shape,      { 0, 1, 2, 3 }, RecQuad, Rec12Shape, Rec12Shape,
111      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
112    12, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },    12, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
113    12, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },    12, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
114      { 1, 2, 3, 0, 6, 7, 8, 9, 10, 11, 4, 5 },      { 1, 2, 3, 0, 6, 7, 8, 9, 10, 11, 4, 5 },
115      { 0, 3, 2, 1, 11, 10, 9, 8, 7, 6, 5, 4 } },      { 0, 3, 2, 1, 11, 10, 9, 8, 7, 6, 5, 4 } },
116  { Finley_Rec16, "Rec16", 16, 1, 1, { 0, 16 }, Finley_Rec4,  { Rec16, "Rec16", 16, 1, 1, { 0, 16 }, Rec4,
117      { 0, 1, 2, 3 }, RecQuad, Rec16Shape, Rec16Shape,      { 0, 1, 2, 3 }, RecQuad, Rec16Shape, Rec16Shape,
118      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
119    16, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },    16, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
120    16, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },    16, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
121      { 1, 2, 3, 0, 6, 7, 8, 9, 10, 11, 4, 5, 13, 14, 15, 12 },      { 1, 2, 3, 0, 6, 7, 8, 9, 10, 11, 4, 5, 13, 14, 15, 12 },
122      { 0, 3, 2, 1, 11, 10, 9, 8, 7, 6, 5, 4, 12, 15, 14, 13 } },      { 0, 3, 2, 1, 11, 10, 9, 8, 7, 6, 5, 4, 12, 15, 14, 13 } },
123  { Finley_Tet4, "Tet4", 4, 1, 1, { 0, 4 }, Finley_Tet4,  { Tet4, "Tet4", 4, 1, 1, { 0, 4 }, Tet4,
124      { 0, 1, 2, 3 }, TetQuad, Tet4Shape, Tet4Shape,      { 0, 1, 2, 3 }, TetQuad, Tet4Shape, Tet4Shape,
125      { 0, 1, 2, 3 },      { 0, 1, 2, 3 },
126    4, { 0, 1, 2, 3 },    4, { 0, 1, 2, 3 },
127    4, { 0, 1, 2, 3 },    4, { 0, 1, 2, 3 },
128      { -1 },      { -1 },
129      { -1 } },      { -1 } },
130  { Finley_Tet10, "Tet10", 10, 1, 1, { 0, 10 }, Finley_Tet4,  { Tet10, "Tet10", 10, 1, 1, { 0, 10 }, Tet4,
131      { 0, 1, 2, 3 }, TetQuad, Tet10Shape, Tet10Shape,      { 0, 1, 2, 3 }, TetQuad, Tet10Shape, Tet10Shape,
132      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
133    10, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },    10, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
134    10, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },    10, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
135      { -1 },      { -1 },
136      { -1 } },      { -1 } },
137  { Finley_Tet16, "Tet16", 16, 1, 1, { 0, 16 }, Finley_Tet4,  { Tet16, "Tet16", 16, 1, 1, { 0, 16 }, Tet4,
138      { 0, 1, 2, 3 }, TetQuad, Tet16Shape, Tet16Shape,      { 0, 1, 2, 3 }, TetQuad, Tet16Shape, Tet16Shape,
139      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
140    16, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },    16, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
141    16, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },    16, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
142      { -1 },      { -1 },
143      { -1 } },      { -1 } },
144  { Finley_Hex8, "Hex8", 8, 1, 1, { 0, 8 }, Finley_Hex8,  { Hex8, "Hex8", 8, 1, 1, { 0, 8 }, Hex8,
145      { 0, 1, 2, 3, 4, 5, 6, 7 }, HexQuad, Hex8Shape, Hex8Shape,      { 0, 1, 2, 3, 4, 5, 6, 7 }, HexQuad, Hex8Shape, Hex8Shape,
146      { 0, 1, 2, 3, 4, 5, 6, 7 },      { 0, 1, 2, 3, 4, 5, 6, 7 },
147    8, { 0, 1, 2, 3, 4, 5, 6, 7 },    8, { 0, 1, 2, 3, 4, 5, 6, 7 },
148    8, { 0, 1, 2, 3, 4, 5, 6, 7 },    8, { 0, 1, 2, 3, 4, 5, 6, 7 },
149      { -1 },      { -1 },
150      { -1 } },      { -1 } },
151  { Finley_Hex20, "Hex20", 20, 1, 1, { 0, 20 }, Finley_Hex8,  { Hex20, "Hex20", 20, 1, 1, { 0, 20 }, Hex8,
152      { 0, 1, 2, 3, 4, 5, 6, 7 }, HexQuad, Hex20Shape, Hex20Shape,      { 0, 1, 2, 3, 4, 5, 6, 7 }, HexQuad, Hex20Shape, Hex20Shape,
153      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },
154    20, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },    20, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },
155    20, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },    20, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },
156      { -1 },      { -1 },
157      { -1 } },      { -1 } },
158  { Finley_Hex27, "Hex27", 27, 1, 1, { 0, 27 }, Finley_Hex8,  { Hex27, "Hex27", 27, 1, 1, { 0, 27 }, Hex8,
159      { 0, 1, 2, 3, 4, 5, 6, 7 }, HexQuad, Hex27Shape, Hex27Shape,      { 0, 1, 2, 3, 4, 5, 6, 7 }, HexQuad, Hex27Shape, Hex27Shape,
160      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 },
161    27, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 },    27, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 },
162    27, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 },    27, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 },
163      { -1 },      { -1 },
164      { -1 } },      { -1 } },
165  { Finley_Hex32, "Hex32", 32, 1, 1, { 0, 32 }, Finley_Hex8,  { Hex32, "Hex32", 32, 1, 1, { 0, 32 }, Hex8,
166      { 0, 1, 2, 3, 4, 5, 6, 7 }, HexQuad, Hex32Shape, Hex32Shape,      { 0, 1, 2, 3, 4, 5, 6, 7 }, HexQuad, Hex32Shape, Hex32Shape,
167      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
168    32, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },    32, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
169    32, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },    32, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
170      { -1 },      { -1 },
171      { -1 } },      { -1 } },
172  { Finley_Line2Face, "Line2Face", 2, 1, 1, { 0, 2 }, Finley_Line2Face,  { Line2Face, "Line2Face", 2, 1, 1, { 0, 2 }, Line2Face,
173      { 0, 1 }, PointQuad, Line2Shape, Line2Shape,      { 0, 1 }, PointQuad, Line2Shape, Line2Shape,
174      { 0, 1 },      { 0, 1 },
175    1, { 0 },    1, { 0 },
176    1, { 0 },    1, { 0 },
177      { 0, 1, 2 },      { 0, 1, 2 },
178      { -1 } },      { -1 } },
179  { Finley_Line3Face, "Line3Face", 3, 1, 1, { 0, 3 }, Finley_Line2Face,  { Line3Face, "Line3Face", 3, 1, 1, { 0, 3 }, Line2Face,
180      { 0, 1 }, PointQuad, Line3Shape, Line3Shape,      { 0, 1 }, PointQuad, Line3Shape, Line3Shape,
181      { 0, 1, 2 },      { 0, 1, 2 },
182    1, { 0 },    1, { 0 },
183    1, { 0 },    1, { 0 },
184      { 0, 1, 2 },      { 0, 1, 2 },
185      { -1 } },      { -1 } },
186  { Finley_Line4Face, "Line4Face", 4, 1, 1, { 0, 4 }, Finley_Line2Face,  { Line4Face, "Line4Face", 4, 1, 1, { 0, 4 }, Line2Face,
187      { 0, 1 }, PointQuad, Line4Shape, Line4Shape,      { 0, 1 }, PointQuad, Line4Shape, Line4Shape,
188      { 0, 1, 2, 3 },      { 0, 1, 2, 3 },
189    1, { 0 },    1, { 0 },
190    1, { 0 },    1, { 0 },
191      { 0, 1, 2 },      { 0, 1, 2 },
192      { -1 } },      { -1 } },
193  { Finley_Tri3Face, "Tri3Face", 3, 1, 1, { 0, 3 }, Finley_Tri3Face,  { Tri3Face, "Tri3Face", 3, 1, 1, { 0, 3 }, Tri3Face,
194      { 0, 1, 2 }, LineQuad, Tri3Shape, Tri3Shape,      { 0, 1, 2 }, LineQuad, Tri3Shape, Tri3Shape,
195      { 0, 1, 2 },      { 0, 1, 2 },
196    2, { 0, 1 },    2, { 0, 1 },
197    2, { 0, 1 },    2, { 0, 1 },
198      { 1, 0, 2 },      { 1, 0, 2 },
199      { -1 } },      { -1 } },
200  { Finley_Tri6Face, "Tri6Face", 6, 1, 1, { 0, 6 }, Finley_Tri3Face,  { Tri6Face, "Tri6Face", 6, 1, 1, { 0, 6 }, Tri3Face,
201      { 0, 1, 2 }, LineQuad, Tri6Shape, Tri6Shape,      { 0, 1, 2 }, LineQuad, Tri6Shape, Tri6Shape,
202      { 0, 1, 2, 3, 4, 5 },      { 0, 1, 2, 3, 4, 5 },
203    3, { 0, 1, 3 },    3, { 0, 1, 3 },
204    3, { 0, 1, 3 },    3, { 0, 1, 3 },
205      { 1, 0, 2, 3, 5, 4 },      { 1, 0, 2, 3, 5, 4 },
206      { -1 } },      { -1 } },
207  { Finley_Tri9Face, "Tri9Face", 9, 1, 1, { 0, 9 }, Finley_Tri3Face,  { Tri9Face, "Tri9Face", 9, 1, 1, { 0, 9 }, Tri3Face,
208      { 0, 1, 2 }, LineQuad, Tri9Shape, Tri9Shape,      { 0, 1, 2 }, LineQuad, Tri9Shape, Tri9Shape,
209      { 0, 1, 2, 3, 4, 5, 6, 7, 8 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
210    4, { 0, 1, 3, 4 },    4, { 0, 1, 3, 4 },
211    4, { 0, 1, 3, 4 },    4, { 0, 1, 3, 4 },
212      { 1, 0, 2, 4, 3, 7, 8, 6, 5 },      { 1, 0, 2, 4, 3, 7, 8, 6, 5 },
213      { -1 } },      { -1 } },
214  { Finley_Tri10Face, "Tri10Face", 10, 1, 1, { 0, 10 }, Finley_Tri3Face,  { Tri10Face, "Tri10Face", 10, 1, 1, { 0, 10 }, Tri3Face,
215      { 0, 1, 2 }, LineQuad, Tri10Shape, Tri10Shape,      { 0, 1, 2 }, LineQuad, Tri10Shape, Tri10Shape,
216      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
217    4, { 0, 1, 3, 4 },    4, { 0, 1, 3, 4 },
218    4, { 0, 1, 3, 4 },    4, { 0, 1, 3, 4 },
219      { 1, 0, 2, 4, 3, 7, 8, 6, 5, 9 },      { 1, 0, 2, 4, 3, 7, 8, 6, 5, 9 },
220      { -1 } },      { -1 } },
221  { Finley_Rec4Face, "Rec4Face", 4, 1, 1, { 0, 4 }, Finley_Rec4Face,  { Rec4Face, "Rec4Face", 4, 1, 1, { 0, 4 }, Rec4Face,
222      { 0, 1, 2, 3 }, LineQuad, Rec4Shape, Rec4Shape,      { 0, 1, 2, 3 }, LineQuad, Rec4Shape, Rec4Shape,
223      { 0, 1, 2, 3 },      { 0, 1, 2, 3 },
224    2, { 0, 1 },    2, { 0, 1 },
225    2, { 0, 1 },    2, { 0, 1 },
226      { 1, 0, 3, 2 },      { 1, 0, 3, 2 },
227      { -1 } },      { -1 } },
228  { Finley_Rec8Face, "Rec8Face", 8, 1, 1, { 0, 8 }, Finley_Rec4Face,  { Rec8Face, "Rec8Face", 8, 1, 1, { 0, 8 }, Rec4Face,
229      { 0, 1, 2, 3 }, LineQuad, Rec8Shape, Rec8Shape,      { 0, 1, 2, 3 }, LineQuad, Rec8Shape, Rec8Shape,
230      { 0, 1, 2, 3, 4, 5, 6, 7 },      { 0, 1, 2, 3, 4, 5, 6, 7 },
231    3, { 0, 1, 4 },    3, { 0, 1, 4 },
232    3, { 0, 1, 4 },    3, { 0, 1, 4 },
233      { 1, 0, 3, 2, 4, 7, 6, 5 },      { 1, 0, 3, 2, 4, 7, 6, 5 },
234      { -1 } },      { -1 } },
235  { Finley_Rec9Face, "Rec9Face", 9, 1, 1, { 0, 9 }, Finley_Rec4Face,  { Rec9Face, "Rec9Face", 9, 1, 1, { 0, 9 }, Rec4Face,
236      { 0, 1, 2, 3 }, LineQuad, Rec9Shape, Rec9Shape,      { 0, 1, 2, 3 }, LineQuad, Rec9Shape, Rec9Shape,
237      { 0, 1, 2, 3, 4, 5, 6, 7, 8 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
238    3, { 0, 1, 4 },    3, { 0, 1, 4 },
239    3, { 0, 1, 4 },    3, { 0, 1, 4 },
240      { 1, 0, 3, 2, 4, 7, 6, 5, 8 },      { 1, 0, 3, 2, 4, 7, 6, 5, 8 },
241      { -1 } },      { -1 } },
242  { Finley_Rec12Face, "Rec12Face", 12, 1, 1, { 0, 12 }, Finley_Rec4Face,  { Rec12Face, "Rec12Face", 12, 1, 1, { 0, 12 }, Rec4Face,
243      { 0, 1, 2, 3 }, LineQuad, Rec12Shape, Rec12Shape,      { 0, 1, 2, 3 }, LineQuad, Rec12Shape, Rec12Shape,
244      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
245    4, { 0, 1, 4, 5 },    4, { 0, 1, 4, 5 },
246    4, { 0, 1, 4, 5 },    4, { 0, 1, 4, 5 },
247      { 1, 0, 3, 2, 5, 4, 11, 10, 9, 8, 7, 6 },      { 1, 0, 3, 2, 5, 4, 11, 10, 9, 8, 7, 6 },
248      { -1 } },      { -1 } },
249  { Finley_Rec16Face, "Rec16Face", 16, 1, 1, { 0, 16 }, Finley_Rec4Face,  { Rec16Face, "Rec16Face", 16, 1, 1, { 0, 16 }, Rec4Face,
250      { 0, 1, 2, 3 }, LineQuad, Rec16Shape, Rec16Shape,      { 0, 1, 2, 3 }, LineQuad, Rec16Shape, Rec16Shape,
251      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
252    4, { 0, 1, 4, 5 },    4, { 0, 1, 4, 5 },
253    4, { 0, 1, 4, 5 },    4, { 0, 1, 4, 5 },
254      { 1, 0, 3, 2, 5, 4, 11, 10, 9, 8, 7, 6, 13, 12, 15, 14 },      { 1, 0, 3, 2, 5, 4, 11, 10, 9, 8, 7, 6, 13, 12, 15, 14 },
255      { -1 } },      { -1 } },
256  { Finley_Tet4Face, "Tet4Face", 4, 1, 1, { 0, 4 }, Finley_Tet4Face,  { Tet4Face, "Tet4Face", 4, 1, 1, { 0, 4 }, Tet4Face,
257      { 0, 1, 2, 3 }, TriQuad, Tet4Shape, Tet4Shape,      { 0, 1, 2, 3 }, TriQuad, Tet4Shape, Tet4Shape,
258      { 0, 1, 2, 3 },      { 0, 1, 2, 3 },
259    3, { 0, 1, 2 },    3, { 0, 1, 2 },
260    4, { 0, 1, 2, 3 },    4, { 0, 1, 2, 3 },
261      { 1, 2, 0, 3 },      { 1, 2, 0, 3 },
262      { 0, 2, 1, 3 } },      { 0, 2, 1, 3 } },
263  { Finley_Tet10Face, "Tet10Face", 10, 1, 1, { 0, 10 }, Finley_Tet4Face,  { Tet10Face, "Tet10Face", 10, 1, 1, { 0, 10 }, Tet4Face,
264      { 0, 1, 2, 3 }, TriQuad, Tet10Shape, Tet10Shape,      { 0, 1, 2, 3 }, TriQuad, Tet10Shape, Tet10Shape,
265      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
266    6, { 0, 1, 2, 4, 5, 6 },    6, { 0, 1, 2, 4, 5, 6 },
267    6, { 0, 1, 2, 4, 5, 6 },    6, { 0, 1, 2, 4, 5, 6 },
268      { 1, 2, 0, 3, 5, 6, 4, 8, 9, 7 },      { 1, 2, 0, 3, 5, 6, 4, 8, 9, 7 },
269      { 0, 2, 1, 3, 6, 7, 9, 8 } },      { 0, 2, 1, 3, 6, 7, 9, 8 } },
270  { Finley_Tet16Face, "Tet16Face", 16, 1, 1, { 0, 16 }, Finley_Tet4Face,  { Tet16Face, "Tet16Face", 16, 1, 1, { 0, 16 }, Tet4Face,
271      { 0, 1, 2, 3 }, TriQuad, Tet16Shape, Tet16Shape,      { 0, 1, 2, 3 }, TriQuad, Tet16Shape, Tet16Shape,
272      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
273    9, { 0, 1, 2, 4, 5, 6, 7, 8, 9 },    9, { 0, 1, 2, 4, 5, 6, 7, 8, 9 },
274    9, { 0, 1, 2, 4, 5, 6, 7, 8, 9 },    9, { 0, 1, 2, 4, 5, 6, 7, 8, 9 },
275      { 1, 2, 0, 3, 6, 7, 8, 9, 4, 5, 11, 12, 10, 14, 15, 13 },      { 1, 2, 0, 3, 6, 7, 8, 9, 4, 5, 11, 12, 10, 14, 15, 13 },
276      { 0, 2, 1, 3, 9, 8, 7, 6, 5, 4, 9, 8, 7, 6, 10, 12, 11, 13, 15, 14 } },      { 0, 2, 1, 3, 9, 8, 7, 6, 5, 4, 9, 8, 7, 6, 10, 12, 11, 13, 15, 14 } },
277  { Finley_Hex8Face, "Hex8Face", 8, 1, 1, { 0, 8 }, Finley_Hex8Face,  { Hex8Face, "Hex8Face", 8, 1, 1, { 0, 8 }, Hex8Face,
278      { 0, 1, 2, 3, 4, 5, 6, 7 }, RecQuad, Hex8Shape, Hex8Shape,      { 0, 1, 2, 3, 4, 5, 6, 7 }, RecQuad, Hex8Shape, Hex8Shape,
279      { 0, 1, 2, 3, 4, 5, 6, 7 },      { 0, 1, 2, 3, 4, 5, 6, 7 },
280    4, { 0, 1, 2, 3 },    4, { 0, 1, 2, 3 },
281    4, { 0, 1, 2, 3 },    4, { 0, 1, 2, 3 },
282      { 1, 2, 3, 0, 5, 6, 7, 4 },      { 1, 2, 3, 0, 5, 6, 7, 4 },
283      { 0, 3, 2, 1, 4, 7, 6, 5 } },      { 0, 3, 2, 1, 4, 7, 6, 5 } },
284  { Finley_Hex20Face, "Hex20Face", 20, 1, 1, { 0, 20 }, Finley_Hex8Face,  { Hex20Face, "Hex20Face", 20, 1, 1, { 0, 20 }, Hex8Face,
285      { 0, 1, 2, 3, 4, 5, 6, 7 }, RecQuad, Hex20Shape, Hex20Shape,      { 0, 1, 2, 3, 4, 5, 6, 7 }, RecQuad, Hex20Shape, Hex20Shape,
286      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },
287    8, { 0, 1, 2, 3, 8, 9, 10, 11 },    8, { 0, 1, 2, 3, 8, 9, 10, 11 },
288    8, { 0, 1, 2, 3, 8, 9, 10, 11 },    8, { 0, 1, 2, 3, 8, 9, 10, 11 },
289      { 1, 2, 3, 0, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 12, 17, 18, 19, 16 },      { 1, 2, 3, 0, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 12, 17, 18, 19, 16 },
290      { 0, 3, 2, 1, 4, 7, 6, 5, 11, 10, 9, 8, 12, 15, 14, 13, 19, 18, 17, 16 } },      { 0, 3, 2, 1, 4, 7, 6, 5, 11, 10, 9, 8, 12, 15, 14, 13, 19, 18, 17, 16 } },
291  { Finley_Hex27Face, "Hex27Face", 27, 1, 1, { 0, 27 }, Finley_Hex8Face,  { Hex27Face, "Hex27Face", 27, 1, 1, { 0, 27 }, Hex8Face,
292      { 0, 1, 2, 3, 4, 5, 6, 7 }, RecQuad, Hex27Shape, Hex27Shape,      { 0, 1, 2, 3, 4, 5, 6, 7 }, RecQuad, Hex27Shape, Hex27Shape,
293      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 },
294    9, { 0, 1, 2, 3, 8, 9, 10, 11, 20 },    9, { 0, 1, 2, 3, 8, 9, 10, 11, 20 },
295    9, { 0, 1, 2, 3, 8, 9, 10, 11, 20 },    9, { 0, 1, 2, 3, 8, 9, 10, 11, 20 },
296      { 1, 2, 3, 0, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 12, 17, 18, 19, 16, 20, 22, 23, 24, 22, 25, 26 },      { 1, 2, 3, 0, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 12, 17, 18, 19, 16, 20, 22, 23, 24, 22, 25, 26 },
297      { 0, 3, 2, 1, 4, 7, 6, 5, 11, 10, 9, 8, 12, 15, 14, 13, 19, 18, 17, 16, 20, 24, 23, 22, 21, 25, 26 } },      { 0, 3, 2, 1, 4, 7, 6, 5, 11, 10, 9, 8, 12, 15, 14, 13, 19, 18, 17, 16, 20, 24, 23, 22, 21, 25, 26 } },
298  { Finley_Hex32Face, "Hex32Face", 32, 1, 1, { 0, 32 }, Finley_Hex8Face,  { Hex32Face, "Hex32Face", 32, 1, 1, { 0, 32 }, Hex8Face,
299      { 0, 1, 2, 3, 4, 5, 6, 7 }, RecQuad, Hex32Shape, Hex32Shape,      { 0, 1, 2, 3, 4, 5, 6, 7 }, RecQuad, Hex32Shape, Hex32Shape,
300      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
301    12, { 0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15 },    12, { 0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15 },
302    12, { 0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15 },    12, { 0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15 },
303      { 1, 2, 3, 0, 5, 6, 7, 4, 10, 11, 12, 13, 14, 15, 8, 9, 17, 18, 19, 16, 21, 22, 23, 20, 26, 27, 28, 29, 30, 31, 34, 25 },      { 1, 2, 3, 0, 5, 6, 7, 4, 10, 11, 12, 13, 14, 15, 8, 9, 17, 18, 19, 16, 21, 22, 23, 20, 26, 27, 28, 29, 30, 31, 34, 25 },
304      { 0, 3, 2, 1, 4, 7, 6, 5, 15, 14, 13, 12, 11, 10, 9, 8, 16, 19, 18, 17, 20, 23, 22, 21, 31, 30, 29, 28, 27, 26, 25, 24 } },      { 0, 3, 2, 1, 4, 7, 6, 5, 15, 14, 13, 12, 11, 10, 9, 8, 16, 19, 18, 17, 20, 23, 22, 21, 31, 30, 29, 28, 27, 26, 25, 24 } },
305  { Finley_Point1_Contact, "Point1_Contact", 2, 1, 2, { 0, 1, 2 }, Finley_Point1_Contact,  { Point1_Contact, "Point1_Contact", 2, 1, 2, { 0, 1, 2 }, Point1_Contact,
306      { 0, 1 }, PointQuad, Point1Shape, Point1Shape,      { 0, 1 }, PointQuad, Point1Shape, Point1Shape,
307      { 0, 1 },      { 0, 1 },
308    1, { 0 },    1, { 0 },
309    -1, { -1 },    -1, { -1 },
310      { -1 },      { -1 },
311      { -1 } },      { -1 } },
312  { Finley_Line2_Contact, "Line2_Contact", 4, 1, 2, { 0, 2, 4 }, Finley_Line2_Contact,  { Line2_Contact, "Line2_Contact", 4, 1, 2, { 0, 2, 4 }, Line2_Contact,
313      { 0, 1, 2, 3 }, LineQuad, Line2Shape, Line2Shape,      { 0, 1, 2, 3 }, LineQuad, Line2Shape, Line2Shape,
314      { 0, 1, 2, 3 },      { 0, 1, 2, 3 },
315    2, { 0, 1 },    2, { 0, 1 },
316    -1, { -1 },    -1, { -1 },
317      { -1 },      { -1 },
318      { -1 } },      { -1 } },
319  { Finley_Line3_Contact, "Line3_Contact", 6, 1, 2, { 0, 3, 6 }, Finley_Line2_Contact,  { Line3_Contact, "Line3_Contact", 6, 1, 2, { 0, 3, 6 }, Line2_Contact,
320      { 0, 1, 3, 4 }, LineQuad, Line3Shape, Line3Shape,      { 0, 1, 3, 4 }, LineQuad, Line3Shape, Line3Shape,
321      { 0, 1, 2, 3, 4, 5 },      { 0, 1, 2, 3, 4, 5 },
322    3, { 0, 1, 2 },    3, { 0, 1, 2 },
323    -1, { -1 },    -1, { -1 },
324      { -1 },      { -1 },
325      { -1 } },      { -1 } },
326  { Finley_Line4_Contact, "Line4_Contact", 8, 1, 2, { 0, 4, 8 }, Finley_Line2_Contact,  { Line4_Contact, "Line4_Contact", 8, 1, 2, { 0, 4, 8 }, Line2_Contact,
327      { 0, 1, 4, 5 }, LineQuad, Line4Shape, Line4Shape,      { 0, 1, 4, 5 }, LineQuad, Line4Shape, Line4Shape,
328      { 0, 1, 2, 3, 4, 5, 6, 7 },      { 0, 1, 2, 3, 4, 5, 6, 7 },
329    4, { 0, 1, 2, 3 },    4, { 0, 1, 2, 3 },
330    -1, { -1 },    -1, { -1 },
331      { -1 },      { -1 },
332      { -1 } },      { -1 } },
333  { Finley_Tri3_Contact, "Tri3_Contact", 6, 1, 2, { 0, 3, 6 }, Finley_Tri3_Contact,  { Tri3_Contact, "Tri3_Contact", 6, 1, 2, { 0, 3, 6 }, Tri3_Contact,
334      { 0, 1, 2, 3, 4, 5 }, TriQuad, Tri3Shape, Tri3Shape,      { 0, 1, 2, 3, 4, 5 }, TriQuad, Tri3Shape, Tri3Shape,
335      { 0, 1, 2, 3, 4, 5 },      { 0, 1, 2, 3, 4, 5 },
336    3, { 0, 1, 2 },    3, { 0, 1, 2 },
337    -1, { -1 },    -1, { -1 },
338      { -1 },      { -1 },
339      { -1 } },      { -1 } },
340  { Finley_Tri6_Contact, "Tri6_Contact", 12, 1, 2, { 0, 6, 12 }, Finley_Tri3_Contact,  { Tri6_Contact, "Tri6_Contact", 12, 1, 2, { 0, 6, 12 }, Tri3_Contact,
341      { 0, 1, 2, 6, 7, 8 }, TriQuad, Tri6Shape, Tri6Shape,      { 0, 1, 2, 6, 7, 8 }, TriQuad, Tri6Shape, Tri6Shape,
342      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
343    6, { 0, 1, 2, 3, 4, 5 },    6, { 0, 1, 2, 3, 4, 5 },
344    -1, { -1 },    -1, { -1 },
345      { -1 },      { -1 },
346      { -1 } },      { -1 } },
347  { Finley_Tri9_Contact, "Tri9_Contact", 18, 1, 2, { 0, 9, 18 }, Finley_Tri3_Contact,  { Tri9_Contact, "Tri9_Contact", 18, 1, 2, { 0, 9, 18 }, Tri3_Contact,
348      { 0, 1, 2, 9, 10, 11 }, TriQuad, Tri9Shape, Tri9Shape,      { 0, 1, 2, 9, 10, 11 }, TriQuad, Tri9Shape, Tri9Shape,
349      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },
350    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
351    -1, { -1 },    -1, { -1 },
352      { -1 },      { -1 },
353      { -1 } },      { -1 } },
354  { Finley_Tri10_Contact, "Tri10_Contact", 20, 1, 2, { 0, 10, 20 }, Finley_Tri3_Contact,  { Tri10_Contact, "Tri10_Contact", 20, 1, 2, { 0, 10, 20 }, Tri3_Contact,
355      { 0, 1, 2, 10, 11, 12 }, TriQuad, Tri10Shape, Tri10Shape,      { 0, 1, 2, 10, 11, 12 }, TriQuad, Tri10Shape, Tri10Shape,
356      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },
357    10, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },    10, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
358    -1, { -1 },    -1, { -1 },
359      { -1 },      { -1 },
360      { -1 } },      { -1 } },
361  { Finley_Rec4_Contact, "Rec4_Contact", 8, 1, 2, { 0, 4, 8 }, Finley_Rec4_Contact,  { Rec4_Contact, "Rec4_Contact", 8, 1, 2, { 0, 4, 8 }, Rec4_Contact,
362      { 0, 1, 2, 3, 4, 5, 6, 7 }, RecQuad, Rec4Shape, Rec4Shape,      { 0, 1, 2, 3, 4, 5, 6, 7 }, RecQuad, Rec4Shape, Rec4Shape,
363      { 0, 1, 2, 3, 4, 5, 6, 7 },      { 0, 1, 2, 3, 4, 5, 6, 7 },
364    4, { 0, 1, 2, 3 },    4, { 0, 1, 2, 3 },
365    -1, { -1 },    -1, { -1 },
366      { -1 },      { -1 },
367      { -1 } },      { -1 } },
368  { Finley_Rec8_Contact, "Rec8_Contact", 16, 1, 2, { 0, 8, 16 }, Finley_Rec4_Contact,  { Rec8_Contact, "Rec8_Contact", 16, 1, 2, { 0, 8, 16 }, Rec4_Contact,
369      { 0, 1, 2, 3, 8, 9, 10, 11 }, RecQuad, Rec8Shape, Rec8Shape,      { 0, 1, 2, 3, 8, 9, 10, 11 }, RecQuad, Rec8Shape, Rec8Shape,
370      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
371    8, { 0, 1, 2, 3, 4, 5, 6, 7 },    8, { 0, 1, 2, 3, 4, 5, 6, 7 },
372    -1, { -1 },    -1, { -1 },
373      { -1 },      { -1 },
374      { -1 } },      { -1 } },
375  { Finley_Rec9_Contact, "Rec9_Contact", 18, 1, 2, { 0, 9, 18 }, Finley_Rec4_Contact,  { Rec9_Contact, "Rec9_Contact", 18, 1, 2, { 0, 9, 18 }, Rec4_Contact,
376      { 0, 1, 2, 3, 9, 10, 11, 12 }, RecQuad, Rec9Shape, Rec9Shape,      { 0, 1, 2, 3, 9, 10, 11, 12 }, RecQuad, Rec9Shape, Rec9Shape,
377      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },
378    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
379    -1, { -1 },    -1, { -1 },
380      { -1 },      { -1 },
381      { -1 } },      { -1 } },
382  { Finley_Rec12_Contact, "Rec12_Contact", 24, 1, 2, { 0, 12, 24 }, Finley_Rec4_Contact,  { Rec12_Contact, "Rec12_Contact", 24, 1, 2, { 0, 12, 24 }, Rec4_Contact,
383      { 0, 1, 2, 3, 12, 13, 14, 15 }, RecQuad, Rec12Shape, Rec12Shape,      { 0, 1, 2, 3, 12, 13, 14, 15 }, RecQuad, Rec12Shape, Rec12Shape,
384      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 },
385    12, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },    12, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
386    -1, { -1 },    -1, { -1 },
387      { -1 },      { -1 },
388      { -1 } },      { -1 } },
389  { Finley_Rec16_Contact, "Rec16_Contact", 32, 1, 2, { 0, 16, 32 }, Finley_Rec4_Contact,  { Rec16_Contact, "Rec16_Contact", 32, 1, 2, { 0, 16, 32 }, Rec4_Contact,
390      { 0, 1, 2, 3, 16, 17, 18, 19 }, RecQuad, Rec16Shape, Rec16Shape,      { 0, 1, 2, 3, 16, 17, 18, 19 }, RecQuad, Rec16Shape, Rec16Shape,
391      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
392    16, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },    16, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
393    -1, { -1 },    -1, { -1 },
394      { -1 },      { -1 },
395      { -1 } },      { -1 } },
396  { Finley_Line2Face_Contact, "Line2Face_Contact", 4, 1, 2, { 0, 2, 4 }, Finley_Line2Face_Contact,  { Line2Face_Contact, "Line2Face_Contact", 4, 1, 2, { 0, 2, 4 }, Line2Face_Contact,
397      { 0, 1, 2, 3 }, PointQuad, Line2Shape, Line2Shape,      { 0, 1, 2, 3 }, PointQuad, Line2Shape, Line2Shape,
398      { 0, 1, 2, 3 },      { 0, 1, 2, 3 },
399    1, { 0 },    1, { 0 },
400    -1, { -1 },    -1, { -1 },
401      { -1 },      { -1 },
402      { -1 } },      { -1 } },
403  { Finley_Line3Face_Contact, "Line3Face_Contact", 6, 1, 2, { 0, 3, 6 }, Finley_Line2Face_Contact,  { Line3Face_Contact, "Line3Face_Contact", 6, 1, 2, { 0, 3, 6 }, Line2Face_Contact,
404      { 0, 1, 3, 4 }, PointQuad, Line3Shape, Line3Shape,      { 0, 1, 3, 4 }, PointQuad, Line3Shape, Line3Shape,
405      { 0, 1, 2, 3, 4, 5 },      { 0, 1, 2, 3, 4, 5 },
406    1, { 0 },    1, { 0 },
407    -1, { -1 },    -1, { -1 },
408      { -1 },      { -1 },
409      { -1 } },      { -1 } },
410  { Finley_Line4Face_Contact, "Line4Face_Contact", 8, 1, 2, { 0, 4, 8 }, Finley_Line2Face_Contact,  { Line4Face_Contact, "Line4Face_Contact", 8, 1, 2, { 0, 4, 8 }, Line2Face_Contact,
411      { 0, 1, 4, 5 }, PointQuad, Line4Shape, Line4Shape,      { 0, 1, 4, 5 }, PointQuad, Line4Shape, Line4Shape,
412      { 0, 1, 2, 3, 4, 5, 6, 7 },      { 0, 1, 2, 3, 4, 5, 6, 7 },
413    1, { 0 },    1, { 0 },
414    -1, { -1 },    -1, { -1 },
415      { -1 },      { -1 },
416      { -1 } },      { -1 } },
417  { Finley_Tri3Face_Contact, "Tri3Face_Contact", 6, 1, 2, { 0, 3, 6 }, Finley_Tri3Face_Contact,  { Tri3Face_Contact, "Tri3Face_Contact", 6, 1, 2, { 0, 3, 6 }, Tri3Face_Contact,
418      { 0, 1, 2, 3, 4, 5 }, LineQuad, Tri3Shape, Tri3Shape,      { 0, 1, 2, 3, 4, 5 }, LineQuad, Tri3Shape, Tri3Shape,
419      { 0, 1, 2, 3, 4, 5 },      { 0, 1, 2, 3, 4, 5 },
420    2, { 0, 1 },    2, { 0, 1 },
421    -1, { -1 },    -1, { -1 },
422      { -1 },      { -1 },
423      { -1 } },      { -1 } },
424  { Finley_Tri6Face_Contact, "Tri6Face_Contact", 12, 1, 2, { 0, 6, 12 }, Finley_Tri3Face_Contact,  { Tri6Face_Contact, "Tri6Face_Contact", 12, 1, 2, { 0, 6, 12 }, Tri3Face_Contact,
425      { 0, 1, 2, 6, 7, 8 }, LineQuad, Tri6Shape, Tri6Shape,      { 0, 1, 2, 6, 7, 8 }, LineQuad, Tri6Shape, Tri6Shape,
426      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
427    3, { 0, 1, 3 },    3, { 0, 1, 3 },
428    -1, { -1 },    -1, { -1 },
429      { -1 },      { -1 },
430      { -1 } },      { -1 } },
431  { Finley_Tri9Face_Contact, "Tri9Face_Contact", 18, 1, 2, { 0, 9, 18 }, Finley_Tri3Face_Contact,  { Tri9Face_Contact, "Tri9Face_Contact", 18, 1, 2, { 0, 9, 18 }, Tri3Face_Contact,
432      { 0, 1, 2, 9, 10, 11 }, LineQuad, Tri9Shape, Tri9Shape,      { 0, 1, 2, 9, 10, 11 }, LineQuad, Tri9Shape, Tri9Shape,
433      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },
434    4, { 0, 1, 3, 4 },    4, { 0, 1, 3, 4 },
435    -1, { -1 },    -1, { -1 },
436      { -1 },      { -1 },
437      { -1 } },      { -1 } },
438  { Finley_Tri10Face_Contact, "Tri10Face_Contact", 20, 1, 2, { 0, 10, 20 }, Finley_Tri3Face_Contact,  { Tri10Face_Contact, "Tri10Face_Contact", 20, 1, 2, { 0, 10, 20 }, Tri3Face_Contact,
439      { 0, 1, 2, 10, 11, 12 }, LineQuad, Tri10Shape, Tri10Shape,      { 0, 1, 2, 10, 11, 12 }, LineQuad, Tri10Shape, Tri10Shape,
440      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },
441    4, { 0, 1, 3, 4 },    4, { 0, 1, 3, 4 },
442    -1, { -1 },    -1, { -1 },
443      { -1 },      { -1 },
444      { -1 } },      { -1 } },
445  { Finley_Rec4Face_Contact, "Rec4Face_Contact", 8, 1, 2, { 0, 4, 8 }, Finley_Rec4Face_Contact,  { Rec4Face_Contact, "Rec4Face_Contact", 8, 1, 2, { 0, 4, 8 }, Rec4Face_Contact,
446      { 0, 1, 2, 3, 4, 5, 6, 7 }, LineQuad, Rec4Shape, Rec4Shape,      { 0, 1, 2, 3, 4, 5, 6, 7 }, LineQuad, Rec4Shape, Rec4Shape,
447      { 0, 1, 2, 3, 4, 5, 6, 7 },      { 0, 1, 2, 3, 4, 5, 6, 7 },
448    2, { 0, 1 },    2, { 0, 1 },
449    -1, { -1 },    -1, { -1 },
450      { -1 },      { -1 },
451      { -1 } },      { -1 } },
452  { Finley_Rec8Face_Contact, "Rec8Face_Contact", 16, 1, 2, { 0, 8, 16 }, Finley_Rec4Face_Contact,  { Rec8Face_Contact, "Rec8Face_Contact", 16, 1, 2, { 0, 8, 16 }, Rec4Face_Contact,
453      { 0, 1, 2, 3, 8, 9, 10, 11 }, LineQuad, Rec8Shape, Rec8Shape,      { 0, 1, 2, 3, 8, 9, 10, 11 }, LineQuad, Rec8Shape, Rec8Shape,
454      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
455    3, { 0, 1, 4 },    3, { 0, 1, 4 },
456    -1, { -1 },    -1, { -1 },
457      { -1 },      { -1 },
458      { -1 } },      { -1 } },
459  { Finley_Rec9Face_Contact, "Rec9Face_Contact", 18, 1, 2, { 0, 9, 18 }, Finley_Rec4Face_Contact,  { Rec9Face_Contact, "Rec9Face_Contact", 18, 1, 2, { 0, 9, 18 }, Rec4Face_Contact,
460      { 0, 1, 2, 3, 9, 10, 11, 12 }, LineQuad, Rec9Shape, Rec9Shape,      { 0, 1, 2, 3, 9, 10, 11, 12 }, LineQuad, Rec9Shape, Rec9Shape,
461      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },
462    3, { 0, 1, 4 },    3, { 0, 1, 4 },
463    -1, { -1 },    -1, { -1 },
464      { -1 },      { -1 },
465      { -1 } },      { -1 } },
466  { Finley_Rec12Face_Contact, "Rec12Face_Contact", 24, 1, 2, { 0, 12, 24 }, Finley_Rec4Face_Contact,  { Rec12Face_Contact, "Rec12Face_Contact", 24, 1, 2, { 0, 12, 24 }, Rec4Face_Contact,
467      { 0, 1, 2, 3, 12, 13, 14, 15 }, LineQuad, Rec12Shape, Rec12Shape,      { 0, 1, 2, 3, 12, 13, 14, 15 }, LineQuad, Rec12Shape, Rec12Shape,
468      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 },
469    4, { 0, 1, 4, 5 },    4, { 0, 1, 4, 5 },
470    -1, { -1 },    -1, { -1 },
471      { -1 },      { -1 },
472      { -1 } },      { -1 } },
473  { Finley_Rec16Face_Contact, "Rec16Face_Contact", 32, 1, 2, { 0, 16, 32 }, Finley_Rec4Face_Contact,  { Rec16Face_Contact, "Rec16Face_Contact", 32, 1, 2, { 0, 16, 32 }, Rec4Face_Contact,
474      { 0, 1, 2, 3, 16, 17, 18, 19 }, LineQuad, Rec16Shape, Rec16Shape,      { 0, 1, 2, 3, 16, 17, 18, 19 }, LineQuad, Rec16Shape, Rec16Shape,
475      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
476    4, { 0, 1, 4, 5 },    4, { 0, 1, 4, 5 },
477    -1, { -1 },    -1, { -1 },
478      { -1 },      { -1 },
479      { -1 } },      { -1 } },
480  { Finley_Tet4Face_Contact, "Tet4Face_Contact", 8, 1, 2, { 0, 4, 8 }, Finley_Tet4Face_Contact,  { Tet4Face_Contact, "Tet4Face_Contact", 8, 1, 2, { 0, 4, 8 }, Tet4Face_Contact,
481      { 0, 1, 2, 3, 4, 5, 6, 7 }, TriQuad, Tet4Shape, Tet4Shape,      { 0, 1, 2, 3, 4, 5, 6, 7 }, TriQuad, Tet4Shape, Tet4Shape,
482      { 0, 1, 2, 3, 4, 5, 6, 7 },      { 0, 1, 2, 3, 4, 5, 6, 7 },
483    3, { 0, 1, 2 },    3, { 0, 1, 2 },
484    -1, { -1 },    -1, { -1 },
485      { -1 },      { -1 },
486      { -1 } },      { -1 } },
487  { Finley_Tet10Face_Contact, "Tet10Face_Contact", 20, 1, 2, { 0, 10, 20 }, Finley_Tet4Face_Contact,  { Tet10Face_Contact, "Tet10Face_Contact", 20, 1, 2, { 0, 10, 20 }, Tet4Face_Contact,
488      { 0, 1, 2, 3, 10, 11, 12, 13 }, TriQuad, Tet10Shape, Tet10Shape,      { 0, 1, 2, 3, 10, 11, 12, 13 }, TriQuad, Tet10Shape, Tet10Shape,
489      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },
490    6, { 0, 1, 2, 4, 5, 6 },    6, { 0, 1, 2, 4, 5, 6 },
491    -1, { -1 },    -1, { -1 },
492      { -1 },      { -1 },
493      { -1 } },      { -1 } },
494  { Finley_Tet16Face_Contact, "Tet16Face_Contact", 32, 1, 2, { 0, 16, 32 }, Finley_Tet4Face_Contact,  { Tet16Face_Contact, "Tet16Face_Contact", 32, 1, 2, { 0, 16, 32 }, Tet4Face_Contact,
495      { 0, 1, 2, 3, 16, 17, 18, 19 }, TriQuad, Tet16Shape, Tet16Shape,      { 0, 1, 2, 3, 16, 17, 18, 19 }, TriQuad, Tet16Shape, Tet16Shape,
496      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
497    9, { 0, 1, 2, 4, 5, 6, 7, 8, 9 },    9, { 0, 1, 2, 4, 5, 6, 7, 8, 9 },
498    -1, { -1 },    -1, { -1 },
499      { -1 },      { -1 },
500      { -1 } },      { -1 } },
501  { Finley_Hex8Face_Contact, "Hex8Face_Contact", 16, 1, 2, { 0, 8, 16 }, Finley_Hex8Face_Contact,  { Hex8Face_Contact, "Hex8Face_Contact", 16, 1, 2, { 0, 8, 16 }, Hex8Face_Contact,
502      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, RecQuad, Hex8Shape, Hex8Shape,      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, RecQuad, Hex8Shape, Hex8Shape,
503      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
504    4, { 0, 1, 2, 3 },    4, { 0, 1, 2, 3 },
505    -1, { -1 },    -1, { -1 },
506      { -1 },      { -1 },
507      { -1 } },      { -1 } },
508  { Finley_Hex20Face_Contact, "Hex20Face_Contact", 40, 1, 2, { 0, 20, 40 }, Finley_Hex8Face_Contact,  { Hex20Face_Contact, "Hex20Face_Contact", 40, 1, 2, { 0, 20, 40 }, Hex8Face_Contact,
509      { 0, 1, 2, 3, 4, 5, 6, 7, 20, 21, 22, 23, 24, 25, 26, 27 }, RecQuad, Hex20Shape, Hex20Shape,      { 0, 1, 2, 3, 4, 5, 6, 7, 20, 21, 22, 23, 24, 25, 26, 27 }, RecQuad, Hex20Shape, Hex20Shape,
510      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 },
511    8, { 0, 1, 2, 3, 8, 9, 10, 11 },    8, { 0, 1, 2, 3, 8, 9, 10, 11 },
512    -1, { -1 },    -1, { -1 },
513      { -1 },      { -1 },
514      { -1 } },      { -1 } },
515  { Finley_Hex27Face_Contact, "Hex27Face_Contact", 54, 1, 2, { 0, 27, 54 }, Finley_Hex8Face_Contact,  { Hex27Face_Contact, "Hex27Face_Contact", 54, 1, 2, { 0, 27, 54 }, Hex8Face_Contact,
516      { 0, 1, 2, 3, 4, 5, 6, 7, 27, 28, 29, 30, 31, 32, 33, 34 }, RecQuad, Hex27Shape, Hex27Shape,      { 0, 1, 2, 3, 4, 5, 6, 7, 27, 28, 29, 30, 31, 32, 33, 34 }, RecQuad, Hex27Shape, Hex27Shape,
517      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53 },
518    9, { 0, 1, 2, 3, 8, 9, 10, 11, 20 },    9, { 0, 1, 2, 3, 8, 9, 10, 11, 20 },
519    -1, { -1 },    -1, { -1 },
520      { -1 },      { -1 },
521      { -1 } },      { -1 } },
522  { Finley_Hex32Face_Contact, "Hex32Face_Contact", 64, 1, 2, { 0, 32, 64 }, Finley_Hex8Face_Contact,  { Hex32Face_Contact, "Hex32Face_Contact", 64, 1, 2, { 0, 32, 64 }, Hex8Face_Contact,
523      { 0, 1, 2, 3, 4, 5, 6, 7, 32, 33, 34, 35, 36, 37, 38, 39 }, RecQuad, Hex32Shape, Hex32Shape,      { 0, 1, 2, 3, 4, 5, 6, 7, 32, 33, 34, 35, 36, 37, 38, 39 }, RecQuad, Hex32Shape, Hex32Shape,
524      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 },      { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 },
525    12, { 0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15 },    12, { 0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15 },
526    -1, { -1 },    -1, { -1 },
527      { -1 },      { -1 },
528      { -1 } },      { -1 } },
529  { Finley_Line3Macro, "Line3Macro", 3, 2, 1, { 0, 3 }, Finley_Line2,  { Line3Macro, "Line3Macro", 3, 2, 1, { 0, 3 }, Line2,
530      { 0, 1 }, LineQuad, Line3Shape, Line2Shape,      { 0, 1 }, LineQuad, Line3Shape, Line2Shape,
531      { 0, 2, 2, 1 },      { 0, 2, 2, 1 },
532    3, { 0, 1, 2 },    3, { 0, 1, 2 },
533    3, { 0, 1, 2 },    3, { 0, 1, 2 },
534      { 1, 0, 2 },      { 1, 0, 2 },
535      { -1 } },      { -1 } },
536  { Finley_Tri6Macro, "Tri6Macro", 6, 4, 1, { 0, 6 }, Finley_Tri3,  { Tri6Macro, "Tri6Macro", 6, 4, 1, { 0, 6 }, Tri3,
537      { 0, 1, 2 }, TriQuad, Tri6Shape, Tri3Shape,      { 0, 1, 2 }, TriQuad, Tri6Shape, Tri3Shape,
538      { 0, 3, 5,  5, 4, 2,  3, 1, 4,  4, 5, 3},      { 0, 3, 5, 5, 4, 2, 3, 1, 4, 4, 5, 3},
539    6, { 0, 1, 2, 3, 4, 5 },    6, { 0, 1, 2, 3, 4, 5 },
540    6, { 0, 1, 2, 3, 4, 5 },    6, { 0, 1, 2, 3, 4, 5 },
541      { 1, 2, 0, 4, 5, 3 },      { 1, 2, 0, 4, 5, 3 },
542      { 0, 2, 1, 5, 4, 3 } },      { 0, 2, 1, 5, 4, 3 } },
543  { Finley_Rec9Macro, "Rec9Macro", 9, 4, 1, { 0, 9 }, Finley_Rec4,  { Rec9Macro, "Rec9Macro", 9, 4, 1, { 0, 9 }, Rec4,
544      { 0, 1, 2, 3 }, RecQuad, Rec9Shape, Rec4Shape,      { 0, 1, 2, 3 }, RecQuad, Rec9Shape, Rec4Shape,
545      { 0, 4, 8, 7, 7, 8, 6, 3, 4, 1, 5, 8, 8, 5, 2, 6 },      { 0, 4, 8, 7, 7, 8, 6, 3, 4, 1, 5, 8, 8, 5, 2, 6 },
546    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
547    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },    9, { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
548      { 1, 2, 3, 0, 5, 6, 7, 4, 8 },      { 1, 2, 3, 0, 5, 6, 7, 4, 8 },
549      { 0, 3, 2, 1, 7, 6, 5, 4, 8 } },      { 0, 3, 2, 1, 7, 6, 5, 4, 8 } },
550  { Finley_Tet10Macro, "Tet10Macro", 10, 8, 1, { 0, 10 }, Finley_Tet4,  { Tet10Macro, "Tet10Macro", 10, 8, 1, { 0, 10 }, Tet4,
551      { 0, 1, 2, 3 }, TetQuad, Tet10Shape, Tet4Shape,      { 0, 1, 2, 3 }, TetQuad, Tet10Shape, Tet4Shape,
552      { 0, 4, 6, 7, 4, 1, 5, 8, 6, 5, 2, 9, 7, 8, 9, 3, 4, 5, 6, 8, 5, 9, 8, 6, 9, 7, 6, 8, 7, 4, 6, 8 },      { 0, 4, 6, 7, 4, 1, 5, 8, 6, 5, 2, 9, 7, 8, 9, 3, 4, 5, 6, 8, 5, 9, 8, 6, 9, 7, 6, 8, 7, 4, 6, 8 },
553    10, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },    10, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
554    10, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },    10, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
555      { -1 },      { -1 },
556      { -1 } },      { -1 } },
557  { Finley_Hex27Macro, "Hex27Macro", 27, 8, 1, { 0, 27 }, Finley_Hex8,  { Hex27Macro, "Hex27Macro", 27, 8, 1, { 0, 27 }, Hex8,
558      { 0, 1, 2, 3, 4, 5, 6, 7 }, HexQuad, Hex27Shape, Hex8Shape,      { 0, 1, 2, 3, 4, 5, 6, 7 }, HexQuad, Hex27Shape, Hex8Shape,
559      { 0, 8, 20, 11, 12, 21, 26, 24, 8, 1, 9, 20, 21, 13, 22, 26, 11, 20, 10, 3, 24, 26, 23, 15, 20, 9, 2, 10, 26, 22, 14, 23, 12, 21, 26, 24, 4, 16, 25, 19, 21, 13, 22, 26, 16, 5, 17, 25, 24, 26, 23, 15, 19, 25, 18, 7, 26, 22, 14, 23, 25, 17, 6, 18 },      { 0, 8, 20, 11, 12, 21, 26, 24, 8, 1, 9, 20, 21, 13, 22, 26, 11, 20, 10, 3, 24, 26, 23, 15, 20, 9, 2, 10, 26, 22, 14, 23, 12, 21, 26, 24, 4, 16, 25, 19, 21, 13, 22, 26, 16, 5, 17, 25, 24, 26, 23, 15, 19, 25, 18, 7, 26, 22, 14, 23, 25, 17, 6, 18 },
560    27, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 },    27, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 },
561    27, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 },    27, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 },
562      { -1 },      { -1 },
563      { -1 } },      { -1 } },
564  { Finley_NoRef, "noElement", 0, 0, 0, { 0 }, Finley_NoRef,  { NoRef, "noElement", 0, 0, 0, { 0 }, NoRef,
565      { 0 }, NoQuad, NoShape, NoShape,      { 0 }, NoQuad, NoShape, NoShape,
566      { 0 },      { 0 },
567    -1, { 0 },    -1, { 0 },
# Line 573  Finley_ReferenceElementInfo Finley_Refer Line 570  Finley_ReferenceElementInfo Finley_Refer
570      { 0 } }      { 0 } }
571    
572  };  };
 /************************************************************************************  
573        
   creates a ReferenceElement of type id and a given integration order  
574    
575    */  /// creates a ReferenceElement of type id and a given integration order
576    ReferenceElement* ReferenceElement_alloc(ElementTypeId id, int order)
   
 Finley_ReferenceElement* Finley_ReferenceElement_alloc(Finley_ElementTypeId id, int order)  
577  {  {
578      dim_t nsub, numQuadNodes, numQuadNodes2;      ReferenceElementInfo* type = ReferenceElement_getInfo(id);
579      double *quadWeights=NULL, *quadNodes=NULL, *quadWeights2=NULL, *quadNodes2=NULL;      if (type == NULL) {
580      Finley_ReferenceElement *out=NULL;          Finley_setError(VALUE_ERROR,"ReferenceElement_alloc: unable to identify element type.");
581      Finley_QuadInfo* quadscheme;          return NULL;
582      Finley_ShapeFunctionInfo* parametrization, *basisfunction, *linearbasisfunction;      }
583      Finley_ReferenceElementInfo *type, *linear_type;      ReferenceElementInfo *linear_type = ReferenceElement_getInfo(type->LinearTypeId);
584        if (linear_type == NULL) {
585          type=Finley_ReferenceElement_getInfo(id);          Finley_setError(VALUE_ERROR,"ReferenceElement_alloc: unable to identify linear element type.");
586          if (type == NULL) {          return NULL;
587               Finley_setError(VALUE_ERROR,"Finley_ReferenceElement_alloc: unable to identify element type.");      }
588              return NULL;  
589          }      ReferenceElement *out=new ReferenceElement;
590          linear_type=Finley_ReferenceElement_getInfo(type->LinearTypeId);      out->reference_counter=0;
591          if (linear_type == NULL) {      out->Parametrization=NULL;
592              Finley_setError(VALUE_ERROR,"Finley_ReferenceElement_alloc: unable to identify linear element type.");      out->BasisFunctions=NULL;
593              return NULL;      out->LinearBasisFunctions=NULL;
594        out->Type=type;
595        out->numNodes=out->Type->numNodes;
596        out->LinearType=linear_type;
597        out->numLinearNodes=out->LinearType->numNodes;
598        out->integrationOrder=-1;
599        out->DBasisFunctionDv=NULL;
600        out->DBasisFunctionDvShared=TRUE;
601    
602        QuadInfo* quadscheme=QuadInfo_getInfo(out->Type->Quadrature);
603        ShapeFunctionInfo* parametrization=ShapeFunction_getInfo(out->Type->Parametrization);
604        ShapeFunctionInfo* basisfunction=ShapeFunction_getInfo(out->Type->BasisFunctions);
605        ShapeFunctionInfo* linearbasisfunction=ShapeFunction_getInfo(ReferenceElement_InfoList[out->Type->LinearTypeId].BasisFunctions);
606        int nsub = out->Type->numSubElements;
607        out->numLocalDim=quadscheme->numDim;
608    
609        // set up the basic integration scheme.
610        // Note that quadscheme->numDim is not necessarily the dimension of the
611        // element
612        
613        if (order < 0)
614            order=std::max(2*basisfunction->numOrder, 0);
615    
616        out->integrationOrder=order;
617        int numQuadNodes=quadscheme->getNumQuadNodes(order);
618        double *quadNodes=new double[numQuadNodes*quadscheme->numDim*nsub];
619        double *quadWeights=new double[numQuadNodes*nsub];  
620    
621        quadscheme->getQuadNodes(numQuadNodes, quadNodes, quadWeights);
622    
623        // Set the basis functions on the quadrature points.
624        // Note: ShapeFunction_alloc will introduce 0 if the dimensions of the
625        // quadrature scheme and the dimensions of the element don't match.
626        // Before we can set the shape function for the parametrization the
627        // quadrature scheme needs to be replicated:
628    
629        if (nsub > 1) {
630            out->DBasisFunctionDv=new  double [numQuadNodes*nsub* (basisfunction->numShapes) * (basisfunction->numDim)];
631            out->DBasisFunctionDvShared=FALSE;
632            out->BasisFunctions=ShapeFunction_alloc(basisfunction->TypeId, quadscheme->numDim, numQuadNodes, quadNodes, quadWeights);
633            double *quadNodes2=new double[numQuadNodes*quadscheme->numDim*nsub];
634            double *quadWeights2=new double[numQuadNodes*nsub];
635            int numQuadNodes2=quadscheme->getMacro(nsub,
636                    out->BasisFunctions->numQuadNodes,
637                    out->BasisFunctions->QuadNodes,
638                    out->BasisFunctions->QuadWeights,
639                    out->BasisFunctions->Type->numShapes,
640                    out->BasisFunctions->dSdv,
641                    numQuadNodes*nsub, quadNodes2, quadWeights2,
642                    out->DBasisFunctionDv);
643            if (Finley_noError()) {
644                out->Parametrization=ShapeFunction_alloc(parametrization->TypeId, quadscheme->numDim, numQuadNodes2, quadNodes2, quadWeights2);
645                out->LinearBasisFunctions=ShapeFunction_alloc(linearbasisfunction->TypeId, quadscheme->numDim, numQuadNodes2, quadNodes2, quadWeights2);
646          }          }
647                    delete[] quadNodes2;
648                delete[] quadWeights2;
649            } else {
650      out=new Finley_ReferenceElement;          out->Parametrization=ShapeFunction_alloc(parametrization->TypeId, quadscheme->numDim, numQuadNodes*nsub, quadNodes, quadWeights);
651      if (Finley_checkPtr(out)) return NULL;          out->BasisFunctions=ShapeFunction_alloc(basisfunction->TypeId, quadscheme->numDim, numQuadNodes, quadNodes, quadWeights);
652                out->LinearBasisFunctions=ShapeFunction_alloc(linearbasisfunction->TypeId, quadscheme->numDim, numQuadNodes, quadNodes, quadWeights);
653      out->reference_counter=0;          out->DBasisFunctionDv=out->BasisFunctions->dSdv;
     out->Parametrization=NULL;  
     out->BasisFunctions=NULL;  
     out->LinearBasisFunctions=NULL;  
     out->Type=type;  
     out->numNodes=out->Type->numNodes;  
     out->LinearType=linear_type;  
     out->numLinearNodes=out->LinearType->numNodes;  
         out->integrationOrder=-1;  
         out->DBasisFunctionDv=NULL;  
654          out->DBasisFunctionDvShared=TRUE;          out->DBasisFunctionDvShared=TRUE;
655        }
656      quadscheme=Finley_QuadInfo_getInfo(out->Type->Quadrature);      delete[] quadNodes;
657      parametrization=Finley_ShapeFunction_getInfo(out->Type->Parametrization);      delete[] quadWeights;
     basisfunction=Finley_ShapeFunction_getInfo(out->Type->BasisFunctions);  
     linearbasisfunction=Finley_ShapeFunction_getInfo(Finley_ReferenceElement_InfoList[out->Type->LinearTypeId].BasisFunctions);  
     nsub=out->Type->numSubElements;  
         out->numLocalDim=quadscheme->numDim;  
           
       
     /*  set up the basic integration scheme  
         note that quadscheme->numDim is not necessarily the dimension of the element  
     */  
       
     if (order<0) order=MAX(2*basisfunction->numOrder,0);  
         out->integrationOrder=order;  
   
     numQuadNodes=quadscheme->getNumQuadNodes(order);  
       
     quadNodes=new double[numQuadNodes*quadscheme->numDim*nsub];  
     quadWeights=new double[numQuadNodes*nsub];    
     if ( !( Finley_checkPtr(quadNodes) || Finley_checkPtr(quadWeights) ) ) {  
       
         quadscheme->getQuadNodes(numQuadNodes, quadNodes, quadWeights);  
       
         /*  set the basis functions on the quadrature points:  
          *  note: Finley_ShapeFunction_alloc will introduce 0. If the dimensions of the quadrature scheme and the dimension of the element don't match.  
          */  
   
   
         /*  
          *    before we can set the shape function for the parametrization the quadrature scheme needs to be replicated :  
          */  
       
         if (nsub>1) {  
                         out->DBasisFunctionDv=new  double [numQuadNodes*nsub* (basisfunction->numShapes) * (basisfunction->numDim)];  
                         out->DBasisFunctionDvShared=FALSE;  
                           
                 out->BasisFunctions=Finley_ShapeFunction_alloc(basisfunction->TypeId, quadscheme->numDim, numQuadNodes, quadNodes, quadWeights);  
             quadNodes2=new double[numQuadNodes*quadscheme->numDim*nsub];  
             quadWeights2=new double[numQuadNodes*nsub];  
             if ( !( Finley_checkPtr(quadNodes2) || Finley_checkPtr(quadWeights2) || Finley_checkPtr(out->DBasisFunctionDv)) ) {  
   
                 numQuadNodes2=quadscheme->getMacro(nsub,out->BasisFunctions->numQuadNodes,  
                                                                         out->BasisFunctions->QuadNodes,  
                                                                         out->BasisFunctions->QuadWeights,  
                                                                         out->BasisFunctions->Type->numShapes, out->BasisFunctions->dSdv,  
                                                                         numQuadNodes*nsub, quadNodes2, quadWeights2,  
                                                                         out->DBasisFunctionDv);  
                 if (Finley_noError()) {  
                     out->Parametrization=Finley_ShapeFunction_alloc(parametrization->TypeId, quadscheme->numDim, numQuadNodes2, quadNodes2, quadWeights2);  
                     out->LinearBasisFunctions=Finley_ShapeFunction_alloc(linearbasisfunction->TypeId, quadscheme->numDim, numQuadNodes2, quadNodes2, quadWeights2);  
                 }  
                   
             }  
             delete[] quadNodes2;  
             delete[] quadWeights2;  
               
         } else {  
             out->Parametrization=Finley_ShapeFunction_alloc(parametrization->TypeId, quadscheme->numDim, numQuadNodes*nsub, quadNodes, quadWeights);  
                 out->BasisFunctions=Finley_ShapeFunction_alloc(basisfunction->TypeId, quadscheme->numDim, numQuadNodes, quadNodes, quadWeights);  
             out->LinearBasisFunctions=Finley_ShapeFunction_alloc(linearbasisfunction->TypeId, quadscheme->numDim, numQuadNodes, quadNodes, quadWeights);  
                         out->DBasisFunctionDv=out->BasisFunctions->dSdv;  
                         out->DBasisFunctionDvShared=TRUE;  
         }  
     }  
     delete[] quadNodes;  
     delete[] quadWeights;  
658      if (Finley_noError()) {      if (Finley_noError()) {
659          return Finley_ReferenceElement_reference(out);          return ReferenceElement_reference(out);
660      } else {      } else {
661          Finley_ReferenceElement_dealloc(out);          ReferenceElement_dealloc(out);
662          return NULL;          return NULL;
663      }      }
664  }  }
665    
666  /************************************************************************************/  void ReferenceElement_dealloc(ReferenceElement* in)
667    {
668  void Finley_ReferenceElement_dealloc(Finley_ReferenceElement* in) {      if (in!=NULL) {
669      if (in!=NULL) {          in->reference_counter--;
670          in->reference_counter--;          if (in->reference_counter<1) {
671          if (in->reference_counter<1) {              ShapeFunction_dealloc(in->Parametrization);
672              Finley_ShapeFunction_dealloc(in->Parametrization);              ShapeFunction_dealloc(in->BasisFunctions);
673              Finley_ShapeFunction_dealloc(in->BasisFunctions);              ShapeFunction_dealloc(in->LinearBasisFunctions);
674              Finley_ShapeFunction_dealloc(in->LinearBasisFunctions);              if (!in->DBasisFunctionDvShared) delete[] in->DBasisFunctionDv;
675                          if (! in->DBasisFunctionDvShared) delete[] in->DBasisFunctionDv;              delete in;
676              delete in;          }
677          }      }
     }  
   
678  }  }
679    
680  /************************************************************************************/  ElementTypeId ReferenceElement_getTypeId(char* element_type)
681    {
 Finley_ElementTypeId Finley_ReferenceElement_getTypeId(char* element_type) {  
682      int ptr=0;      int ptr=0;
683      Finley_ElementTypeId out=Finley_NoRef;      ElementTypeId out=NoRef;
684      while (Finley_ReferenceElement_InfoList[ptr].TypeId!=Finley_NoRef && out==Finley_NoRef) {      while (ReferenceElement_InfoList[ptr].TypeId!=NoRef && out==NoRef) {
685         if (strcmp(element_type,Finley_ReferenceElement_InfoList[ptr].Name)==0) out=Finley_ReferenceElement_InfoList[ptr].TypeId;          if (strcmp(element_type, ReferenceElement_InfoList[ptr].Name)==0)
686         ptr++;              out=ReferenceElement_InfoList[ptr].TypeId;
687            ptr++;
688      }      }
689      return out;      return out;
690  }  }
691    
692  Finley_ReferenceElement* Finley_ReferenceElement_reference(Finley_ReferenceElement* in) {  ReferenceElement* ReferenceElement_reference(ReferenceElement* in)
693       if (in!=NULL) ++(in->reference_counter);  {
694       return in;      if (in!=NULL) ++(in->reference_counter);
695        return in;
696  }  }
697    
698  Finley_ReferenceElementInfo* Finley_ReferenceElement_getInfo(Finley_ElementTypeId id)  ReferenceElementInfo* ReferenceElement_getInfo(ElementTypeId id)
699  {  {
700      int ptr=0;      int ptr=0;
701      Finley_ReferenceElementInfo* out=NULL;      ReferenceElementInfo* out=NULL;
702      while (Finley_ReferenceElement_InfoList[ptr].TypeId!=Finley_NoRef && out==NULL) {      while (ReferenceElement_InfoList[ptr].TypeId!=NoRef && out==NULL) {
703         if (Finley_ReferenceElement_InfoList[ptr].TypeId==id) out=&(Finley_ReferenceElement_InfoList[ptr]);          if (ReferenceElement_InfoList[ptr].TypeId==id)
704         ptr++;              out=&ReferenceElement_InfoList[ptr];
705            ptr++;
706      }      }
707      if (out==NULL) {      if (out==NULL) {
708          Finley_setError(VALUE_ERROR,"Finley_ReferenceElement_getInfo: cannot find requested reference element.");          Finley_setError(VALUE_ERROR, "ReferenceElement_getInfo: cannot find requested reference element.");
709      }      }
710      return out;      return out;
711  }  }
712    
713    } // namespace finley
714    

Legend:
Removed from v.4491  
changed lines
  Added in v.4492

  ViewVC Help
Powered by ViewVC 1.1.26