VTK  9.3.20240916
PyrI2Gradient.h
Go to the documentation of this file.
1// Be sure that the basis functions are defined when tt is very close to 1.
2// Warning: the derivatives are discontinuous in (0, 0, 1).
3if (abs(tt - 1.0) < eps)
4{
5 if (tt <= 1.0)
6 {
7 tt = 1.0 - eps;
8 }
9 else
10 {
11 tt = 1.0 + eps;
12 }
13}
14
15RealT ww = 1.0 / (1.0 - tt);
16
17basisGradient[0] = 0.25 * (-1.0 - rr - ss) * (-1.0 + ss + ss * tt * ww) -
18 0.25 * ((1.0 - rr) * (1.0 - ss) - tt + rr * ss * tt * ww);
19basisGradient[1] = 0.25 * (-1.0 - rr - ss) * (-1.0 + rr + rr * tt * ww) -
20 0.25 * ((1.0 - rr) * (1.0 - ss) - tt + rr * ss * tt * ww);
21basisGradient[2] = 0.25 * (-1.0 - rr - ss) * (-1.0 + rr * ss * ww + rr * ss * tt * ww * ww);
22
23basisGradient[3] = 0.25 * (-1.0 + rr - ss) * (1.0 - ss - ss * tt * ww) +
24 0.25 * ((1.0 + rr) * (1.0 - ss) - tt - rr * ss * tt * ww);
25basisGradient[4] = 0.25 * (-1.0 + rr - ss) * (-1.0 - rr - rr * tt * ww) -
26 0.25 * ((1.0 + rr) * (1.0 - ss) - tt - rr * ss * tt * ww);
27basisGradient[5] = 0.25 * (-1.0 + rr - ss) * (-1.0 - rr * ss * ww - rr * ss * tt * ww * ww);
28
29basisGradient[6] = 0.25 * (-1.0 + rr + ss) * (1.0 + ss + ss * tt * ww) +
30 0.25 * ((1.0 + rr) * (1.0 + ss) - tt + rr * ss * tt * ww);
31basisGradient[7] = 0.25 * (-1.0 + rr + ss) * (1.0 + rr + rr * tt * ww) +
32 0.25 * ((1.0 + rr) * (1.0 + ss) - tt + rr * ss * tt * ww);
33basisGradient[8] = 0.25 * (-1.0 + rr + ss) * (-1.0 + rr * ss * ww + rr * ss * tt * ww * ww);
34
35basisGradient[9] = 0.25 * (-1.0 - rr + ss) * (-1.0 - ss - ss * tt * ww) -
36 0.25 * ((1.0 - rr) * (1.0 + ss) - tt - rr * ss * tt * ww);
37basisGradient[10] = 0.25 * (-1.0 - rr + ss) * (1.0 - rr - rr * tt * ww) +
38 0.25 * ((1.0 - rr) * (1.0 + ss) - tt - rr * ss * tt * ww);
39basisGradient[11] = 0.25 * (-1.0 - rr + ss) * (-1.0 - rr * ss * ww - rr * ss * tt * ww * ww);
40
41basisGradient[12] = 0.0;
42basisGradient[13] = 0.0;
43basisGradient[14] = -1.0 + 4.0 * tt;
44
45basisGradient[15] = -rr * ww * (1.0 - ss - tt);
46basisGradient[16] = -0.5 * (1.0 - rr - tt) * (1.0 + rr - tt) * ww;
47basisGradient[17] = 0.5 * ss * rr * rr * ww * ww + 0.5 * ss - 1.0 + tt;
48
49basisGradient[18] = 0.5 * (1.0 - ss - tt) * (1.0 + ss - tt) * ww;
50basisGradient[19] = -ss * ww * (1.0 + rr - tt);
51basisGradient[20] = -0.5 * rr * ss * ss * ww * ww - 0.5 * rr - 1.0 + tt;
52
53basisGradient[21] = -rr * ww * (1.0 + ss - tt);
54basisGradient[22] = 0.5 * (1.0 - rr - tt) * (1.0 + rr - tt) * ww;
55basisGradient[23] = -0.5 * ss * rr * rr * ww * ww - 0.5 * ss - 1.0 + tt;
56
57basisGradient[24] = -0.5 * (1.0 - ss - tt) * (1.0 + ss - tt) * ww;
58basisGradient[25] = -ss * ww * (1.0 - rr - tt);
59basisGradient[26] = 0.5 * rr * ss * ss * ww * ww + 0.5 * rr - 1.0 + tt;
60
61basisGradient[27] = -(1.0 - ss - tt) * tt * ww;
62basisGradient[28] = -(1.0 - rr - tt) * tt * ww;
63basisGradient[29] = rr * ss * ww * ww + 1.0 - rr - ss - 2.0 * tt;
64
65basisGradient[30] = (1.0 - ss - tt) * tt * ww;
66basisGradient[31] = -(1.0 + rr - tt) * tt * ww;
67basisGradient[32] = -rr * ss * ww * ww + 1.0 + rr - ss - 2.0 * tt;
68
69basisGradient[33] = (1.0 + ss - tt) * tt * ww;
70basisGradient[34] = (1.0 + rr - tt) * tt * ww;
71basisGradient[35] = rr * ss * ww * ww + 1.0 + rr + ss - 2.0 * tt;
72
73basisGradient[36] = -(1.0 + ss - tt) * tt * ww;
74basisGradient[37] = (1.0 - rr - tt) * tt * ww;
75basisGradient[38] = -rr * ss * ww * ww + 1.0 - rr + ss - 2.0 * tt;
basisGradient[0]
RealT ww