49 double x = lcoords[0];
50 double y = lcoords[1];
51 double z = lcoords[2];
54 0.125 * ( 1. - x ) * ( 1. - y ) * ( 1. + z ),
55 0.125 * ( 1. - x ) * ( 1. + y ) * ( 1. + z ),
56 0.125 * ( 1. + x ) * ( 1. + y ) * ( 1. + z ),
57 0.125 * ( 1. + x ) * ( 1. - y ) * ( 1. + z ),
58 0.125 * ( 1. - x ) * ( 1. - y ) * ( 1. - z ),
59 0.125 * ( 1. - x ) * ( 1. + y ) * ( 1. - z ),
60 0.125 * ( 1. + x ) * ( 1. + y ) * ( 1. - z ),
61 0.125 * ( 1. + x ) * ( 1. - y ) * ( 1. - z )
70 answer =
evalN(lcoords);
72 double x = lcoords[0];
73 double y = lcoords[1];
74 double z = lcoords[2];
77 0.125 * ( 1. - x ) * ( 1. - y ) * ( 1. + z ),
78 0.125 * ( 1. - x ) * ( 1. + y ) * ( 1. + z ),
79 0.125 * ( 1. + x ) * ( 1. + y ) * ( 1. + z ),
80 0.125 * ( 1. + x ) * ( 1. - y ) * ( 1. + z ),
81 0.125 * ( 1. - x ) * ( 1. - y ) * ( 1. - z ),
82 0.125 * ( 1. - x ) * ( 1. + y ) * ( 1. - z ),
83 0.125 * ( 1. + x ) * ( 1. + y ) * ( 1. - z ),
84 0.125 * ( 1. + x ) * ( 1. - y ) * ( 1. - z )
94 double u = lcoords.
at(1);
95 double v = lcoords.
at(2);
96 double w = lcoords.
at(3);
99 -0.125 * ( 1. - v ) * ( 1. + w ),
100 -0.125 * ( 1. - u ) * ( 1. + w ),
101 0.125 * ( 1. - u ) * ( 1. - v ),
102 -0.125 * ( 1. + v ) * ( 1. + w ),
103 0.125 * ( 1. - u ) * ( 1. + w ),
104 0.125 * ( 1. - u ) * ( 1. + v ),
105 0.125 * ( 1. + v ) * ( 1. + w ),
106 0.125 * ( 1. + u ) * ( 1. + w ),
107 0.125 * ( 1. + u ) * ( 1. + v ),
108 0.125 * ( 1. - v ) * ( 1. + w ),
109 -0.125 * ( 1. + u ) * ( 1. + w ),
110 0.125 * ( 1. + u ) * ( 1. - v ),
111 -0.125 * ( 1. - v ) * ( 1. - w ),
112 -0.125 * ( 1. - u ) * ( 1. - w ),
113 -0.125 * ( 1. - u ) * ( 1. - v ),
114 -0.125 * ( 1. + v ) * ( 1. - w ),
115 0.125 * ( 1. - u ) * ( 1. - w ),
116 -0.125 * ( 1. - u ) * ( 1. + v ),
117 0.125 * ( 1. + v ) * ( 1. - w ),
118 0.125 * ( 1. + u ) * ( 1. - w ),
119 -0.125 * ( 1. + u ) * ( 1. + v ),
120 0.125 * ( 1. - v ) * ( 1. - w ),
121 -0.125 * ( 1. + u ) * ( 1. - w ),
122 -0.125 * ( 1. + u ) * ( 1. - v ),
139 dN.
at(1, 1) = -0.125 * ( 1. - v ) * ( 1. + w );
140 dN.
at(2, 1) = -0.125 * ( 1. + v ) * ( 1. + w );
141 dN.
at(3, 1) = 0.125 * ( 1. + v ) * ( 1. + w );
142 dN.
at(4, 1) = 0.125 * ( 1. - v ) * ( 1. + w );
143 dN.
at(5, 1) = -0.125 * ( 1. - v ) * ( 1. - w );
144 dN.
at(6, 1) = -0.125 * ( 1. + v ) * ( 1. - w );
145 dN.
at(7, 1) = 0.125 * ( 1. + v ) * ( 1. - w );
146 dN.
at(8, 1) = 0.125 * ( 1. - v ) * ( 1. - w );
148 dN.
at(1, 2) = -0.125 * ( 1. - u ) * ( 1. + w );
149 dN.
at(2, 2) = 0.125 * ( 1. - u ) * ( 1. + w );
150 dN.
at(3, 2) = 0.125 * ( 1. + u ) * ( 1. + w );
151 dN.
at(4, 2) = -0.125 * ( 1. + u ) * ( 1. + w );
152 dN.
at(5, 2) = -0.125 * ( 1. - u ) * ( 1. - w );
153 dN.
at(6, 2) = 0.125 * ( 1. - u ) * ( 1. - w );
154 dN.
at(7, 2) = 0.125 * ( 1. + u ) * ( 1. - w );
155 dN.
at(8, 2) = -0.125 * ( 1. + u ) * ( 1. - w );
157 dN.
at(1, 3) = 0.125 * ( 1. - u ) * ( 1. - v );
158 dN.
at(2, 3) = 0.125 * ( 1. - u ) * ( 1. + v );
159 dN.
at(3, 3) = 0.125 * ( 1. + u ) * ( 1. + v );
160 dN.
at(4, 3) = 0.125 * ( 1. + u ) * ( 1. - v );
161 dN.
at(5, 3) = -0.125 * ( 1. - u ) * ( 1. - v );
162 dN.
at(6, 3) = -0.125 * ( 1. - u ) * ( 1. + v );
163 dN.
at(7, 3) = -0.125 * ( 1. + u ) * ( 1. + v );
164 dN.
at(8, 3) = -0.125 * ( 1. + u ) * ( 1. - v );
224 double x1, x2, x3, x4, x5, x6, x7, x8, a1, a2, a3, a4, a5, a6, a7, a8;
225 double y1, y2, y3, y4, y5, y6, y7, y8, b1, b2, b3, b4, b5, b6, b7, b8;
226 double z1, z2, z3, z4, z5, z6, z7, z8, c1, c2, c3, c4, c5, c6, c7, c8;
227 double xp, yp, zp, u, v, w;
263 a1 = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8;
264 a2 = -x1 - x2 + x3 + x4 - x5 - x6 + x7 + x8;
265 a3 = -x1 + x2 + x3 - x4 - x5 + x6 + x7 - x8;
266 a4 = x1 + x2 + x3 + x4 - x5 - x6 - x7 - x8;
267 a5 = x1 - x2 + x3 - x4 + x5 - x6 + x7 - x8;
268 a6 = -x1 - x2 + x3 + x4 + x5 + x6 - x7 - x8;
269 a7 = -x1 + x2 + x3 - x4 + x5 - x6 - x7 + x8;
270 a8 = x1 - x2 + x3 - x4 - x5 + x6 - x7 + x8;
272 b1 = y1 + y2 + y3 + y4 + y5 + y6 + y7 + y8;
273 b2 = -y1 - y2 + y3 + y4 - y5 - y6 + y7 + y8;
274 b3 = -y1 + y2 + y3 - y4 - y5 + y6 + y7 - y8;
275 b4 = y1 + y2 + y3 + y4 - y5 - y6 - y7 - y8;
276 b5 = y1 - y2 + y3 - y4 + y5 - y6 + y7 - y8;
277 b6 = -y1 - y2 + y3 + y4 + y5 + y6 - y7 - y8;
278 b7 = -y1 + y2 + y3 - y4 + y5 - y6 - y7 + y8;
279 b8 = y1 - y2 + y3 - y4 - y5 + y6 - y7 + y8;
281 c1 = z1 + z2 + z3 + z4 + z5 + z6 + z7 + z8;
282 c2 = -z1 - z2 + z3 + z4 - z5 - z6 + z7 + z8;
283 c3 = -z1 + z2 + z3 - z4 - z5 + z6 + z7 - z8;
284 c4 = z1 + z2 + z3 + z4 - z5 - z6 - z7 - z8;
285 c5 = z1 - z2 + z3 - z4 + z5 - z6 + z7 - z8;
286 c6 = -z1 - z2 + z3 + z4 + z5 + z6 - z7 - z8;
287 c7 = -z1 + z2 + z3 - z4 + z5 - z6 - z7 + z8;
288 c8 = z1 - z2 + z3 - z4 - z5 + z6 - z7 + z8;
296 if ( ( ++nite ) > 10 ) {
306 r.at(1) = a1 + u * a2 + v * a3 + w * a4 + u * v * a5 + u * w * a6 + v * w * a7 + u * v * w * a8 - 8.0 * xp;
307 r.at(2) = b1 + u * b2 + v * b3 + w * b4 + u * v * b5 + u * w * b6 + v * w * b7 + u * v * w * b8 - 8.0 * yp;
308 r.at(3) = c1 + u * c2 + v * c3 + w * c4 + u * v * c5 + u * w * c6 + v * w * c7 + u * v * w * c8 - 8.0 * zp;
311 if ( r.computeSquaredNorm() < 1.e-20 ) {
315 p.
at(1, 1) = a2 + v * a5 + w * a6 + v * w * a8;
316 p.
at(1, 2) = a3 + u * a5 + w * a7 + u * w * a8;
317 p.
at(1, 3) = a4 + u * a6 + v * a7 + u * v * a8;
319 p.
at(2, 1) = b2 + v * b5 + w * b6 + v * w * b8;
320 p.
at(2, 2) = b3 + u * b5 + w * b7 + u * w * b8;
321 p.
at(2, 3) = b4 + u * b6 + v * b7 + u * v * b8;
323 p.
at(3, 1) = c2 + v * c5 + w * c6 + v * w * c8;
324 p.
at(3, 2) = c3 + u * c5 + w * c7 + u * w * c8;
325 p.
at(3, 3) = c4 + u * c6 + v * c7 + u * v * c8;
336 for (
int i = 1; i <= 3; i++ ) {
573 double ksi = lcoords.
at(1);
574 double eta = lcoords.
at(2);
576 for (
int i = 1; i <= 3; ++i ) {
577 answer.
at(1,1) = 0.25 * ( 1. + eta );
578 answer.
at(2,1) = -0.25 * ( 1. + eta );
579 answer.
at(3,1) = -0.25 * ( 1. - eta );
580 answer.
at(4,1) = 0.25 * ( 1. - eta );
582 answer.
at(1,2) = 0.25 * ( 1. + ksi );
583 answer.
at(2,2) = 0.25 * ( 1. - ksi );
584 answer.
at(3,2) = -0.25 * ( 1. - ksi );
585 answer.
at(4,2) = -0.25 * ( 1. + ksi );