17 static int nsubeldata[27] = {1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,9,9,9,9,9,9,27};
30 {{2,3},{2,10},{3,10}},
31 {{0,3},{0,11},{3,11}},
32 {{0,4},{0,12},{4,12}},
33 {{1,5},{1,13},{5,13}},
34 {{2,6},{2,14},{6,14}},
35 {{3,7},{3,15},{7,15}},
36 {{4,5},{4,16},{5,16}},
37 {{5,6},{5,17},{6,17}},
38 {{6,7},{6,18},{7,18}},
39 {{4,7},{4,19},{7,19}},
40 {{0,2},{0,9},{0,10},{2,8},{2,11},{0,20},{1,20},{2,20},{3,20}},
41 {{0,5},{0,13},{0,16},{5,8},{5,12},{0,21},{1,21},{4,21},{5,21}},
42 {{1,6},{1,14},{1,17},{6,9},{6,13},{1,22},{2,22},{5,22},{6,22}},
43 {{2,7},{2,15},{2,18},{7,10},{7,14},{2,23},{3,23},{6,23},{7,23}},
44 {{0,7},{0,15},{0,19},{7,11},{7,12},{0,24},{3,24},{4,24},{7,24}},
45 {{4,6},{4,17},{4,18},{6,16},{6,19},{4,25},{5,25},{6,25},{7,25}},
46 {{0,14},{0,17},{0,18},{6,8},{6,11},{6,12},{0,26},{1,26},{2,26},{3,26},{4,26},{5,26},{6,26},
47 {7,26},{0,22},{0,23},{0,25},{1,25},{2,21},{2,24},{2,25},{3,25},{4,22},{4,23},{6,21},{6,24},{0,6}}
51 {0,1},{1,2},{2,3},{3,0},{4,0},{5,1},
52 {6,2},{7,3},{4,5},{5,6},{6,7},{7,4},
53 {0,2},{0,5},{1,6},{2,7},{0,7},{4,6},
56 static REAL
MidCoord[19][3] = { {0.,-1.,-1.},{1.,0.,-1.},{0.,1.,-1.},{-1.,0.,-1.},{-1.,-1.,0.},{1.,-1.,0.},
57 {1.,1.,0.},{-1.,1.,0.},{0.,-1.,1.},{1.,0.,1.},{0.,1.,1.},{-1.,0.,1.},
58 {0.,0.,-1.},{0.,-1.,0.},{1.,0.,0.},{0.,1.,0.},{-1.,0.,0.},{0.,0.,1.},{0.,0.,0.} };
67 {{1,1,0},{2,1,3},{3,3,0},{4,4,0},{5,1,4},{6,1,7},{7,3,4},{9,1,11},{10,3,8},{13,1,12},{14,1,15},{15,3,12},{16,4,8},{17,1,19},{18,3,16},{19,4,11},{22,1,24},{23,3,21},{25,4,20}},
68 {{0,0,1},{2,2,1},{3,2,0},{4,5,0},{5,5,1},{6,2,5},{7,2,4},{10,2,8},{11,0,9},{12,0,13},{14,2,13},{15,2,12},{16,5,8},{17,5,9},{18,2,16},{19,5,11},{23,2,21},{24,0,22},{25,5,20}},
69 {{0,3,1},{1,1,2},{3,3,2},{4,3,5},{5,6,1},{6,6,2},{7,6,3},{8,1,10},{11,3,9},{12,3,13},{13,1,14},{15,3,14},{16,6,8},{17,6,9},{18,6,10},{19,6,11},{21,1,23},{24,3,22},{25,6,20}},
70 {{0,0,3},{1,0,2},{2,2,3},{4,7,0},{5,4,2},{6,2,7},{7,7,3},{8,0,10},{9,2,11},{12,0,15},{13,0,14},{14,2,15},{16,7,8},{17,2,19},{18,7,10},{19,7,11},{21,0,23},{22,2,24},{25,7,20}},
71 {{0,0,4},{1,0,5},{2,5,3},{3,0,7},{5,5,4},{6,5,7},{7,7,4},{8,0,16},{9,0,17},{10,0,18},{11,0,19},{13,5,12},{14,5,15},{15,7,12},{17,5,19},{18,7,16},{20,0,25},{22,5,24},{23,7,21}},
72 {{0,4,1},{1,1,5},{2,1,6},{3,6,0},{4,4,5},{6,6,5},{7,6,4},{8,1,16},{9,1,17},{10,1,18},{11,4,9},{12,4,13},{14,6,13},{15,6,12},{18,6,16},{19,4,17},{20,1,25},{23,6,21},{24,4,22}},
73 {{0,7,1},{1,5,2},{2,2,6},{3,7,2},{4,7,5},{5,5,6},{7,7,6},{8,5,10},{9,2,17},{10,2,18},{11,7,9},{12,7,13},{13,5,14},{15,7,14},{16,5,18},{19,7,17},{20,2,25},{21,5,23},{24,7,22}},
74 {{0,4,3},{1,0,6},{2,3,6},{3,3,7},{4,4,7},{5,4,6},{6,6,7},{8,4,10},{9,3,17},{10,3,18},{11,3,19},{12,4,15},{13,4,14},{14,6,15},{16,4,18},{17,6,19},{20,3,25},{21,4,23},{22,6,24}} };
80 {0,8,20,11,12,21,26,24},{8,1,9,20,21,13,22,26},{20,9,2,10,26,22,14,23},
81 {11,20,10,3,24,26,23,15},{12,21,26,24,4,16,25,19},{21,13,22,26,16,5,17,25},
82 {26,22,14,23,25,17,6,18},{24,26,23,15,19,25,18,7} };
86 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{-1.,-1.,-1.}},
87 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
88 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
89 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
90 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
91 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
92 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
93 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
94 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
95 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-.5,0.}},
96 {{-.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
97 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
98 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
99 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-.5,0.}},
100 {{0.,0.,0.5},{0.,0.,0.},{0.,0.,0.},{0.,0.,-0.5}},
101 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-.5,0.}},
102 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
103 {{0.,0.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-0.5,0.}},
104 {{-0.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-0.5,0.,0.}},
105 {{-.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
106 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{-.5,-.5,0.}},
107 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{-.5,-.5,0.}},
108 {{0.,0.5,0.},{0.,0.,0.5},{0.,0.,0.},{0.,-0.5,-0.5}},
109 {{0.5,0.,0.},{0.,0.,0.5},{0.,0.,0.},{-0.5,0.,-0.5}},
110 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{-.5,-.5,0.}},
111 {{0.5,0.,0.},{0.,0.5,0.},{0.,0.,0.},{-0.5,-0.5,0.}},
112 {{.5,0.,0.},{0.,.5,0.},{0.,0.,.5},{-.5,-.5,-.5}}},
114 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
115 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{1,-1,-1}},
116 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
117 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
118 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
119 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
120 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
121 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
122 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
123 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
124 {{-.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
125 {{0.,-.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-.5,0.}},
126 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-.5,0.}},
127 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
128 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-.5,0.}},
129 {{0.,0.,0.5},{0.,0.,0.},{0.,0.,0.},{0.,0.,-0.5}},
130 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
131 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
132 {{-0.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.5,0.,0.}},
133 {{0.,-0.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-0.5,0.}},
134 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{.5,-.5,0.}},
135 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{.5,-.5,0.}},
136 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{-.5,-.5,0.}},
137 {{0.5,0.,0.},{0.,0.,0.5},{0.,0.,0.},{0.5,0.,-0.5}},
138 {{0.,0.5,0.},{0.,0.,0.5},{0.,0.,0.},{0.,-0.5,-0.5}},
139 {{0.5,0.,0.},{0.,0.5,0.},{0.,0.,0.},{0.5,-0.5,0.}},
140 {{.5,0.,0.},{0.,.5,0.},{0.,0.,.5},{.5,-.5,-.5}}},
142 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
143 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
144 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{1,1,-1}},
145 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
146 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
147 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
148 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
149 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
150 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
151 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
152 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
153 {{0.,-.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,.5,0.}},
154 {{0.,0.,0.5},{0.,0.,0.},{0.,0.,0.},{0.,0.,-0.5}},
155 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-.5,0.}},
156 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
157 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-.5,0.}},
158 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
159 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
160 {{-.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
161 {{0.,-0.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.5,0.}},
162 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{.5,.5,0.}},
163 {{0.5,0.,0.},{0.,0.,0.5},{0.,0.,0.},{0.5,0.,-0.5}},
164 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{.5,-.5,0.}},
165 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{.5,-.5,0.}},
166 {{0.,0.5,0.},{0.,0.,0.5},{0.,0.,0.},{0.,0.5,-0.5}},
167 {{0.5,0.,0.},{0.,0.5,0.},{0.,0.,0.},{0.5,0.5,0.}},
168 {{.5,0.,0.},{0.,.5,0.},{0.,0.,.5},{.5,.5,-.5}}},
170 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
171 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
172 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
173 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{-1,1,-1}},
174 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
175 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
176 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
177 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
178 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
179 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,.5,0.}},
180 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
181 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
182 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-.5,0.}},
183 {{0.,0.,.5},{0.,0.,0.},{0.,0.,0.},{0.,0.,-.5}},
184 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-.5,0.}},
185 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
186 {{0.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-0.5,0.,0.}},
187 {{0.,0.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.5,0.}},
188 {{-.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
189 {{-.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
190 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{-.5,.5,0.}},
191 {{0.5,0.,0.},{0.,0.,0.5},{0.,0.,0.},{-0.5,0.,-0.5}},
192 {{0.,0.5,0.},{0.,0.,0.5},{0.,0.,0.},{0.,0.5,-0.5}},
193 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{-.5,-.5,0.}},
194 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{.5,-.5,0.}},
195 {{0.5,0.,0.},{0.,0.5,0.},{0.,0.,0.},{-0.5,0.5,0.}},
196 {{.5,0.,0.},{0.,.5,0.},{0.,0.,.5},{-.5,.5,-.5}}},
198 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
199 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
200 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
201 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
202 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{-1,-1,1}},
203 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
204 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
205 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
206 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
207 {{0.,0.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-0.5,0.}},
208 {{-0.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-0.5,0.,0.}},
209 {{-.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
210 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
211 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,.5,0.}},
212 {{0.,0.,0.5},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.5}},
213 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,.5,0.}},
214 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
215 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-.5,0.}},
216 {{-.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
217 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
218 {{0.5,0.,0.},{0.,0.5,0.},{0.,0.,0.},{-0.5,-0.5,0.}},
219 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{-.5,.5,0.}},
220 {{0.,0.5,0.},{0.,0.,0.5},{0.,0.,0.},{0.,-0.5,0.5}},
221 {{0.5,0.,0.},{0.,0.,0.5},{0.,0.,0.},{-0.5,0.,0.5}},
222 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{-.5,.5,0.}},
223 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{-.5,-.5,0.}},
224 {{.5,0.,0.},{0.,.5,0.},{0.,0.,.5},{-.5,-.5,.5}}},
226 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
227 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
228 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
229 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
230 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
231 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{1,-1,1}},
232 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
233 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
234 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
235 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
236 {{-0.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.5,0.,0.}},
237 {{0.,-0.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-0.5,0.}},
238 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,.5,0.}},
239 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
240 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,.5,0.}},
241 {{0.,0.,0.5},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.5}},
242 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
243 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
244 {{-.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
245 {{0.,-.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,-.5,0.}},
246 {{0.5,0.,0.},{0.,0.5,0.},{0.,0.,0.},{0.5,-0.5,0.}},
247 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{.5,.5,0.}},
248 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{-.5,.5,0.}},
249 {{0.5,0.,0.},{0.,0.,0.5},{0.,0.,0.},{0.5,0.,0.5}},
250 {{0.,0.5,0.},{0.,0.,0.5},{0.,0.,0.},{0.,-0.5,0.5}},
251 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{.5,-.5,0.}},
252 {{.5,0.,0.},{0.,.5,0.},{0.,0.,.5},{.5,-.5,.5}}},
254 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
255 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
256 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
257 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
258 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
259 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
260 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{1,1,1}},
261 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
262 {{0.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.5,0.,0.}},
263 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
264 {{-.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
265 {{0.,-0.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.5,0.}},
266 {{0.,0.,0.5},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.5}},
267 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,.5,0.}},
268 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
269 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,.5,0.}},
270 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
271 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
272 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
273 {{0.,-.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,.5,0.}},
274 {{0.5,0.,0.},{0.,0.5,0.},{0.,0.,0.},{0.5,0.5,0.}},
275 {{0.5,0.,0.},{0.,0.,0.5},{0.,0.,0.},{0.5,0.,0.5}},
276 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{.5,.5,0.}},
277 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{.5,.5,0.}},
278 {{0.,0.5,0.},{0.,0.,0.5},{0.,0.,0.},{0.,0.5,0.5}},
279 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{.5,.5,0.}},
280 {{.5,0.,0.},{0.,.5,0.},{0.,0.,.5},{.5,.5,.5}}},
282 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
283 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
284 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
285 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
286 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
287 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
288 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}},
289 {{0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{-1,1,1}},
290 {{0.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-0.5,0.,0.}},
291 {{0.,0.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.5,0.}},
292 {{-.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
293 {{-.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
294 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,.5,0.}},
295 {{0.,0.,0.5},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.5}},
296 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,.5,0.}},
297 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
298 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
299 {{0.,.5,0.},{0.,0.,0.},{0.,0.,0.},{0.,.5,0.}},
300 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{.5,0.,0.}},
301 {{.5,0.,0.},{0.,0.,0.},{0.,0.,0.},{-.5,0.,0.}},
302 {{0.5,0.,0.},{0.,0.5,0.},{0.,0.,0.},{-0.5,0.5,0.}},
303 {{0.5,0.,0.},{0.,0.,0.5},{0.,0.,0.},{-0.5,0.,0.5}},
304 {{0.,0.5,0.},{0.,0.,0.5},{0.,0.,0.},{0.,0.5,0.5}},
305 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{-.5,.5,0.}},
306 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{.5,.5,0.}},
307 {{.5,0.,0.},{0.,.5,0.},{0.,0.,0.},{-.5,.5,0.}},
308 {{.5,0.,0.},{0.,.5,0.},{0.,0.,.5},{-.5,.5,.5}}}
312 {0,8,20,11,12,21,26,24,8,20,20,11,12,21,26,24,21,26,26,24,20,21,26,26,24,26,26},
313 {8,1,9,20,21,13,22,26,8,9,20,20,21,13,22,26,21,22,26,26,20,21,22,26,26,26,26},
314 {20,9,2,10,26,22,14,23,20,9,10,20,26,22,14,23,26,22,23,26,20,26,22,23,26,26,26},
315 {11,20,10,3,24,26,23,15,20,20,10,11,24,26,23,15,26,26,23,24,20,26,26,23,24,26,26},
316 {12,21,26,24,4,16,25,19,21,26,26,24,12,21,26,24,16,25,25,19,26,21,26,26,24,25,26},
317 {21,13,22,26,16,5,17,25,21,22,26,26,21,13,22,26,16,17,25,25,26,21,22,26,26,25,26},
318 {26,22,14,23,25,17,6,18,26,22,23,26,26,22,14,23,25,17,18,25,26,26,22,23,26,25,26},
319 {24,26,23,15,19,25,18,7,26,26,23,24,24,26,23,15,25,25,18,19,26,26,26,23,24,25,26},
328 for(i=0;i<NSubEl;i++) SubElVec[i] = geo->
SubElement(i);
337 NewMidSideNode(geo,sub,index);
350 for(sub=0;sub<NSubEl;sub++) {
352 SubElVec[sub]->SetFather(geo);
353 SubElVec[sub]->SetFatherIndex(geo->
Index());
355 for(i=0;i<NSubEl;i++) {
364 void TPZRefCube::NewMidSideNode(
TPZGeoEl *gel,
int side,int64_t &index) {
366 MidSideNodeIndex(gel,side,index);
370 while(gelside.
Element() != gel) {
372 if(index!=-1)
return;
384 par[0] = MidCoord[side][0];
385 par[1] = MidCoord[side][1];
386 par[2] = MidCoord[side][2];
393 void TPZRefCube::MidSideNodeIndex(
const TPZGeoEl *gel,
int side,int64_t &index) {
396 PZError <<
"TPZRefCube::MidSideNodeIndex. Bad parameter side = " << side << endl;
401 index = (gel)->NodeIndex(side);
409 index=(gel->
SubElement(MidSideNodes[side][0]))->NodeIndex(MidSideNodes[side][1]);
417 PZError <<
"TPZRefCube::GetSubelements2 called with error arguments\n";
420 int nsub = NSideSubElements(side);
421 for(
int i=0;i<
nsub;i++)
423 subeldata[side][i][1]));
426 int TPZRefCube::NSideSubElements(
int side) {
428 PZError <<
"TPZRefCube::NSideSubelements2 called with error arguments\n";
431 return nsubeldata[side];
449 PZError <<
"TPZRefCube::GetTransform side out of range or father null\n";
453 int fatherside = FatherSide(side,whichsubel);
457 for(i=0; i<largedim; i++) {
458 for(j=0; j<smalldim; j++) {
459 trans.
Mult()(i,j) = buildt[whichsubel][side][j][i];
461 trans.
Sum() (i,0) = buildt[whichsubel][side][3][i];
466 int TPZRefCube::FatherSide(
int side,
int whichsubel){
469 PZError <<
"TPZRefCube::Father2 called error" << endl;
472 return fatherside[whichsubel][side];
475 int TPZRefCube::ClassId()
const{
476 return Hash(
"TPZRefCube");
int AllocateNewElement()
Makes more room for new elements.
static int MidSideNodes[19][2]
Contains declaration of TPZGeoElSide class which represents an element and its side, and TPZGeoElSideIndex class which represents an TPZGeoElSide index.
int MaterialId() const
Returns the material index of the element.
virtual void SetNeighbour(int side, const TPZGeoElSide &neighbour)=0
Fill in the data structure for the neighbouring information.
clarg::argInt nsub("-nsub", "number of substructs", 4)
static int subeldata[27][27][2]
groups all classes dedicated to the computation of shape functions
static int fatherside[8][27]
static int InNeigh[8][NumInNeigh][3]
Utility class which represents an element with its side. The Geometric approximation classes Geometry...
This class implements a simple vector storage scheme for a templated class T. Utility.
TPZGeoElSide Neighbour() const
TPZGeoMesh * Mesh() const
Returns the mesh to which the element belongs.
virtual int64_t NodeIndex(int i) const =0
Returns the index of the ith node the index is the location of the node in the nodevector of the mesh...
Contains TPZShapeCube class which implements the shape functions of a hexaedral element.
virtual TPZGeoEl * SubElement(int is) const =0
Returns a pointer to the subelement is.
virtual void Resize(const int64_t newsize, const T &object)
Resizes the vector object reallocating the necessary storage, copying the existing objects to the new...
Contains declaration of TPZMesh class which defines a geometrical mesh and contains a corresponding l...
void Push(const T object)
Pushes a copy of the object on the stack.
Defines the behaviour of all geometric elements. GeometryTPZGeoEl is the common denominator for all g...
static int nsubeldata[27]
int64_t Index() const
Returns the index of the element within the element vector of the mesh.
static int SideDimension(int side)
Returns the dimension of the side.
TPZAdmChunkVector< TPZGeoNode > & NodeVec()
static int CornerSons[8][8]
virtual TPZGeoEl * CreateGeoElement(MElementType type, TPZVec< int64_t > &nodeindexes, int matid, int64_t &index)=0
Creates a geometric element according to the type of the father element.
Groups all classes which model the h refinement These classes are used as template arguments of...
virtual TPZGeoElSide Neighbour(int side)=0
Returns a pointer to the neighbour and the neighbourside along side of the current element...
Contains the TPZGeoCube class which implements the geometry of hexahedra element. ...
int32_t Hash(std::string str)
virtual void SetSubElement(int i, TPZGeoEl *gel)=0
Sets the subelement of index i.
virtual int HasSubElement() const =0
Return 1 if the element has subelements.
static REAL buildt[8][27][4][3]
TPZGeoEl * Element() const
virtual void X(TPZVec< REAL > &qsi, TPZVec< REAL > &result) const =0
Return the coordinate in real space of the point coordinate in the master element space...
This class implements a stack object. Utility.
Contains declaration of TPZGeoElement class which implements a generic geometric element with a unifo...
static REAL MidCoord[19][3]
virtual void SetSubElementConnectivities()
Initializes the external connectivities of the subelements.
Contains the TPZRefCube class which implements the uniform refinement of a geometric hexahedral eleme...
#define PZError
Defines the output device to error messages and the DebugStop() function.
virtual void MidSideNodeIndex(int side, int64_t &index) const =0
Returns the midside node index along a side of the element.