VTK  9.3.20240916
PyrF2Basis.h
Go to the documentation of this file.
1const RealT HALF = 0.5;
2const RealT ONE = 1.;
3const RealT ZERO = 0.;
4const RealT TWO = 2.;
5const RealT SIXTEENTHIRDS = 16. / 3.;
6const RealT EIGHT = 8.;
7const RealT TWENTYSEVEN = 27.;
8const RealT FOURTH = 0.25;
9const RealT NINTH = 1. / 9.;
10const RealT THREESIXTYFOURTHS = 3. / 64.;
11const RealT EIGHTH = 1. / 8.;
12const RealT FOURNINTHS = 4. / 9.;
13const RealT THREESIXTEENTHS = 3. / 16.;
14const RealT NINESIXTEENTHS = 9. / 16.;
15
16const RealT K1 = -0.25;
17const RealT K5 = ONE;
18const RealT K6 = -HALF;
19const RealT K10 = -ONE;
20const RealT K14 = ONE;
21const RealT K15A = TWENTYSEVEN / EIGHT;
22const RealT K15B = -TWENTYSEVEN / EIGHT;
23const RealT K19 = -SIXTEENTHIRDS;
24
25RealT r2 = rr * rr;
26RealT s2 = ss * ss;
27RealT t2 = tt * tt;
28RealT rs = rr * ss;
29RealT rt = rr * tt;
30RealT st = ss * tt;
31RealT r2s = r2 * ss;
32RealT r2t = r2 * tt;
33RealT rs2 = rr * s2;
34RealT s2t = s2 * tt;
35RealT rt2 = rr * t2;
36RealT st2 = ss * t2;
37RealT r2s2 = r2 * s2;
38
39RealT tm = tt - ONE;
40RealT tm2 = tm * tm;
41RealT tm3 = tm2 * tm;
42
43// Be sure that the basis functions are defined when tt is very close to 1.
44RealT mt = abs(tm) > eps ? ONE / tm : ZERO;
45RealT m2t = abs(tm2) > eps ? ONE / tm2 : ZERO;
46RealT m3t = abs(tm3) > eps ? ONE / tm3 : ZERO;
47
48basis[0] = K1 * (rr + ss - ONE) * (rs * mt - rr - ss + tt - ONE);
49basis[1] = K1 * (-rr + ss - ONE) * (-rs * mt + rr - ss + tt - ONE);
50basis[2] = K1 * (-rr - ss - ONE) * (rs * mt + rr + ss + tt - ONE);
51basis[3] = K1 * (rr - ss - ONE) * (-rs * mt - rr + ss + tt - ONE);
52basis[4] = K5 * (-tt + TWO * t2);
53basis[5] = K6 * (-r2s * mt + r2 + st - ss - tm2);
54basis[6] = K6 * (rs2 * mt - rt + rr + s2 - tm2);
55basis[7] = K6 * (r2s * mt + r2 - st + ss - tm2);
56basis[8] = K6 * (-rs2 * mt + rt - rr + s2 - tm2);
57basis[9] = K10 * (rs + rs * mt - rt - st - tt + t2);
58basis[10] = K10 * (-rs - rs * mt + rt - st - tt + t2);
59basis[11] = K10 * (rs + rs * mt + rt + st - tt + t2);
60basis[12] = K10 * (-rs - rs * mt - rt + st - tt + t2);
61basis[13] = K14 * (r2s2 * m2t - r2 - s2 + tm2);
62basis[14] = K15A * (r2s + r2s * mt - r2s2 * mt - r2s2 * m2t + st - st2 + s2t);
63basis[15] = K15B * (rs2 + rs2 * mt + rt - rt2 + r2s2 * mt + r2s2 * m2t - r2t);
64basis[16] = K15B * (r2s + r2s * mt + r2s2 * mt + r2s2 * m2t + st - st2 - s2t);
65basis[17] = K15A * (rs2 + rs2 * mt + rt - rt2 - r2s2 * mt - r2s2 * m2t + r2t);
66basis[18] = K19 * (r2s2 * m2t + r2s2 * m3t - r2 - r2 * mt - s2 - s2 * mt - tt + t2);
67
68// Modifications
69basis[0] =
70 basis[0] + FOURTH * basis[13] + NINTH * (basis[14] + basis[17]) + basis[18] * THREESIXTYFOURTHS;
71basis[1] =
72 basis[1] + FOURTH * basis[13] + NINTH * (basis[14] + basis[15]) + basis[18] * THREESIXTYFOURTHS;
73basis[2] =
74 basis[2] + FOURTH * basis[13] + NINTH * (basis[15] + basis[16]) + basis[18] * THREESIXTYFOURTHS;
75basis[3] =
76 basis[3] + FOURTH * basis[13] + NINTH * (basis[16] + basis[17]) + basis[18] * THREESIXTYFOURTHS;
77basis[4] = basis[4] + EIGHTH * basis[18] + NINTH * (basis[14] + basis[15] + basis[16] + basis[17]);
78basis[5] = basis[5] - FOURNINTHS * basis[14] - basis[13] * HALF;
79basis[6] = basis[6] - FOURNINTHS * basis[15] - basis[13] * HALF;
80basis[7] = basis[7] - FOURNINTHS * basis[16] - basis[13] * HALF;
81basis[8] = basis[8] - FOURNINTHS * basis[17] - basis[13] * HALF;
82basis[9] = basis[9] - FOURNINTHS * (basis[14] + basis[17]) - basis[18] * THREESIXTEENTHS;
83basis[10] = basis[10] - FOURNINTHS * (basis[14] + basis[15]) - basis[18] * THREESIXTEENTHS;
84basis[11] = basis[11] - FOURNINTHS * (basis[15] + basis[16]) - basis[18] * THREESIXTEENTHS;
85basis[12] = basis[12] - FOURNINTHS * (basis[16] + basis[17]) - basis[18] * THREESIXTEENTHS;
86basis[13] = basis[13] - basis[18] * NINESIXTEENTHS;
basis[0]
Definition PyrF2Basis.h:48
const RealT K1
Definition PyrF2Basis.h:16
RealT r2
Definition PyrF2Basis.h:25
const RealT K14
Definition PyrF2Basis.h:20
RealT m2t
Definition PyrF2Basis.h:45
RealT rt2
Definition PyrF2Basis.h:35
RealT st
Definition PyrF2Basis.h:30
const RealT K5
Definition PyrF2Basis.h:17
RealT r2s2
Definition PyrF2Basis.h:37
const RealT NINTH
Definition PyrF2Basis.h:9
const RealT EIGHT
Definition PyrF2Basis.h:6
const RealT K15A
Definition PyrF2Basis.h:21
const RealT FOURTH
Definition PyrF2Basis.h:8
RealT t2
Definition PyrF2Basis.h:27
RealT m3t
Definition PyrF2Basis.h:46
RealT tm
Definition PyrF2Basis.h:39
RealT rs2
Definition PyrF2Basis.h:33
RealT tm2
Definition PyrF2Basis.h:40
const RealT TWENTYSEVEN
Definition PyrF2Basis.h:7
const RealT TWO
Definition PyrF2Basis.h:4
RealT r2s
Definition PyrF2Basis.h:31
const RealT SIXTEENTHIRDS
Definition PyrF2Basis.h:5
const RealT ONE
Definition PyrF2Basis.h:2
const RealT K19
Definition PyrF2Basis.h:23
const RealT THREESIXTYFOURTHS
Definition PyrF2Basis.h:10
const RealT K15B
Definition PyrF2Basis.h:22
RealT s2
Definition PyrF2Basis.h:26
RealT s2t
Definition PyrF2Basis.h:34
const RealT THREESIXTEENTHS
Definition PyrF2Basis.h:13
RealT st2
Definition PyrF2Basis.h:36
const RealT ZERO
Definition PyrF2Basis.h:3
RealT r2t
Definition PyrF2Basis.h:32
RealT mt
Definition PyrF2Basis.h:44
const RealT K6
Definition PyrF2Basis.h:18
const RealT HALF
Definition PyrF2Basis.h:1
const RealT FOURNINTHS
Definition PyrF2Basis.h:12
RealT rt
Definition PyrF2Basis.h:29
const RealT EIGHTH
Definition PyrF2Basis.h:11
const RealT K10
Definition PyrF2Basis.h:19
RealT rs
Definition PyrF2Basis.h:28
RealT tm3
Definition PyrF2Basis.h:41
const RealT NINESIXTEENTHS
Definition PyrF2Basis.h:14