13 template <
class T_X,
class T_N>
16 N[0] = 0.25 * (1.0 +
r[0]) * (1.0 +
r[1]) * (-1.0 +
r[0] +
r[1]);
17 N[1] = -0.25 * (1.0 -
r[0]) * (1.0 +
r[1]) * (1.0 +
r[0] -
r[1]);
18 N[2] = -0.25 * (1.0 -
r[0]) * (1.0 -
r[1]) * (1.0 +
r[0] +
r[1]);
19 N[3] = 0.25 * (1.0 +
r[0]) * (1.0 -
r[1]) * (-1.0 +
r[0] -
r[1]);
21 N[4] = 0.5 * (1.0 -
r[0] *
r[0]) * (1.0 +
r[1]);
22 N[5] = 0.5 * (1.0 -
r[1] *
r[1]) * (1.0 -
r[0]);
23 N[6] = 0.5 * (1.0 -
r[0] *
r[0]) * (1.0 -
r[1]);
24 N[7] = 0.5 * (1.0 -
r[1] *
r[1]) * (1.0 +
r[0]);
27 template <
class T_X,
class T_N>
30 const double r = rs[0];
31 const double s = rs[1];
34 dNdr[0] = (1 + s) * (2 *
r + s) * 0.25;
35 dNdr[1] = (1 + s) * (2 *
r - s) * 0.25;
36 dNdr[2] = (1 - s) * (2 *
r + s) * 0.25;
37 dNdr[3] = (1 - s) * (2 *
r - s) * 0.25;
39 dNdr[4] = -
r * (1 + s);
40 dNdr[5] = -(1 - s * s) * 0.5;
41 dNdr[6] = -
r * (1 - s);
42 dNdr[7] = (1 - s * s) * 0.5;
45 dNdr[8] = (1 +
r) * (
r + 2 * s) * 0.25;
46 dNdr[9] = -(1 -
r) * (
r - 2 * s) * 0.25;
47 dNdr[10] = (1 -
r) * (
r + 2 * s) * 0.25;
48 dNdr[11] = -(1 +
r) * (
r - 2 * s) * 0.25;
50 dNdr[12] = (1 -
r *
r) * 0.5;
51 dNdr[13] = -(1 -
r) * s;
52 dNdr[14] = -(1 -
r *
r) * 0.5;
53 dNdr[15] = -(1 +
r) * s;
static void computeShapeFunction(const T_X &r, T_N &N)
static void computeGradShapeFunction(const T_X &r, T_N &dN)