VTK  9.7.20260921
TetGnGradient.h
Go to the documentation of this file.
1int count = 0;
2for (int ii = 0; ii <= order; ++ii)
3{
4 for (int jj = 0; jj <= order - ii; ++jj)
5 {
6 for (int kk = 0; kk <= order - ii - jj; ++kk)
7 {
8 RealT term1 = jacobi(ii, 0., 0., 2. * rr / (1. - ss - tt + eps) - 1.);
9 RealT term2 = power(1. - ss - tt, ii);
10 RealT term3 = jacobi(jj, (2. * ii + 1.), 0., 2. * ss / (1. - tt + eps) - 1.);
11 RealT term4 = power(1. - tt, jj);
12 RealT term5 = jacobi(kk, (2. * (ii + jj) + 2.), 0., 2. * tt - 1.);
13
14 RealT dterm1_dr =
15 jacobi_dx(ii, 0., 0., 2. * rr / (1. - ss - tt + eps) - 1.) * 2. / (1. - ss - tt + eps);
16 RealT dterm1_ds = jacobi_dx(ii, 0., 0., 2. * rr / (1. - ss - tt + eps) - 1.) * 2. * rr /
17 power(1. - ss - tt + eps, 2.);
18 RealT dterm1_dt = dterm1_ds;
19 RealT dterm2_ds = -ii * power(1. - ss - tt, ii) / (1. - ss - tt);
20 RealT dterm2_dt = dterm2_ds;
21 RealT dterm3_ds =
22 jacobi_dx(jj, (2. * ii + 1.), 0., 2. * ss / (1. - tt + eps) - 1.) * 2. / (1. - tt + eps);
23 RealT dterm3_dt = jacobi_dx(jj, (2. * ii + 1.), 0., 2. * ss / (1. - tt + eps) - 1.) * 2. *
24 ss / power(1. - tt + eps, 2.);
25 RealT dterm4_dt = -jj * power(1. - tt, jj - 1.);
26 RealT dterm5_dt = jacobi_dx(kk, (2. * (ii + jj) + 2.), 0., 2. * tt - 1.) * 2.;
27
28 // ∂/∂r:
29 basisGradient[count++] = dterm1_dr * term2 * term3 * term4 * term5;
30 // ∂/∂s
32 (dterm1_ds * term2 * term3 + term1 * dterm2_ds * term3 + term1 * term2 * dterm3_ds) *
33 term4 * term5;
34 // ∂/∂t
35 basisGradient[count++] = dterm1_dt * term2 * term3 * term4 * term5 +
36 term1 * dterm2_dt * term3 * term4 * term5 + term1 * term2 * dterm3_dt * term4 * term5 +
37 term1 * term2 * term3 * dterm4_dt * term5 + term1 * term2 * term3 * term4 * dterm5_dt;
38 }
39 }
40}
basisGradient[0]
int count
Definition PyrGnBasis.h:1