VTK  9.7.1
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).
3 if (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 
15 RealT ww = 1.0 / (1.0 - tt);
16 
17 basisGradient[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);
19 basisGradient[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);
21 basisGradient[2] = 0.25 * (-1.0 - rr - ss) * (-1.0 + rr * ss * ww + rr * ss * tt * ww * ww);
22 
23 basisGradient[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);
25 basisGradient[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);
27 basisGradient[5] = 0.25 * (-1.0 + rr - ss) * (-1.0 - rr * ss * ww - rr * ss * tt * ww * ww);
28 
29 basisGradient[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);
31 basisGradient[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);
33 basisGradient[8] = 0.25 * (-1.0 + rr + ss) * (-1.0 + rr * ss * ww + rr * ss * tt * ww * ww);
34 
35 basisGradient[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);
37 basisGradient[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);
39 basisGradient[11] = 0.25 * (-1.0 - rr + ss) * (-1.0 - rr * ss * ww - rr * ss * tt * ww * ww);
40 
41 basisGradient[12] = 0.0;
42 basisGradient[13] = 0.0;
43 basisGradient[14] = -1.0 + 4.0 * tt;
44 
45 basisGradient[15] = -rr * ww * (1.0 - ss - tt);
46 basisGradient[16] = -0.5 * (1.0 - rr - tt) * (1.0 + rr - tt) * ww;
47 basisGradient[17] = 0.5 * ss * rr * rr * ww * ww + 0.5 * ss - 1.0 + tt;
48 
49 basisGradient[18] = 0.5 * (1.0 - ss - tt) * (1.0 + ss - tt) * ww;
50 basisGradient[19] = -ss * ww * (1.0 + rr - tt);
51 basisGradient[20] = -0.5 * rr * ss * ss * ww * ww - 0.5 * rr - 1.0 + tt;
52 
53 basisGradient[21] = -rr * ww * (1.0 + ss - tt);
54 basisGradient[22] = 0.5 * (1.0 - rr - tt) * (1.0 + rr - tt) * ww;
55 basisGradient[23] = -0.5 * ss * rr * rr * ww * ww - 0.5 * ss - 1.0 + tt;
56 
57 basisGradient[24] = -0.5 * (1.0 - ss - tt) * (1.0 + ss - tt) * ww;
58 basisGradient[25] = -ss * ww * (1.0 - rr - tt);
59 basisGradient[26] = 0.5 * rr * ss * ss * ww * ww + 0.5 * rr - 1.0 + tt;
60 
61 basisGradient[27] = -(1.0 - ss - tt) * tt * ww;
62 basisGradient[28] = -(1.0 - rr - tt) * tt * ww;
63 basisGradient[29] = rr * ss * ww * ww + 1.0 - rr - ss - 2.0 * tt;
64 
65 basisGradient[30] = (1.0 - ss - tt) * tt * ww;
66 basisGradient[31] = -(1.0 + rr - tt) * tt * ww;
67 basisGradient[32] = -rr * ss * ww * ww + 1.0 + rr - ss - 2.0 * tt;
68 
69 basisGradient[33] = (1.0 + ss - tt) * tt * ww;
70 basisGradient[34] = (1.0 + rr - tt) * tt * ww;
71 basisGradient[35] = rr * ss * ww * ww + 1.0 + rr + ss - 2.0 * tt;
72 
73 basisGradient[36] = -(1.0 + ss - tt) * tt * ww;
74 basisGradient[37] = (1.0 - rr - tt) * tt * ww;
75 basisGradient[38] = -rr * ss * ww * ww + 1.0 - rr + ss - 2.0 * tt;
basisGradient[0]
Definition: PyrI2Gradient.h:17
RealT ww
Definition: PyrI2Gradient.h:15