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_2_basis_grad_value_3d_single_0(double x, double y, double z, double *val) {
8{val[0] = (4.0*x - 3.0)*(y - 1)*(2.0*y - 1.0)*(z - 1)*(2.0*z - 1.0);}
9{val[1] = (x - 1)*(2.0*x - 1.0)*(4.0*y - 3.0)*(z - 1)*(2.0*z - 1.0);}
10{val[2] = (x - 1)*(2.0*x - 1.0)*(y - 1)*(2.0*y - 1.0)*(4.0*z - 3.0);}
11}
12
13void q_2_basis_grad_value_3d_single_1(double x, double y, double z, double *val) {
14{val[0] = (4.0*x - 1.0)*(y - 1)*(2.0*y - 1.0)*(z - 1)*(2.0*z - 1.0);}
15{val[1] = x*(2.0*x - 1.0)*(4.0*y - 3.0)*(z - 1)*(2.0*z - 1.0);}
16{val[2] = x*(2.0*x - 1.0)*(y - 1)*(2.0*y - 1.0)*(4.0*z - 3.0);}
17}
18
19void q_2_basis_grad_value_3d_single_2(double x, double y, double z, double *val) {
20{val[0] = y*(4.0*x - 1.0)*(2.0*y - 1.0)*(z - 1)*(2.0*z - 1.0);}
21{val[1] = x*(2.0*x - 1.0)*(4.0*y - 1.0)*(z - 1)*(2.0*z - 1.0);}
22{val[2] = x*y*(2.0*x - 1.0)*(2.0*y - 1.0)*(4.0*z - 3.0);}
23}
24
25void q_2_basis_grad_value_3d_single_3(double x, double y, double z, double *val) {
26{val[0] = y*(4.0*x - 3.0)*(2.0*y - 1.0)*(z - 1)*(2.0*z - 1.0);}
27{val[1] = (x - 1)*(2.0*x - 1.0)*(4.0*y - 1.0)*(z - 1)*(2.0*z - 1.0);}
28{val[2] = y*(x - 1)*(2.0*x - 1.0)*(2.0*y - 1.0)*(4.0*z - 3.0);}
29}
30
31void q_2_basis_grad_value_3d_single_4(double x, double y, double z, double *val) {
32{val[0] = z*(4.0*x - 3.0)*(y - 1)*(2.0*y - 1.0)*(2.0*z - 1.0);}
33{val[1] = z*(x - 1)*(2.0*x - 1.0)*(4.0*y - 3.0)*(2.0*z - 1.0);}
34{val[2] = (x - 1)*(2.0*x - 1.0)*(y - 1)*(2.0*y - 1.0)*(4.0*z - 1.0);}
35}
36
37void q_2_basis_grad_value_3d_single_5(double x, double y, double z, double *val) {
38{val[0] = z*(4.0*x - 1.0)*(y - 1)*(2.0*y - 1.0)*(2.0*z - 1.0);}
39{val[1] = x*z*(2.0*x - 1.0)*(4.0*y - 3.0)*(2.0*z - 1.0);}
40{val[2] = x*(2.0*x - 1.0)*(y - 1)*(2.0*y - 1.0)*(4.0*z - 1.0);}
41}
42
43void q_2_basis_grad_value_3d_single_6(double x, double y, double z, double *val) {
44{val[0] = y*z*(4.0*x - 1.0)*(2.0*y - 1.0)*(2.0*z - 1.0);}
45{val[1] = x*z*(2.0*x - 1.0)*(4.0*y - 1.0)*(2.0*z - 1.0);}
46{val[2] = x*y*(2.0*x - 1.0)*(2.0*y - 1.0)*(4.0*z - 1.0);}
47}
48
49void q_2_basis_grad_value_3d_single_7(double x, double y, double z, double *val) {
50{val[0] = y*z*(4.0*x - 3.0)*(2.0*y - 1.0)*(2.0*z - 1.0);}
51{val[1] = z*(x - 1)*(2.0*x - 1.0)*(4.0*y - 1.0)*(2.0*z - 1.0);}
52{val[2] = y*(x - 1)*(2.0*x - 1.0)*(2.0*y - 1.0)*(4.0*z - 1.0);}
53}
54
55void q_2_basis_grad_value_3d_single_8(double x, double y, double z, double *val) {
56{val[0] = -4.0*(2*x - 1)*(y - 1)*(2.0*y - 1.0)*(z - 1)*(2.0*z - 1.0);}
57{val[1] = -x*(x - 1)*(16.0*y - 12.0)*(z - 1)*(2.0*z - 1.0);}
58{val[2] = -x*(x - 1)*(y - 1)*(2.0*y - 1.0)*(16.0*z - 12.0);}
59}
60
61void q_2_basis_grad_value_3d_single_9(double x, double y, double z, double *val) {
62{val[0] = -y*(16.0*x - 4.0)*(y - 1)*(z - 1)*(2.0*z - 1.0);}
63{val[1] = -4.0*x*(2.0*x - 1.0)*(2*y - 1)*(z - 1)*(2.0*z - 1.0);}
64{val[2] = -x*y*(2.0*x - 1.0)*(y - 1)*(16.0*z - 12.0);}
65}
66
67void q_2_basis_grad_value_3d_single_10(double x, double y, double z, double *val) {
68{val[0] = -4.0*y*(2*x - 1)*(2.0*y - 1.0)*(z - 1)*(2.0*z - 1.0);}
69{val[1] = -x*(x - 1)*(16.0*y - 4.0)*(z - 1)*(2.0*z - 1.0);}
70{val[2] = -x*y*(x - 1)*(2.0*y - 1.0)*(16.0*z - 12.0);}
71}
72
73void q_2_basis_grad_value_3d_single_11(double x, double y, double z, double *val) {
74{val[0] = -y*(16.0*x - 12.0)*(y - 1)*(z - 1)*(2.0*z - 1.0);}
75{val[1] = -4.0*(x - 1)*(2.0*x - 1.0)*(2*y - 1)*(z - 1)*(2.0*z - 1.0);}
76{val[2] = -y*(x - 1)*(2.0*x - 1.0)*(y - 1)*(16.0*z - 12.0);}
77}
78
79void q_2_basis_grad_value_3d_single_12(double x, double y, double z, double *val) {
80{val[0] = -z*(16.0*x - 12.0)*(y - 1)*(2.0*y - 1.0)*(z - 1);}
81{val[1] = -z*(x - 1)*(2.0*x - 1.0)*(16.0*y - 12.0)*(z - 1);}
82{val[2] = -4.0*(x - 1)*(2.0*x - 1.0)*(y - 1)*(2.0*y - 1.0)*(2*z - 1);}
83}
84
85void q_2_basis_grad_value_3d_single_13(double x, double y, double z, double *val) {
86{val[0] = -z*(16.0*x - 4.0)*(y - 1)*(2.0*y - 1.0)*(z - 1);}
87{val[1] = -x*z*(2.0*x - 1.0)*(16.0*y - 12.0)*(z - 1);}
88{val[2] = -4.0*x*(2.0*x - 1.0)*(y - 1)*(2.0*y - 1.0)*(2*z - 1);}
89}
90
91void q_2_basis_grad_value_3d_single_14(double x, double y, double z, double *val) {
92{val[0] = -y*z*(16.0*x - 4.0)*(2.0*y - 1.0)*(z - 1);}
93{val[1] = -x*z*(2.0*x - 1.0)*(16.0*y - 4.0)*(z - 1);}
94{val[2] = -4.0*x*y*(2.0*x - 1.0)*(2.0*y - 1.0)*(2*z - 1);}
95}
96
97void q_2_basis_grad_value_3d_single_15(double x, double y, double z, double *val) {
98{val[0] = -y*z*(16.0*x - 12.0)*(2.0*y - 1.0)*(z - 1);}
99{val[1] = -z*(x - 1)*(2.0*x - 1.0)*(16.0*y - 4.0)*(z - 1);}
100{val[2] = -4.0*y*(x - 1)*(2.0*x - 1.0)*(2.0*y - 1.0)*(2*z - 1);}
101}
102
103void q_2_basis_grad_value_3d_single_16(double x, double y, double z, double *val) {
104{val[0] = -4.0*z*(2*x - 1)*(y - 1)*(2.0*y - 1.0)*(2.0*z - 1.0);}
105{val[1] = -x*z*(x - 1)*(16.0*y - 12.0)*(2.0*z - 1.0);}
106{val[2] = -x*(x - 1)*(y - 1)*(2.0*y - 1.0)*(16.0*z - 4.0);}
107}
108
109void q_2_basis_grad_value_3d_single_17(double x, double y, double z, double *val) {
110{val[0] = -y*z*(16.0*x - 4.0)*(y - 1)*(2.0*z - 1.0);}
111{val[1] = -4.0*x*z*(2.0*x - 1.0)*(2*y - 1)*(2.0*z - 1.0);}
112{val[2] = -x*y*(2.0*x - 1.0)*(y - 1)*(16.0*z - 4.0);}
113}
114
115void q_2_basis_grad_value_3d_single_18(double x, double y, double z, double *val) {
116{val[0] = -4.0*y*z*(2*x - 1)*(2.0*y - 1.0)*(2.0*z - 1.0);}
117{val[1] = -x*z*(x - 1)*(16.0*y - 4.0)*(2.0*z - 1.0);}
118{val[2] = -x*y*(x - 1)*(2.0*y - 1.0)*(16.0*z - 4.0);}
119}
120
121void q_2_basis_grad_value_3d_single_19(double x, double y, double z, double *val) {
122{val[0] = -y*z*(16.0*x - 12.0)*(y - 1)*(2.0*z - 1.0);}
123{val[1] = -4.0*z*(x - 1)*(2.0*x - 1.0)*(2*y - 1)*(2.0*z - 1.0);}
124{val[2] = -y*(x - 1)*(2.0*x - 1.0)*(y - 1)*(16.0*z - 4.0);}
125}
126
127void q_2_basis_grad_value_3d_single_20(double x, double y, double z, double *val) {
128{val[0] = y*z*(64.0*x - 48.0)*(y - 1)*(z - 1);}
129{val[1] = 16.0*z*(x - 1)*(2.0*x - 1.0)*(2*y - 1)*(z - 1);}
130{val[2] = 16.0*y*(x - 1)*(2.0*x - 1.0)*(y - 1)*(2*z - 1);}
131}
132
133void q_2_basis_grad_value_3d_single_21(double x, double y, double z, double *val) {
134{val[0] = y*z*(64.0*x - 16.0)*(y - 1)*(z - 1);}
135{val[1] = 16.0*x*z*(2.0*x - 1.0)*(2*y - 1)*(z - 1);}
136{val[2] = 16.0*x*y*(2.0*x - 1.0)*(y - 1)*(2*z - 1);}
137}
138
139void q_2_basis_grad_value_3d_single_22(double x, double y, double z, double *val) {
140{val[0] = 16.0*z*(2*x - 1)*(y - 1)*(2.0*y - 1.0)*(z - 1);}
141{val[1] = x*z*(x - 1)*(64.0*y - 48.0)*(z - 1);}
142{val[2] = 16.0*x*(x - 1)*(y - 1)*(2.0*y - 1.0)*(2*z - 1);}
143}
144
145void q_2_basis_grad_value_3d_single_23(double x, double y, double z, double *val) {
146{val[0] = 16.0*y*z*(2*x - 1)*(2.0*y - 1.0)*(z - 1);}
147{val[1] = x*z*(x - 1)*(64.0*y - 16.0)*(z - 1);}
148{val[2] = 16.0*x*y*(x - 1)*(2.0*y - 1.0)*(2*z - 1);}
149}
150
151void q_2_basis_grad_value_3d_single_24(double x, double y, double z, double *val) {
152{val[0] = 16.0*y*(2*x - 1)*(y - 1)*(z - 1)*(2.0*z - 1.0);}
153{val[1] = 16.0*x*(x - 1)*(2*y - 1)*(z - 1)*(2.0*z - 1.0);}
154{val[2] = x*y*(x - 1)*(y - 1)*(64.0*z - 48.0);}
155}
156
157void q_2_basis_grad_value_3d_single_25(double x, double y, double z, double *val) {
158{val[0] = 16.0*y*z*(2*x - 1)*(y - 1)*(2.0*z - 1.0);}
159{val[1] = 16.0*x*z*(x - 1)*(2*y - 1)*(2.0*z - 1.0);}
160{val[2] = x*y*(x - 1)*(y - 1)*(64.0*z - 16.0);}
161}
162
163void q_2_basis_grad_value_3d_single_26(double x, double y, double z, double *val) {
164{val[0] = -64.0*y*z*(2*x - 1)*(y - 1)*(z - 1);}
165{val[1] = -64.0*x*z*(x - 1)*(2*y - 1)*(z - 1);}
166{val[2] = -64.0*x*y*(x - 1)*(y - 1)*(2*z - 1);}
167}
168
169
170
171}
172
173void q_2_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
174val.resize(uv.rows(), 3);
175double gradient[3];
176switch(local_index){
177 case 0:
178 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
179 q_2_basis_grad_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
180 val(i, 0) = gradient[0];
181 val(i, 1) = gradient[1];
182 val(i, 2) = gradient[2];
183 }
184 break;
185 case 1:
186 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
187 q_2_basis_grad_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
188 val(i, 0) = gradient[0];
189 val(i, 1) = gradient[1];
190 val(i, 2) = gradient[2];
191 }
192 break;
193 case 2:
194 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
195 q_2_basis_grad_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
196 val(i, 0) = gradient[0];
197 val(i, 1) = gradient[1];
198 val(i, 2) = gradient[2];
199 }
200 break;
201 case 3:
202 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
203 q_2_basis_grad_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
204 val(i, 0) = gradient[0];
205 val(i, 1) = gradient[1];
206 val(i, 2) = gradient[2];
207 }
208 break;
209 case 4:
210 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
211 q_2_basis_grad_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
212 val(i, 0) = gradient[0];
213 val(i, 1) = gradient[1];
214 val(i, 2) = gradient[2];
215 }
216 break;
217 case 5:
218 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
219 q_2_basis_grad_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
220 val(i, 0) = gradient[0];
221 val(i, 1) = gradient[1];
222 val(i, 2) = gradient[2];
223 }
224 break;
225 case 6:
226 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
227 q_2_basis_grad_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
228 val(i, 0) = gradient[0];
229 val(i, 1) = gradient[1];
230 val(i, 2) = gradient[2];
231 }
232 break;
233 case 7:
234 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
235 q_2_basis_grad_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
236 val(i, 0) = gradient[0];
237 val(i, 1) = gradient[1];
238 val(i, 2) = gradient[2];
239 }
240 break;
241 case 8:
242 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
243 q_2_basis_grad_value_3d_single_8(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
244 val(i, 0) = gradient[0];
245 val(i, 1) = gradient[1];
246 val(i, 2) = gradient[2];
247 }
248 break;
249 case 9:
250 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
251 q_2_basis_grad_value_3d_single_9(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
252 val(i, 0) = gradient[0];
253 val(i, 1) = gradient[1];
254 val(i, 2) = gradient[2];
255 }
256 break;
257 case 10:
258 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
259 q_2_basis_grad_value_3d_single_10(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
260 val(i, 0) = gradient[0];
261 val(i, 1) = gradient[1];
262 val(i, 2) = gradient[2];
263 }
264 break;
265 case 11:
266 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
267 q_2_basis_grad_value_3d_single_11(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
268 val(i, 0) = gradient[0];
269 val(i, 1) = gradient[1];
270 val(i, 2) = gradient[2];
271 }
272 break;
273 case 12:
274 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
275 q_2_basis_grad_value_3d_single_12(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
276 val(i, 0) = gradient[0];
277 val(i, 1) = gradient[1];
278 val(i, 2) = gradient[2];
279 }
280 break;
281 case 13:
282 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
283 q_2_basis_grad_value_3d_single_13(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
284 val(i, 0) = gradient[0];
285 val(i, 1) = gradient[1];
286 val(i, 2) = gradient[2];
287 }
288 break;
289 case 14:
290 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
291 q_2_basis_grad_value_3d_single_14(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
292 val(i, 0) = gradient[0];
293 val(i, 1) = gradient[1];
294 val(i, 2) = gradient[2];
295 }
296 break;
297 case 15:
298 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
299 q_2_basis_grad_value_3d_single_15(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
300 val(i, 0) = gradient[0];
301 val(i, 1) = gradient[1];
302 val(i, 2) = gradient[2];
303 }
304 break;
305 case 16:
306 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
307 q_2_basis_grad_value_3d_single_16(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
308 val(i, 0) = gradient[0];
309 val(i, 1) = gradient[1];
310 val(i, 2) = gradient[2];
311 }
312 break;
313 case 17:
314 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
315 q_2_basis_grad_value_3d_single_17(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
316 val(i, 0) = gradient[0];
317 val(i, 1) = gradient[1];
318 val(i, 2) = gradient[2];
319 }
320 break;
321 case 18:
322 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
323 q_2_basis_grad_value_3d_single_18(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
324 val(i, 0) = gradient[0];
325 val(i, 1) = gradient[1];
326 val(i, 2) = gradient[2];
327 }
328 break;
329 case 19:
330 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
331 q_2_basis_grad_value_3d_single_19(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
332 val(i, 0) = gradient[0];
333 val(i, 1) = gradient[1];
334 val(i, 2) = gradient[2];
335 }
336 break;
337 case 20:
338 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
339 q_2_basis_grad_value_3d_single_20(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
340 val(i, 0) = gradient[0];
341 val(i, 1) = gradient[1];
342 val(i, 2) = gradient[2];
343 }
344 break;
345 case 21:
346 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
347 q_2_basis_grad_value_3d_single_21(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
348 val(i, 0) = gradient[0];
349 val(i, 1) = gradient[1];
350 val(i, 2) = gradient[2];
351 }
352 break;
353 case 22:
354 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
355 q_2_basis_grad_value_3d_single_22(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
356 val(i, 0) = gradient[0];
357 val(i, 1) = gradient[1];
358 val(i, 2) = gradient[2];
359 }
360 break;
361 case 23:
362 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
363 q_2_basis_grad_value_3d_single_23(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
364 val(i, 0) = gradient[0];
365 val(i, 1) = gradient[1];
366 val(i, 2) = gradient[2];
367 }
368 break;
369 case 24:
370 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
371 q_2_basis_grad_value_3d_single_24(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
372 val(i, 0) = gradient[0];
373 val(i, 1) = gradient[1];
374 val(i, 2) = gradient[2];
375 }
376 break;
377 case 25:
378 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
379 q_2_basis_grad_value_3d_single_25(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
380 val(i, 0) = gradient[0];
381 val(i, 1) = gradient[1];
382 val(i, 2) = gradient[2];
383 }
384 break;
385 case 26:
386 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
387 q_2_basis_grad_value_3d_single_26(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
388 val(i, 0) = gradient[0];
389 val(i, 1) = gradient[1];
390 val(i, 2) = gradient[2];
391 }
392 break;
393 default: assert(false);
394}
395}
396
397}}
double val
Definition Assembler.cpp:86
int y
int z
int x
void q_2_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)