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

Contents of /trunk/finley/src/ReferenceElements.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1198 - (show annotations)
Tue Jun 19 00:24:29 2007 UTC (13 years, 1 month ago) by btully
File MIME type: text/plain
File size: 21462 byte(s)
Updated Rec9 Shape Functions.
Included a new definition for Hex27 Reference Element and associated Shape Functions.

1 /*
2 ************************************************************
3 * Copyright 2006 by ACcESS MNRF *
4 * *
5 * http://www.access.edu.au *
6 * Primary Business: Queensland, Australia *
7 * Licensed under the Open Software License version 3.0 *
8 * http://www.opensource.org/licenses/osl-3.0.php *
9 * *
10 ************************************************************
11 */
12
13 /**************************************************************/
14
15 /* Finley: Reference elements */
16
17 /**************************************************************/
18
19 /* Author: gross@access.edu.au */
20 /* Version: $Id$ */
21
22 /**************************************************************/
23
24 #include "ReferenceElements.h"
25
26 /**************************************************************/
27
28 Finley_RefElementInfo Finley_RefElement_InfoList[]={
29 {Point1, "Point1", 0, 0, 1, 1, 1, 1,
30 Point1, {0},
31 Finley_Shape_Point1, Finley_Quad_getNodesPoint, Finley_Quad_getNumNodesPoint,
32 1,{0},
33 1,{0}, {0},{-1}},
34 {Line2, "Line2", 1, 1, 2, 2, 1, 2,
35 Line2, {0,1},
36 Finley_Shape_Line2, Finley_Quad_getNodesLine, Finley_Quad_getNumNodesLine,
37 2,{0,1},
38 2,{0,1}, {1,0},{-1}},
39 {Line3, "Line3", 1, 1, 3, 3, 2, 2,
40 Line2, {0,1},
41 Finley_Shape_Line3, Finley_Quad_getNodesLine, Finley_Quad_getNumNodesLine,
42 3,{0,1,2},
43 3,{0,1,2}, {1,0,2},{-1}},
44 {Line4, "Line4", 1, 1, 4, 4, 3, 2,
45 Line2, {0,1},
46 Finley_Shape_Line4, Finley_Quad_getNodesLine, Finley_Quad_getNumNodesLine,
47 4,{0,1,2,3},
48 4,{0,1,2,3}, {1,0,3,2},{-1}},
49 {Tri3, "Tri3", 2, 2, 3, 3, 1, 3,
50 Tri3, {0,1,2},
51 Finley_Shape_Tri3, Finley_Quad_getNodesTri, Finley_Quad_getNumNodesTri,
52 3,{0,1,2},
53 3,{0,1,2}, {1,2,0},{0,2,1}},
54 {Tri6, "Tri6", 2, 2, 6, 6, 2, 3,
55 Tri3, {0,1,2},
56 Finley_Shape_Tri6, Finley_Quad_getNodesTri, Finley_Quad_getNumNodesTri,
57 6,{0,1,2,3,4,5},
58 6,{0,1,2,3,4,5}, {1,2,0,4,5,3},{0,2,1,5,4,3}},
59 {Tri9, "Tri9", 2, 2, 9, 9, 3, 3,
60 Tri3, {0,1,2},
61 Finley_Shape_Tri9, Finley_Quad_getNodesTri, Finley_Quad_getNumNodesTri,
62 9,{0,1,2,3,4,5,6,7,8},
63 9,{0,1,2,3,4,5,6,7,8}, {1,2,0,5,6,7,8,3,4},{0,2,1,8,7,6,5,4,3}},
64 {Tri10, "Tri10", 2, 2, 10, 10, 3, 3,
65 Tri3, {0,1,2},
66 Finley_Shape_Tri10, Finley_Quad_getNodesTri, Finley_Quad_getNumNodesTri,
67 10,{0,1,2,3,4,5,6,7,8,9},
68 10,{0,1,2,3,4,5,6,7,8,9}, {1,2,0,5,6,7,8,3,4,9},{0,2,1,8,7,6,5,4,3,9}},
69 {Rec4, "Rec4", 2, 2, 4, 4, 1, 4,
70 Rec4, {0,1,2,3},
71 Finley_Shape_Rec4, Finley_Quad_getNodesRec, Finley_Quad_getNumNodesRec,
72 4,{0,1,2,3},
73 4,{0,1,2,3}, {1,2,3,0},{0,3,2,1}},
74 {Rec8, "Rec8", 2, 2, 8, 8, 2, 4,
75 Rec4, {0,1,2,3},
76 Finley_Shape_Rec8, Finley_Quad_getNodesRec, Finley_Quad_getNumNodesRec,
77 8,{0,1,2,3,4,5,6,7},
78 8,{0,1,2,3,4,5,6,7}, {1,2,3,0,5,6,7,4},{0,3,2,1,7,6,5,4}},
79 {Rec9, "Rec9", 2, 2, 9, 9, 2, 4,
80 Rec4, {0,1,2,3},
81 Finley_Shape_Rec9, Finley_Quad_getNodesRec, Finley_Quad_getNumNodesRec,
82 9,{0,1,2,3,4,5,6,7,8},
83 9,{0,1,2,3,4,5,6,7,8}, {1,2,3,0,5,6,7,4,8},{0,3,2,1,7,6,5,4,8}},
84 {Rec12, "Rec12", 2, 2, 12, 12, 3, 4,
85 Rec4, {0,1,2,3},
86 Finley_Shape_Rec12, Finley_Quad_getNodesRec, Finley_Quad_getNumNodesRec,
87 12,{0,1,2,3,4,5,6,7,8,9,10,11},
88 12,{0,1,2,3,4,5,6,7,8,9,10,11}, {1,2,3,0,6,7,8,9,10,11,4,5},{0,3,2,1,11,10,9,8,7,6,5,4}},
89 {Rec16, "Rec16", 2, 2, 16, 16, 3, 4,
90 Rec4, {0,1,2,3},
91 Finley_Shape_Rec16, Finley_Quad_getNodesRec, Finley_Quad_getNumNodesRec,
92 16,{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},
93 16,{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}, {1,2,3,0,6,7,8,9,10,11,4,5,13,14,15,12},{0,3,2,1,11,10,9,8,7,6,5,4,12,15,14,13}},
94 {Tet4, "Tet4", 3, 3, 4, 4, 1, 4,
95 Tet4, {0,1,2,3},
96 Finley_Shape_Tet4, Finley_Quad_getNodesTet, Finley_Quad_getNumNodesTet,
97 4,{0,1,2,3},
98 -1,{999}, {999},{999}},
99 {Tet10, "Tet10", 3, 3, 10, 10, 2, 4,
100 Tet4, {0,1,2,3},
101 Finley_Shape_Tet10, Finley_Quad_getNodesTet, Finley_Quad_getNumNodesTet,
102 10,{0,1,2,3,4,5,6,7,8,9},
103 -1,{999}, {999},{999}},
104 {Tet16, "Tet16", 3, 3, 16, 16, 3, 4,
105 Tet4, {0,1,2,3},
106 Finley_Shape_Tet16, Finley_Quad_getNodesTet, Finley_Quad_getNumNodesTet,
107 16,{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},
108 -1,{999}, {999},{999}},
109 {Hex8, "Hex8", 3, 3, 8, 8, 1, 8,
110 Hex8, {0,1,2,3,4,5,6,7},
111 Finley_Shape_Hex8, Finley_Quad_getNodesHex, Finley_Quad_getNumNodesHex,
112 8,{0,1,2,3,4,5,6,7},
113 -1,{999}, {999},{999}},
114 {Hex20, "Hex20", 3, 3, 20, 20, 2, 8,
115 Hex8, {0,1,2,3,4,5,6,7},
116 Finley_Shape_Hex20, Finley_Quad_getNodesHex, Finley_Quad_getNumNodesHex,
117 20,{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19},
118 -1,{999}, {999},{999}},
119 {Hex27, "Hex27", 3, 3, 27, 27, 2, 8,
120 Hex8, {0,1,2,3,4,5,6,7},
121 Finley_Shape_Hex27, Finley_Quad_getNodesHex, Finley_Quad_getNumNodesHex,
122 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},
123 -1,{999}, {999},{999}},
124 {Hex32, "Hex32", 3, 3, 32, 32, 3, 8,
125 Hex8, {0,1,2,3,4,5,6,7},
126 Finley_Shape_Hex32, Finley_Quad_getNodesHex, Finley_Quad_getNumNodesHex,
127 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},
128 -1,{999}, {999},{999}},
129 {Line2Face, "Line2Face", 0, 1, 2, 2, 1, 1,
130 Line2Face, {0,1},
131 Finley_Shape_Line2, Finley_Quad_getNodesPointOnFace, Finley_Quad_getNumNodesPoint,
132 1,{0},
133 1,{0}, {0,1,2},{-1}},
134 {Line3Face, "Line3Face", 0, 1, 3, 3, 2, 1,
135 Line2Face, {0,1},
136 Finley_Shape_Line3, Finley_Quad_getNodesPointOnFace, Finley_Quad_getNumNodesPoint,
137 1,{0},
138 1,{0}, {0,1,2},{-1}},
139 {Line4Face, "Line4Face", 0, 1, 4, 4, 3, 1,
140 Line2Face, {0,1},
141 Finley_Shape_Line4, Finley_Quad_getNodesPointOnFace, Finley_Quad_getNumNodesPoint,
142 1,{0},
143 1,{0}, {0,1,2},{-1}},
144 {Tri3Face, "Tri3Face", 1, 2, 3, 3, 1, 2,
145 Tri3Face, {0,1,2},
146 Finley_Shape_Tri3, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
147 2,{0,1},
148 2,{0,1}, {1,0,2},{-1}},
149 {Tri6Face, "Tri6Face", 1, 2, 6, 6, 2, 2,
150 Tri3Face, {0,1,2},
151 Finley_Shape_Tri6, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
152 3,{0,1,3},
153 3,{0,1,3}, {1,0,2,3,5,4},{-1}},
154 {Tri9Face, "Tri9Face", 1, 2, 9, 9, 3, 2,
155 Tri3Face, {0,1,2},
156 Finley_Shape_Tri9, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
157 4,{0,1,3,4},
158 4,{0,1,3,4}, {1,0,2,4,3,7,8,6,5},{-1}},
159 {Tri10Face, "Tri10Face", 1, 2, 10, 10, 3, 2,
160 Tri3Face, {0,1,2},
161 Finley_Shape_Tri10, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
162 4,{0,1,3,4},
163 4,{0,1,3,4}, {1,0,2,4,3,7,8,6,5,9},{-1}},
164 {Rec4Face, "Rec4Face", 1, 2, 4, 4, 1, 2,
165 Rec4Face, {0,1,2,3},
166 Finley_Shape_Rec4, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
167 2,{0,1},
168 2,{0,1}, {1,0,3,2},{-1}},
169 {Rec8Face, "Rec8Face", 1, 2, 8, 8, 2, 2,
170 Rec4Face, {0,1,2,3},
171 Finley_Shape_Rec8, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
172 3,{0,1,4},
173 3,{0,1,4}, {1,0,3,2,4,7,6,5},{-1}},
174 {Rec9Face, "Rec9Face", 1, 2, 9, 9, 2, 2,
175 Rec4Face, {0,1,2,3},
176 Finley_Shape_Rec9, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
177 3,{0,1,4},
178 3,{0,1,4}, {1,0,3,2,4,7,6,5,8},{-1}},
179 {Rec12Face, "Rec12Face", 1, 2, 12, 12, 3, 2,
180 Rec4Face, {0,1,2,3},
181 Finley_Shape_Rec12, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
182 4,{0,1,4,5},
183 4,{0,1,4,5}, {1,0,3,2,5,4,11,10,9,8,7,6},{-1}},
184 {Rec16Face, "Rec16Face", 1, 2, 16, 16, 3, 2,
185 Rec4Face, {0,1,2,3},
186 Finley_Shape_Rec16, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
187 4,{0,1,4,5},
188 4,{0,1,4,5}, {1,0,3,2,5,4,11,10,9,8,7,6,13,12,15,14},{-1}},
189 {Tet4Face, "Tet4Face", 2, 3, 4, 4, 1, 3,
190 Tet4Face, {0,1,2,3},
191 Finley_Shape_Tet4, Finley_Quad_getNodesTriOnFace, Finley_Quad_getNumNodesTri,
192 3,{0,1,2},
193 3,{0,1,2}, {1,2,0,3},{0,2,1,3}},
194 {Tet10Face, "Tet10Face", 2, 3, 10, 10, 2, 3,
195 Tet4Face, {0,1,2,3},
196 Finley_Shape_Tet10, Finley_Quad_getNodesTriOnFace, Finley_Quad_getNumNodesTri,
197 4,{0,1,2,4,5,6},
198 4,{0,1,2,4,5,6}, {1,2,0,3,5,6,4,8,9,7},{0,2,1,3,6,7,9,8}},
199 {Tet16Face, "Tet16Face", 2, 3, 16, 16, 3, 3,
200 Tet4Face, {0,1,2,3},
201 Finley_Shape_Tet16, Finley_Quad_getNodesTriOnFace, Finley_Quad_getNumNodesTri,
202 5,{0,1,2,4,5,6,7,8,9},
203 5,{0,1,2,4,5,6,7,8,9}, {1,2,0,3,6,7,8,9,4,5,11,12,10,14,15,13},{0,2,1,3,9,8,7,6,5,4,9,8,7,6,10,12,11,13,15,14}},
204 {Hex8Face, "Hex8Face", 2, 3, 8, 8, 1, 4,
205 Hex8Face, {0,1,2,3,4,5,6,7},
206 Finley_Shape_Hex8, Finley_Quad_getNodesRecOnFace, Finley_Quad_getNumNodesRec,
207 4,{0,1,2,3},
208 4,{0,1,2,3}, {1,2,3,0,5,6,7,4},{0,3,2,1,4,7,6,5}},
209 {Hex20Face, "Hex20Face", 2, 3, 20, 20, 2, 4,
210 Hex8Face, {0,1,2,3,4,5,6,7},
211 Finley_Shape_Hex20, Finley_Quad_getNodesRecOnFace, Finley_Quad_getNumNodesRec,
212 8,{0,1,2,3,8,9,10,11},
213 8,{0,1,2,3,8,9,10,11}, {1,2,3,0,5,6,7,4,9,10,11,8,13,14,15,12,17,18,19,16},{0,3,2,1,4,7,6,5,11,10,9,8,12,15,14,13,19,18,17,16}},
214 {Hex27Face, "Hex27Face", 2, 3, 27, 27, 2, 4,
215 Hex8Face, {0,1,2,3,4,5,6,7},
216 Finley_Shape_Hex27, Finley_Quad_getNodesRecOnFace, Finley_Quad_getNumNodesRec,
217 9,{0,1,2,3,8,9,10,11,20},
218 9,{0,1,2,3,8,9,10,11,20}, {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},{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}},
219 {Hex32Face, "Hex32Face", 2, 3, 32, 32, 3, 4,
220 Hex8Face, {0,1,2,3,4,5,6,7},
221 Finley_Shape_Hex32, Finley_Quad_getNodesRecOnFace, Finley_Quad_getNumNodesRec,
222 12,{0,1,2,3,8,9,10,11,12,13,14,15},
223 12,{0,1,2,3,8,9,10,11,12,13,14,15},
224 {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},
225 {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}},
226
227 {Point1_Contact, "Point1_Contact", 0, 0, 2, 1, 1, 1,
228 Point1_Contact, {0,1},
229 Finley_Shape_Point1, Finley_Quad_getNodesPoint, Finley_Quad_getNumNodesPoint,
230 1,{0},
231 -1,{999}, {999},{999}},
232 {Line2_Contact, "Line2_Contact", 1, 1, 4, 2, 1, 2,
233 Line2_Contact, {0,1,2,3},
234 Finley_Shape_Line2, Finley_Quad_getNodesLine, Finley_Quad_getNumNodesLine,
235 2,{0,1},
236 -1,{999}, {999},{999}},
237 {Line3_Contact, "Line3_Contact", 1, 1, 6, 3, 2, 2,
238 Line2_Contact, {0,1,3,4},
239 Finley_Shape_Line3, Finley_Quad_getNodesLine, Finley_Quad_getNumNodesLine,
240 3,{0,1,2},
241 -1,{999}, {999},{999}},
242 {Line4_Contact, "Line4_Contact", 1, 1, 8, 4, 3, 2,
243 Line2_Contact, {0,1,4,5},
244 Finley_Shape_Line4, Finley_Quad_getNodesLine, Finley_Quad_getNumNodesLine,
245 4,{0,1,2,3},
246 -1,{999}, {999},{999}},
247 {Tri3_Contact, "Tri3_Contact", 2, 2, 6, 3, 1, 3,
248 Tri3_Contact, {0,1,2,3,4,5},
249 Finley_Shape_Tri3, Finley_Quad_getNodesTri, Finley_Quad_getNumNodesTri,
250 3,{0,1,2},
251 -1,{999}, {999},{999}},
252 {Tri6_Contact, "Tri6_Contact", 2, 2, 12, 6, 2, 3,
253 Tri3_Contact, {0,1,2,6,7,8},
254 Finley_Shape_Tri6, Finley_Quad_getNodesTri, Finley_Quad_getNumNodesTri,
255 6,{0,1,2,3,4,5},
256 -1,{999}, {999},{999}},
257 {Tri9_Contact, "Tri9_Contact", 2, 2, 18, 9, 3, 3,
258 Tri3_Contact, {0,1,2,9,10,11},
259 Finley_Shape_Tri9, Finley_Quad_getNodesTri, Finley_Quad_getNumNodesTri,
260 9,{0,1,2,3,4,5,6,7,8},
261 -1,{999}, {999},{999}},
262 {Tri10_Contact, "Tri10_Contact", 2, 2, 20, 10, 3, 3,
263 Tri3_Contact, {0,1,2,10,11,12},
264 Finley_Shape_Tri10, Finley_Quad_getNodesTri, Finley_Quad_getNumNodesTri,
265 10,{0,1,2,3,4,5,6,7,8,9},
266 -1,{999}, {999},{999}},
267 {Rec4_Contact, "Rec4_Contact", 2, 2, 8, 4, 1, 4,
268 Rec4_Contact, {0,1,2,3,4,5,6,7},
269 Finley_Shape_Rec4, Finley_Quad_getNodesRec, Finley_Quad_getNumNodesRec,
270 4,{0,1,2,3},
271 -1,{999}, {999},{999}},
272 {Rec8_Contact, "Rec8_Contact", 2, 2, 16, 8, 2, 4,
273 Rec4_Contact, {0,1,2,3,8,9,10,11},
274 Finley_Shape_Rec8, Finley_Quad_getNodesRec, Finley_Quad_getNumNodesRec,
275 8,{0,1,2,3,4,5,6,7},
276 -1,{999}, {999},{999}},
277 {Rec9_Contact, "Rec9_Contact", 2, 2, 18, 9, 2, 4,
278 Rec4_Contact, {0,1,2,3,9,10,11,12},
279 Finley_Shape_Rec9, Finley_Quad_getNodesRec, Finley_Quad_getNumNodesRec,
280 9,{0,1,2,3,4,5,6,7,8},
281 -1,{999}, {999},{999}},
282 {Rec12_Contact, "Rec12_Contact", 2, 2, 24, 12, 3, 4,
283 Rec4_Contact, {0,1,2,3,12,13,14,15},
284 Finley_Shape_Rec12, Finley_Quad_getNodesRec, Finley_Quad_getNumNodesRec,
285 12,{0,1,2,3,4,5,6,7,8,9,10,11},
286 -1,{999}, {999},{999}},
287 {Rec16_Contact, "Rec16_Contact", 2, 2, 32, 16, 3, 4,
288 Rec4_Contact, {0,1,2,3,16,17,18,19},
289 Finley_Shape_Rec16, Finley_Quad_getNodesRec, Finley_Quad_getNumNodesRec,
290 16,{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},
291 -1,{999}, {999},{999}},
292 {Line2Face_Contact, "Line2Face_Contact", 0, 1, 4, 2, 1, 1,
293 Line2Face_Contact, {0,1,2,3},
294 Finley_Shape_Line2, Finley_Quad_getNodesPointOnFace, Finley_Quad_getNumNodesPoint,
295 1,{0},
296 -1,{999}, {999},{999}},
297 {Line3Face_Contact, "Line3Face_Contact", 0, 1, 6, 3, 2, 1,
298 Line2Face_Contact, {0,1,3,4},
299 Finley_Shape_Line3, Finley_Quad_getNodesPointOnFace, Finley_Quad_getNumNodesPoint,
300 1,{0},
301 -1,{999}, {999},{999}},
302 {Line4Face_Contact, "Line4Face_Contact", 0, 1, 8, 4, 3, 1,
303 Line2Face_Contact, {0,1,4,5},
304 Finley_Shape_Line4, Finley_Quad_getNodesPointOnFace, Finley_Quad_getNumNodesPoint,
305 1,{0},
306 -1,{999}, {999},{999}},
307 {Tri3Face_Contact, "Tri3Face_Contact", 1, 2, 6, 3, 1, 2,
308 Tri3Face_Contact, {0,1,2,3,4,5},
309 Finley_Shape_Tri3, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
310 2,{0,1},
311 -1,{999}, {999},{999}},
312 {Tri6Face_Contact, "Tri6Face_Contact", 1, 2, 12, 6, 2, 2,
313 Tri3Face_Contact, {0,1,2,6,7,8},
314 Finley_Shape_Tri6, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
315 3,{0,1,3},
316 -1,{999}, {999},{999}},
317 {Tri9Face_Contact, "Tri9Face_Contact", 1, 2, 18, 9, 3, 2,
318 Tri3Face_Contact, {0,1,2,9,10,11},
319 Finley_Shape_Tri9, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
320 4,{0,1,3,4},
321 -1,{999}, {999},{999}},
322 {Tri10Face_Contact, "Tri10Face_Contact", 1, 2, 20, 10, 3, 2,
323 Tri3Face_Contact, {0,1,2,10,11,12},
324 Finley_Shape_Tri10, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
325 4,{0,1,3,4},
326 -1,{999}, {999},{999}},
327 {Rec4Face_Contact, "Rec4Face_Contact", 1, 2, 8, 4, 1, 2,
328 Rec4Face_Contact, {0,1,2,3,4,5,6,7},
329 Finley_Shape_Rec4, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
330 2,{0,1},
331 -1,{999}, {999},{999}},
332 {Rec8Face_Contact, "Rec8Face_Contact", 1, 2, 16, 8, 2, 2,
333 Rec4Face_Contact, {0,1,2,3,8,9,10,11},
334 Finley_Shape_Rec8, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
335 3,{0,1,4},
336 -1,{999}, {999},{999}},
337 {Rec9Face_Contact, "Rec9Face_Contact", 1, 2, 18, 9, 2, 2,
338 Rec4Face_Contact, {0,1,2,3,9,10,11,12},
339 Finley_Shape_Rec9, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
340 3,{0,1,4},
341 -1,{999}, {999},{999}},
342 {Rec12Face_Contact, "Rec12Face_Contact", 1, 2, 24, 12, 3, 2,
343 Rec4Face_Contact, {0,1,2,3,12,13,14,15},
344 Finley_Shape_Rec12, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
345 4,{0,1,4,5},
346 -1,{999}, {999},{999}},
347 {Rec16Face_Contact, "Rec16Face_Contact", 1, 2, 32, 16, 3, 2,
348 Rec4Face_Contact, {0,1,2,3,16,17,18,19},
349 Finley_Shape_Rec16, Finley_Quad_getNodesLineOnFace, Finley_Quad_getNumNodesLine,
350 4,{0,1,4,5},
351 -1,{999}, {999},{999}},
352 {Tet4Face_Contact, "Tet4Face_Contact", 2, 3, 8, 4, 1, 3,
353 Tet4Face_Contact, {0,1,2,3,4,5,6,7},
354 Finley_Shape_Tet4, Finley_Quad_getNodesTriOnFace, Finley_Quad_getNumNodesTri,
355 3,{0,1,2},
356 -1,{999}, {999},{999}},
357 {Tet10Face_Contact, "Tet10Face_Contact", 2, 3, 20, 10, 2, 3,
358 Tet4Face_Contact, {0,1,2,3,10,11,12,13},
359 Finley_Shape_Tet10, Finley_Quad_getNodesTriOnFace, Finley_Quad_getNumNodesTri,
360 4,{0,1,2,4,5,6},
361 -1,{999}, {999},{999}},
362 {Tet16Face_Contact, "Tet16Face_Contact", 2, 3, 32, 16, 3, 3,
363 Tet4Face_Contact, {0,1,2,3,16,17,18,19},
364 Finley_Shape_Tet16, Finley_Quad_getNodesTriOnFace, Finley_Quad_getNumNodesTri,
365 5,{0,1,2,4,5,6,7,8,9},
366 -1,{999}, {999},{999}},
367 {Hex8Face_Contact, "Hex8Face_Contact", 2, 3, 16, 8, 1, 4,
368 Hex8Face_Contact, {0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15},
369 Finley_Shape_Hex8, Finley_Quad_getNodesRecOnFace, Finley_Quad_getNumNodesRec,
370 4,{0,1,2,3},
371 -1,{999}, {999},{999}},
372 {Hex20Face_Contact, "Hex20Face_Contact", 2, 3, 40, 20, 2, 4,
373 Hex8Face_Contact, {0,1,2,3,4,5,6,7, 20,21,22,23,24,25,26,27},
374 Finley_Shape_Hex20, Finley_Quad_getNodesRecOnFace, Finley_Quad_getNumNodesRec,
375 8,{0,1,2,3,8,9,10,11},
376 -1,{999}, {999},{999}},
377 {Hex27Face_Contact, "Hex27Face_Contact", 2, 3, 54, 27, 2, 4,
378 Hex8Face_Contact, {0,1,2,3,4,5,6,7, 27,28,29,30,31,32,33,34},
379 Finley_Shape_Hex27, Finley_Quad_getNodesRecOnFace, Finley_Quad_getNumNodesRec,
380 9,{0,1,2,3,8,9,10,11,20},
381 -1,{999}, {999},{999}},
382 {Hex32Face_Contact, "Hex32Face_Contact", 2, 3, 64, 32, 3, 4,
383 Hex8Face_Contact, {0,1,2,3,4,5,6,7, 32,33,34,35,36,37,38,39},
384 Finley_Shape_Hex32, Finley_Quad_getNodesRecOnFace, Finley_Quad_getNumNodesRec,
385 12,{0,1,2,3,8,9,10,11,12,13,14,15},
386 -1,{999}, {999},{999}},
387
388 {NoType, "noElement", 0, 0, 0, 0, 0, 0, NoType, {999}, Finley_Shape_Point1, Finley_Quad_getNodesPoint, Finley_Quad_getNumNodesPoint,0,{999},-1,{999},{999},{999}} /* marks end of list */
389 };
390
391 /**************************************************************/
392
393 /* get a quadrature scheme with NumQuadNodes quadrature nodes for the tri */
394 /* as a queezed scheme on a quad [0,1]^2 */
395
396 Finley_RefElement* Finley_RefElement_alloc(ElementTypeId id,int numQuadNodes) {
397 Finley_RefElement *out=NULL;
398 int Ndim, NS;
399
400 /* allocate the Finley_RefElement to be returned: */
401
402 out=MEMALLOC(1,Finley_RefElement);
403 if (Finley_checkPtr(out)) return NULL;
404 out->Type=&(Finley_RefElement_InfoList[id]);
405 out->numQuadNodes=numQuadNodes;
406 out->QuadNodes=NULL;
407 out->QuadWeights=NULL;
408 out->S=NULL;
409 out->dSdv=NULL;
410
411 /* allocate memory: */
412
413 Ndim=Finley_RefElement_InfoList[id].numDim;
414 NS=Finley_RefElement_InfoList[id].numShapes;
415 out->QuadNodes=MEMALLOC(numQuadNodes*Ndim,double);
416 out->QuadWeights=MEMALLOC(numQuadNodes,double);
417 out->S=MEMALLOC(NS*numQuadNodes,double);
418 out->dSdv=MEMALLOC(NS*Ndim*numQuadNodes,double);
419 if ( Finley_checkPtr(out->QuadNodes) || Finley_checkPtr(out->QuadWeights) || Finley_checkPtr(out->S) || Finley_checkPtr(out->dSdv) ) {
420 Finley_RefElement_dealloc(out);
421 return NULL;
422 }
423
424 /* set the quadrature nodes: */
425
426 Finley_RefElement_InfoList[id].getQuadNodes(numQuadNodes,out->QuadNodes,out->QuadWeights);
427 if (! Finley_noError()) {
428 Finley_RefElement_dealloc(out);
429 return NULL;
430 }
431
432 /* eval shape functions on quadrature node: */
433
434 Finley_RefElement_InfoList[id].getValues(numQuadNodes,out->QuadNodes,out->S,out->dSdv);
435 if (! Finley_noError()) {
436 Finley_RefElement_dealloc(out);
437 return NULL;
438 }
439
440 /* all done: */
441
442 #ifdef Finley_TRACE
443 printf("reference element %s with %d quadrature nodes allocated.\n",Finley_RefElement_InfoList[id].Name,numQuadNodes);
444 #endif
445 return out;
446 }
447
448 /**************************************************************/
449
450 void Finley_RefElement_dealloc(Finley_RefElement* in) {
451 if (in!=NULL) {
452 #ifdef Finley_TRACE
453 printf("reference element %s is deallocated.\n",in->Type->Name);
454 #endif
455 MEMFREE(in->QuadNodes);
456 MEMFREE(in->QuadWeights);
457 MEMFREE(in->S);
458 MEMFREE(in->dSdv);
459 MEMFREE(in);
460 }
461 }
462
463 /**************************************************************/
464
465 ElementTypeId Finley_RefElement_getTypeId(char* element_type) {
466 int ptr=0;
467 ElementTypeId out=NoType;
468 while (Finley_RefElement_InfoList[ptr].TypeId!=NoType && out==NoType) {
469 if (strcmp(element_type,Finley_RefElement_InfoList[ptr].Name)==0) out=Finley_RefElement_InfoList[ptr].TypeId;
470 ptr++;
471 }
472 return out;
473 }
474 /*
475 * $Log$
476 * Revision 1.5 2005/09/15 03:44:23 jgs
477 * Merge of development branch dev-02 back to main trunk on 2005-09-15
478 *
479 * Revision 1.4.2.1 2005/09/07 06:26:21 gross
480 * the solver from finley are put into the standalone package paso now
481 *
482 * Revision 1.4 2004/12/15 07:08:33 jgs
483 * *** empty log message ***
484 *
485 *
486 *
487 */

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26