13 template <
class T_X,
class T_N>
16 N[0] =
r[0] * (
r[0] + 1) *
r[1] * (
r[1] + 1) / 4;
17 N[1] =
r[0] * (
r[0] - 1) *
r[1] * (
r[1] + 1) / 4;
18 N[2] =
r[0] * (
r[0] - 1) *
r[1] * (
r[1] - 1) / 4;
19 N[3] =
r[0] * (
r[0] + 1) *
r[1] * (
r[1] - 1) / 4;
20 N[4] =
r[1] * (
r[1] + 1) * (1 -
r[0] *
r[0]) / 2;
21 N[5] =
r[0] * (
r[0] - 1) * (1 -
r[1] *
r[1]) / 2;
22 N[6] =
r[1] * (
r[1] - 1) * (1 -
r[0] *
r[0]) / 2;
23 N[7] =
r[0] * (
r[0] + 1) * (1 -
r[1] *
r[1]) / 2;
24 N[8] = (1 -
r[0] *
r[0]) * (1 -
r[1] *
r[1]);
27 template <
class T_X,
class T_N>
30 dNdr[0] = (
r[0] + 0.5) *
r[1] * (
r[1] + 1) / 2;
31 dNdr[1] = (
r[0] - 0.5) *
r[1] * (
r[1] + 1) / 2;
32 dNdr[2] = (
r[0] - 0.5) *
r[1] * (
r[1] - 1) / 2;
33 dNdr[3] = (
r[0] + 0.5) *
r[1] * (
r[1] - 1) / 2;
34 dNdr[4] = -
r[0] *
r[1] * (1 +
r[1]);
35 dNdr[5] = (1 -
r[1] *
r[1]) * (
r[0] - 0.5);
36 dNdr[6] =
r[0] *
r[1] * (1 -
r[1]);
37 dNdr[7] = (1 -
r[1] *
r[1]) * (
r[0] + 0.5);
38 dNdr[8] = 2 *
r[0] * (
r[1] *
r[1] - 1);
40 dNdr[10] = (
r[1] + 0.5) *
r[0] * (
r[0] - 1) / 2;
41 dNdr[11] = (
r[1] - 0.5) *
r[0] * (
r[0] - 1) / 2;
42 dNdr[12] = (
r[1] - 0.5) *
r[0] * (
r[0] + 1) / 2;
43 dNdr[13] = (1 -
r[0] *
r[0]) * (
r[1] + 0.5);
44 dNdr[14] =
r[0] *
r[1] * (1 -
r[0]);
45 dNdr[15] = (1 -
r[0] *
r[0]) * (
r[1] - 0.5);
46 dNdr[16] = -
r[0] *
r[1] * (1 +
r[0]);
47 dNdr[17] = 2 *
r[1] * (
r[0] *
r[0] - 1);
48 dNdr[9] = (
r[1] + 0.5) *
r[0] * (
r[0] + 1) / 2;
static void computeShapeFunction(const T_X &r, T_N &N)
static void computeGradShapeFunction(const T_X &r, T_N &dN)