PolyFEM
Loading...
Searching...
No Matches
auto_q_bases_3d_grad_-2.cpp
Go to the documentation of this file.
1#include <Eigen/Dense>
2#include <cassert>
3
4namespace polyfem {
5namespace autogen {
6namespace {
7void q_m2_basis_grad_value_3d_single_0(double x, double y, double z, double *val) {
8{val[0] = (y - 1)*(z - 1)*(4.0*x + 2.0*y + 2.0*z - 3.0);}
9{val[1] = (x - 1)*(z - 1)*(2.0*x + 4.0*y + 2.0*z - 3.0);}
10{val[2] = (x - 1)*(y - 1)*(2.0*x + 2.0*y + 4.0*z - 3.0);}
11}
12
13void q_m2_basis_grad_value_3d_single_1(double x, double y, double z, double *val) {
14{val[0] = -(y - 1)*(z - 1)*(-4.0*x + 2.0*y + 2.0*z + 1.0);}
15{val[1] = x*(z - 1)*(2.0*x - 4.0*y - 2.0*z + 1.0);}
16{val[2] = x*(y - 1)*(2.0*x - 2.0*y - 4.0*z + 1.0);}
17}
18
19void q_m2_basis_grad_value_3d_single_2(double x, double y, double z, double *val) {
20{val[0] = -y*(z - 1)*(4.0*x + 2.0*y - 2.0*z - 3.0);}
21{val[1] = -x*(z - 1)*(2.0*x + 4.0*y - 2.0*z - 3.0);}
22{val[2] = -x*y*(2.0*x + 2.0*y - 4.0*z - 1.0);}
23}
24
25void q_m2_basis_grad_value_3d_single_3(double x, double y, double z, double *val) {
26{val[0] = -y*(z - 1)*(4.0*x - 2.0*y + 2.0*z - 1.0);}
27{val[1] = -(x - 1)*(z - 1)*(2.0*x - 4.0*y + 2.0*z + 1.0);}
28{val[2] = -y*(x - 1)*(2.0*x - 2.0*y + 4.0*z - 1.0);}
29}
30
31void q_m2_basis_grad_value_3d_single_4(double x, double y, double z, double *val) {
32{val[0] = -z*(y - 1)*(4.0*x + 2.0*y - 2.0*z - 1.0);}
33{val[1] = -z*(x - 1)*(2.0*x + 4.0*y - 2.0*z - 1.0);}
34{val[2] = -(x - 1)*(y - 1)*(2.0*x + 2.0*y - 4.0*z + 1.0);}
35}
36
37void q_m2_basis_grad_value_3d_single_5(double x, double y, double z, double *val) {
38{val[0] = -z*(y - 1)*(4.0*x - 2.0*y + 2.0*z - 3.0);}
39{val[1] = -x*z*(2.0*x - 4.0*y + 2.0*z - 1.0);}
40{val[2] = -x*(y - 1)*(2.0*x - 2.0*y + 4.0*z - 3.0);}
41}
42
43void q_m2_basis_grad_value_3d_single_6(double x, double y, double z, double *val) {
44{val[0] = y*z*(4.0*x + 2.0*y + 2.0*z - 5.0);}
45{val[1] = x*z*(2.0*x + 4.0*y + 2.0*z - 5.0);}
46{val[2] = x*y*(2.0*x + 2.0*y + 4.0*z - 5.0);}
47}
48
49void q_m2_basis_grad_value_3d_single_7(double x, double y, double z, double *val) {
50{val[0] = y*z*(4.0*x - 2.0*y - 2.0*z + 1.0);}
51{val[1] = z*(x - 1)*(2.0*x - 4.0*y - 2.0*z + 3.0);}
52{val[2] = y*(x - 1)*(2.0*x - 2.0*y - 4.0*z + 3.0);}
53}
54
55void q_m2_basis_grad_value_3d_single_8(double x, double y, double z, double *val) {
56{val[0] = -4*(2*x - 1)*(y - 1)*(z - 1);}
57{val[1] = -4*x*(x - 1)*(z - 1);}
58{val[2] = -4*x*(x - 1)*(y - 1);}
59}
60
61void q_m2_basis_grad_value_3d_single_9(double x, double y, double z, double *val) {
62{val[0] = 4*y*(y - 1)*(z - 1);}
63{val[1] = 4*x*(2*y - 1)*(z - 1);}
64{val[2] = 4*x*y*(y - 1);}
65}
66
67void q_m2_basis_grad_value_3d_single_10(double x, double y, double z, double *val) {
68{val[0] = 4*y*(2*x - 1)*(z - 1);}
69{val[1] = 4*x*(x - 1)*(z - 1);}
70{val[2] = 4*x*y*(x - 1);}
71}
72
73void q_m2_basis_grad_value_3d_single_11(double x, double y, double z, double *val) {
74{val[0] = -4*y*(y - 1)*(z - 1);}
75{val[1] = -4*(x - 1)*(2*y - 1)*(z - 1);}
76{val[2] = -4*y*(x - 1)*(y - 1);}
77}
78
79void q_m2_basis_grad_value_3d_single_12(double x, double y, double z, double *val) {
80{val[0] = -4*z*(y - 1)*(z - 1);}
81{val[1] = -4*z*(x - 1)*(z - 1);}
82{val[2] = -4*(x - 1)*(y - 1)*(2*z - 1);}
83}
84
85void q_m2_basis_grad_value_3d_single_13(double x, double y, double z, double *val) {
86{val[0] = 4*z*(y - 1)*(z - 1);}
87{val[1] = 4*x*z*(z - 1);}
88{val[2] = 4*x*(y - 1)*(2*z - 1);}
89}
90
91void q_m2_basis_grad_value_3d_single_14(double x, double y, double z, double *val) {
92{val[0] = -4*y*z*(z - 1);}
93{val[1] = -4*x*z*(z - 1);}
94{val[2] = -4*x*y*(2*z - 1);}
95}
96
97void q_m2_basis_grad_value_3d_single_15(double x, double y, double z, double *val) {
98{val[0] = 4*y*z*(z - 1);}
99{val[1] = 4*z*(x - 1)*(z - 1);}
100{val[2] = 4*y*(x - 1)*(2*z - 1);}
101}
102
103void q_m2_basis_grad_value_3d_single_16(double x, double y, double z, double *val) {
104{val[0] = 4*z*(2*x - 1)*(y - 1);}
105{val[1] = 4*x*z*(x - 1);}
106{val[2] = 4*x*(x - 1)*(y - 1);}
107}
108
109void q_m2_basis_grad_value_3d_single_17(double x, double y, double z, double *val) {
110{val[0] = -4*y*z*(y - 1);}
111{val[1] = -4*x*z*(2*y - 1);}
112{val[2] = -4*x*y*(y - 1);}
113}
114
115void q_m2_basis_grad_value_3d_single_18(double x, double y, double z, double *val) {
116{val[0] = -4*y*z*(2*x - 1);}
117{val[1] = -4*x*z*(x - 1);}
118{val[2] = -4*x*y*(x - 1);}
119}
120
121void q_m2_basis_grad_value_3d_single_19(double x, double y, double z, double *val) {
122{val[0] = 4*y*z*(y - 1);}
123{val[1] = 4*z*(x - 1)*(2*y - 1);}
124{val[2] = 4*y*(x - 1)*(y - 1);}
125}
126
127
128
129}
130
131void q_m2_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
132val.resize(uv.rows(), 3);
133double gradient[3];
134switch(local_index){
135 case 0:
136 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
137 q_m2_basis_grad_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
138 val(i, 0) = gradient[0];
139 val(i, 1) = gradient[1];
140 val(i, 2) = gradient[2];
141 }
142 break;
143 case 1:
144 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
145 q_m2_basis_grad_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
146 val(i, 0) = gradient[0];
147 val(i, 1) = gradient[1];
148 val(i, 2) = gradient[2];
149 }
150 break;
151 case 2:
152 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
153 q_m2_basis_grad_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
154 val(i, 0) = gradient[0];
155 val(i, 1) = gradient[1];
156 val(i, 2) = gradient[2];
157 }
158 break;
159 case 3:
160 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
161 q_m2_basis_grad_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
162 val(i, 0) = gradient[0];
163 val(i, 1) = gradient[1];
164 val(i, 2) = gradient[2];
165 }
166 break;
167 case 4:
168 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
169 q_m2_basis_grad_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
170 val(i, 0) = gradient[0];
171 val(i, 1) = gradient[1];
172 val(i, 2) = gradient[2];
173 }
174 break;
175 case 5:
176 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
177 q_m2_basis_grad_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
178 val(i, 0) = gradient[0];
179 val(i, 1) = gradient[1];
180 val(i, 2) = gradient[2];
181 }
182 break;
183 case 6:
184 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
185 q_m2_basis_grad_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
186 val(i, 0) = gradient[0];
187 val(i, 1) = gradient[1];
188 val(i, 2) = gradient[2];
189 }
190 break;
191 case 7:
192 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
193 q_m2_basis_grad_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
194 val(i, 0) = gradient[0];
195 val(i, 1) = gradient[1];
196 val(i, 2) = gradient[2];
197 }
198 break;
199 case 8:
200 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
201 q_m2_basis_grad_value_3d_single_8(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
202 val(i, 0) = gradient[0];
203 val(i, 1) = gradient[1];
204 val(i, 2) = gradient[2];
205 }
206 break;
207 case 9:
208 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
209 q_m2_basis_grad_value_3d_single_9(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
210 val(i, 0) = gradient[0];
211 val(i, 1) = gradient[1];
212 val(i, 2) = gradient[2];
213 }
214 break;
215 case 10:
216 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
217 q_m2_basis_grad_value_3d_single_10(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
218 val(i, 0) = gradient[0];
219 val(i, 1) = gradient[1];
220 val(i, 2) = gradient[2];
221 }
222 break;
223 case 11:
224 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
225 q_m2_basis_grad_value_3d_single_11(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
226 val(i, 0) = gradient[0];
227 val(i, 1) = gradient[1];
228 val(i, 2) = gradient[2];
229 }
230 break;
231 case 12:
232 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
233 q_m2_basis_grad_value_3d_single_12(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
234 val(i, 0) = gradient[0];
235 val(i, 1) = gradient[1];
236 val(i, 2) = gradient[2];
237 }
238 break;
239 case 13:
240 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
241 q_m2_basis_grad_value_3d_single_13(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
242 val(i, 0) = gradient[0];
243 val(i, 1) = gradient[1];
244 val(i, 2) = gradient[2];
245 }
246 break;
247 case 14:
248 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
249 q_m2_basis_grad_value_3d_single_14(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
250 val(i, 0) = gradient[0];
251 val(i, 1) = gradient[1];
252 val(i, 2) = gradient[2];
253 }
254 break;
255 case 15:
256 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
257 q_m2_basis_grad_value_3d_single_15(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
258 val(i, 0) = gradient[0];
259 val(i, 1) = gradient[1];
260 val(i, 2) = gradient[2];
261 }
262 break;
263 case 16:
264 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
265 q_m2_basis_grad_value_3d_single_16(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
266 val(i, 0) = gradient[0];
267 val(i, 1) = gradient[1];
268 val(i, 2) = gradient[2];
269 }
270 break;
271 case 17:
272 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
273 q_m2_basis_grad_value_3d_single_17(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
274 val(i, 0) = gradient[0];
275 val(i, 1) = gradient[1];
276 val(i, 2) = gradient[2];
277 }
278 break;
279 case 18:
280 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
281 q_m2_basis_grad_value_3d_single_18(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
282 val(i, 0) = gradient[0];
283 val(i, 1) = gradient[1];
284 val(i, 2) = gradient[2];
285 }
286 break;
287 case 19:
288 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
289 q_m2_basis_grad_value_3d_single_19(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
290 val(i, 0) = gradient[0];
291 val(i, 1) = gradient[1];
292 val(i, 2) = gradient[2];
293 }
294 break;
295 default: assert(false);
296}
297}
298
299}}
double val
Definition Assembler.cpp:86
int y
int z
int x
void q_m2_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)