PolyFEM
Loading...
Searching...
No Matches
auto_q_bases_3d_grad_1.cpp
Go to the documentation of this file.
1#include <Eigen/Dense>
2#include <cassert>
3
4namespace polyfem {
5namespace autogen {
6namespace {
7void q_1_basis_grad_value_3d_single_0(double x, double y, double z, double *val) {
8{val[0] = -1.0*(y - 1)*(z - 1);}
9{val[1] = -1.0*(x - 1)*(z - 1);}
10{val[2] = -1.0*(x - 1)*(y - 1);}
11}
12
13void q_1_basis_grad_value_3d_single_1(double x, double y, double z, double *val) {
14{val[0] = 1.0*(y - 1)*(z - 1);}
15{val[1] = 1.0*x*(z - 1);}
16{val[2] = 1.0*x*(y - 1);}
17}
18
19void q_1_basis_grad_value_3d_single_2(double x, double y, double z, double *val) {
20{val[0] = -1.0*y*(z - 1);}
21{val[1] = -1.0*x*(z - 1);}
22{val[2] = -1.0*x*y;}
23}
24
25void q_1_basis_grad_value_3d_single_3(double x, double y, double z, double *val) {
26{val[0] = 1.0*y*(z - 1);}
27{val[1] = 1.0*(x - 1)*(z - 1);}
28{val[2] = 1.0*y*(x - 1);}
29}
30
31void q_1_basis_grad_value_3d_single_4(double x, double y, double z, double *val) {
32{val[0] = 1.0*z*(y - 1);}
33{val[1] = 1.0*z*(x - 1);}
34{val[2] = 1.0*(x - 1)*(y - 1);}
35}
36
37void q_1_basis_grad_value_3d_single_5(double x, double y, double z, double *val) {
38{val[0] = -1.0*z*(y - 1);}
39{val[1] = -1.0*x*z;}
40{val[2] = -1.0*x*(y - 1);}
41}
42
43void q_1_basis_grad_value_3d_single_6(double x, double y, double z, double *val) {
44{val[0] = 1.0*y*z;}
45{val[1] = 1.0*x*z;}
46{val[2] = 1.0*x*y;}
47}
48
49void q_1_basis_grad_value_3d_single_7(double x, double y, double z, double *val) {
50{val[0] = -1.0*y*z;}
51{val[1] = -1.0*z*(x - 1);}
52{val[2] = -1.0*y*(x - 1);}
53}
54
55
56
57}
58
59void q_1_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
60val.resize(uv.rows(), 3);
61double gradient[3];
62switch(local_index){
63 case 0:
64 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
65 q_1_basis_grad_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
66 val(i, 0) = gradient[0];
67 val(i, 1) = gradient[1];
68 val(i, 2) = gradient[2];
69 }
70 break;
71 case 1:
72 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
73 q_1_basis_grad_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
74 val(i, 0) = gradient[0];
75 val(i, 1) = gradient[1];
76 val(i, 2) = gradient[2];
77 }
78 break;
79 case 2:
80 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
81 q_1_basis_grad_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
82 val(i, 0) = gradient[0];
83 val(i, 1) = gradient[1];
84 val(i, 2) = gradient[2];
85 }
86 break;
87 case 3:
88 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
89 q_1_basis_grad_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
90 val(i, 0) = gradient[0];
91 val(i, 1) = gradient[1];
92 val(i, 2) = gradient[2];
93 }
94 break;
95 case 4:
96 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
97 q_1_basis_grad_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
98 val(i, 0) = gradient[0];
99 val(i, 1) = gradient[1];
100 val(i, 2) = gradient[2];
101 }
102 break;
103 case 5:
104 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
105 q_1_basis_grad_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
106 val(i, 0) = gradient[0];
107 val(i, 1) = gradient[1];
108 val(i, 2) = gradient[2];
109 }
110 break;
111 case 6:
112 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
113 q_1_basis_grad_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
114 val(i, 0) = gradient[0];
115 val(i, 1) = gradient[1];
116 val(i, 2) = gradient[2];
117 }
118 break;
119 case 7:
120 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
121 q_1_basis_grad_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
122 val(i, 0) = gradient[0];
123 val(i, 1) = gradient[1];
124 val(i, 2) = gradient[2];
125 }
126 break;
127 default: assert(false);
128}
129}
130
131}}
double val
Definition Assembler.cpp:86
int y
int z
int x
void q_1_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)