BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
cl_IF_TET35.hpp
Go to the documentation of this file.
1/*
2 * BELFEM -- The Berkeley Lab Finite Element Framework
3 * Copyright (c) 2026, The Regents of the University of California,
4 * through Lawrence Berkeley National Laboratory (subject to receipt of any required
5 * approvals from the U.S. Dept. of Energy). All rights reserved.
6 *
7 * Developers: Christian Messe, Gregory Giard
8 *
9 * See the top-level LICENSE file for the complete license and disclaimer.
10 */
11
12#ifndef BELFEM_CL_IF_TET35_HPP
13#define BELFEM_CL_IF_TET35_HPP
14
15
17
18namespace belfem
19{
20 namespace fem
21 {
22//------------------------------------------------------------------------------
23
24 template<>
32
33//------------------------------------------------------------------------------
34
35 template<>
40 {
41 return ElementType::TET35;
42 }
43
44//------------------------------------------------------------------------------
45
46 template<>
47 void
51 {
52 aXiHat.set_size( 3, 35 );
53
54 aXiHat( 0 , 0 ) = 1.00 ;
55 aXiHat( 1 , 0 ) = 0.00 ;
56 aXiHat( 2 , 0 ) = 0.00 ;
57
58 aXiHat( 0 , 1 ) = 0.00 ;
59 aXiHat( 1 , 1 ) = 0.00 ;
60 aXiHat( 2 , 1 ) = 1.00 ;
61
62 aXiHat( 0 , 2 ) = 0.00 ;
63 aXiHat( 1 , 2 ) = 1.00 ;
64 aXiHat( 2 , 2 ) = 0.00 ;
65
66 aXiHat( 0 , 3 ) = 0.00 ;
67 aXiHat( 1 , 3 ) = 0.00 ;
68 aXiHat( 2 , 3 ) = 0.00 ;
69
70 aXiHat( 0 , 4 ) = 0.75 ;
71 aXiHat( 1 , 4 ) = 0.00 ;
72 aXiHat( 2 , 4 ) = 0.25 ;
73
74 aXiHat( 0 , 5 ) = 0.50 ;
75 aXiHat( 1 , 5 ) = 0.00 ;
76 aXiHat( 2 , 5 ) = 0.50 ;
77
78 aXiHat( 0 , 6 ) = 0.25 ;
79 aXiHat( 1 , 6 ) = 0.00 ;
80 aXiHat( 2 , 6 ) = 0.75 ;
81
82 aXiHat( 0 , 7 ) = 0.00 ;
83 aXiHat( 1 , 7 ) = 0.25 ;
84 aXiHat( 2 , 7 ) = 0.75 ;
85
86 aXiHat( 0 , 8 ) = 0.00 ;
87 aXiHat( 1 , 8 ) = 0.50 ;
88 aXiHat( 2 , 8 ) = 0.50 ;
89
90 aXiHat( 0 , 9 ) = 0.00 ;
91 aXiHat( 1 , 9 ) = 0.75 ;
92 aXiHat( 2 , 9 ) = 0.25 ;
93
94 aXiHat( 0 , 10 ) = 0.25 ;
95 aXiHat( 1 , 10 ) = 0.75 ;
96 aXiHat( 2 , 10 ) = 0.00 ;
97
98 aXiHat( 0 , 11 ) = 0.50 ;
99 aXiHat( 1 , 11 ) = 0.50 ;
100 aXiHat( 2 , 11 ) = 0.00 ;
101
102 aXiHat( 0 , 12 ) = 0.75 ;
103 aXiHat( 1 , 12 ) = 0.25 ;
104 aXiHat( 2 , 12 ) = 0.00 ;
105
106 aXiHat( 0 , 13 ) = 0.25 ;
107 aXiHat( 1 , 13 ) = 0.00 ;
108 aXiHat( 2 , 13 ) = 0.00 ;
109
110 aXiHat( 0 , 14 ) = 0.50 ;
111 aXiHat( 1 , 14 ) = 0.00 ;
112 aXiHat( 2 , 14 ) = 0.00 ;
113
114 aXiHat( 0 , 15 ) = 0.75 ;
115 aXiHat( 1 , 15 ) = 0.00 ;
116 aXiHat( 2 , 15 ) = 0.00 ;
117
118 aXiHat( 0 , 16 ) = 0.00 ;
119 aXiHat( 1 , 16 ) = 0.25 ;
120 aXiHat( 2 , 16 ) = 0.00 ;
121
122 aXiHat( 0 , 17 ) = 0.00 ;
123 aXiHat( 1 , 17 ) = 0.50 ;
124 aXiHat( 2 , 17 ) = 0.00 ;
125
126 aXiHat( 0 , 18 ) = 0.00 ;
127 aXiHat( 1 , 18 ) = 0.75 ;
128 aXiHat( 2 , 18 ) = 0.00 ;
129
130 aXiHat( 0 , 19 ) = 0.00 ;
131 aXiHat( 1 , 19 ) = 0.00 ;
132 aXiHat( 2 , 19 ) = 0.25 ;
133
134 aXiHat( 0 , 20 ) = 0.00 ;
135 aXiHat( 1 , 20 ) = 0.00 ;
136 aXiHat( 2 , 20 ) = 0.50 ;
137
138 aXiHat( 0 , 21 ) = 0.00 ;
139 aXiHat( 1 , 21 ) = 0.00 ;
140 aXiHat( 2 , 21 ) = 0.75 ;
141
142 aXiHat( 0 , 22 ) = 0.50 ;
143 aXiHat( 1 , 22 ) = 0.25 ;
144 aXiHat( 2 , 22 ) = 0.25 ;
145
146 aXiHat( 0 , 23 ) = 0.25 ;
147 aXiHat( 1 , 23 ) = 0.50 ;
148 aXiHat( 2 , 23 ) = 0.25 ;
149
150 aXiHat( 0 , 24 ) = 0.25 ;
151 aXiHat( 1 , 24 ) = 0.25 ;
152 aXiHat( 2 , 24 ) = 0.50 ;
153
154
155 aXiHat( 0 , 25 ) = 0.50 ;
156 aXiHat( 1 , 25 ) = 0.00 ;
157 aXiHat( 2 , 25 ) = 0.25 ;
158
159 aXiHat( 0 , 26 ) = 0.25 ;
160 aXiHat( 1 , 26 ) = 0.00 ;
161 aXiHat( 2 , 26 ) = 0.50 ;
162
163 aXiHat( 0 , 27 ) = 0.25 ;
164 aXiHat( 1 , 27 ) = 0.00 ;
165 aXiHat( 2 , 27 ) = 0.25 ;
166
167 aXiHat( 0 , 28 ) = 0.50 ;
168 aXiHat( 1 , 28 ) = 0.25 ;
169 aXiHat( 2 , 28 ) = 0.00 ;
170
171 aXiHat( 0 , 29 ) = 0.25 ;
172 aXiHat( 1 , 29 ) = 0.25 ;
173 aXiHat( 2 , 29 ) = 0.00 ;
174
175 aXiHat( 0 , 30 ) = 0.25 ;
176 aXiHat( 1 , 30 ) = 0.50 ;
177 aXiHat( 2 , 30 ) = 0.00 ;
178
179 aXiHat( 0 , 31 ) = 0.00 ;
180 aXiHat( 1 , 31 ) = 0.25 ;
181 aXiHat( 2 , 31 ) = 0.25 ;
182
183 aXiHat( 0 , 32 ) = 0.00 ;
184 aXiHat( 1 , 32 ) = 0.25 ;
185 aXiHat( 2 , 32 ) = 0.50 ;
186
187 aXiHat( 0 , 33 ) = 0.00 ;
188 aXiHat( 1 , 33 ) = 0.50 ;
189 aXiHat( 2 , 33 ) = 0.25 ;
190
191 aXiHat( 0 , 34 ) = 0.25 ;
192 aXiHat( 1 , 34 ) = 0.25 ;
193 aXiHat( 2 , 34 ) = 0.25 ;
194 }
195
196//------------------------------------------------------------------------------
197
198 template<>
199 void
202 const Vector< real > & aXi,
203 Matrix< real > & aN ) const
204 {
205 const real xi = aXi( 0 );
206 const real eta = aXi( 1 );
207 const real zeta = aXi( 2 );
208
209 const real a = 1./3.;
210 const real b = 4.0;
211 const real c = 16.0/3.0;
212 const real d = 32.0;
213
214 const real tau = 1.-xi-eta-zeta;
215 const real alpha = (3.-4.*(xi+eta+zeta));
216 const real beta = (1.-4.*(xi+eta+zeta));
217 const real gamma = (1.-2.*(xi+eta+zeta));
218 const real delta = (eta*(8.*eta-6.)+1.);
219 const real phi = (xi*(8.*xi-6.)+1.);
220 const real psi = (zeta*(8.*zeta-6.)+1.);
221
222
223 aN.set_size( 1, 35 );
224
225 aN( 0, 0 ) = a*xi*(2.*xi-1.)*(4.*xi-3.)*(4.*xi-1.) ;
226 aN( 0, 1 ) = a*zeta*(2.*zeta-1.)*(4.*zeta-3.)*(4.*zeta-1.) ;
227 aN( 0, 2 ) = a*eta*(2.*eta-1.)*(4.*eta-3.)*(4.*eta-1.) ;
228 aN( 0, 3 ) = a*tau*(2.*tau-1.)*alpha*beta ;
229 aN( 0, 4 ) = c*xi*zeta*phi ;
230 aN( 0, 5 ) = b*xi*zeta*(4.*xi-1.)*(4.*zeta-1.) ;
231 aN( 0, 6 ) = c*xi*zeta*psi ;
232 aN( 0, 7 ) = c*eta*zeta*psi ;
233 aN( 0, 8 ) = b*eta*zeta*(4.*eta-1.)*(4.*zeta-1.) ;
234 aN( 0, 9 ) = c*eta*zeta*delta ;
235 aN( 0, 10 ) = c*eta*xi*delta ;
236 aN( 0, 11 ) = b*eta*xi*(4.*eta-1.)*(4.*xi-1.) ;
237 aN( 0, 12 ) = c*eta*xi*(1.+xi*(8.*xi-6.)) ;
238 aN( 0, 13 ) = c*xi*tau*gamma*alpha ;
239 aN( 0, 14 ) = b*xi*(4.*xi-1.)*tau*alpha ;
240 aN( 0, 15 ) = c*xi*tau*phi ;
241 aN( 0, 16 ) = c*eta*tau*gamma*alpha ;
242 aN( 0, 17 ) = b*eta*tau*(4.*eta-1.)*alpha ;
243 aN( 0, 18 ) = c*eta*tau*delta ;
244 aN( 0, 19 ) = c*zeta*tau*gamma*alpha ;
245 aN( 0, 20 ) = b*zeta*tau*(4.*zeta-1.)*alpha ;
246 aN( 0, 21 ) = c*zeta*tau*psi ;
247 aN( 0, 22 ) = d*eta*xi*zeta*(4.*xi-1.) ;
248 aN( 0, 23 ) = d*eta*xi*zeta*(4.*eta-1.) ;
249 aN( 0, 24 ) = d*eta*xi*zeta*(4.*zeta-1.) ;
250 aN( 0, 25 ) = d*xi*zeta*tau*(4.*xi-1.) ;
251 aN( 0, 26 ) = d*xi*zeta*(4.*zeta-1.)*tau ;
252 aN( 0, 27 ) = d*xi*zeta*tau*alpha ;
253 aN( 0, 28 ) = d*eta*xi*tau*(4.*xi-1.) ;
254 aN( 0, 29 ) = d*eta*xi*tau*alpha ;
255 aN( 0, 30 ) = d*eta*xi*tau*(4.*eta-1.) ;
256 aN( 0, 31 ) = d*eta*zeta*tau*alpha ;
257 aN( 0, 33 ) = d*eta*zeta*tau*(4.*eta-1.) ;
258 aN( 0, 32 ) = d*eta*zeta*tau*(4.*zeta-1.) ;
259 aN( 0, 34 ) = 8.*d*xi*eta*zeta*tau ;
260 }
261
262//------------------------------------------------------------------------------
263
264 template<>
265 void
268 const Vector< real > & aXi,
269 Matrix< real > & adNdXi ) const
270 {
271 const real xi = aXi( 0 );
272 const real eta = aXi( 1 );
273 const real zeta = aXi( 2 );
274
275 const real a = 1./3.;
276 const real b = 4.0;
277 const real c = 16.0/3.0;
278 const real d = 32.0;
279
280 adNdXi.set_size( 3, 35 );
281
282 adNdXi( 0, 0 ) = a*(8.*xi-3.)*(1.+4.*xi*(4.*xi-3.)) ;
283 adNdXi( 1, 0 ) = 0.0 ;
284 adNdXi( 2, 0 ) = 0.0 ;
285
286 adNdXi( 0, 1 ) = 0.0 ;
287 adNdXi( 1, 1 ) = 0.0 ;
288 adNdXi( 2, 1 ) = a*(8.*zeta-3.)*(1.+4.*zeta*(4.*zeta-3.)) ;
289
290 adNdXi( 0, 2 ) = 0.0 ;
291 adNdXi( 1, 2 ) = a*(8.*eta-3.)*(1.+4.*eta*(4*eta-3.)) ;
292 adNdXi( 2, 2 ) = 0.0 ;
293
294 adNdXi( 0, 3 ) = a*(8.*(xi+eta+zeta)-5.)*(5.-20.*(xi+zeta)+4.*(eta*(4.*eta+(8.*(xi+zeta)-5.))+4.*(xi+zeta)*(xi+zeta))) ;
295 adNdXi( 1, 3 ) = a*(8.*(xi+eta+zeta)-5.)*(5.-20.*(xi+zeta)+4.*(eta*(4.*eta+8.*(xi+zeta)-5.)+4.*(xi+zeta)*(xi+zeta))) ;
296 adNdXi( 2, 3 ) = a*(8.*(xi+eta+zeta)-5.)*((5.-20.*(xi+zeta))+eta*(16.*eta+32.*(xi+zeta)-20.)+16.*(xi+zeta)*(xi+zeta)) ;
297
298 adNdXi( 0, 4 ) = c*zeta*(12.*xi*(2.*xi-1.)+1.) ;
299 adNdXi( 1, 4 ) = 0.0 ;
300 adNdXi( 2 , 4 ) = c*xi*(xi*(8.*xi-6.)+1.) ;
301
302 adNdXi( 0, 5 ) = b*zeta*(8.*xi-1.)*(4.*zeta-1.) ;
303 adNdXi( 1, 5 ) = 0.0 ;
304 adNdXi( 2, 5 ) = b*xi*(4.*xi-1.)*(8.*zeta-1.) ;
305
306 adNdXi( 0, 6 ) = c*zeta*(zeta*(8.*zeta-6.)+1.) ;
307 adNdXi( 1, 6 ) = 0.0 ;
308 adNdXi( 2, 6 ) = c*xi*(12.*zeta*(2.*zeta-1.)+1.) ;
309
310 adNdXi( 0, 7 ) = 0.0 ;
311 adNdXi( 1, 7 ) = c*zeta*(zeta*(8.*zeta-6.)+1.) ;
312 adNdXi( 2, 7 ) = c*eta*(12.*zeta*(2.*zeta-1.)+1.) ;
313
314 adNdXi( 0, 8 ) = 0.0 ;
315 adNdXi( 1, 8 ) = b*zeta*(8.*eta-1.)*(4.*zeta-1.) ;
316 adNdXi( 2, 8 ) = b*eta*(4.*eta-1.)*(8.*zeta-1.) ;
317
318 adNdXi( 0, 9 ) = 0.0 ;
319 adNdXi( 1, 9 ) = c*zeta*(12.*eta*(2.*eta-1.)+1.) ;
320 adNdXi( 2, 9 ) = c*eta*(eta*(8.*eta-6.)+1.) ;
321
322 adNdXi( 0, 10 ) = c*eta*(eta*(8.*eta-6.)+1.) ;
323 adNdXi( 1, 10 ) = c*xi*(12.*eta*(2.*eta-1.)+1.) ;
324 adNdXi( 2, 10 ) = 0.0 ;
325
326 adNdXi( 0, 11 ) = b*eta*(4.*eta-1.)*(8.*xi-1.) ;
327 adNdXi( 1, 11 ) = b*xi*(8.*eta-1.)*(4.*xi-1.) ;
328 adNdXi( 2, 11 ) = 0.0 ;
329
330 adNdXi( 0, 12 ) = c*eta*(12.*xi*(2.*xi-1.)+1.) ;
331 adNdXi( 1, 12 ) = c*xi*(xi*(8.*xi-6.)+1.) ;
332 adNdXi( 2, 12 ) = 0.0 ;
333
334 adNdXi( 0, 13 ) = c*(3.-26.*xi-13.*zeta-2.*(xi+zeta)*(xi*(16.*xi+20.*zeta-27.)+zeta*(4.*zeta-9.))-eta*((13.-36.*zeta+24.*(3.*(xi-1.)*xi+zeta*(4.*xi+zeta)))+eta*(48.*xi+24.*zeta-18.+8.*eta))) ;
335 adNdXi( 1, 13 ) = c*xi*(36.*(xi+zeta)-12.*(eta*(2.*eta+4.*(xi+zeta)-3.)+2.*(xi+zeta)*(xi+zeta))-13.) ;
336 adNdXi( 2, 13 ) = c*xi*(36*(xi+zeta)-12.*(eta*(2.*eta+4.*(xi+zeta)-3.)+2*(xi+zeta)*(xi+zeta))-13.) ;
337
338 adNdXi( 0, 14 ) = b*(eta+2.*xi+zeta-1.)*(3.+4.*eta*(8.*xi-1.)-4.*zeta+32.*xi*(xi+zeta-1.)) ;
339 adNdXi( 1, 14 ) = b*xi*(4.*xi-1.)*(8.*(xi+eta+zeta)-7.) ;
340 adNdXi( 2, 14 ) = b*xi*(4.*xi-1.)*(8.*(xi+eta+zeta)-7.) ;
341
342 adNdXi( 0, 15 ) = c*(1.+eta*(12.*xi*(1.-2.*xi)-1.)-zeta-2.*xi*(7.-6.*zeta+xi*(16.*xi+12.*zeta-21.))) ;
343 adNdXi( 1, 15 ) = c*xi*(xi*(6.-8.*xi)-1.) ;
344 adNdXi( 2, 15 ) = c*xi*(xi*(6.-8.*xi)-1.) ;
345
346 adNdXi( 0, 16 ) = c*(eta*(36.*(xi+zeta)-12.*(eta*(2.*eta+4.*(xi+zeta)-3.)+2*(xi+zeta)*(xi+zeta))-13.)) ;
347 adNdXi( 1, 16 ) = c*((1.0-xi-zeta)*(2.*(xi+zeta)-1.)*(4.*(xi+zeta)-3.)-eta*(eta*(32.*eta+(72.*(xi+zeta)-54.))+(26.+xi*(48.*xi+96.*zeta-72.)+zeta*(48.*zeta-72.)))) ;
348 adNdXi( 2, 16 ) = c*eta*(36.*(xi+zeta)-eta*(24.*eta+48.*(xi+zeta)-36.)-24.*(xi+zeta)*(xi+zeta)-13.) ;
349
350 adNdXi( 0, 17 ) = b*eta*(4.*eta-1.)*(8.*(xi+eta+zeta)-7.) ;
351 adNdXi( 1, 17 ) = b*(2.*eta+xi+zeta-1.)*(3.-4.*(xi+zeta)+32.*eta*(xi+eta+zeta-1.)) ;
352 adNdXi( 2, 17 ) = b*eta*(4.*eta-1.)*(8.*(xi+eta+zeta)-7.) ;
353
354 adNdXi( 0, 18 ) = c*eta*(eta*(6.-8*eta)-1.) ;
355 adNdXi( 1, 18 ) = c*(1.0-xi-zeta-2.*eta*(7.+eta*(16*eta+12.*(xi+zeta)-21.)-6.*(xi+zeta))) ;
356 adNdXi( 2, 18 ) = c*eta*(eta*(6.-8.*eta)-1.) ;
357
358 adNdXi( 0, 19 ) = c*zeta*(36.*(xi+zeta)-12.*(eta*(2.*eta+4.*(xi+zeta)-3.)+2.*(xi+zeta)*(xi+zeta))-13.) ;
359 adNdXi( 1, 19 ) = c*zeta*(36.*(xi+zeta)-12*(eta*(2.*eta+4*(xi+zeta)-3.)+2*(xi+zeta)*(xi+zeta))-13.) ;
360 adNdXi( 2, 19 ) = c*(3.0-13.*xi-26*zeta-2.*(xi+zeta)*(xi*(4.*xi+20.*zeta-9.)+zeta*(16.*zeta-27.))-eta*(eta*(8.*eta+24.*xi+48.*zeta-18.)+(13.+xi*(24.*xi+12.*(8.*zeta-3.))+72.*(zeta-1.)*zeta))) ;
361
362 adNdXi( 0, 20 ) = b*zeta*(4.*zeta-1.)*(8.*(xi+eta+zeta)-7.) ;
363 adNdXi( 1, 20 ) = b*zeta*(4.*zeta-1.)*(8.*(xi+eta+zeta)-7.) ;
364 adNdXi( 2, 20 ) = b*(xi+eta+2.*zeta-1.)*(3.-4.*(xi+eta)+32.*zeta*(xi+eta+zeta-1.)) ;
365
366 adNdXi( 0, 21 ) = c*zeta*(zeta*(6.-8.*zeta)-1.) ;
367 adNdXi( 1, 21 ) = c*zeta*(zeta*(6.-8.*zeta)-1.) ;
368 adNdXi( 2, 21 ) = c*(1-eta-xi+zeta*(2.*(6.*(xi+eta)-7.)-zeta*(24.*(xi+eta)+32.*zeta-42.))) ;
369
370 adNdXi( 0, 22 ) = d*eta*zeta*(8.*xi-1.) ;
371 adNdXi( 1, 22 ) = d*xi*zeta*(4.*xi-1.) ;
372 adNdXi( 2, 22 ) = d*eta*xi*(4.*xi-1.) ;
373
374 adNdXi( 0, 23 ) = d*eta*zeta*(4.*eta-1.) ;
375 adNdXi( 1, 23 ) = d*xi*zeta*(8.*eta-1.) ;
376 adNdXi( 2, 23 ) = d*eta*xi*(4.*eta-1.) ;
377
378 adNdXi( 0, 24 ) = d*eta*zeta*(4.*zeta-1.) ;
379 adNdXi( 1, 24 ) = d*xi*zeta*(4.*zeta-1.) ;
380 adNdXi( 2, 24 ) = d*eta*xi*(8.*zeta-1.) ;
381
382 adNdXi( 0, 25 ) = d*zeta*(eta+zeta-xi*(8.*eta+12.*xi+8.*zeta-10.)-1.) ;
383 adNdXi( 1, 25 ) = d*xi*zeta*(1.-4.*xi) ;
384 adNdXi( 2, 25 ) = d*xi*(1.-4.*xi)*(xi+eta+2.*zeta-1.) ;
385
386 adNdXi( 0, 26 ) = d*zeta*(1.-4.*zeta)*(eta+2.*xi+zeta-1.) ;
387 adNdXi( 1, 26 ) = d*xi*zeta*(1.-4.*zeta) ;
388 adNdXi( 2, 26 ) = d*xi*(xi+eta+zeta*(10.-8.*(eta+xi)-12.*zeta)-1.) ;
389
390 adNdXi( 0, 27 ) = d*zeta*(3+eta*(4*eta+16.*xi+8.*zeta-7.)-14.*xi-7.*zeta+4.*(xi+zeta)*(3.*xi+zeta)) ;
391 adNdXi( 1, 27 ) = d*xi*zeta*(8.*(xi+eta+zeta)-7.) ;
392 adNdXi( 2, 27 ) = d*xi*(3.+eta*(4.*eta+8.*xi+16.*zeta-7.)-7.*xi-14.*zeta+4.*(xi+zeta)*(xi+3.*zeta)) ;
393
394 adNdXi( 0, 28 ) = d*eta*(eta-8.*eta*xi+zeta-2.*xi*(6.*xi+4.*zeta-5.)-1.) ;
395 adNdXi( 1, 28 ) = d*xi*(1.-4*xi)*(xi+2.*eta+zeta-1.) ;
396 adNdXi( 2, 28 ) = d*eta*xi*(1.-4*xi) ;
397
398 adNdXi( 0, 29 ) = d*eta*(3.+eta*(4.*eta+16.*xi+8.*zeta-7.)-14.*xi-7.*zeta+4.*(xi+zeta)*(3.*xi+zeta)) ;
399 adNdXi( 1, 29 ) = d*xi*(eta*(12.*eta+16.*(xi+zeta)-14.)+(xi+zeta-1.)*(4.*(xi+zeta)-3.)) ;
400 adNdXi( 2, 29 ) = d*eta*xi*(8.*(xi+eta+zeta)-7.) ;
401
402 adNdXi( 0, 30 ) = d*eta*(4.*eta-1.)*(1.-eta-2.*xi-zeta) ;
403 adNdXi( 1, 30 ) = d*xi*(xi+zeta-2.*eta*(6.*eta+4.*(xi+zeta)-5.)-1) ;
404 adNdXi( 2, 30 ) = d*eta*xi*(1.-4.*eta) ;
405
406 adNdXi( 0, 31 ) = d*eta*zeta*(8.*(xi+eta+zeta)-7.) ;
407 adNdXi( 1, 31 ) = d*zeta*(eta*(12.*eta+16.*(xi+zeta)-14.)+(xi+zeta-1.)*(4.*(xi+zeta)-3.)) ;
408 adNdXi( 2, 31 ) = d*eta*(3.+eta*(4.*eta+8.*xi+16.*zeta-7.)-7.*xi-14.*zeta+4.*(xi+zeta)*(xi+3.*zeta)) ;
409
410 adNdXi( 0, 32 ) = d*eta*zeta*(1.-4.*zeta) ;
411 adNdXi( 1, 32 ) = d*zeta*(1.-4.*zeta)*(xi+2.*eta+zeta-1.) ;
412 adNdXi( 2, 32 ) = d*eta*(xi+eta+zeta*(10.-8.*(eta+xi)-12.*zeta)-1.) ;
413
414
415 adNdXi( 0, 33 ) = d*eta*zeta*(1.-4.*eta) ;
416 adNdXi( 1, 33 ) = d*zeta*(xi+zeta-2.*eta*(6.*eta+4.*(xi+zeta)-5.)-1.) ;
417 adNdXi( 2, 33 ) = d*eta*(1.-4.*eta)*(xi+eta+2.*zeta-1.) ;
418
419 adNdXi( 0, 34 ) = 8.*d*eta*zeta*(1.-2.*xi-eta-zeta) ;
420 adNdXi( 1, 34 ) = 8.*d*xi*zeta*(1.-xi-2.*eta-zeta) ;
421 adNdXi( 2, 34 ) = 8.*d*eta*xi*(1.-xi-eta-2.*zeta) ;
422 }
423
424//------------------------------------------------------------------------------
425
426 template<>
427 void
430 const Vector< real > & aXi,
431 Matrix< real > & ad2NdXi2 ) const
432 {
433 const real xi = aXi( 0 );
434 const real eta = aXi( 1 );
435 const real zeta = aXi( 2 );
436
437 const real a = 1./3.;
438 const real b = 4.0;
439 const real c = 16.0/3.0;
440 const real d = 32.0;
441
442 ad2NdXi2.set_size( 6, 35, 0.0 );
443
444 ad2NdXi2( 0, 0 ) = 4.*a*(xi*(96.*xi-72.)+11.) ;
445 ad2NdXi2( 1, 0 ) = 0.0 ;
446 ad2NdXi2( 2, 0 ) = 0.0 ;
447 ad2NdXi2( 3, 0 ) = 0.0 ;
448 ad2NdXi2( 4, 0 ) = 0.0 ;
449 ad2NdXi2( 5, 0 ) = 0.0 ;
450
451 ad2NdXi2( 0, 1 ) = 0.0 ;
452 ad2NdXi2( 1, 1 ) = 0.0 ;
453 ad2NdXi2( 2, 1 ) = 4.*a*(zeta*(96.*zeta-72.)+11.) ;
454 ad2NdXi2( 3, 1 ) = 0.0 ;
455 ad2NdXi2( 4, 1 ) = 0.0 ;
456 ad2NdXi2( 5, 1 ) = 0.0 ;
457
458 ad2NdXi2( 0, 2 ) = 0.0 ;
459 ad2NdXi2( 1, 2 ) = 4.*a*(eta*(96.*eta-72.)+11.) ;
460 ad2NdXi2( 2, 2 ) = 0.0 ;
461 ad2NdXi2( 3, 2 ) = 0.0 ;
462 ad2NdXi2( 4, 2 ) = 0.0 ;
463 ad2NdXi2( 5, 2 ) = 0.0 ;
464
465 ad2NdXi2( 0, 3 ) = 4.*a*(35.-120.*(xi+zeta)+24.*(eta*(4.*eta+8.*(xi+zeta)-5.)+4.*(xi+zeta)*(xi+zeta))) ;
466 ad2NdXi2( 1, 3 ) = 4.*a*(35.-120.*(xi+zeta)+eta*(96.*eta+192.*(xi+zeta)-120.)+96.*(xi+zeta)*(xi+zeta)) ;
467 ad2NdXi2( 2, 3 ) = 4.*a*((35.-120.*(xi+zeta))+24.*eta*(4.*eta+8.*(xi+zeta)-5.)+96.*(xi+zeta)*(xi+zeta)) ;
468 ad2NdXi2( 3, 3 ) = 4.*a*(35.-120.*(xi+zeta)+eta*(96.*eta+192.*(xi+zeta)-120.)+96.*(xi+zeta)*(xi+zeta)) ;
469 ad2NdXi2( 4, 3 ) = 4.*a*(35.-120.*(xi+zeta)+24.*eta*(4*eta+8.*(xi+zeta)-5.)+96.*(xi+zeta)*(xi+zeta)) ;
470 ad2NdXi2( 5, 3 ) = 4.*a*(35.-120.*(xi+zeta)+eta*(96.*eta+192.*(xi+zeta)-120.)+96*(xi+zeta)*(xi+zeta)) ;
471
472 ad2NdXi2( 0, 4 ) = c*zeta*(48.*xi-12.) ;
473 ad2NdXi2( 1, 4 ) = 0.0 ;
474 ad2NdXi2( 2, 4 ) = 0.0 ;
475 ad2NdXi2( 3, 4 ) = 0.0 ;
476 ad2NdXi2( 4, 4 ) = c*(12.*xi*(2.*xi-1.)+1.) ;
477 ad2NdXi2( 5, 4 ) = 0.0 ;
478
479 ad2NdXi2( 0, 5 ) = 8.*b*zeta*(4.*zeta-1.) ;
480 ad2NdXi2( 1, 5 ) = 0.0 ;
481 ad2NdXi2( 2, 5 ) = 8.*b*xi*(4.*xi-1.) ;
482 ad2NdXi2( 3, 5 ) = 0.0 ;
483 ad2NdXi2( 4, 5 ) = b*(8.*xi-1.)*(8.*zeta-1.) ;
484 ad2NdXi2( 5, 5 ) = 0.0 ;
485
486 ad2NdXi2( 0, 6 ) = 0.0 ;
487 ad2NdXi2( 1, 6 ) = 0.0 ;
488 ad2NdXi2( 2, 6 ) = c*xi*(48.*zeta-12.) ;
489 ad2NdXi2( 3, 6 ) = 0.0 ;
490 ad2NdXi2( 4, 6 ) = c*(12.*zeta*(2.*zeta-1.)+1.) ;
491 ad2NdXi2( 5, 6 ) = 0.0 ;
492
493 ad2NdXi2( 0, 7 ) = 0.0 ;
494 ad2NdXi2( 1, 7 ) = 0.0 ;
495 ad2NdXi2( 2, 7 ) = c*eta*(48.*zeta-12.) ;
496 ad2NdXi2( 3, 7 ) = c*(12.*zeta*(2.*zeta-1.)+1.) ;
497 ad2NdXi2( 4, 7 ) = 0.0 ;
498 ad2NdXi2( 5, 7 ) = 0.0 ;
499
500 ad2NdXi2( 0, 8 ) = 0.0 ;
501 ad2NdXi2( 1, 8 ) = 8.*b*zeta*(4.*zeta-1.) ;
502 ad2NdXi2( 2, 8 ) = 8.*b*eta*(4.*eta-1.) ;
503 ad2NdXi2( 3, 8 ) = b*(8.*eta-1.)*(8.*zeta-1.) ;
504 ad2NdXi2( 4, 8 ) = 0.0 ;
505 ad2NdXi2( 5, 8 ) = 0.0 ;
506
507 ad2NdXi2( 0, 9 ) = 0.0 ;
508 ad2NdXi2( 1, 9 ) = c*zeta*(48.*eta-12.) ;
509 ad2NdXi2( 2, 9 ) = 0.0 ;
510 ad2NdXi2( 3, 9 ) = c*(12.*eta*(2.*eta-1.)+1.) ;
511 ad2NdXi2( 4, 9 ) = 0.0 ;
512 ad2NdXi2( 5, 9 ) = 0.0 ;
513
514 ad2NdXi2( 0, 10 ) = 0.0 ;
515 ad2NdXi2( 1, 10 ) = c*xi*(48.*eta-12.) ;
516 ad2NdXi2( 2, 10 ) = 0.0 ;
517 ad2NdXi2( 3, 10 ) = 0.0 ;
518 ad2NdXi2( 4, 10 ) = 0.0 ;
519 ad2NdXi2( 5, 10 ) = c*(12.*eta*(2.*eta-1.)+1.) ;
520
521 ad2NdXi2( 0, 11 ) = 8.*b*eta*(4.*eta-1.) ;
522 ad2NdXi2( 1, 11 ) = 8.*b*xi*(4.*xi-1.) ;
523 ad2NdXi2( 2, 11 ) = 0.0 ;
524 ad2NdXi2( 3, 11 ) = 0.0 ;
525 ad2NdXi2( 4, 11 ) = 0.0 ;
526 ad2NdXi2( 5, 11 ) = b*(8.*eta-1.)*(8.*xi-1.) ;
527
528 ad2NdXi2( 0, 12 ) = c*eta*(48.*xi-12.) ;
529 ad2NdXi2( 1, 12 ) = 0.0 ;
530 ad2NdXi2( 2, 12 ) = 0.0 ;
531 ad2NdXi2( 3, 12 ) = 0.0 ;
532 ad2NdXi2( 4, 12 ) = 0.0 ;
533 ad2NdXi2( 5, 12 ) = c*(12.*xi*(2.*xi-1.)+1.) ;
534
535 ad2NdXi2( 0, 13 ) = c*(108.*xi+72.*zeta-24.*eta*(2.*eta+6.*xi+4.*zeta-3.)-48.*(xi+zeta)*(2.*xi+zeta)-26.) ;
536 ad2NdXi2( 1, 13 ) = c*xi*(36.-48.*(xi+eta+zeta)) ;
537 ad2NdXi2( 2, 13 ) = c*xi*(36.-48.*(xi+eta+zeta)) ;
538 ad2NdXi2( 3, 13 ) = c*xi*(36.-48.*(xi+eta+zeta)) ;
539 ad2NdXi2( 4, 13 ) = c*(72.*xi+36.*zeta-12.*eta*(2.*eta+8.*xi+4.*zeta-3.)-24.*(xi+zeta)*(3.*xi+zeta)-13.) ;
540 ad2NdXi2( 5, 13 ) = c*(72.*xi+36.*zeta-12.*eta*(2*eta+8.*xi+4.*zeta-3.)-24.*(xi+zeta)*(3.*xi+zeta)-13.) ;
541
542 ad2NdXi2( 0, 14 ) = 2.*b*(19.+eta*(16.*eta+96.*xi+32.*zeta-36.)+96.*xi*(xi+zeta-1.)+4*zeta*(4.*zeta-9.)) ;
543 ad2NdXi2( 1, 14 ) = 8.*b*xi*(4.*xi-1.) ;
544 ad2NdXi2( 2, 14 ) = 8.*b*xi*(4.*xi-1.) ;
545 ad2NdXi2( 3, 14 ) = 8.*b*xi*(4.*xi-1.) ;
546 ad2NdXi2( 4, 14 ) = b*(7.+8.*(eta*(8.*xi-1.)-zeta+xi*(12.*xi+8.*zeta-9.))) ;
547 ad2NdXi2( 5, 14 ) = b*(7.+8.*(eta*(8.*xi-1.)-zeta+xi*(12.*xi+8.*zeta-9.))) ;
548
549 ad2NdXi2( 0, 15 ) = c*(12.*(zeta-eta*(4.*xi-1.)-xi*(8.*xi+4.*zeta-7.))-14.) ;
550 ad2NdXi2( 1, 15 ) = 0.0 ;
551 ad2NdXi2( 2, 15 ) = 0.0 ;
552 ad2NdXi2( 3, 15 ) = 0.0 ;
553 ad2NdXi2( 4, 15 ) = c*(12.*xi*(1.-2.*xi)-1.) ;
554 ad2NdXi2( 5, 15 ) = c*(12.*xi*(1.-2.*xi)-1.) ;
555
556 ad2NdXi2( 0, 16 ) = c*eta*(36.-48.*(xi+eta+zeta)) ;
557 ad2NdXi2( 1, 16 ) = c*(72*(xi+zeta)-12.*(8.*eta*eta+4.*(xi+zeta)*(xi+zeta)+3.*eta*(4.*(xi+zeta)-3.))-26.) ;
558 ad2NdXi2( 2, 16 ) = c*eta*(36.-48.*(xi+eta+zeta)) ;
559 ad2NdXi2( 3, 16 ) = c*(36.*(xi+zeta)-24.*(eta*(3.*eta+4.*(xi+zeta)-3.)+(xi+zeta)*(xi+zeta))-13.) ;
560 ad2NdXi2( 4, 16 ) = c*eta*(36.-48.*(xi+eta+zeta)) ;
561 ad2NdXi2( 5, 16 ) = c*(36.*(xi+zeta)-eta*(72*eta+96.*(xi+zeta)-72.)-24.*(xi+zeta)*(xi+zeta)-13.) ;
562
563 ad2NdXi2( 0, 17 ) = 8.*b*eta*(4.*eta-1.) ;
564 ad2NdXi2( 1, 17 ) = b*(6.-8.*(xi+zeta)+64*eta*(eta+xi+zeta-1.)+32.*(xi+2.*eta+zeta-1.)*(xi+2.*eta+zeta-1.)) ;
565 ad2NdXi2( 2, 17 ) = 8.*b*eta*(4.*eta-1.) ;
566 ad2NdXi2( 3, 17 ) = b*(7.-8.*(xi+zeta)+8.*eta*(8.*(xi+zeta)+12*eta-9.)) ;
567 ad2NdXi2( 4, 17 ) = 8.*b*eta*(4.*eta-1.) ;
568 ad2NdXi2( 5, 17 ) = b*(7.+8.*(eta*(12.*eta+8.*(xi+zeta)-9.)-xi-zeta)) ;
569
570 ad2NdXi2( 0, 18 ) = 0.0 ;
571 ad2NdXi2( 1, 18 ) = c*(12.*(xi+zeta-eta*(8.*eta+4.*(xi+zeta)-7.))-14.) ;
572 ad2NdXi2( 2, 18 ) = 0.0 ;
573 ad2NdXi2( 3, 18 ) = c*(2.*eta*(6.-12.*eta)-1) ;
574 ad2NdXi2( 4, 18 ) = 0.0 ;
575 ad2NdXi2( 5, 18 ) = c*(12.*eta*(1.-2.*eta)-1.) ;
576
577 ad2NdXi2( 0, 19 ) = c*zeta*(36-48*(xi+eta+zeta)) ;
578 ad2NdXi2( 1, 19 ) = c*zeta*(36.-48.*(xi+eta+zeta)) ;
579 ad2NdXi2( 2, 19 ) = c*(72.*xi+108.*zeta-eta*(48.*eta+96.*xi+144.*zeta-72.)-48.*(xi+zeta)*(xi+2.*zeta)-26.) ;
580 ad2NdXi2( 3, 19 ) = c*(36.*xi+72*zeta-eta*(24.*eta+48.*xi+96.*zeta-36.)-24.*(xi+zeta)*(xi+3.*zeta)-13.) ;
581 ad2NdXi2( 4, 19 ) = c*(36.*xi+72.*zeta-12*eta*(2*eta+4.*xi+8.*zeta-3.)-24.*(xi+zeta)*(xi+3.*zeta)-13.) ;
582 ad2NdXi2( 5, 19 ) = c*zeta*(36.-48*(xi+eta+zeta)) ;
583
584 ad2NdXi2( 0, 20 ) = 8.*b*zeta*(4.*zeta-1.) ;
585 ad2NdXi2( 1, 20 ) = 8.*b*zeta*(4.*zeta-1.) ;
586 ad2NdXi2( 2, 20 ) = b*(6.-8.*(xi+eta)+64*zeta*(eta+xi+zeta-1.)+32.*(eta+xi+2.*zeta-1.)*(eta+xi+2.*zeta-1.)) ;
587 ad2NdXi2( 3, 20 ) = b*(7.-8.*(xi+eta)+zeta*(64.*(xi+eta)+96*zeta-72.)) ;
588 ad2NdXi2( 4, 20 ) = b*(8.*(zeta*(8.*(xi+eta)+12.*zeta-9.)-xi-eta)+7.) ;
589 ad2NdXi2( 5, 20 ) = 8.*b*zeta*(4.*zeta-1.) ;
590
591 ad2NdXi2( 0, 21 ) = 0.0 ;
592 ad2NdXi2( 1, 21 ) = 0.0 ;
593 ad2NdXi2( 2, 21 ) = c*(12*(xi+eta-zeta*(4.*(xi+eta)-7.+8.*zeta))-14.) ;
594 ad2NdXi2( 3, 21 ) = c*(12.*zeta*(1.-2.*zeta)-1.) ;
595 ad2NdXi2( 4, 21 ) = c*(12.*zeta*(1-2.*zeta)-1.) ;
596 ad2NdXi2( 5, 21 ) = 0.0 ;
597
598 ad2NdXi2( 0, 22 ) = 8.*d*eta*zeta ;
599 ad2NdXi2( 1, 22 ) = 0.0 ;
600 ad2NdXi2( 2, 22 ) = 0.0 ;
601 ad2NdXi2( 3, 22 ) = d*xi*(4.*xi-1.) ;
602 ad2NdXi2( 4, 22 ) = d*eta*(8.*xi-1.) ;
603 ad2NdXi2( 5, 22 ) = d*zeta*(8.*xi-1.) ;
604
605 ad2NdXi2( 0, 23 ) = 0.0 ;
606 ad2NdXi2( 1, 23 ) = 8.*d*xi*zeta ;
607 ad2NdXi2( 2, 23 ) = 0.0 ;
608 ad2NdXi2( 3, 23 ) = d*xi*(8.*eta-1.) ;
609 ad2NdXi2( 4, 23 ) = d*eta*(4.*eta-1.) ;
610 ad2NdXi2( 5, 23 ) = d*zeta*(8.*eta-1.) ;
611
612 ad2NdXi2( 0, 24 ) = 0.0 ;
613 ad2NdXi2( 1, 24 ) = 0.0 ;
614 ad2NdXi2( 2, 24 ) = 8.*d*xi*eta ;
615 ad2NdXi2( 3, 24 ) = d*xi*(8.*zeta-1.) ;
616 ad2NdXi2( 4, 24 ) = d*eta*(8.*zeta-1.) ;
617 ad2NdXi2( 5, 24 ) = d*zeta*(4.*zeta-1.) ;
618
619 ad2NdXi2( 0, 25 ) = d*zeta*(10-24.*xi-8.*(eta+zeta)) ;
620 ad2NdXi2( 1, 25 ) = 0.0 ;
621 ad2NdXi2( 2, 25 ) = d*xi*(2.-8*xi) ;
622 ad2NdXi2( 3, 25 ) = d*xi*(1.-4.*xi) ;
623 ad2NdXi2( 4, 25 ) = d*(eta-8.*eta*xi+2.*zeta-2.*xi*(6.*xi+8.*zeta-5.)-1.) ;
624 ad2NdXi2( 5, 25 ) = d*zeta*(1.-8.*xi) ;
625
626 ad2NdXi2( 0, 26 ) = d*zeta*(2.-8*zeta) ;
627 ad2NdXi2( 1, 26 ) = 0.0 ;
628 ad2NdXi2( 2, 26 ) = d*xi*(10-8.*(xi+eta)-24.*zeta) ;
629 ad2NdXi2( 3, 26 ) = d*xi*(1.-8.*zeta) ;
630 ad2NdXi2( 4, 26 ) = d*(eta*(1.-8.*zeta)+xi*(2.-16.*zeta)+zeta*(10.-12.*zeta)-1.) ;
631 ad2NdXi2( 5, 26 ) = d*zeta*(1.-4.*zeta) ;
632
633 ad2NdXi2( 0, 27 ) = d*zeta*(24.*xi+16*(eta+zeta)-14.) ;
634 ad2NdXi2( 1, 27 ) = 8.*d*xi*zeta ;
635 ad2NdXi2( 2, 27 ) = d*xi*(16.*(xi+eta)+24.*zeta-14.) ;
636 ad2NdXi2( 3, 27 ) = d*xi*(8*(xi+eta)+16.*zeta-7.) ;
637 ad2NdXi2( 4, 27 ) = d*(3.+eta*(4.*eta+16*(xi+zeta)-7.)+xi*(12.*xi+32.*zeta-14.)+2.*zeta*(6.*zeta-7.)) ;
638 ad2NdXi2( 5, 27 ) = d*zeta*(16.*xi+8*(eta+zeta)-7.) ;
639
640 ad2NdXi2( 0, 28 ) = d*eta*(10.-24.*xi-8.*(eta+zeta)) ;
641 ad2NdXi2( 1, 28 ) = d*xi*(2.-8.*xi) ;
642 ad2NdXi2( 2, 28 ) = 0.0 ;
643 ad2NdXi2( 3, 28 ) = d*xi*(1.-4.*xi) ;
644 ad2NdXi2( 4, 28 ) = d*eta*(1.-8.*xi) ;
645 ad2NdXi2( 5, 28 ) = d*(eta*(2.-16.*xi)+zeta-2.*xi*(-5+6*xi+4*zeta)-1.) ;
646
647 ad2NdXi2( 0, 29 ) = d*eta*(24.*xi+16*(eta+zeta)-14.) ;
648 ad2NdXi2( 1, 29 ) = d*xi*(24.*eta+16.*(xi+zeta)-14.) ;
649 ad2NdXi2( 2, 29 ) = 8.*d*xi*eta ;
650 ad2NdXi2( 3, 29 ) = d*xi*(16.*eta+8.*(xi+zeta)-7.) ;
651 ad2NdXi2( 4, 29 ) = d*eta*(16.*xi+8.*(zeta+eta)-7.) ;
652 ad2NdXi2( 5, 29 ) = d*(3.+eta*(12.*eta+32.*xi+16.*zeta-14.)-14.*xi-7.*zeta+4.*(xi+zeta)*(3.*xi+zeta)) ;
653
654 ad2NdXi2( 0, 30 ) = d*eta*(2.-8.*eta) ;
655 ad2NdXi2( 1, 30 ) = d*xi*(10.-24.*eta-8.*(xi+zeta)) ;
656 ad2NdXi2( 2, 30 ) = 0.0 ;
657 ad2NdXi2( 3, 30 ) = d*xi*(1.-8.*eta) ;
658 ad2NdXi2( 4, 30 ) = d*eta*(1.-4.*eta) ;
659 ad2NdXi2( 5, 30 ) = d*(2.*xi+zeta-2.*eta*(6.*eta+8.*xi+4.*zeta-5.)-1.) ;
660
661 ad2NdXi2( 0, 31 ) = 8.*d*eta*zeta ;
662 ad2NdXi2( 1, 31 ) = d*zeta*(24.*eta+16.*(xi+zeta)-14.) ;
663 ad2NdXi2( 2, 31 ) = d*eta*(16.*(xi+eta)+24.*zeta-14.) ;
664 ad2NdXi2( 3, 31 ) = d*(3.+2.*eta*(6.*eta+8.*xi+16.*zeta-7.)-7.*xi-14.*zeta+4.*(xi+zeta)*(xi+3.*zeta)) ;
665 ad2NdXi2( 4, 31 ) = d*eta*(8.*(xi+eta)+16.*zeta-7.) ;
666 ad2NdXi2( 5, 31 ) = d*zeta*(16*eta+8*(xi+zeta)-7.) ;
667
668 ad2NdXi2( 0, 32 ) = 0.0 ;
669 ad2NdXi2( 1, 32 ) = d*zeta*(2.-8.*zeta) ;
670 ad2NdXi2( 2, 32 ) = d*eta*(10-8.*(xi+eta)-24.*zeta) ;
671 ad2NdXi2( 3, 32 ) = d*(xi+eta*(2.-16.*zeta)-8.*xi*zeta+(10.-12.*zeta)*zeta-1.) ;
672 ad2NdXi2( 4, 32 ) = d*eta*(1.-8.*zeta) ;
673 ad2NdXi2( 5, 32 ) = d*zeta*(1.-4.*zeta) ;
674
675 ad2NdXi2( 0, 33 ) = 0.0 ;
676 ad2NdXi2( 1, 33 ) = d*zeta*(10.-24.*eta-8.*(xi+zeta)) ;
677 ad2NdXi2( 2, 33 ) = d*eta*(2.-8*eta) ;
678 ad2NdXi2( 3, 33 ) = d*(xi+2.*zeta-2.*eta*(6.*eta+4.*xi+8.*zeta-5.)-1.) ;
679 ad2NdXi2( 4, 33 ) = d*eta*(1.-4.*eta) ;
680 ad2NdXi2( 5, 33 ) = d*zeta*(1.-8.*eta) ;
681
682
683 ad2NdXi2( 0, 34 ) = -16*d*eta*zeta ;
684 ad2NdXi2( 1, 34 ) = -16*d*xi*zeta ;
685 ad2NdXi2( 2, 34 ) = -16.*d*xi*eta ;
686 ad2NdXi2( 3, 34 ) = 8.*d*xi*(1.-xi-2.*(eta+zeta)) ;
687 ad2NdXi2( 4, 34 ) = 8.*d*eta*(1.-2.*(xi+zeta)-eta) ;
688 ad2NdXi2( 5, 34 ) = 8*d*zeta*(1.-2.*(xi+eta)-zeta) ;
689 }
690
691//------------------------------------------------------------------------------
692 }
693}
694
695#endif //BELFEM_CL_IF_TET35_HPP
void set_size(const size_t aNumRows, const size_t aNumCols)
Definition cl_AR_Matrix.hpp:186
shape function templated class G : Geometry T : Type D : Dimension B : Number of Basis
Definition cl_IF_InterpolationFunctionTemplate.hpp:25
void param_coords(Matrix< real > &aXiHat) const override
returns a matrix containing the parameter coordinates of the nodes < number of dimensions x number of...
Definition cl_IF_InterpolationFunctionTemplate.hpp:49
InterpolationOrder interpolation_order() const override
returns the interpolation order
Definition cl_IF_InterpolationFunctionTemplate.hpp:145
void d2NdXi2(const Vector< real > &aXi, Matrix< real > &ad2NdXi2) const override
calculates the second derivative of the shape function in parameter space
Definition cl_IF_InterpolationFunctionTemplate.hpp:110
void dNdXi(const Vector< real > &aXi, Matrix< real > &adNdXi) const override
calculates the first derivative of the shape function in parameter space
Definition cl_IF_InterpolationFunctionTemplate.hpp:89
void N(const Vector< real > &aXi, Matrix< real > &aN) const override
evaluates the shape function at a given point
Definition cl_IF_InterpolationFunctionTemplate.hpp:68
Definition cl_IFB_LINE3.hpp:21
USER GUIDES:
Definition cl_Capacitor.cpp:16
@ LAGRANGE
Definition Mesh_Enums.hpp:100
ElementType element_type(const std::string &aStr)
Definition Mesh_Enums.hpp:370
ElementType
Element types.
Definition Mesh_Enums.hpp:27
@ TET35
Definition Mesh_Enums.hpp:55
@ gamma
Definition cl_Material.hpp:174
@ alpha
Definition cl_Material.hpp:161
InterpolationOrder
Definition Mesh_Enums.hpp:85
@ QUARTIC
Definition Mesh_Enums.hpp:91
double real
Definition typedefs.hpp:36
@ TET
Definition Mesh_Enums.hpp:75