24 #ifndef SECONDORDERFUNCTIONS_H_INCLUDED 25 #define SECONDORDERFUNCTIONS_H_INCLUDED 76 psi[0] = (2 * r - 1) * r;
77 psi[1] = (2 * s - 1) * s;
78 psi[2] = (2 * t - 1) * t;
79 psi[3] = (2 * u - 1) * u;
89 scalar dpsi1_by_dstu = 4 * (s + t +
u) - 3;
94 scalar dpsi2_by_ds = 4 * s - 1;
99 scalar dpsi3_by_dt = 4 * t - 1;
104 scalar dpsi4_by_du = 4 * u - 1;
109 scalar dpsi5_by_ds = 4 * (1 - 2 * s - t -
u), dpsi5_by_dtu = -4 * s;
114 scalar dpsi6_by_dt = 4 * (1 - s - 2 * t -
u), dpsi6_by_dsu = -4 * t;
119 scalar dpsi7_by_du = 4 * (1 - s - t - 2 *
u), dpsi7_by_dst = -4 * u;
124 scalar dpsi8_by_ds = 4 *
t, dpsi8_by_dt = 4 *
s;
129 scalar dpsi9_by_ds = 4 *
u, dpsi9_by_du = 4 *
s;
134 scalar dpsi10_by_dt = 4 *
u, dpsi10_by_du = 4 *
t;
149 J_coeff[0][0].
a = 4 * (n[0]->
pos.
x + n[1]->
pos.
x - 2 * n[4]->
pos.
x);
152 J_coeff[0][0].
d = 4 * n[4]->
pos.
x - 3 * n[0]->
pos.
x - n[1]->
pos.
x;
155 J_coeff[1][0].
a = 4 * (n[0]->
pos.
y + n[1]->
pos.
y - 2 * n[4]->
pos.
y);
158 J_coeff[1][0].
d = 4 * n[4]->
pos.
y - 3 * n[0]->
pos.
y - n[1]->
pos.
y;
161 J_coeff[2][0].
a = 4 * (n[0]->
pos.
z + n[1]->
pos.
z - 2 * n[4]->
pos.
z);
164 J_coeff[2][0].
d = 4 * n[4]->
pos.
z - 3 * n[0]->
pos.
z - n[1]->
pos.
z;
169 J_coeff[0][1].
b = 4 * (n[0]->
pos.
x + n[2]->
pos.
x - 2 * n[5]->
pos.
x);
171 J_coeff[0][1].
d = 4 * n[5]->
pos.
x - 3 * n[0]->
pos.
x - n[2]->
pos.
x;
175 J_coeff[1][1].
b = 4 * (n[0]->
pos.
y + n[2]->
pos.
y - 2 * n[5]->
pos.
y);
177 J_coeff[1][1].
d = 4 * n[5]->
pos.
y - 3 * n[0]->
pos.
y - n[2]->
pos.
y;
181 J_coeff[2][1].
b = 4 * (n[0]->
pos.
z + n[2]->
pos.
z - 2 * n[5]->
pos.
z);
183 J_coeff[2][1].
d = 4 * n[5]->
pos.
z - 3 * n[0]->
pos.
z - n[2]->
pos.
z;
189 J_coeff[0][2].
c = 4 * (n[0]->
pos.
x + n[3]->
pos.
x - 2 * n[6]->
pos.
x);
190 J_coeff[0][2].
d = 4 * n[6]->
pos.
x - 3 * n[0]->
pos.
x - n[3]->
pos.
x;
195 J_coeff[1][2].
c = 4 * (n[0]->
pos.
y + n[3]->
pos.
y - 2 * n[6]->
pos.
y);
196 J_coeff[1][2].
d = 4 * n[6]->
pos.
y - 3 * n[0]->
pos.
y - n[3]->
pos.
y;
201 J_coeff[2][2].
c = 4 * (n[0]->
pos.
z + n[3]->
pos.
z - 2 * n[6]->
pos.
z);
202 J_coeff[2][2].
d = 4 * n[6]->
pos.
z - 3 * n[0]->
pos.
z - n[3]->
pos.
z;
209 for (
int i = 0;
i < 3;
i++) {
210 for (
int j = 0; j < 3; j++) {
211 J[
i][j] = J_coeff[
i][j].
a * s + J_coeff[
i][j].
b * t + J_coeff[
i][j].
c * u + J_coeff[
i][j].
d;
216 J_inv[
DS_BY_DX] = J[2][2] * J[1][1] - J[2][1] * J[1][2];
217 J_inv[
DS_BY_DY] = J[2][1] * J[0][2] - J[2][2] * J[0][1];
218 J_inv[
DS_BY_DZ] = J[1][2] * J[0][1] - J[1][1] * J[0][2];
220 J_inv[
DT_BY_DX] = J[2][0] * J[1][2] - J[2][2] * J[1][0];
221 J_inv[
DT_BY_DY] = J[2][2] * J[0][0] - J[2][0] * J[0][2];
222 J_inv[
DT_BY_DZ] = J[1][0] * J[0][2] - J[1][2] * J[0][0];
224 J_inv[
DU_BY_DX] = J[2][1] * J[1][0] - J[2][0] * J[1][1];
225 J_inv[
DU_BY_DY] = J[2][0] * J[0][1] - J[2][1] * J[0][0];
226 J_inv[
DU_BY_DZ] = J[1][1] * J[0][0] - J[1][0] * J[0][1];
231 for (
int i = 0;
i < 9;
i++) {
scalar b
Definition: SecondOrderFunctions.h:58
#define DS_BY_DZ
Definition: SecondOrderFunctions.h:44
scalar t
Definition: SecondOrderFunctions.h:54
scalar u
Definition: SecondOrderFunctions.h:54
#define DS_BY_DX
Definition: SecondOrderFunctions.h:38
scalar & x
Definition: mat_vec_types.h:93
scalar d
Definition: SecondOrderFunctions.h:58
Definition: SecondOrderFunctions.h:57
scalar & y
Definition: mat_vec_types.h:94
scalar & z
Definition: mat_vec_types.h:95
#define DS_BY_DY
Definition: SecondOrderFunctions.h:41
#define GRAD_PSI_2
Definition: SecondOrderFunctions.h:28
#define GRAD_PSI_10
Definition: SecondOrderFunctions.h:36
#define DU_BY_DX
Definition: SecondOrderFunctions.h:40
#define GRAD_PSI_5
Definition: SecondOrderFunctions.h:31
#define GRAD_PSI_1
Definition: SecondOrderFunctions.h:27
static scalar calc_det_J(abcd J_coeff[3][3], scalar s, scalar t, scalar u, scalar J_inv[9])
Definition: SecondOrderFunctions.cpp:160
#define GRAD_PSI_8
Definition: SecondOrderFunctions.h:34
#define DU_BY_DZ
Definition: SecondOrderFunctions.h:46
#define DT_BY_DY
Definition: SecondOrderFunctions.h:42
static stu stu_lookup[10]
Definition: SecondOrderFunctions.h:61
scalar c
Definition: SecondOrderFunctions.h:58
#define GRAD_PSI_9
Definition: SecondOrderFunctions.h:35
#define GRAD_PSI_7
Definition: SecondOrderFunctions.h:33
#define GRAD_PSI_4
Definition: SecondOrderFunctions.h:30
Definition: mesh_node.h:39
#define DT_BY_DX
Definition: SecondOrderFunctions.h:39
vector3 pos
Definition: mesh_node.h:52
static void calc_jacobian_column_coefficients(mesh_node *n[10], abcd J_coeff[3][3])
Definition: SecondOrderFunctions.cpp:102
#define GRAD_PSI_6
Definition: SecondOrderFunctions.h:32
static void calc_grad_psi(vector3 grad_psi[10], scalar s, scalar t, scalar u, scalar J_inv[9])
Definition: SecondOrderFunctions.cpp:42
scalar a
Definition: SecondOrderFunctions.h:58
static void calc_psi(scalar psi[10], scalar s, scalar t, scalar u)
Definition: SecondOrderFunctions.cpp:28
scalar s
Definition: SecondOrderFunctions.h:54
Definition: SecondOrderFunctions.cpp:26
static const int i
index of ith thing
Definition: rod_math_v9.h:63
Definition: SecondOrderFunctions.h:53
#define GRAD_PSI_3
Definition: SecondOrderFunctions.h:29
Definition: mat_vec_types.h:90
#define DT_BY_DZ
Definition: SecondOrderFunctions.h:45
double scalar
Definition: mat_vec_types.h:36
#define DU_BY_DY
Definition: SecondOrderFunctions.h:43