11 double dudx[][num_nodes],
const double*
const coordinates,
const double*
const dx,
double* derivatives
15 double x_der_x, x_der_y, x_der_z;
16 double y_der_x, y_der_y, y_der_z;
17 double z_der_x, z_der_y, z_der_z;
21 for (
int k = 0; k < num_nodes; k++) {
22 for (
int j = 0; j < num_nodes; j++) {
23 for (
int i = 0; i < num_nodes; i++) {
35 double jacobian = x_der_x * (y_der_y * z_der_z - y_der_z * z_der_y)
36 - x_der_y * (y_der_x * z_der_z - y_der_z * z_der_x)
37 + x_der_z * (y_der_x * z_der_y - y_der_y * z_der_x);
39 derivatives[id_der(k, j, i, 0)] = jacobian;
40 derivatives[id_der(k, j, i, 1)] = (1.0 / jacobian) * (y_der_y * z_der_z - z_der_y * y_der_z);
41 derivatives[id_der(k, j, i, 4)] = (1.0 / jacobian) * (z_der_x * y_der_z - y_der_x * z_der_z);
42 derivatives[id_der(k, j, i, 7)] = (1.0 / jacobian) * (y_der_x * z_der_y - z_der_x * y_der_y);
44 derivatives[id_der(k, j, i, 2)] = (1.0 / jacobian) * (z_der_y * x_der_z - x_der_y * z_der_z);
45 derivatives[id_der(k, j, i, 5)] = (1.0 / jacobian) * (x_der_x * z_der_z - z_der_x * x_der_z);
46 derivatives[id_der(k, j, i, 8)] = (1.0 / jacobian) * (z_der_x * x_der_y - x_der_x * z_der_y);
48 derivatives[id_der(k, j, i, 3)] = (1.0 / jacobian) * (x_der_y * y_der_z - y_der_y * x_der_z);
49 derivatives[id_der(k, j, i, 6)] = (1.0 / jacobian) * (y_der_x * x_der_z - x_der_x * y_der_z);
50 derivatives[id_der(k, j, i, 9)] = (1.0 / jacobian) * (x_der_x * y_der_y - y_der_x * x_der_y);