10 double dudx[][num_nodes],
const T*
const coordinates,
const double*
const dx, T* derivatives
12 T x_der_x, x_der_y, x_der_z;
13 T y_der_x, y_der_y, y_der_z;
14 T z_der_x, z_der_y, z_der_z;
18 for (
int k = 0; k < num_nodes; k++) {
19 for (
int j = 0; j < num_nodes; j++) {
20 for (
int i = 0; i < num_nodes; i++) {
32 T jacobian = x_der_x * (y_der_y * z_der_z - y_der_z * z_der_y)
33 - x_der_y * (y_der_x * z_der_z - y_der_z * z_der_x)
34 + x_der_z * (y_der_x * z_der_y - y_der_y * z_der_x);
36 derivatives[id_der(k, j, i, 0)] = jacobian;
37 derivatives[id_der(k, j, i, 1)] = (1.0 / jacobian) * (y_der_y * z_der_z - z_der_y * y_der_z);
38 derivatives[id_der(k, j, i, 4)] = (1.0 / jacobian) * (z_der_x * y_der_z - y_der_x * z_der_z);
39 derivatives[id_der(k, j, i, 7)] = (1.0 / jacobian) * (y_der_x * z_der_y - z_der_x * y_der_y);
41 derivatives[id_der(k, j, i, 2)] = (1.0 / jacobian) * (z_der_y * x_der_z - x_der_y * z_der_z);
42 derivatives[id_der(k, j, i, 5)] = (1.0 / jacobian) * (x_der_x * z_der_z - z_der_x * x_der_z);
43 derivatives[id_der(k, j, i, 8)] = (1.0 / jacobian) * (z_der_x * x_der_y - x_der_x * z_der_y);
45 derivatives[id_der(k, j, i, 3)] = (1.0 / jacobian) * (x_der_y * y_der_z - y_der_y * x_der_z);
46 derivatives[id_der(k, j, i, 6)] = (1.0 / jacobian) * (y_der_x * x_der_z - x_der_x * y_der_z);
47 derivatives[id_der(k, j, i, 9)] = (1.0 / jacobian) * (x_der_x * y_der_y - y_der_x * x_der_y);