PolyFEM
Loading...
Searching...
No Matches
auto_p_bases.cpp
Go to the documentation of this file.
1#include "auto_p_bases.hpp"
2#include "auto_b_bases.hpp"
3#include "p_n_bases.hpp"
4
5
6namespace polyfem {
7namespace autogen {
8namespace {
9double p_0_basis_value_2d_single_0(double x, double y) {
10double result;
11result = 1;
12return result;
13}
14
15
16
17void p_0_basis_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
18result_0.resize(uv.rows(), 1);
19switch(local_index){
20 case 0:
21 for (Eigen::Index i = 0; i < uv.rows(); ++i)
22 result_0(i, 0) = p_0_basis_value_2d_single_0(uv(i, 0), uv(i, 1));
23 break;
24 default: assert(false);
25}
26}
27void p_0_basis_grad_value_2d_single_0(double x, double y, double *val) {
28{val[0] = 0;}
29{val[1] = 0;}
30}
31
32
33
34void p_0_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
35val.resize(uv.rows(), 2);
36double gradient[2];
37switch(local_index){
38 case 0:
39 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
40 p_0_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
41 val(i, 0) = gradient[0];
42 val(i, 1) = gradient[1];
43 }
44 break;
45 default: assert(false);
46}
47}
48
49
50void p_0_nodes_2d(Eigen::MatrixXd &res) {
51 res.resize(1, 2); res <<
520.33333333333333331, 0.33333333333333331;
53}
54
55
56double p_1_basis_value_2d_single_0(double x, double y) {
57double result;
58result = -x - y + 1;
59return result;
60}
61
62double p_1_basis_value_2d_single_1(double x, double y) {
63double result;
64result = x;
65return result;
66}
67
68double p_1_basis_value_2d_single_2(double x, double y) {
69double result;
70result = y;
71return result;
72}
73
74
75
76void p_1_basis_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
77result_0.resize(uv.rows(), 1);
78switch(local_index){
79 case 0:
80 for (Eigen::Index i = 0; i < uv.rows(); ++i)
81 result_0(i, 0) = p_1_basis_value_2d_single_0(uv(i, 0), uv(i, 1));
82 break;
83 case 1:
84 for (Eigen::Index i = 0; i < uv.rows(); ++i)
85 result_0(i, 0) = p_1_basis_value_2d_single_1(uv(i, 0), uv(i, 1));
86 break;
87 case 2:
88 for (Eigen::Index i = 0; i < uv.rows(); ++i)
89 result_0(i, 0) = p_1_basis_value_2d_single_2(uv(i, 0), uv(i, 1));
90 break;
91 default: assert(false);
92}
93}
94void p_1_basis_grad_value_2d_single_0(double x, double y, double *val) {
95{val[0] = -1;}
96{val[1] = -1;}
97}
98
99void p_1_basis_grad_value_2d_single_1(double x, double y, double *val) {
100{val[0] = 1;}
101{val[1] = 0;}
102}
103
104void p_1_basis_grad_value_2d_single_2(double x, double y, double *val) {
105{val[0] = 0;}
106{val[1] = 1;}
107}
108
109
110
111void p_1_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
112val.resize(uv.rows(), 2);
113double gradient[2];
114switch(local_index){
115 case 0:
116 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
117 p_1_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
118 val(i, 0) = gradient[0];
119 val(i, 1) = gradient[1];
120 }
121 break;
122 case 1:
123 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
124 p_1_basis_grad_value_2d_single_1(uv(i, 0), uv(i, 1), gradient);
125 val(i, 0) = gradient[0];
126 val(i, 1) = gradient[1];
127 }
128 break;
129 case 2:
130 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
131 p_1_basis_grad_value_2d_single_2(uv(i, 0), uv(i, 1), gradient);
132 val(i, 0) = gradient[0];
133 val(i, 1) = gradient[1];
134 }
135 break;
136 default: assert(false);
137}
138}
139
140
141void p_1_nodes_2d(Eigen::MatrixXd &res) {
142 res.resize(3, 2); res <<
1430, 0,
1441, 0,
1450, 1;
146}
147
148
149double p_2_basis_value_2d_single_0(double x, double y) {
150double result;
151result = (x + y - 1)*(2*x + 2*y - 1);
152return result;
153}
154
155double p_2_basis_value_2d_single_1(double x, double y) {
156double result;
157result = x*(2*x - 1);
158return result;
159}
160
161double p_2_basis_value_2d_single_2(double x, double y) {
162double result;
163result = y*(2*y - 1);
164return result;
165}
166
167double p_2_basis_value_2d_single_3(double x, double y) {
168double result;
169result = -4*x*(x + y - 1);
170return result;
171}
172
173double p_2_basis_value_2d_single_4(double x, double y) {
174double result;
175result = 4*x*y;
176return result;
177}
178
179double p_2_basis_value_2d_single_5(double x, double y) {
180double result;
181result = -4*y*(x + y - 1);
182return result;
183}
184
185
186
187void p_2_basis_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
188result_0.resize(uv.rows(), 1);
189switch(local_index){
190 case 0:
191 for (Eigen::Index i = 0; i < uv.rows(); ++i)
192 result_0(i, 0) = p_2_basis_value_2d_single_0(uv(i, 0), uv(i, 1));
193 break;
194 case 1:
195 for (Eigen::Index i = 0; i < uv.rows(); ++i)
196 result_0(i, 0) = p_2_basis_value_2d_single_1(uv(i, 0), uv(i, 1));
197 break;
198 case 2:
199 for (Eigen::Index i = 0; i < uv.rows(); ++i)
200 result_0(i, 0) = p_2_basis_value_2d_single_2(uv(i, 0), uv(i, 1));
201 break;
202 case 3:
203 for (Eigen::Index i = 0; i < uv.rows(); ++i)
204 result_0(i, 0) = p_2_basis_value_2d_single_3(uv(i, 0), uv(i, 1));
205 break;
206 case 4:
207 for (Eigen::Index i = 0; i < uv.rows(); ++i)
208 result_0(i, 0) = p_2_basis_value_2d_single_4(uv(i, 0), uv(i, 1));
209 break;
210 case 5:
211 for (Eigen::Index i = 0; i < uv.rows(); ++i)
212 result_0(i, 0) = p_2_basis_value_2d_single_5(uv(i, 0), uv(i, 1));
213 break;
214 default: assert(false);
215}
216}
217void p_2_basis_grad_value_2d_single_0(double x, double y, double *val) {
218{val[0] = 4*x + 4*y - 3;}
219{val[1] = 4*x + 4*y - 3;}
220}
221
222void p_2_basis_grad_value_2d_single_1(double x, double y, double *val) {
223{val[0] = 4*x - 1;}
224{val[1] = 0;}
225}
226
227void p_2_basis_grad_value_2d_single_2(double x, double y, double *val) {
228{val[0] = 0;}
229{val[1] = 4*y - 1;}
230}
231
232void p_2_basis_grad_value_2d_single_3(double x, double y, double *val) {
233{val[0] = 4*(-2*x - y + 1);}
234{val[1] = -4*x;}
235}
236
237void p_2_basis_grad_value_2d_single_4(double x, double y, double *val) {
238{val[0] = 4*y;}
239{val[1] = 4*x;}
240}
241
242void p_2_basis_grad_value_2d_single_5(double x, double y, double *val) {
243{val[0] = -4*y;}
244{val[1] = 4*(-x - 2*y + 1);}
245}
246
247
248
249void p_2_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
250val.resize(uv.rows(), 2);
251double gradient[2];
252switch(local_index){
253 case 0:
254 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
255 p_2_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
256 val(i, 0) = gradient[0];
257 val(i, 1) = gradient[1];
258 }
259 break;
260 case 1:
261 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
262 p_2_basis_grad_value_2d_single_1(uv(i, 0), uv(i, 1), gradient);
263 val(i, 0) = gradient[0];
264 val(i, 1) = gradient[1];
265 }
266 break;
267 case 2:
268 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
269 p_2_basis_grad_value_2d_single_2(uv(i, 0), uv(i, 1), gradient);
270 val(i, 0) = gradient[0];
271 val(i, 1) = gradient[1];
272 }
273 break;
274 case 3:
275 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
276 p_2_basis_grad_value_2d_single_3(uv(i, 0), uv(i, 1), gradient);
277 val(i, 0) = gradient[0];
278 val(i, 1) = gradient[1];
279 }
280 break;
281 case 4:
282 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
283 p_2_basis_grad_value_2d_single_4(uv(i, 0), uv(i, 1), gradient);
284 val(i, 0) = gradient[0];
285 val(i, 1) = gradient[1];
286 }
287 break;
288 case 5:
289 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
290 p_2_basis_grad_value_2d_single_5(uv(i, 0), uv(i, 1), gradient);
291 val(i, 0) = gradient[0];
292 val(i, 1) = gradient[1];
293 }
294 break;
295 default: assert(false);
296}
297}
298
299
300void p_2_nodes_2d(Eigen::MatrixXd &res) {
301 res.resize(6, 2); res <<
3020, 0,
3031, 0,
3040, 1,
3051.0/2.0, 0,
3061.0/2.0, 1.0/2.0,
3070, 1.0/2.0;
308}
309
310
311double p_3_basis_value_2d_single_0(double x, double y) {
312double result;
313double helper_0 = pow(x, 2);
314double helper_1 = pow(y, 2);
315result = -27.0/2.0*helper_0*y + 9*helper_0 - 27.0/2.0*helper_1*x + 9*helper_1 - 9.0/2.0*pow(x, 3) + 18*x*y - 11.0/2.0*x - 9.0/2.0*pow(y, 3) - 11.0/2.0*y + 1;
316return result;
317}
318
319double p_3_basis_value_2d_single_1(double x, double y) {
320double result;
321result = (1.0/2.0)*x*(9*pow(x, 2) - 9*x + 2);
322return result;
323}
324
325double p_3_basis_value_2d_single_2(double x, double y) {
326double result;
327result = (1.0/2.0)*y*(9*pow(y, 2) - 9*y + 2);
328return result;
329}
330
331double p_3_basis_value_2d_single_3(double x, double y) {
332double result;
333result = (9.0/2.0)*x*(x + y - 1)*(3*x + 3*y - 2);
334return result;
335}
336
337double p_3_basis_value_2d_single_4(double x, double y) {
338double result;
339result = -9.0/2.0*x*(3*pow(x, 2) + 3*x*y - 4*x - y + 1);
340return result;
341}
342
343double p_3_basis_value_2d_single_5(double x, double y) {
344double result;
345result = (9.0/2.0)*x*y*(3*x - 1);
346return result;
347}
348
349double p_3_basis_value_2d_single_6(double x, double y) {
350double result;
351result = (9.0/2.0)*x*y*(3*y - 1);
352return result;
353}
354
355double p_3_basis_value_2d_single_7(double x, double y) {
356double result;
357result = -9.0/2.0*y*(3*x*y - x + 3*pow(y, 2) - 4*y + 1);
358return result;
359}
360
361double p_3_basis_value_2d_single_8(double x, double y) {
362double result;
363result = (9.0/2.0)*y*(x + y - 1)*(3*x + 3*y - 2);
364return result;
365}
366
367double p_3_basis_value_2d_single_9(double x, double y) {
368double result;
369result = -27*x*y*(x + y - 1);
370return result;
371}
372
373
374
375void p_3_basis_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
376result_0.resize(uv.rows(), 1);
377switch(local_index){
378 case 0:
379 for (Eigen::Index i = 0; i < uv.rows(); ++i)
380 result_0(i, 0) = p_3_basis_value_2d_single_0(uv(i, 0), uv(i, 1));
381 break;
382 case 1:
383 for (Eigen::Index i = 0; i < uv.rows(); ++i)
384 result_0(i, 0) = p_3_basis_value_2d_single_1(uv(i, 0), uv(i, 1));
385 break;
386 case 2:
387 for (Eigen::Index i = 0; i < uv.rows(); ++i)
388 result_0(i, 0) = p_3_basis_value_2d_single_2(uv(i, 0), uv(i, 1));
389 break;
390 case 3:
391 for (Eigen::Index i = 0; i < uv.rows(); ++i)
392 result_0(i, 0) = p_3_basis_value_2d_single_3(uv(i, 0), uv(i, 1));
393 break;
394 case 4:
395 for (Eigen::Index i = 0; i < uv.rows(); ++i)
396 result_0(i, 0) = p_3_basis_value_2d_single_4(uv(i, 0), uv(i, 1));
397 break;
398 case 5:
399 for (Eigen::Index i = 0; i < uv.rows(); ++i)
400 result_0(i, 0) = p_3_basis_value_2d_single_5(uv(i, 0), uv(i, 1));
401 break;
402 case 6:
403 for (Eigen::Index i = 0; i < uv.rows(); ++i)
404 result_0(i, 0) = p_3_basis_value_2d_single_6(uv(i, 0), uv(i, 1));
405 break;
406 case 7:
407 for (Eigen::Index i = 0; i < uv.rows(); ++i)
408 result_0(i, 0) = p_3_basis_value_2d_single_7(uv(i, 0), uv(i, 1));
409 break;
410 case 8:
411 for (Eigen::Index i = 0; i < uv.rows(); ++i)
412 result_0(i, 0) = p_3_basis_value_2d_single_8(uv(i, 0), uv(i, 1));
413 break;
414 case 9:
415 for (Eigen::Index i = 0; i < uv.rows(); ++i)
416 result_0(i, 0) = p_3_basis_value_2d_single_9(uv(i, 0), uv(i, 1));
417 break;
418 default: assert(false);
419}
420}
421void p_3_basis_grad_value_2d_single_0(double x, double y, double *val) {
422{val[0] = -27.0/2.0*pow(x, 2) - 27*x*y + 18*x - 27.0/2.0*pow(y, 2) + 18*y - 11.0/2.0;}
423{val[1] = -27.0/2.0*pow(x, 2) - 27*x*y + 18*x - 27.0/2.0*pow(y, 2) + 18*y - 11.0/2.0;}
424}
425
426void p_3_basis_grad_value_2d_single_1(double x, double y, double *val) {
427{val[0] = (27.0/2.0)*pow(x, 2) - 9*x + 1;}
428{val[1] = 0;}
429}
430
431void p_3_basis_grad_value_2d_single_2(double x, double y, double *val) {
432{val[0] = 0;}
433{val[1] = (27.0/2.0)*pow(y, 2) - 9*y + 1;}
434}
435
436void p_3_basis_grad_value_2d_single_3(double x, double y, double *val) {
437{val[0] = 9*((9.0/2.0)*pow(x, 2) + 6*x*y - 5*x + (3.0/2.0)*pow(y, 2) - 5.0/2.0*y + 1);}
438{val[1] = (9.0/2.0)*x*(6*x + 6*y - 5);}
439}
440
441void p_3_basis_grad_value_2d_single_4(double x, double y, double *val) {
442{val[0] = 9*(-9.0/2.0*pow(x, 2) - 3*x*y + 4*x + (1.0/2.0)*y - 1.0/2.0);}
443{val[1] = -9.0/2.0*x*(3*x - 1);}
444}
445
446void p_3_basis_grad_value_2d_single_5(double x, double y, double *val) {
447{val[0] = (9.0/2.0)*y*(6*x - 1);}
448{val[1] = (9.0/2.0)*x*(3*x - 1);}
449}
450
451void p_3_basis_grad_value_2d_single_6(double x, double y, double *val) {
452{val[0] = (9.0/2.0)*y*(3*y - 1);}
453{val[1] = (9.0/2.0)*x*(6*y - 1);}
454}
455
456void p_3_basis_grad_value_2d_single_7(double x, double y, double *val) {
457{val[0] = -9.0/2.0*y*(3*y - 1);}
458{val[1] = 9*(-3*x*y + (1.0/2.0)*x - 9.0/2.0*pow(y, 2) + 4*y - 1.0/2.0);}
459}
460
461void p_3_basis_grad_value_2d_single_8(double x, double y, double *val) {
462{val[0] = (9.0/2.0)*y*(6*x + 6*y - 5);}
463{val[1] = 9*((3.0/2.0)*pow(x, 2) + 6*x*y - 5.0/2.0*x + (9.0/2.0)*pow(y, 2) - 5*y + 1);}
464}
465
466void p_3_basis_grad_value_2d_single_9(double x, double y, double *val) {
467{val[0] = -27*y*(2*x + y - 1);}
468{val[1] = -27*x*(x + 2*y - 1);}
469}
470
471
472
473void p_3_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
474val.resize(uv.rows(), 2);
475double gradient[2];
476switch(local_index){
477 case 0:
478 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
479 p_3_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
480 val(i, 0) = gradient[0];
481 val(i, 1) = gradient[1];
482 }
483 break;
484 case 1:
485 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
486 p_3_basis_grad_value_2d_single_1(uv(i, 0), uv(i, 1), gradient);
487 val(i, 0) = gradient[0];
488 val(i, 1) = gradient[1];
489 }
490 break;
491 case 2:
492 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
493 p_3_basis_grad_value_2d_single_2(uv(i, 0), uv(i, 1), gradient);
494 val(i, 0) = gradient[0];
495 val(i, 1) = gradient[1];
496 }
497 break;
498 case 3:
499 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
500 p_3_basis_grad_value_2d_single_3(uv(i, 0), uv(i, 1), gradient);
501 val(i, 0) = gradient[0];
502 val(i, 1) = gradient[1];
503 }
504 break;
505 case 4:
506 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
507 p_3_basis_grad_value_2d_single_4(uv(i, 0), uv(i, 1), gradient);
508 val(i, 0) = gradient[0];
509 val(i, 1) = gradient[1];
510 }
511 break;
512 case 5:
513 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
514 p_3_basis_grad_value_2d_single_5(uv(i, 0), uv(i, 1), gradient);
515 val(i, 0) = gradient[0];
516 val(i, 1) = gradient[1];
517 }
518 break;
519 case 6:
520 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
521 p_3_basis_grad_value_2d_single_6(uv(i, 0), uv(i, 1), gradient);
522 val(i, 0) = gradient[0];
523 val(i, 1) = gradient[1];
524 }
525 break;
526 case 7:
527 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
528 p_3_basis_grad_value_2d_single_7(uv(i, 0), uv(i, 1), gradient);
529 val(i, 0) = gradient[0];
530 val(i, 1) = gradient[1];
531 }
532 break;
533 case 8:
534 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
535 p_3_basis_grad_value_2d_single_8(uv(i, 0), uv(i, 1), gradient);
536 val(i, 0) = gradient[0];
537 val(i, 1) = gradient[1];
538 }
539 break;
540 case 9:
541 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
542 p_3_basis_grad_value_2d_single_9(uv(i, 0), uv(i, 1), gradient);
543 val(i, 0) = gradient[0];
544 val(i, 1) = gradient[1];
545 }
546 break;
547 default: assert(false);
548}
549}
550
551
552void p_3_nodes_2d(Eigen::MatrixXd &res) {
553 res.resize(10, 2); res <<
5540, 0,
5551, 0,
5560, 1,
5571.0/3.0, 0,
5582.0/3.0, 0,
5592.0/3.0, 1.0/3.0,
5601.0/3.0, 2.0/3.0,
5610, 2.0/3.0,
5620, 1.0/3.0,
5631.0/3.0, 1.0/3.0;
564}
565
566
567double p_4_basis_value_2d_single_0(double x, double y) {
568double result;
569double helper_0 = pow(x, 2);
570double helper_1 = pow(x, 3);
571double helper_2 = pow(y, 2);
572double helper_3 = pow(y, 3);
573result = 64*helper_0*helper_2 - 80*helper_0*y + (70.0/3.0)*helper_0 + (128.0/3.0)*helper_1*y - 80.0/3.0*helper_1 - 80*helper_2*x + (70.0/3.0)*helper_2 + (128.0/3.0)*helper_3*x - 80.0/3.0*helper_3 + (32.0/3.0)*pow(x, 4) + (140.0/3.0)*x*y - 25.0/3.0*x + (32.0/3.0)*pow(y, 4) - 25.0/3.0*y + 1;
574return result;
575}
576
577double p_4_basis_value_2d_single_1(double x, double y) {
578double result;
579result = (1.0/3.0)*x*(32*pow(x, 3) - 48*pow(x, 2) + 22*x - 3);
580return result;
581}
582
583double p_4_basis_value_2d_single_2(double x, double y) {
584double result;
585result = (1.0/3.0)*y*(32*pow(y, 3) - 48*pow(y, 2) + 22*y - 3);
586return result;
587}
588
589double p_4_basis_value_2d_single_3(double x, double y) {
590double result;
591double helper_0 = pow(x, 2);
592double helper_1 = pow(y, 2);
593result = -16.0/3.0*x*(24*helper_0*y - 18*helper_0 + 24*helper_1*x - 18*helper_1 + 8*pow(x, 3) - 36*x*y + 13*x + 8*pow(y, 3) + 13*y - 3);
594return result;
595}
596
597double p_4_basis_value_2d_single_4(double x, double y) {
598double result;
599double helper_0 = 32*pow(x, 2);
600double helper_1 = pow(y, 2);
601result = 4*x*(helper_0*y - helper_0 + 16*helper_1*x - 4*helper_1 + 16*pow(x, 3) - 36*x*y + 19*x + 7*y - 3);
602return result;
603}
604
605double p_4_basis_value_2d_single_5(double x, double y) {
606double result;
607double helper_0 = pow(x, 2);
608result = -16.0/3.0*x*(8*helper_0*y - 14*helper_0 + 8*pow(x, 3) - 6*x*y + 7*x + y - 1);
609return result;
610}
611
612double p_4_basis_value_2d_single_6(double x, double y) {
613double result;
614result = (16.0/3.0)*x*y*(8*pow(x, 2) - 6*x + 1);
615return result;
616}
617
618double p_4_basis_value_2d_single_7(double x, double y) {
619double result;
620double helper_0 = 4*x;
621result = helper_0*y*(-helper_0 + 16*x*y - 4*y + 1);
622return result;
623}
624
625double p_4_basis_value_2d_single_8(double x, double y) {
626double result;
627result = (16.0/3.0)*x*y*(8*pow(y, 2) - 6*y + 1);
628return result;
629}
630
631double p_4_basis_value_2d_single_9(double x, double y) {
632double result;
633double helper_0 = pow(y, 2);
634result = -16.0/3.0*y*(8*helper_0*x - 14*helper_0 - 6*x*y + x + 8*pow(y, 3) + 7*y - 1);
635return result;
636}
637
638double p_4_basis_value_2d_single_10(double x, double y) {
639double result;
640double helper_0 = pow(x, 2);
641double helper_1 = 32*pow(y, 2);
642result = 4*y*(16*helper_0*y - 4*helper_0 + helper_1*x - helper_1 - 36*x*y + 7*x + 16*pow(y, 3) + 19*y - 3);
643return result;
644}
645
646double p_4_basis_value_2d_single_11(double x, double y) {
647double result;
648double helper_0 = pow(x, 2);
649double helper_1 = pow(y, 2);
650result = -16.0/3.0*y*(24*helper_0*y - 18*helper_0 + 24*helper_1*x - 18*helper_1 + 8*pow(x, 3) - 36*x*y + 13*x + 8*pow(y, 3) + 13*y - 3);
651return result;
652}
653
654double p_4_basis_value_2d_single_12(double x, double y) {
655double result;
656result = 32*x*y*(x + y - 1)*(4*x + 4*y - 3);
657return result;
658}
659
660double p_4_basis_value_2d_single_13(double x, double y) {
661double result;
662result = -32*x*y*(4*y - 1)*(x + y - 1);
663return result;
664}
665
666double p_4_basis_value_2d_single_14(double x, double y) {
667double result;
668result = -32*x*y*(4*x - 1)*(x + y - 1);
669return result;
670}
671
672
673
674void p_4_basis_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
675result_0.resize(uv.rows(), 1);
676switch(local_index){
677 case 0:
678 for (Eigen::Index i = 0; i < uv.rows(); ++i)
679 result_0(i, 0) = p_4_basis_value_2d_single_0(uv(i, 0), uv(i, 1));
680 break;
681 case 1:
682 for (Eigen::Index i = 0; i < uv.rows(); ++i)
683 result_0(i, 0) = p_4_basis_value_2d_single_1(uv(i, 0), uv(i, 1));
684 break;
685 case 2:
686 for (Eigen::Index i = 0; i < uv.rows(); ++i)
687 result_0(i, 0) = p_4_basis_value_2d_single_2(uv(i, 0), uv(i, 1));
688 break;
689 case 3:
690 for (Eigen::Index i = 0; i < uv.rows(); ++i)
691 result_0(i, 0) = p_4_basis_value_2d_single_3(uv(i, 0), uv(i, 1));
692 break;
693 case 4:
694 for (Eigen::Index i = 0; i < uv.rows(); ++i)
695 result_0(i, 0) = p_4_basis_value_2d_single_4(uv(i, 0), uv(i, 1));
696 break;
697 case 5:
698 for (Eigen::Index i = 0; i < uv.rows(); ++i)
699 result_0(i, 0) = p_4_basis_value_2d_single_5(uv(i, 0), uv(i, 1));
700 break;
701 case 6:
702 for (Eigen::Index i = 0; i < uv.rows(); ++i)
703 result_0(i, 0) = p_4_basis_value_2d_single_6(uv(i, 0), uv(i, 1));
704 break;
705 case 7:
706 for (Eigen::Index i = 0; i < uv.rows(); ++i)
707 result_0(i, 0) = p_4_basis_value_2d_single_7(uv(i, 0), uv(i, 1));
708 break;
709 case 8:
710 for (Eigen::Index i = 0; i < uv.rows(); ++i)
711 result_0(i, 0) = p_4_basis_value_2d_single_8(uv(i, 0), uv(i, 1));
712 break;
713 case 9:
714 for (Eigen::Index i = 0; i < uv.rows(); ++i)
715 result_0(i, 0) = p_4_basis_value_2d_single_9(uv(i, 0), uv(i, 1));
716 break;
717 case 10:
718 for (Eigen::Index i = 0; i < uv.rows(); ++i)
719 result_0(i, 0) = p_4_basis_value_2d_single_10(uv(i, 0), uv(i, 1));
720 break;
721 case 11:
722 for (Eigen::Index i = 0; i < uv.rows(); ++i)
723 result_0(i, 0) = p_4_basis_value_2d_single_11(uv(i, 0), uv(i, 1));
724 break;
725 case 12:
726 for (Eigen::Index i = 0; i < uv.rows(); ++i)
727 result_0(i, 0) = p_4_basis_value_2d_single_12(uv(i, 0), uv(i, 1));
728 break;
729 case 13:
730 for (Eigen::Index i = 0; i < uv.rows(); ++i)
731 result_0(i, 0) = p_4_basis_value_2d_single_13(uv(i, 0), uv(i, 1));
732 break;
733 case 14:
734 for (Eigen::Index i = 0; i < uv.rows(); ++i)
735 result_0(i, 0) = p_4_basis_value_2d_single_14(uv(i, 0), uv(i, 1));
736 break;
737 default: assert(false);
738}
739}
740void p_4_basis_grad_value_2d_single_0(double x, double y, double *val) {
741{double helper_0 = pow(x, 2);
742double helper_1 = pow(y, 2);
743val[0] = 128*helper_0*y - 80*helper_0 + 128*helper_1*x - 80*helper_1 + (128.0/3.0)*pow(x, 3) - 160*x*y + (140.0/3.0)*x + (128.0/3.0)*pow(y, 3) + (140.0/3.0)*y - 25.0/3.0;}
744{double helper_0 = pow(x, 2);
745double helper_1 = pow(y, 2);
746val[1] = 128*helper_0*y - 80*helper_0 + 128*helper_1*x - 80*helper_1 + (128.0/3.0)*pow(x, 3) - 160*x*y + (140.0/3.0)*x + (128.0/3.0)*pow(y, 3) + (140.0/3.0)*y - 25.0/3.0;}
747}
748
749void p_4_basis_grad_value_2d_single_1(double x, double y, double *val) {
750{val[0] = (128.0/3.0)*pow(x, 3) - 48*pow(x, 2) + (44.0/3.0)*x - 1;}
751{val[1] = 0;}
752}
753
754void p_4_basis_grad_value_2d_single_2(double x, double y, double *val) {
755{val[0] = 0;}
756{val[1] = (128.0/3.0)*pow(y, 3) - 48*pow(y, 2) + (44.0/3.0)*y - 1;}
757}
758
759void p_4_basis_grad_value_2d_single_3(double x, double y, double *val) {
760{double helper_0 = pow(x, 2);
761double helper_1 = pow(y, 2);
762val[0] = -384*helper_0*y + 288*helper_0 - 256*helper_1*x + 96*helper_1 - 512.0/3.0*pow(x, 3) + 384*x*y - 416.0/3.0*x - 128.0/3.0*pow(y, 3) - 208.0/3.0*y + 16;}
763{val[1] = -16.0/3.0*x*(24*pow(x, 2) + 48*x*y - 36*x + 24*pow(y, 2) - 36*y + 13);}
764}
765
766void p_4_basis_grad_value_2d_single_4(double x, double y, double *val) {
767{double helper_0 = 96*pow(x, 2);
768double helper_1 = pow(y, 2);
769val[0] = 4*helper_0*y - 4*helper_0 + 128*helper_1*x - 16*helper_1 + 256*pow(x, 3) - 288*x*y + 152*x + 28*y - 12;}
770{val[1] = 4*x*(32*pow(x, 2) + 32*x*y - 36*x - 8*y + 7);}
771}
772
773void p_4_basis_grad_value_2d_single_5(double x, double y, double *val) {
774{double helper_0 = pow(x, 2);
775val[0] = -128*helper_0*y + 224*helper_0 - 512.0/3.0*pow(x, 3) + 64*x*y - 224.0/3.0*x - 16.0/3.0*y + 16.0/3.0;}
776{val[1] = -16.0/3.0*x*(8*pow(x, 2) - 6*x + 1);}
777}
778
779void p_4_basis_grad_value_2d_single_6(double x, double y, double *val) {
780{val[0] = (16.0/3.0)*y*(24*pow(x, 2) - 12*x + 1);}
781{val[1] = (16.0/3.0)*x*(8*pow(x, 2) - 6*x + 1);}
782}
783
784void p_4_basis_grad_value_2d_single_7(double x, double y, double *val) {
785{double helper_0 = 4*y;
786val[0] = helper_0*(-helper_0 + 32*x*y - 8*x + 1);}
787{double helper_0 = 4*x;
788val[1] = helper_0*(-helper_0 + 32*x*y - 8*y + 1);}
789}
790
791void p_4_basis_grad_value_2d_single_8(double x, double y, double *val) {
792{val[0] = (16.0/3.0)*y*(8*pow(y, 2) - 6*y + 1);}
793{val[1] = (16.0/3.0)*x*(24*pow(y, 2) - 12*y + 1);}
794}
795
796void p_4_basis_grad_value_2d_single_9(double x, double y, double *val) {
797{val[0] = -16.0/3.0*y*(8*pow(y, 2) - 6*y + 1);}
798{double helper_0 = pow(y, 2);
799val[1] = -128*helper_0*x + 224*helper_0 + 64*x*y - 16.0/3.0*x - 512.0/3.0*pow(y, 3) - 224.0/3.0*y + 16.0/3.0;}
800}
801
802void p_4_basis_grad_value_2d_single_10(double x, double y, double *val) {
803{val[0] = 4*y*(32*x*y - 8*x + 32*pow(y, 2) - 36*y + 7);}
804{double helper_0 = pow(x, 2);
805double helper_1 = 96*pow(y, 2);
806val[1] = 128*helper_0*y - 16*helper_0 + 4*helper_1*x - 4*helper_1 - 288*x*y + 28*x + 256*pow(y, 3) + 152*y - 12;}
807}
808
809void p_4_basis_grad_value_2d_single_11(double x, double y, double *val) {
810{val[0] = -16.0/3.0*y*(24*pow(x, 2) + 48*x*y - 36*x + 24*pow(y, 2) - 36*y + 13);}
811{double helper_0 = pow(x, 2);
812double helper_1 = pow(y, 2);
813val[1] = -256*helper_0*y + 96*helper_0 - 384*helper_1*x + 288*helper_1 - 128.0/3.0*pow(x, 3) + 384*x*y - 208.0/3.0*x - 512.0/3.0*pow(y, 3) - 416.0/3.0*y + 16;}
814}
815
816void p_4_basis_grad_value_2d_single_12(double x, double y, double *val) {
817{val[0] = 32*y*(12*pow(x, 2) + 16*x*y - 14*x + 4*pow(y, 2) - 7*y + 3);}
818{val[1] = 32*x*(4*pow(x, 2) + 16*x*y - 7*x + 12*pow(y, 2) - 14*y + 3);}
819}
820
821void p_4_basis_grad_value_2d_single_13(double x, double y, double *val) {
822{val[0] = -32*y*(4*y - 1)*(2*x + y - 1);}
823{val[1] = -32*x*(8*x*y - x + 12*pow(y, 2) - 10*y + 1);}
824}
825
826void p_4_basis_grad_value_2d_single_14(double x, double y, double *val) {
827{val[0] = -32*y*(12*pow(x, 2) + 8*x*y - 10*x - y + 1);}
828{val[1] = -32*x*(4*x - 1)*(x + 2*y - 1);}
829}
830
831
832
833void p_4_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
834val.resize(uv.rows(), 2);
835double gradient[2];
836switch(local_index){
837 case 0:
838 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
839 p_4_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
840 val(i, 0) = gradient[0];
841 val(i, 1) = gradient[1];
842 }
843 break;
844 case 1:
845 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
846 p_4_basis_grad_value_2d_single_1(uv(i, 0), uv(i, 1), gradient);
847 val(i, 0) = gradient[0];
848 val(i, 1) = gradient[1];
849 }
850 break;
851 case 2:
852 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
853 p_4_basis_grad_value_2d_single_2(uv(i, 0), uv(i, 1), gradient);
854 val(i, 0) = gradient[0];
855 val(i, 1) = gradient[1];
856 }
857 break;
858 case 3:
859 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
860 p_4_basis_grad_value_2d_single_3(uv(i, 0), uv(i, 1), gradient);
861 val(i, 0) = gradient[0];
862 val(i, 1) = gradient[1];
863 }
864 break;
865 case 4:
866 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
867 p_4_basis_grad_value_2d_single_4(uv(i, 0), uv(i, 1), gradient);
868 val(i, 0) = gradient[0];
869 val(i, 1) = gradient[1];
870 }
871 break;
872 case 5:
873 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
874 p_4_basis_grad_value_2d_single_5(uv(i, 0), uv(i, 1), gradient);
875 val(i, 0) = gradient[0];
876 val(i, 1) = gradient[1];
877 }
878 break;
879 case 6:
880 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
881 p_4_basis_grad_value_2d_single_6(uv(i, 0), uv(i, 1), gradient);
882 val(i, 0) = gradient[0];
883 val(i, 1) = gradient[1];
884 }
885 break;
886 case 7:
887 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
888 p_4_basis_grad_value_2d_single_7(uv(i, 0), uv(i, 1), gradient);
889 val(i, 0) = gradient[0];
890 val(i, 1) = gradient[1];
891 }
892 break;
893 case 8:
894 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
895 p_4_basis_grad_value_2d_single_8(uv(i, 0), uv(i, 1), gradient);
896 val(i, 0) = gradient[0];
897 val(i, 1) = gradient[1];
898 }
899 break;
900 case 9:
901 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
902 p_4_basis_grad_value_2d_single_9(uv(i, 0), uv(i, 1), gradient);
903 val(i, 0) = gradient[0];
904 val(i, 1) = gradient[1];
905 }
906 break;
907 case 10:
908 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
909 p_4_basis_grad_value_2d_single_10(uv(i, 0), uv(i, 1), gradient);
910 val(i, 0) = gradient[0];
911 val(i, 1) = gradient[1];
912 }
913 break;
914 case 11:
915 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
916 p_4_basis_grad_value_2d_single_11(uv(i, 0), uv(i, 1), gradient);
917 val(i, 0) = gradient[0];
918 val(i, 1) = gradient[1];
919 }
920 break;
921 case 12:
922 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
923 p_4_basis_grad_value_2d_single_12(uv(i, 0), uv(i, 1), gradient);
924 val(i, 0) = gradient[0];
925 val(i, 1) = gradient[1];
926 }
927 break;
928 case 13:
929 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
930 p_4_basis_grad_value_2d_single_13(uv(i, 0), uv(i, 1), gradient);
931 val(i, 0) = gradient[0];
932 val(i, 1) = gradient[1];
933 }
934 break;
935 case 14:
936 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
937 p_4_basis_grad_value_2d_single_14(uv(i, 0), uv(i, 1), gradient);
938 val(i, 0) = gradient[0];
939 val(i, 1) = gradient[1];
940 }
941 break;
942 default: assert(false);
943}
944}
945
946
947void p_4_nodes_2d(Eigen::MatrixXd &res) {
948 res.resize(15, 2); res <<
9490, 0,
9501, 0,
9510, 1,
9521.0/4.0, 0,
9531.0/2.0, 0,
9543.0/4.0, 0,
9553.0/4.0, 1.0/4.0,
9561.0/2.0, 1.0/2.0,
9571.0/4.0, 3.0/4.0,
9580, 3.0/4.0,
9590, 1.0/2.0,
9600, 1.0/4.0,
9611.0/4.0, 1.0/4.0,
9621.0/4.0, 1.0/2.0,
9631.0/2.0, 1.0/4.0;
964}
965
966
967}
968
969void p_nodes_2d(const int p, Eigen::MatrixXd &val){
970switch(p){
971 case 0: p_0_nodes_2d(val); break;
972 case 1: p_1_nodes_2d(val); break;
973 case 2: p_2_nodes_2d(val); break;
974 case 3: p_3_nodes_2d(val); break;
975 case 4: p_4_nodes_2d(val); break;
976 default: p_n_nodes_2d(p, val);
977}}
978void p_basis_value_2d(const bool bernstein, const int p, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
979if(bernstein) { b_basis_value_2d(p, local_index, uv, val); return; }
980
981
982switch(p){
983 case 0: p_0_basis_value_2d(local_index, uv, val); break;
984 case 1: p_1_basis_value_2d(local_index, uv, val); break;
985 case 2: p_2_basis_value_2d(local_index, uv, val); break;
986 case 3: p_3_basis_value_2d(local_index, uv, val); break;
987 case 4: p_4_basis_value_2d(local_index, uv, val); break;
988 default: p_n_basis_value_2d(p, local_index, uv, val);
989}}
990
991void p_grad_basis_value_2d(const bool bernstein, const int p, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
992if(bernstein) { b_grad_basis_value_2d(p, local_index, uv, val); return; }
993
994
995switch(p){
996 case 0: p_0_basis_grad_value_2d(local_index, uv, val); break;
997 case 1: p_1_basis_grad_value_2d(local_index, uv, val); break;
998 case 2: p_2_basis_grad_value_2d(local_index, uv, val); break;
999 case 3: p_3_basis_grad_value_2d(local_index, uv, val); break;
1000 case 4: p_4_basis_grad_value_2d(local_index, uv, val); break;
1001 default: p_n_basis_grad_value_2d(p, local_index, uv, val);
1002}}
1003
1004namespace {
1005double p_0_basis_value_3d_single_0(double x, double y, double z) {
1006double result;
1007result = 1;
1008return result;
1009}
1010
1011
1012
1013void p_0_basis_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
1014result_0.resize(uv.rows(), 1);
1015switch(local_index){
1016 case 0:
1017 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1018 result_0(i, 0) = p_0_basis_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2));
1019 break;
1020 default: assert(false);
1021}
1022}
1023void p_0_basis_grad_value_3d_single_0(double x, double y, double z, double *val) {
1024{val[0] = 0;}
1025{val[1] = 0;}
1026{val[2] = 0;}
1027}
1028
1029
1030
1031void p_0_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
1032val.resize(uv.rows(), 3);
1033double gradient[3];
1034switch(local_index){
1035 case 0:
1036 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1037 p_0_basis_grad_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1038 val(i, 0) = gradient[0];
1039 val(i, 1) = gradient[1];
1040 val(i, 2) = gradient[2];
1041 }
1042 break;
1043 default: assert(false);
1044}
1045}
1046
1047
1048void p_0_nodes_3d(Eigen::MatrixXd &res) {
1049 res.resize(1, 3); res <<
10500.33333333333333331, 0.33333333333333331, 0.33333333333333331;
1051}
1052
1053
1054double p_1_basis_value_3d_single_0(double x, double y, double z) {
1055double result;
1056result = -x - y - z + 1;
1057return result;
1058}
1059
1060double p_1_basis_value_3d_single_1(double x, double y, double z) {
1061double result;
1062result = x;
1063return result;
1064}
1065
1066double p_1_basis_value_3d_single_2(double x, double y, double z) {
1067double result;
1068result = y;
1069return result;
1070}
1071
1072double p_1_basis_value_3d_single_3(double x, double y, double z) {
1073double result;
1074result = z;
1075return result;
1076}
1077
1078
1079
1080void p_1_basis_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
1081result_0.resize(uv.rows(), 1);
1082switch(local_index){
1083 case 0:
1084 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1085 result_0(i, 0) = p_1_basis_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2));
1086 break;
1087 case 1:
1088 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1089 result_0(i, 0) = p_1_basis_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2));
1090 break;
1091 case 2:
1092 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1093 result_0(i, 0) = p_1_basis_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2));
1094 break;
1095 case 3:
1096 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1097 result_0(i, 0) = p_1_basis_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2));
1098 break;
1099 default: assert(false);
1100}
1101}
1102void p_1_basis_grad_value_3d_single_0(double x, double y, double z, double *val) {
1103{val[0] = -1;}
1104{val[1] = -1;}
1105{val[2] = -1;}
1106}
1107
1108void p_1_basis_grad_value_3d_single_1(double x, double y, double z, double *val) {
1109{val[0] = 1;}
1110{val[1] = 0;}
1111{val[2] = 0;}
1112}
1113
1114void p_1_basis_grad_value_3d_single_2(double x, double y, double z, double *val) {
1115{val[0] = 0;}
1116{val[1] = 1;}
1117{val[2] = 0;}
1118}
1119
1120void p_1_basis_grad_value_3d_single_3(double x, double y, double z, double *val) {
1121{val[0] = 0;}
1122{val[1] = 0;}
1123{val[2] = 1;}
1124}
1125
1126
1127
1128void p_1_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
1129val.resize(uv.rows(), 3);
1130double gradient[3];
1131switch(local_index){
1132 case 0:
1133 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1134 p_1_basis_grad_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1135 val(i, 0) = gradient[0];
1136 val(i, 1) = gradient[1];
1137 val(i, 2) = gradient[2];
1138 }
1139 break;
1140 case 1:
1141 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1142 p_1_basis_grad_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1143 val(i, 0) = gradient[0];
1144 val(i, 1) = gradient[1];
1145 val(i, 2) = gradient[2];
1146 }
1147 break;
1148 case 2:
1149 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1150 p_1_basis_grad_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1151 val(i, 0) = gradient[0];
1152 val(i, 1) = gradient[1];
1153 val(i, 2) = gradient[2];
1154 }
1155 break;
1156 case 3:
1157 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1158 p_1_basis_grad_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1159 val(i, 0) = gradient[0];
1160 val(i, 1) = gradient[1];
1161 val(i, 2) = gradient[2];
1162 }
1163 break;
1164 default: assert(false);
1165}
1166}
1167
1168
1169void p_1_nodes_3d(Eigen::MatrixXd &res) {
1170 res.resize(4, 3); res <<
11710, 0, 0,
11721, 0, 0,
11730, 1, 0,
11740, 0, 1;
1175}
1176
1177
1178double p_2_basis_value_3d_single_0(double x, double y, double z) {
1179double result;
1180result = (x + y + z - 1)*(2*x + 2*y + 2*z - 1);
1181return result;
1182}
1183
1184double p_2_basis_value_3d_single_1(double x, double y, double z) {
1185double result;
1186result = x*(2*x - 1);
1187return result;
1188}
1189
1190double p_2_basis_value_3d_single_2(double x, double y, double z) {
1191double result;
1192result = y*(2*y - 1);
1193return result;
1194}
1195
1196double p_2_basis_value_3d_single_3(double x, double y, double z) {
1197double result;
1198result = z*(2*z - 1);
1199return result;
1200}
1201
1202double p_2_basis_value_3d_single_4(double x, double y, double z) {
1203double result;
1204result = -4*x*(x + y + z - 1);
1205return result;
1206}
1207
1208double p_2_basis_value_3d_single_5(double x, double y, double z) {
1209double result;
1210result = 4*x*y;
1211return result;
1212}
1213
1214double p_2_basis_value_3d_single_6(double x, double y, double z) {
1215double result;
1216result = -4*y*(x + y + z - 1);
1217return result;
1218}
1219
1220double p_2_basis_value_3d_single_7(double x, double y, double z) {
1221double result;
1222result = -4*z*(x + y + z - 1);
1223return result;
1224}
1225
1226double p_2_basis_value_3d_single_8(double x, double y, double z) {
1227double result;
1228result = 4*x*z;
1229return result;
1230}
1231
1232double p_2_basis_value_3d_single_9(double x, double y, double z) {
1233double result;
1234result = 4*y*z;
1235return result;
1236}
1237
1238
1239
1240void p_2_basis_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
1241result_0.resize(uv.rows(), 1);
1242switch(local_index){
1243 case 0:
1244 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1245 result_0(i, 0) = p_2_basis_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2));
1246 break;
1247 case 1:
1248 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1249 result_0(i, 0) = p_2_basis_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2));
1250 break;
1251 case 2:
1252 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1253 result_0(i, 0) = p_2_basis_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2));
1254 break;
1255 case 3:
1256 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1257 result_0(i, 0) = p_2_basis_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2));
1258 break;
1259 case 4:
1260 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1261 result_0(i, 0) = p_2_basis_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2));
1262 break;
1263 case 5:
1264 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1265 result_0(i, 0) = p_2_basis_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2));
1266 break;
1267 case 6:
1268 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1269 result_0(i, 0) = p_2_basis_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2));
1270 break;
1271 case 7:
1272 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1273 result_0(i, 0) = p_2_basis_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2));
1274 break;
1275 case 8:
1276 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1277 result_0(i, 0) = p_2_basis_value_3d_single_8(uv(i, 0), uv(i, 1), uv(i, 2));
1278 break;
1279 case 9:
1280 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1281 result_0(i, 0) = p_2_basis_value_3d_single_9(uv(i, 0), uv(i, 1), uv(i, 2));
1282 break;
1283 default: assert(false);
1284}
1285}
1286void p_2_basis_grad_value_3d_single_0(double x, double y, double z, double *val) {
1287{val[0] = 4*x + 4*y + 4*z - 3;}
1288{val[1] = 4*x + 4*y + 4*z - 3;}
1289{val[2] = 4*x + 4*y + 4*z - 3;}
1290}
1291
1292void p_2_basis_grad_value_3d_single_1(double x, double y, double z, double *val) {
1293{val[0] = 4*x - 1;}
1294{val[1] = 0;}
1295{val[2] = 0;}
1296}
1297
1298void p_2_basis_grad_value_3d_single_2(double x, double y, double z, double *val) {
1299{val[0] = 0;}
1300{val[1] = 4*y - 1;}
1301{val[2] = 0;}
1302}
1303
1304void p_2_basis_grad_value_3d_single_3(double x, double y, double z, double *val) {
1305{val[0] = 0;}
1306{val[1] = 0;}
1307{val[2] = 4*z - 1;}
1308}
1309
1310void p_2_basis_grad_value_3d_single_4(double x, double y, double z, double *val) {
1311{val[0] = 4*(-2*x - y - z + 1);}
1312{val[1] = -4*x;}
1313{val[2] = -4*x;}
1314}
1315
1316void p_2_basis_grad_value_3d_single_5(double x, double y, double z, double *val) {
1317{val[0] = 4*y;}
1318{val[1] = 4*x;}
1319{val[2] = 0;}
1320}
1321
1322void p_2_basis_grad_value_3d_single_6(double x, double y, double z, double *val) {
1323{val[0] = -4*y;}
1324{val[1] = 4*(-x - 2*y - z + 1);}
1325{val[2] = -4*y;}
1326}
1327
1328void p_2_basis_grad_value_3d_single_7(double x, double y, double z, double *val) {
1329{val[0] = -4*z;}
1330{val[1] = -4*z;}
1331{val[2] = 4*(-x - y - 2*z + 1);}
1332}
1333
1334void p_2_basis_grad_value_3d_single_8(double x, double y, double z, double *val) {
1335{val[0] = 4*z;}
1336{val[1] = 0;}
1337{val[2] = 4*x;}
1338}
1339
1340void p_2_basis_grad_value_3d_single_9(double x, double y, double z, double *val) {
1341{val[0] = 0;}
1342{val[1] = 4*z;}
1343{val[2] = 4*y;}
1344}
1345
1346
1347
1348void p_2_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
1349val.resize(uv.rows(), 3);
1350double gradient[3];
1351switch(local_index){
1352 case 0:
1353 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1354 p_2_basis_grad_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1355 val(i, 0) = gradient[0];
1356 val(i, 1) = gradient[1];
1357 val(i, 2) = gradient[2];
1358 }
1359 break;
1360 case 1:
1361 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1362 p_2_basis_grad_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1363 val(i, 0) = gradient[0];
1364 val(i, 1) = gradient[1];
1365 val(i, 2) = gradient[2];
1366 }
1367 break;
1368 case 2:
1369 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1370 p_2_basis_grad_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1371 val(i, 0) = gradient[0];
1372 val(i, 1) = gradient[1];
1373 val(i, 2) = gradient[2];
1374 }
1375 break;
1376 case 3:
1377 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1378 p_2_basis_grad_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1379 val(i, 0) = gradient[0];
1380 val(i, 1) = gradient[1];
1381 val(i, 2) = gradient[2];
1382 }
1383 break;
1384 case 4:
1385 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1386 p_2_basis_grad_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1387 val(i, 0) = gradient[0];
1388 val(i, 1) = gradient[1];
1389 val(i, 2) = gradient[2];
1390 }
1391 break;
1392 case 5:
1393 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1394 p_2_basis_grad_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1395 val(i, 0) = gradient[0];
1396 val(i, 1) = gradient[1];
1397 val(i, 2) = gradient[2];
1398 }
1399 break;
1400 case 6:
1401 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1402 p_2_basis_grad_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1403 val(i, 0) = gradient[0];
1404 val(i, 1) = gradient[1];
1405 val(i, 2) = gradient[2];
1406 }
1407 break;
1408 case 7:
1409 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1410 p_2_basis_grad_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1411 val(i, 0) = gradient[0];
1412 val(i, 1) = gradient[1];
1413 val(i, 2) = gradient[2];
1414 }
1415 break;
1416 case 8:
1417 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1418 p_2_basis_grad_value_3d_single_8(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1419 val(i, 0) = gradient[0];
1420 val(i, 1) = gradient[1];
1421 val(i, 2) = gradient[2];
1422 }
1423 break;
1424 case 9:
1425 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1426 p_2_basis_grad_value_3d_single_9(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1427 val(i, 0) = gradient[0];
1428 val(i, 1) = gradient[1];
1429 val(i, 2) = gradient[2];
1430 }
1431 break;
1432 default: assert(false);
1433}
1434}
1435
1436
1437void p_2_nodes_3d(Eigen::MatrixXd &res) {
1438 res.resize(10, 3); res <<
14390, 0, 0,
14401, 0, 0,
14410, 1, 0,
14420, 0, 1,
14431.0/2.0, 0, 0,
14441.0/2.0, 1.0/2.0, 0,
14450, 1.0/2.0, 0,
14460, 0, 1.0/2.0,
14471.0/2.0, 0, 1.0/2.0,
14480, 1.0/2.0, 1.0/2.0;
1449}
1450
1451
1452double p_3_basis_value_3d_single_0(double x, double y, double z) {
1453double result;
1454double helper_0 = pow(x, 2);
1455double helper_1 = pow(y, 2);
1456double helper_2 = pow(z, 2);
1457double helper_3 = (27.0/2.0)*x;
1458double helper_4 = (27.0/2.0)*y;
1459double helper_5 = (27.0/2.0)*z;
1460result = -helper_0*helper_4 - helper_0*helper_5 + 9*helper_0 - helper_1*helper_3 - helper_1*helper_5 + 9*helper_1 - helper_2*helper_3 - helper_2*helper_4 + 9*helper_2 - 9.0/2.0*pow(x, 3) - 27*x*y*z + 18*x*y + 18*x*z - 11.0/2.0*x - 9.0/2.0*pow(y, 3) + 18*y*z - 11.0/2.0*y - 9.0/2.0*pow(z, 3) - 11.0/2.0*z + 1;
1461return result;
1462}
1463
1464double p_3_basis_value_3d_single_1(double x, double y, double z) {
1465double result;
1466result = (1.0/2.0)*x*(9*pow(x, 2) - 9*x + 2);
1467return result;
1468}
1469
1470double p_3_basis_value_3d_single_2(double x, double y, double z) {
1471double result;
1472result = (1.0/2.0)*y*(9*pow(y, 2) - 9*y + 2);
1473return result;
1474}
1475
1476double p_3_basis_value_3d_single_3(double x, double y, double z) {
1477double result;
1478result = (1.0/2.0)*z*(9*pow(z, 2) - 9*z + 2);
1479return result;
1480}
1481
1482double p_3_basis_value_3d_single_4(double x, double y, double z) {
1483double result;
1484result = (9.0/2.0)*x*(x + y + z - 1)*(3*x + 3*y + 3*z - 2);
1485return result;
1486}
1487
1488double p_3_basis_value_3d_single_5(double x, double y, double z) {
1489double result;
1490double helper_0 = 3*x;
1491result = -9.0/2.0*x*(helper_0*y + helper_0*z + 3*pow(x, 2) - 4*x - y - z + 1);
1492return result;
1493}
1494
1495double p_3_basis_value_3d_single_6(double x, double y, double z) {
1496double result;
1497result = (9.0/2.0)*x*y*(3*x - 1);
1498return result;
1499}
1500
1501double p_3_basis_value_3d_single_7(double x, double y, double z) {
1502double result;
1503result = (9.0/2.0)*x*y*(3*y - 1);
1504return result;
1505}
1506
1507double p_3_basis_value_3d_single_8(double x, double y, double z) {
1508double result;
1509double helper_0 = 3*y;
1510result = -9.0/2.0*y*(helper_0*x + helper_0*z - x + 3*pow(y, 2) - 4*y - z + 1);
1511return result;
1512}
1513
1514double p_3_basis_value_3d_single_9(double x, double y, double z) {
1515double result;
1516result = (9.0/2.0)*y*(x + y + z - 1)*(3*x + 3*y + 3*z - 2);
1517return result;
1518}
1519
1520double p_3_basis_value_3d_single_10(double x, double y, double z) {
1521double result;
1522result = (9.0/2.0)*z*(x + y + z - 1)*(3*x + 3*y + 3*z - 2);
1523return result;
1524}
1525
1526double p_3_basis_value_3d_single_11(double x, double y, double z) {
1527double result;
1528double helper_0 = 3*z;
1529result = -9.0/2.0*z*(helper_0*x + helper_0*y - x - y + 3*pow(z, 2) - 4*z + 1);
1530return result;
1531}
1532
1533double p_3_basis_value_3d_single_12(double x, double y, double z) {
1534double result;
1535result = (9.0/2.0)*x*z*(3*x - 1);
1536return result;
1537}
1538
1539double p_3_basis_value_3d_single_13(double x, double y, double z) {
1540double result;
1541result = (9.0/2.0)*x*z*(3*z - 1);
1542return result;
1543}
1544
1545double p_3_basis_value_3d_single_14(double x, double y, double z) {
1546double result;
1547result = (9.0/2.0)*y*z*(3*y - 1);
1548return result;
1549}
1550
1551double p_3_basis_value_3d_single_15(double x, double y, double z) {
1552double result;
1553result = (9.0/2.0)*y*z*(3*z - 1);
1554return result;
1555}
1556
1557double p_3_basis_value_3d_single_16(double x, double y, double z) {
1558double result;
1559result = -27*x*y*(x + y + z - 1);
1560return result;
1561}
1562
1563double p_3_basis_value_3d_single_17(double x, double y, double z) {
1564double result;
1565result = -27*x*z*(x + y + z - 1);
1566return result;
1567}
1568
1569double p_3_basis_value_3d_single_18(double x, double y, double z) {
1570double result;
1571result = 27*x*y*z;
1572return result;
1573}
1574
1575double p_3_basis_value_3d_single_19(double x, double y, double z) {
1576double result;
1577result = -27*y*z*(x + y + z - 1);
1578return result;
1579}
1580
1581
1582
1583void p_3_basis_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
1584result_0.resize(uv.rows(), 1);
1585switch(local_index){
1586 case 0:
1587 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1588 result_0(i, 0) = p_3_basis_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2));
1589 break;
1590 case 1:
1591 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1592 result_0(i, 0) = p_3_basis_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2));
1593 break;
1594 case 2:
1595 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1596 result_0(i, 0) = p_3_basis_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2));
1597 break;
1598 case 3:
1599 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1600 result_0(i, 0) = p_3_basis_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2));
1601 break;
1602 case 4:
1603 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1604 result_0(i, 0) = p_3_basis_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2));
1605 break;
1606 case 5:
1607 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1608 result_0(i, 0) = p_3_basis_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2));
1609 break;
1610 case 6:
1611 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1612 result_0(i, 0) = p_3_basis_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2));
1613 break;
1614 case 7:
1615 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1616 result_0(i, 0) = p_3_basis_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2));
1617 break;
1618 case 8:
1619 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1620 result_0(i, 0) = p_3_basis_value_3d_single_8(uv(i, 0), uv(i, 1), uv(i, 2));
1621 break;
1622 case 9:
1623 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1624 result_0(i, 0) = p_3_basis_value_3d_single_9(uv(i, 0), uv(i, 1), uv(i, 2));
1625 break;
1626 case 10:
1627 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1628 result_0(i, 0) = p_3_basis_value_3d_single_10(uv(i, 0), uv(i, 1), uv(i, 2));
1629 break;
1630 case 11:
1631 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1632 result_0(i, 0) = p_3_basis_value_3d_single_11(uv(i, 0), uv(i, 1), uv(i, 2));
1633 break;
1634 case 12:
1635 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1636 result_0(i, 0) = p_3_basis_value_3d_single_12(uv(i, 0), uv(i, 1), uv(i, 2));
1637 break;
1638 case 13:
1639 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1640 result_0(i, 0) = p_3_basis_value_3d_single_13(uv(i, 0), uv(i, 1), uv(i, 2));
1641 break;
1642 case 14:
1643 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1644 result_0(i, 0) = p_3_basis_value_3d_single_14(uv(i, 0), uv(i, 1), uv(i, 2));
1645 break;
1646 case 15:
1647 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1648 result_0(i, 0) = p_3_basis_value_3d_single_15(uv(i, 0), uv(i, 1), uv(i, 2));
1649 break;
1650 case 16:
1651 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1652 result_0(i, 0) = p_3_basis_value_3d_single_16(uv(i, 0), uv(i, 1), uv(i, 2));
1653 break;
1654 case 17:
1655 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1656 result_0(i, 0) = p_3_basis_value_3d_single_17(uv(i, 0), uv(i, 1), uv(i, 2));
1657 break;
1658 case 18:
1659 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1660 result_0(i, 0) = p_3_basis_value_3d_single_18(uv(i, 0), uv(i, 1), uv(i, 2));
1661 break;
1662 case 19:
1663 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1664 result_0(i, 0) = p_3_basis_value_3d_single_19(uv(i, 0), uv(i, 1), uv(i, 2));
1665 break;
1666 default: assert(false);
1667}
1668}
1669void p_3_basis_grad_value_3d_single_0(double x, double y, double z, double *val) {
1670{double helper_0 = 27*x;
1671val[0] = -helper_0*y - helper_0*z - 27.0/2.0*pow(x, 2) + 18*x - 27.0/2.0*pow(y, 2) - 27*y*z + 18*y - 27.0/2.0*pow(z, 2) + 18*z - 11.0/2.0;}
1672{double helper_0 = 27*x;
1673val[1] = -helper_0*y - helper_0*z - 27.0/2.0*pow(x, 2) + 18*x - 27.0/2.0*pow(y, 2) - 27*y*z + 18*y - 27.0/2.0*pow(z, 2) + 18*z - 11.0/2.0;}
1674{double helper_0 = 27*x;
1675val[2] = -helper_0*y - helper_0*z - 27.0/2.0*pow(x, 2) + 18*x - 27.0/2.0*pow(y, 2) - 27*y*z + 18*y - 27.0/2.0*pow(z, 2) + 18*z - 11.0/2.0;}
1676}
1677
1678void p_3_basis_grad_value_3d_single_1(double x, double y, double z, double *val) {
1679{val[0] = (27.0/2.0)*pow(x, 2) - 9*x + 1;}
1680{val[1] = 0;}
1681{val[2] = 0;}
1682}
1683
1684void p_3_basis_grad_value_3d_single_2(double x, double y, double z, double *val) {
1685{val[0] = 0;}
1686{val[1] = (27.0/2.0)*pow(y, 2) - 9*y + 1;}
1687{val[2] = 0;}
1688}
1689
1690void p_3_basis_grad_value_3d_single_3(double x, double y, double z, double *val) {
1691{val[0] = 0;}
1692{val[1] = 0;}
1693{val[2] = (27.0/2.0)*pow(z, 2) - 9*z + 1;}
1694}
1695
1696void p_3_basis_grad_value_3d_single_4(double x, double y, double z, double *val) {
1697{double helper_0 = 6*x;
1698val[0] = 9*helper_0*y + 9*helper_0*z + (81.0/2.0)*pow(x, 2) - 45*x + (27.0/2.0)*pow(y, 2) + 27*y*z - 45.0/2.0*y + (27.0/2.0)*pow(z, 2) - 45.0/2.0*z + 9;}
1699{val[1] = (9.0/2.0)*x*(6*x + 6*y + 6*z - 5);}
1700{val[2] = (9.0/2.0)*x*(6*x + 6*y + 6*z - 5);}
1701}
1702
1703void p_3_basis_grad_value_3d_single_5(double x, double y, double z, double *val) {
1704{double helper_0 = 3*x;
1705val[0] = -9*helper_0*y - 9*helper_0*z - 81.0/2.0*pow(x, 2) + 36*x + (9.0/2.0)*y + (9.0/2.0)*z - 9.0/2.0;}
1706{val[1] = -9.0/2.0*x*(3*x - 1);}
1707{val[2] = -9.0/2.0*x*(3*x - 1);}
1708}
1709
1710void p_3_basis_grad_value_3d_single_6(double x, double y, double z, double *val) {
1711{val[0] = (9.0/2.0)*y*(6*x - 1);}
1712{val[1] = (9.0/2.0)*x*(3*x - 1);}
1713{val[2] = 0;}
1714}
1715
1716void p_3_basis_grad_value_3d_single_7(double x, double y, double z, double *val) {
1717{val[0] = (9.0/2.0)*y*(3*y - 1);}
1718{val[1] = (9.0/2.0)*x*(6*y - 1);}
1719{val[2] = 0;}
1720}
1721
1722void p_3_basis_grad_value_3d_single_8(double x, double y, double z, double *val) {
1723{val[0] = -9.0/2.0*y*(3*y - 1);}
1724{double helper_0 = 3*y;
1725val[1] = -9*helper_0*x - 9*helper_0*z + (9.0/2.0)*x - 81.0/2.0*pow(y, 2) + 36*y + (9.0/2.0)*z - 9.0/2.0;}
1726{val[2] = -9.0/2.0*y*(3*y - 1);}
1727}
1728
1729void p_3_basis_grad_value_3d_single_9(double x, double y, double z, double *val) {
1730{val[0] = (9.0/2.0)*y*(6*x + 6*y + 6*z - 5);}
1731{double helper_0 = 6*y;
1732val[1] = 9*helper_0*x + 9*helper_0*z + (27.0/2.0)*pow(x, 2) + 27*x*z - 45.0/2.0*x + (81.0/2.0)*pow(y, 2) - 45*y + (27.0/2.0)*pow(z, 2) - 45.0/2.0*z + 9;}
1733{val[2] = (9.0/2.0)*y*(6*x + 6*y + 6*z - 5);}
1734}
1735
1736void p_3_basis_grad_value_3d_single_10(double x, double y, double z, double *val) {
1737{val[0] = (9.0/2.0)*z*(6*x + 6*y + 6*z - 5);}
1738{val[1] = (9.0/2.0)*z*(6*x + 6*y + 6*z - 5);}
1739{double helper_0 = 6*z;
1740val[2] = 9*helper_0*x + 9*helper_0*y + (27.0/2.0)*pow(x, 2) + 27*x*y - 45.0/2.0*x + (27.0/2.0)*pow(y, 2) - 45.0/2.0*y + (81.0/2.0)*pow(z, 2) - 45*z + 9;}
1741}
1742
1743void p_3_basis_grad_value_3d_single_11(double x, double y, double z, double *val) {
1744{val[0] = -9.0/2.0*z*(3*z - 1);}
1745{val[1] = -9.0/2.0*z*(3*z - 1);}
1746{double helper_0 = 3*z;
1747val[2] = -9*helper_0*x - 9*helper_0*y + (9.0/2.0)*x + (9.0/2.0)*y - 81.0/2.0*pow(z, 2) + 36*z - 9.0/2.0;}
1748}
1749
1750void p_3_basis_grad_value_3d_single_12(double x, double y, double z, double *val) {
1751{val[0] = (9.0/2.0)*z*(6*x - 1);}
1752{val[1] = 0;}
1753{val[2] = (9.0/2.0)*x*(3*x - 1);}
1754}
1755
1756void p_3_basis_grad_value_3d_single_13(double x, double y, double z, double *val) {
1757{val[0] = (9.0/2.0)*z*(3*z - 1);}
1758{val[1] = 0;}
1759{val[2] = (9.0/2.0)*x*(6*z - 1);}
1760}
1761
1762void p_3_basis_grad_value_3d_single_14(double x, double y, double z, double *val) {
1763{val[0] = 0;}
1764{val[1] = (9.0/2.0)*z*(6*y - 1);}
1765{val[2] = (9.0/2.0)*y*(3*y - 1);}
1766}
1767
1768void p_3_basis_grad_value_3d_single_15(double x, double y, double z, double *val) {
1769{val[0] = 0;}
1770{val[1] = (9.0/2.0)*z*(3*z - 1);}
1771{val[2] = (9.0/2.0)*y*(6*z - 1);}
1772}
1773
1774void p_3_basis_grad_value_3d_single_16(double x, double y, double z, double *val) {
1775{val[0] = -27*y*(2*x + y + z - 1);}
1776{val[1] = -27*x*(x + 2*y + z - 1);}
1777{val[2] = -27*x*y;}
1778}
1779
1780void p_3_basis_grad_value_3d_single_17(double x, double y, double z, double *val) {
1781{val[0] = -27*z*(2*x + y + z - 1);}
1782{val[1] = -27*x*z;}
1783{val[2] = -27*x*(x + y + 2*z - 1);}
1784}
1785
1786void p_3_basis_grad_value_3d_single_18(double x, double y, double z, double *val) {
1787{val[0] = 27*y*z;}
1788{val[1] = 27*x*z;}
1789{val[2] = 27*x*y;}
1790}
1791
1792void p_3_basis_grad_value_3d_single_19(double x, double y, double z, double *val) {
1793{val[0] = -27*y*z;}
1794{val[1] = -27*z*(x + 2*y + z - 1);}
1795{val[2] = -27*y*(x + y + 2*z - 1);}
1796}
1797
1798
1799
1800void p_3_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
1801val.resize(uv.rows(), 3);
1802double gradient[3];
1803switch(local_index){
1804 case 0:
1805 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1806 p_3_basis_grad_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1807 val(i, 0) = gradient[0];
1808 val(i, 1) = gradient[1];
1809 val(i, 2) = gradient[2];
1810 }
1811 break;
1812 case 1:
1813 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1814 p_3_basis_grad_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1815 val(i, 0) = gradient[0];
1816 val(i, 1) = gradient[1];
1817 val(i, 2) = gradient[2];
1818 }
1819 break;
1820 case 2:
1821 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1822 p_3_basis_grad_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1823 val(i, 0) = gradient[0];
1824 val(i, 1) = gradient[1];
1825 val(i, 2) = gradient[2];
1826 }
1827 break;
1828 case 3:
1829 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1830 p_3_basis_grad_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1831 val(i, 0) = gradient[0];
1832 val(i, 1) = gradient[1];
1833 val(i, 2) = gradient[2];
1834 }
1835 break;
1836 case 4:
1837 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1838 p_3_basis_grad_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1839 val(i, 0) = gradient[0];
1840 val(i, 1) = gradient[1];
1841 val(i, 2) = gradient[2];
1842 }
1843 break;
1844 case 5:
1845 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1846 p_3_basis_grad_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1847 val(i, 0) = gradient[0];
1848 val(i, 1) = gradient[1];
1849 val(i, 2) = gradient[2];
1850 }
1851 break;
1852 case 6:
1853 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1854 p_3_basis_grad_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1855 val(i, 0) = gradient[0];
1856 val(i, 1) = gradient[1];
1857 val(i, 2) = gradient[2];
1858 }
1859 break;
1860 case 7:
1861 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1862 p_3_basis_grad_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1863 val(i, 0) = gradient[0];
1864 val(i, 1) = gradient[1];
1865 val(i, 2) = gradient[2];
1866 }
1867 break;
1868 case 8:
1869 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1870 p_3_basis_grad_value_3d_single_8(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1871 val(i, 0) = gradient[0];
1872 val(i, 1) = gradient[1];
1873 val(i, 2) = gradient[2];
1874 }
1875 break;
1876 case 9:
1877 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1878 p_3_basis_grad_value_3d_single_9(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1879 val(i, 0) = gradient[0];
1880 val(i, 1) = gradient[1];
1881 val(i, 2) = gradient[2];
1882 }
1883 break;
1884 case 10:
1885 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1886 p_3_basis_grad_value_3d_single_10(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1887 val(i, 0) = gradient[0];
1888 val(i, 1) = gradient[1];
1889 val(i, 2) = gradient[2];
1890 }
1891 break;
1892 case 11:
1893 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1894 p_3_basis_grad_value_3d_single_11(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1895 val(i, 0) = gradient[0];
1896 val(i, 1) = gradient[1];
1897 val(i, 2) = gradient[2];
1898 }
1899 break;
1900 case 12:
1901 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1902 p_3_basis_grad_value_3d_single_12(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1903 val(i, 0) = gradient[0];
1904 val(i, 1) = gradient[1];
1905 val(i, 2) = gradient[2];
1906 }
1907 break;
1908 case 13:
1909 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1910 p_3_basis_grad_value_3d_single_13(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1911 val(i, 0) = gradient[0];
1912 val(i, 1) = gradient[1];
1913 val(i, 2) = gradient[2];
1914 }
1915 break;
1916 case 14:
1917 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1918 p_3_basis_grad_value_3d_single_14(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1919 val(i, 0) = gradient[0];
1920 val(i, 1) = gradient[1];
1921 val(i, 2) = gradient[2];
1922 }
1923 break;
1924 case 15:
1925 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1926 p_3_basis_grad_value_3d_single_15(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1927 val(i, 0) = gradient[0];
1928 val(i, 1) = gradient[1];
1929 val(i, 2) = gradient[2];
1930 }
1931 break;
1932 case 16:
1933 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1934 p_3_basis_grad_value_3d_single_16(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1935 val(i, 0) = gradient[0];
1936 val(i, 1) = gradient[1];
1937 val(i, 2) = gradient[2];
1938 }
1939 break;
1940 case 17:
1941 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1942 p_3_basis_grad_value_3d_single_17(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1943 val(i, 0) = gradient[0];
1944 val(i, 1) = gradient[1];
1945 val(i, 2) = gradient[2];
1946 }
1947 break;
1948 case 18:
1949 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1950 p_3_basis_grad_value_3d_single_18(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1951 val(i, 0) = gradient[0];
1952 val(i, 1) = gradient[1];
1953 val(i, 2) = gradient[2];
1954 }
1955 break;
1956 case 19:
1957 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1958 p_3_basis_grad_value_3d_single_19(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1959 val(i, 0) = gradient[0];
1960 val(i, 1) = gradient[1];
1961 val(i, 2) = gradient[2];
1962 }
1963 break;
1964 default: assert(false);
1965}
1966}
1967
1968
1969void p_3_nodes_3d(Eigen::MatrixXd &res) {
1970 res.resize(20, 3); res <<
19710, 0, 0,
19721, 0, 0,
19730, 1, 0,
19740, 0, 1,
19751.0/3.0, 0, 0,
19762.0/3.0, 0, 0,
19772.0/3.0, 1.0/3.0, 0,
19781.0/3.0, 2.0/3.0, 0,
19790, 2.0/3.0, 0,
19800, 1.0/3.0, 0,
19810, 0, 1.0/3.0,
19820, 0, 2.0/3.0,
19832.0/3.0, 0, 1.0/3.0,
19841.0/3.0, 0, 2.0/3.0,
19850, 2.0/3.0, 1.0/3.0,
19860, 1.0/3.0, 2.0/3.0,
19871.0/3.0, 1.0/3.0, 0,
19881.0/3.0, 0, 1.0/3.0,
19891.0/3.0, 1.0/3.0, 1.0/3.0,
19900, 1.0/3.0, 1.0/3.0;
1991}
1992
1993
1994double p_4_basis_value_3d_single_0(double x, double y, double z) {
1995double result;
1996double helper_0 = x + y + z - 1;
1997double helper_1 = x*y;
1998double helper_2 = pow(y, 2);
1999double helper_3 = 9*x;
2000double helper_4 = pow(z, 2);
2001double helper_5 = pow(x, 2);
2002double helper_6 = 9*y;
2003double helper_7 = 9*z;
2004double helper_8 = 26*helper_0;
2005double helper_9 = helper_8*z;
2006double helper_10 = 13*pow(helper_0, 2);
2007double helper_11 = 13*helper_0;
2008result = (1.0/3.0)*helper_0*(3*pow(helper_0, 3) + helper_1*helper_8 + 18*helper_1*z + helper_10*x + helper_10*y + helper_10*z + helper_11*helper_2 + helper_11*helper_4 + helper_11*helper_5 + helper_2*helper_3 + helper_2*helper_7 + helper_3*helper_4 + helper_4*helper_6 + helper_5*helper_6 + helper_5*helper_7 + helper_9*x + helper_9*y + 3*pow(x, 3) + 3*pow(y, 3) + 3*pow(z, 3));
2009return result;
2010}
2011
2012double p_4_basis_value_3d_single_1(double x, double y, double z) {
2013double result;
2014result = (1.0/3.0)*x*(32*pow(x, 3) - 48*pow(x, 2) + 22*x - 3);
2015return result;
2016}
2017
2018double p_4_basis_value_3d_single_2(double x, double y, double z) {
2019double result;
2020result = (1.0/3.0)*y*(32*pow(y, 3) - 48*pow(y, 2) + 22*y - 3);
2021return result;
2022}
2023
2024double p_4_basis_value_3d_single_3(double x, double y, double z) {
2025double result;
2026result = (1.0/3.0)*z*(32*pow(z, 3) - 48*pow(z, 2) + 22*z - 3);
2027return result;
2028}
2029
2030double p_4_basis_value_3d_single_4(double x, double y, double z) {
2031double result;
2032double helper_0 = 36*x;
2033double helper_1 = y*z;
2034double helper_2 = pow(x, 2);
2035double helper_3 = pow(y, 2);
2036double helper_4 = pow(z, 2);
2037double helper_5 = 24*x;
2038double helper_6 = 24*y;
2039double helper_7 = 24*z;
2040result = -16.0/3.0*x*(-helper_0*y - helper_0*z + 48*helper_1*x - 36*helper_1 + helper_2*helper_6 + helper_2*helper_7 - 18*helper_2 + helper_3*helper_5 + helper_3*helper_7 - 18*helper_3 + helper_4*helper_5 + helper_4*helper_6 - 18*helper_4 + 8*pow(x, 3) + 13*x + 8*pow(y, 3) + 13*y + 8*pow(z, 3) + 13*z - 3);
2041return result;
2042}
2043
2044double p_4_basis_value_3d_single_5(double x, double y, double z) {
2045double result;
2046double helper_0 = 2*y;
2047double helper_1 = 2*z;
2048double helper_2 = x + y + z - 1;
2049double helper_3 = helper_2*x;
2050result = 4*helper_3*(-helper_0*helper_2 + helper_0*x - helper_0*z - helper_1*helper_2 + helper_1*x + 3*pow(helper_2, 2) + 10*helper_3 + 3*pow(x, 2) - pow(y, 2) - pow(z, 2));
2051return result;
2052}
2053
2054double p_4_basis_value_3d_single_6(double x, double y, double z) {
2055double result;
2056double helper_0 = 6*x;
2057double helper_1 = pow(x, 2);
2058double helper_2 = 8*helper_1;
2059result = -16.0/3.0*x*(-helper_0*y - helper_0*z - 14*helper_1 + helper_2*y + helper_2*z + 8*pow(x, 3) + 7*x + y + z - 1);
2060return result;
2061}
2062
2063double p_4_basis_value_3d_single_7(double x, double y, double z) {
2064double result;
2065result = (16.0/3.0)*x*y*(8*pow(x, 2) - 6*x + 1);
2066return result;
2067}
2068
2069double p_4_basis_value_3d_single_8(double x, double y, double z) {
2070double result;
2071double helper_0 = 4*x;
2072result = helper_0*y*(-helper_0 + 16*x*y - 4*y + 1);
2073return result;
2074}
2075
2076double p_4_basis_value_3d_single_9(double x, double y, double z) {
2077double result;
2078result = (16.0/3.0)*x*y*(8*pow(y, 2) - 6*y + 1);
2079return result;
2080}
2081
2082double p_4_basis_value_3d_single_10(double x, double y, double z) {
2083double result;
2084double helper_0 = 6*y;
2085double helper_1 = pow(y, 2);
2086double helper_2 = 8*helper_1;
2087result = -16.0/3.0*y*(-helper_0*x - helper_0*z - 14*helper_1 + helper_2*x + helper_2*z + x + 8*pow(y, 3) + 7*y + z - 1);
2088return result;
2089}
2090
2091double p_4_basis_value_3d_single_11(double x, double y, double z) {
2092double result;
2093double helper_0 = 2*y;
2094double helper_1 = 2*x;
2095double helper_2 = x + y + z - 1;
2096double helper_3 = helper_2*y;
2097result = -4*helper_3*(-helper_0*x - helper_0*z + helper_1*helper_2 + helper_1*z - 3*pow(helper_2, 2) + 2*helper_2*z - 10*helper_3 + pow(x, 2) - 3*pow(y, 2) + pow(z, 2));
2098return result;
2099}
2100
2101double p_4_basis_value_3d_single_12(double x, double y, double z) {
2102double result;
2103double helper_0 = 36*x;
2104double helper_1 = y*z;
2105double helper_2 = pow(x, 2);
2106double helper_3 = pow(y, 2);
2107double helper_4 = pow(z, 2);
2108double helper_5 = 24*x;
2109double helper_6 = 24*y;
2110double helper_7 = 24*z;
2111result = -16.0/3.0*y*(-helper_0*y - helper_0*z + 48*helper_1*x - 36*helper_1 + helper_2*helper_6 + helper_2*helper_7 - 18*helper_2 + helper_3*helper_5 + helper_3*helper_7 - 18*helper_3 + helper_4*helper_5 + helper_4*helper_6 - 18*helper_4 + 8*pow(x, 3) + 13*x + 8*pow(y, 3) + 13*y + 8*pow(z, 3) + 13*z - 3);
2112return result;
2113}
2114
2115double p_4_basis_value_3d_single_13(double x, double y, double z) {
2116double result;
2117double helper_0 = 36*x;
2118double helper_1 = y*z;
2119double helper_2 = pow(x, 2);
2120double helper_3 = pow(y, 2);
2121double helper_4 = pow(z, 2);
2122double helper_5 = 24*x;
2123double helper_6 = 24*y;
2124double helper_7 = 24*z;
2125result = -16.0/3.0*z*(-helper_0*y - helper_0*z + 48*helper_1*x - 36*helper_1 + helper_2*helper_6 + helper_2*helper_7 - 18*helper_2 + helper_3*helper_5 + helper_3*helper_7 - 18*helper_3 + helper_4*helper_5 + helper_4*helper_6 - 18*helper_4 + 8*pow(x, 3) + 13*x + 8*pow(y, 3) + 13*y + 8*pow(z, 3) + 13*z - 3);
2126return result;
2127}
2128
2129double p_4_basis_value_3d_single_14(double x, double y, double z) {
2130double result;
2131double helper_0 = 2*x;
2132double helper_1 = 2*z;
2133double helper_2 = x + y + z - 1;
2134double helper_3 = helper_2*z;
2135result = -4*helper_3*(helper_0*helper_2 + helper_0*y - helper_1*x - helper_1*y - 3*pow(helper_2, 2) + 2*helper_2*y - 10*helper_3 + pow(x, 2) + pow(y, 2) - 3*pow(z, 2));
2136return result;
2137}
2138
2139double p_4_basis_value_3d_single_15(double x, double y, double z) {
2140double result;
2141double helper_0 = 6*z;
2142double helper_1 = pow(z, 2);
2143double helper_2 = 8*helper_1;
2144result = -16.0/3.0*z*(-helper_0*x - helper_0*y - 14*helper_1 + helper_2*x + helper_2*y + x + y + 8*pow(z, 3) + 7*z - 1);
2145return result;
2146}
2147
2148double p_4_basis_value_3d_single_16(double x, double y, double z) {
2149double result;
2150result = (16.0/3.0)*x*z*(8*pow(x, 2) - 6*x + 1);
2151return result;
2152}
2153
2154double p_4_basis_value_3d_single_17(double x, double y, double z) {
2155double result;
2156double helper_0 = 4*x;
2157result = helper_0*z*(-helper_0 + 16*x*z - 4*z + 1);
2158return result;
2159}
2160
2161double p_4_basis_value_3d_single_18(double x, double y, double z) {
2162double result;
2163result = (16.0/3.0)*x*z*(8*pow(z, 2) - 6*z + 1);
2164return result;
2165}
2166
2167double p_4_basis_value_3d_single_19(double x, double y, double z) {
2168double result;
2169result = (16.0/3.0)*y*z*(8*pow(y, 2) - 6*y + 1);
2170return result;
2171}
2172
2173double p_4_basis_value_3d_single_20(double x, double y, double z) {
2174double result;
2175double helper_0 = 4*y;
2176result = helper_0*z*(-helper_0 + 16*y*z - 4*z + 1);
2177return result;
2178}
2179
2180double p_4_basis_value_3d_single_21(double x, double y, double z) {
2181double result;
2182result = (16.0/3.0)*y*z*(8*pow(z, 2) - 6*z + 1);
2183return result;
2184}
2185
2186double p_4_basis_value_3d_single_22(double x, double y, double z) {
2187double result;
2188result = 32*x*y*(x + y + z - 1)*(4*x + 4*y + 4*z - 3);
2189return result;
2190}
2191
2192double p_4_basis_value_3d_single_23(double x, double y, double z) {
2193double result;
2194result = -32*x*y*(4*y - 1)*(x + y + z - 1);
2195return result;
2196}
2197
2198double p_4_basis_value_3d_single_24(double x, double y, double z) {
2199double result;
2200result = -32*x*y*(4*x - 1)*(x + y + z - 1);
2201return result;
2202}
2203
2204double p_4_basis_value_3d_single_25(double x, double y, double z) {
2205double result;
2206result = 32*x*z*(x + y + z - 1)*(4*x + 4*y + 4*z - 3);
2207return result;
2208}
2209
2210double p_4_basis_value_3d_single_26(double x, double y, double z) {
2211double result;
2212result = -32*x*z*(4*z - 1)*(x + y + z - 1);
2213return result;
2214}
2215
2216double p_4_basis_value_3d_single_27(double x, double y, double z) {
2217double result;
2218result = -32*x*z*(4*x - 1)*(x + y + z - 1);
2219return result;
2220}
2221
2222double p_4_basis_value_3d_single_28(double x, double y, double z) {
2223double result;
2224result = 32*x*y*z*(4*x - 1);
2225return result;
2226}
2227
2228double p_4_basis_value_3d_single_29(double x, double y, double z) {
2229double result;
2230result = 32*x*y*z*(4*z - 1);
2231return result;
2232}
2233
2234double p_4_basis_value_3d_single_30(double x, double y, double z) {
2235double result;
2236result = 32*x*y*z*(4*y - 1);
2237return result;
2238}
2239
2240double p_4_basis_value_3d_single_31(double x, double y, double z) {
2241double result;
2242result = -32*y*z*(4*y - 1)*(x + y + z - 1);
2243return result;
2244}
2245
2246double p_4_basis_value_3d_single_32(double x, double y, double z) {
2247double result;
2248result = -32*y*z*(4*z - 1)*(x + y + z - 1);
2249return result;
2250}
2251
2252double p_4_basis_value_3d_single_33(double x, double y, double z) {
2253double result;
2254result = 32*y*z*(x + y + z - 1)*(4*x + 4*y + 4*z - 3);
2255return result;
2256}
2257
2258double p_4_basis_value_3d_single_34(double x, double y, double z) {
2259double result;
2260result = -256*x*y*z*(x + y + z - 1);
2261return result;
2262}
2263
2264
2265
2266void p_4_basis_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
2267result_0.resize(uv.rows(), 1);
2268switch(local_index){
2269 case 0:
2270 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2271 result_0(i, 0) = p_4_basis_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2));
2272 break;
2273 case 1:
2274 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2275 result_0(i, 0) = p_4_basis_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2));
2276 break;
2277 case 2:
2278 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2279 result_0(i, 0) = p_4_basis_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2));
2280 break;
2281 case 3:
2282 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2283 result_0(i, 0) = p_4_basis_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2));
2284 break;
2285 case 4:
2286 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2287 result_0(i, 0) = p_4_basis_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2));
2288 break;
2289 case 5:
2290 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2291 result_0(i, 0) = p_4_basis_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2));
2292 break;
2293 case 6:
2294 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2295 result_0(i, 0) = p_4_basis_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2));
2296 break;
2297 case 7:
2298 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2299 result_0(i, 0) = p_4_basis_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2));
2300 break;
2301 case 8:
2302 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2303 result_0(i, 0) = p_4_basis_value_3d_single_8(uv(i, 0), uv(i, 1), uv(i, 2));
2304 break;
2305 case 9:
2306 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2307 result_0(i, 0) = p_4_basis_value_3d_single_9(uv(i, 0), uv(i, 1), uv(i, 2));
2308 break;
2309 case 10:
2310 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2311 result_0(i, 0) = p_4_basis_value_3d_single_10(uv(i, 0), uv(i, 1), uv(i, 2));
2312 break;
2313 case 11:
2314 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2315 result_0(i, 0) = p_4_basis_value_3d_single_11(uv(i, 0), uv(i, 1), uv(i, 2));
2316 break;
2317 case 12:
2318 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2319 result_0(i, 0) = p_4_basis_value_3d_single_12(uv(i, 0), uv(i, 1), uv(i, 2));
2320 break;
2321 case 13:
2322 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2323 result_0(i, 0) = p_4_basis_value_3d_single_13(uv(i, 0), uv(i, 1), uv(i, 2));
2324 break;
2325 case 14:
2326 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2327 result_0(i, 0) = p_4_basis_value_3d_single_14(uv(i, 0), uv(i, 1), uv(i, 2));
2328 break;
2329 case 15:
2330 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2331 result_0(i, 0) = p_4_basis_value_3d_single_15(uv(i, 0), uv(i, 1), uv(i, 2));
2332 break;
2333 case 16:
2334 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2335 result_0(i, 0) = p_4_basis_value_3d_single_16(uv(i, 0), uv(i, 1), uv(i, 2));
2336 break;
2337 case 17:
2338 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2339 result_0(i, 0) = p_4_basis_value_3d_single_17(uv(i, 0), uv(i, 1), uv(i, 2));
2340 break;
2341 case 18:
2342 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2343 result_0(i, 0) = p_4_basis_value_3d_single_18(uv(i, 0), uv(i, 1), uv(i, 2));
2344 break;
2345 case 19:
2346 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2347 result_0(i, 0) = p_4_basis_value_3d_single_19(uv(i, 0), uv(i, 1), uv(i, 2));
2348 break;
2349 case 20:
2350 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2351 result_0(i, 0) = p_4_basis_value_3d_single_20(uv(i, 0), uv(i, 1), uv(i, 2));
2352 break;
2353 case 21:
2354 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2355 result_0(i, 0) = p_4_basis_value_3d_single_21(uv(i, 0), uv(i, 1), uv(i, 2));
2356 break;
2357 case 22:
2358 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2359 result_0(i, 0) = p_4_basis_value_3d_single_22(uv(i, 0), uv(i, 1), uv(i, 2));
2360 break;
2361 case 23:
2362 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2363 result_0(i, 0) = p_4_basis_value_3d_single_23(uv(i, 0), uv(i, 1), uv(i, 2));
2364 break;
2365 case 24:
2366 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2367 result_0(i, 0) = p_4_basis_value_3d_single_24(uv(i, 0), uv(i, 1), uv(i, 2));
2368 break;
2369 case 25:
2370 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2371 result_0(i, 0) = p_4_basis_value_3d_single_25(uv(i, 0), uv(i, 1), uv(i, 2));
2372 break;
2373 case 26:
2374 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2375 result_0(i, 0) = p_4_basis_value_3d_single_26(uv(i, 0), uv(i, 1), uv(i, 2));
2376 break;
2377 case 27:
2378 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2379 result_0(i, 0) = p_4_basis_value_3d_single_27(uv(i, 0), uv(i, 1), uv(i, 2));
2380 break;
2381 case 28:
2382 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2383 result_0(i, 0) = p_4_basis_value_3d_single_28(uv(i, 0), uv(i, 1), uv(i, 2));
2384 break;
2385 case 29:
2386 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2387 result_0(i, 0) = p_4_basis_value_3d_single_29(uv(i, 0), uv(i, 1), uv(i, 2));
2388 break;
2389 case 30:
2390 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2391 result_0(i, 0) = p_4_basis_value_3d_single_30(uv(i, 0), uv(i, 1), uv(i, 2));
2392 break;
2393 case 31:
2394 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2395 result_0(i, 0) = p_4_basis_value_3d_single_31(uv(i, 0), uv(i, 1), uv(i, 2));
2396 break;
2397 case 32:
2398 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2399 result_0(i, 0) = p_4_basis_value_3d_single_32(uv(i, 0), uv(i, 1), uv(i, 2));
2400 break;
2401 case 33:
2402 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2403 result_0(i, 0) = p_4_basis_value_3d_single_33(uv(i, 0), uv(i, 1), uv(i, 2));
2404 break;
2405 case 34:
2406 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2407 result_0(i, 0) = p_4_basis_value_3d_single_34(uv(i, 0), uv(i, 1), uv(i, 2));
2408 break;
2409 default: assert(false);
2410}
2411}
2412void p_4_basis_grad_value_3d_single_0(double x, double y, double z, double *val) {
2413{double helper_0 = 160*x;
2414double helper_1 = y*z;
2415double helper_2 = pow(x, 2);
2416double helper_3 = pow(y, 2);
2417double helper_4 = pow(z, 2);
2418double helper_5 = 128*x;
2419double helper_6 = 128*y;
2420double helper_7 = 128*z;
2421val[0] = -helper_0*y - helper_0*z + 256*helper_1*x - 160*helper_1 + helper_2*helper_6 + helper_2*helper_7 - 80*helper_2 + helper_3*helper_5 + helper_3*helper_7 - 80*helper_3 + helper_4*helper_5 + helper_4*helper_6 - 80*helper_4 + (128.0/3.0)*pow(x, 3) + (140.0/3.0)*x + (128.0/3.0)*pow(y, 3) + (140.0/3.0)*y + (128.0/3.0)*pow(z, 3) + (140.0/3.0)*z - 25.0/3.0;}
2422{double helper_0 = 160*x;
2423double helper_1 = y*z;
2424double helper_2 = pow(x, 2);
2425double helper_3 = pow(y, 2);
2426double helper_4 = pow(z, 2);
2427double helper_5 = 128*x;
2428double helper_6 = 128*y;
2429double helper_7 = 128*z;
2430val[1] = -helper_0*y - helper_0*z + 256*helper_1*x - 160*helper_1 + helper_2*helper_6 + helper_2*helper_7 - 80*helper_2 + helper_3*helper_5 + helper_3*helper_7 - 80*helper_3 + helper_4*helper_5 + helper_4*helper_6 - 80*helper_4 + (128.0/3.0)*pow(x, 3) + (140.0/3.0)*x + (128.0/3.0)*pow(y, 3) + (140.0/3.0)*y + (128.0/3.0)*pow(z, 3) + (140.0/3.0)*z - 25.0/3.0;}
2431{double helper_0 = 160*x;
2432double helper_1 = y*z;
2433double helper_2 = pow(x, 2);
2434double helper_3 = pow(y, 2);
2435double helper_4 = pow(z, 2);
2436double helper_5 = 128*x;
2437double helper_6 = 128*y;
2438double helper_7 = 128*z;
2439val[2] = -helper_0*y - helper_0*z + 256*helper_1*x - 160*helper_1 + helper_2*helper_6 + helper_2*helper_7 - 80*helper_2 + helper_3*helper_5 + helper_3*helper_7 - 80*helper_3 + helper_4*helper_5 + helper_4*helper_6 - 80*helper_4 + (128.0/3.0)*pow(x, 3) + (140.0/3.0)*x + (128.0/3.0)*pow(y, 3) + (140.0/3.0)*y + (128.0/3.0)*pow(z, 3) + (140.0/3.0)*z - 25.0/3.0;}
2440}
2441
2442void p_4_basis_grad_value_3d_single_1(double x, double y, double z, double *val) {
2443{val[0] = (128.0/3.0)*pow(x, 3) - 48*pow(x, 2) + (44.0/3.0)*x - 1;}
2444{val[1] = 0;}
2445{val[2] = 0;}
2446}
2447
2448void p_4_basis_grad_value_3d_single_2(double x, double y, double z, double *val) {
2449{val[0] = 0;}
2450{val[1] = (128.0/3.0)*pow(y, 3) - 48*pow(y, 2) + (44.0/3.0)*y - 1;}
2451{val[2] = 0;}
2452}
2453
2454void p_4_basis_grad_value_3d_single_3(double x, double y, double z, double *val) {
2455{val[0] = 0;}
2456{val[1] = 0;}
2457{val[2] = (128.0/3.0)*pow(z, 3) - 48*pow(z, 2) + (44.0/3.0)*z - 1;}
2458}
2459
2460void p_4_basis_grad_value_3d_single_4(double x, double y, double z, double *val) {
2461{double helper_0 = pow(x, 2);
2462double helper_1 = pow(y, 2);
2463double helper_2 = pow(z, 2);
2464double helper_3 = 16*x;
2465double helper_4 = 24*helper_0;
2466val[0] = 288*helper_0 - 16*helper_1*helper_3 - 128*helper_1*z + 96*helper_1 - 16*helper_2*helper_3 - 128*helper_2*y + 96*helper_2 - 16*helper_4*y - 16*helper_4*z - 512.0/3.0*pow(x, 3) - 512*x*y*z + 384*x*y + 384*x*z - 416.0/3.0*x - 128.0/3.0*pow(y, 3) + 192*y*z - 208.0/3.0*y - 128.0/3.0*pow(z, 3) - 208.0/3.0*z + 16;}
2467{double helper_0 = 48*x;
2468val[1] = -16.0/3.0*x*(helper_0*y + helper_0*z + 24*pow(x, 2) - 36*x + 24*pow(y, 2) + 48*y*z - 36*y + 24*pow(z, 2) - 36*z + 13);}
2469{double helper_0 = 48*x;
2470val[2] = -16.0/3.0*x*(helper_0*y + helper_0*z + 24*pow(x, 2) - 36*x + 24*pow(y, 2) + 48*y*z - 36*y + 24*pow(z, 2) - 36*z + 13);}
2471}
2472
2473void p_4_basis_grad_value_3d_single_5(double x, double y, double z, double *val) {
2474{double helper_0 = 72*x;
2475double helper_1 = y*z;
2476double helper_2 = 96*pow(x, 2);
2477double helper_3 = pow(y, 2);
2478double helper_4 = pow(z, 2);
2479double helper_5 = 32*x;
2480val[0] = -4*helper_0*y - 4*helper_0*z + 256*helper_1*x - 32*helper_1 + 4*helper_2*y + 4*helper_2*z - 4*helper_2 + 4*helper_3*helper_5 - 16*helper_3 + 4*helper_4*helper_5 - 16*helper_4 + 256*pow(x, 3) + 152*x + 28*y + 28*z - 12;}
2481{double helper_0 = 32*x;
2482val[1] = 4*x*(helper_0*y + helper_0*z + 32*pow(x, 2) - 36*x - 8*y - 8*z + 7);}
2483{double helper_0 = 32*x;
2484val[2] = 4*x*(helper_0*y + helper_0*z + 32*pow(x, 2) - 36*x - 8*y - 8*z + 7);}
2485}
2486
2487void p_4_basis_grad_value_3d_single_6(double x, double y, double z, double *val) {
2488{double helper_0 = pow(x, 2);
2489double helper_1 = 8*helper_0;
2490val[0] = 224*helper_0 - 16*helper_1*y - 16*helper_1*z - 512.0/3.0*pow(x, 3) + 64*x*y + 64*x*z - 224.0/3.0*x - 16.0/3.0*y - 16.0/3.0*z + 16.0/3.0;}
2491{val[1] = -16.0/3.0*x*(8*pow(x, 2) - 6*x + 1);}
2492{val[2] = -16.0/3.0*x*(8*pow(x, 2) - 6*x + 1);}
2493}
2494
2495void p_4_basis_grad_value_3d_single_7(double x, double y, double z, double *val) {
2496{val[0] = (16.0/3.0)*y*(24*pow(x, 2) - 12*x + 1);}
2497{val[1] = (16.0/3.0)*x*(8*pow(x, 2) - 6*x + 1);}
2498{val[2] = 0;}
2499}
2500
2501void p_4_basis_grad_value_3d_single_8(double x, double y, double z, double *val) {
2502{double helper_0 = 4*y;
2503val[0] = helper_0*(-helper_0 + 32*x*y - 8*x + 1);}
2504{double helper_0 = 4*x;
2505val[1] = helper_0*(-helper_0 + 32*x*y - 8*y + 1);}
2506{val[2] = 0;}
2507}
2508
2509void p_4_basis_grad_value_3d_single_9(double x, double y, double z, double *val) {
2510{val[0] = (16.0/3.0)*y*(8*pow(y, 2) - 6*y + 1);}
2511{val[1] = (16.0/3.0)*x*(24*pow(y, 2) - 12*y + 1);}
2512{val[2] = 0;}
2513}
2514
2515void p_4_basis_grad_value_3d_single_10(double x, double y, double z, double *val) {
2516{val[0] = -16.0/3.0*y*(8*pow(y, 2) - 6*y + 1);}
2517{double helper_0 = pow(y, 2);
2518double helper_1 = 8*helper_0;
2519val[1] = 224*helper_0 - 16*helper_1*x - 16*helper_1*z + 64*x*y - 16.0/3.0*x - 512.0/3.0*pow(y, 3) + 64*y*z - 224.0/3.0*y - 16.0/3.0*z + 16.0/3.0;}
2520{val[2] = -16.0/3.0*y*(8*pow(y, 2) - 6*y + 1);}
2521}
2522
2523void p_4_basis_grad_value_3d_single_11(double x, double y, double z, double *val) {
2524{double helper_0 = 32*y;
2525val[0] = 4*y*(helper_0*x + helper_0*z - 8*x + 32*pow(y, 2) - 36*y - 8*z + 7);}
2526{double helper_0 = 72*y;
2527double helper_1 = x*z;
2528double helper_2 = pow(x, 2);
2529double helper_3 = 96*pow(y, 2);
2530double helper_4 = pow(z, 2);
2531double helper_5 = 32*y;
2532val[1] = -4*helper_0*x - 4*helper_0*z + 256*helper_1*y - 32*helper_1 + 4*helper_2*helper_5 - 16*helper_2 + 4*helper_3*x + 4*helper_3*z - 4*helper_3 + 4*helper_4*helper_5 - 16*helper_4 + 28*x + 256*pow(y, 3) + 152*y + 28*z - 12;}
2533{double helper_0 = 32*y;
2534val[2] = 4*y*(helper_0*x + helper_0*z - 8*x + 32*pow(y, 2) - 36*y - 8*z + 7);}
2535}
2536
2537void p_4_basis_grad_value_3d_single_12(double x, double y, double z, double *val) {
2538{double helper_0 = 48*x;
2539val[0] = -16.0/3.0*y*(helper_0*y + helper_0*z + 24*pow(x, 2) - 36*x + 24*pow(y, 2) + 48*y*z - 36*y + 24*pow(z, 2) - 36*z + 13);}
2540{double helper_0 = pow(x, 2);
2541double helper_1 = pow(y, 2);
2542double helper_2 = pow(z, 2);
2543double helper_3 = 24*helper_1;
2544double helper_4 = 16*y;
2545val[1] = -16*helper_0*helper_4 - 128*helper_0*z + 96*helper_0 + 288*helper_1 - 16*helper_2*helper_4 - 128*helper_2*x + 96*helper_2 - 16*helper_3*x - 16*helper_3*z - 128.0/3.0*pow(x, 3) - 512*x*y*z + 384*x*y + 192*x*z - 208.0/3.0*x - 512.0/3.0*pow(y, 3) + 384*y*z - 416.0/3.0*y - 128.0/3.0*pow(z, 3) - 208.0/3.0*z + 16;}
2546{double helper_0 = 48*x;
2547val[2] = -16.0/3.0*y*(helper_0*y + helper_0*z + 24*pow(x, 2) - 36*x + 24*pow(y, 2) + 48*y*z - 36*y + 24*pow(z, 2) - 36*z + 13);}
2548}
2549
2550void p_4_basis_grad_value_3d_single_13(double x, double y, double z, double *val) {
2551{double helper_0 = 48*x;
2552val[0] = -16.0/3.0*z*(helper_0*y + helper_0*z + 24*pow(x, 2) - 36*x + 24*pow(y, 2) + 48*y*z - 36*y + 24*pow(z, 2) - 36*z + 13);}
2553{double helper_0 = 48*x;
2554val[1] = -16.0/3.0*z*(helper_0*y + helper_0*z + 24*pow(x, 2) - 36*x + 24*pow(y, 2) + 48*y*z - 36*y + 24*pow(z, 2) - 36*z + 13);}
2555{double helper_0 = pow(x, 2);
2556double helper_1 = pow(y, 2);
2557double helper_2 = pow(z, 2);
2558double helper_3 = 24*helper_2;
2559double helper_4 = 16*z;
2560val[2] = -16*helper_0*helper_4 - 128*helper_0*y + 96*helper_0 - 16*helper_1*helper_4 - 128*helper_1*x + 96*helper_1 + 288*helper_2 - 16*helper_3*x - 16*helper_3*y - 128.0/3.0*pow(x, 3) - 512*x*y*z + 192*x*y + 384*x*z - 208.0/3.0*x - 128.0/3.0*pow(y, 3) + 384*y*z - 208.0/3.0*y - 512.0/3.0*pow(z, 3) - 416.0/3.0*z + 16;}
2561}
2562
2563void p_4_basis_grad_value_3d_single_14(double x, double y, double z, double *val) {
2564{double helper_0 = 32*z;
2565val[0] = 4*z*(helper_0*x + helper_0*y - 8*x - 8*y + 32*pow(z, 2) - 36*z + 7);}
2566{double helper_0 = 32*z;
2567val[1] = 4*z*(helper_0*x + helper_0*y - 8*x - 8*y + 32*pow(z, 2) - 36*z + 7);}
2568{double helper_0 = x*y;
2569double helper_1 = 72*z;
2570double helper_2 = pow(x, 2);
2571double helper_3 = pow(y, 2);
2572double helper_4 = 96*pow(z, 2);
2573double helper_5 = 32*z;
2574val[2] = 256*helper_0*z - 32*helper_0 - 4*helper_1*x - 4*helper_1*y + 4*helper_2*helper_5 - 16*helper_2 + 4*helper_3*helper_5 - 16*helper_3 + 4*helper_4*x + 4*helper_4*y - 4*helper_4 + 28*x + 28*y + 256*pow(z, 3) + 152*z - 12;}
2575}
2576
2577void p_4_basis_grad_value_3d_single_15(double x, double y, double z, double *val) {
2578{val[0] = -16.0/3.0*z*(8*pow(z, 2) - 6*z + 1);}
2579{val[1] = -16.0/3.0*z*(8*pow(z, 2) - 6*z + 1);}
2580{double helper_0 = pow(z, 2);
2581double helper_1 = 8*helper_0;
2582val[2] = 224*helper_0 - 16*helper_1*x - 16*helper_1*y + 64*x*z - 16.0/3.0*x + 64*y*z - 16.0/3.0*y - 512.0/3.0*pow(z, 3) - 224.0/3.0*z + 16.0/3.0;}
2583}
2584
2585void p_4_basis_grad_value_3d_single_16(double x, double y, double z, double *val) {
2586{val[0] = (16.0/3.0)*z*(24*pow(x, 2) - 12*x + 1);}
2587{val[1] = 0;}
2588{val[2] = (16.0/3.0)*x*(8*pow(x, 2) - 6*x + 1);}
2589}
2590
2591void p_4_basis_grad_value_3d_single_17(double x, double y, double z, double *val) {
2592{double helper_0 = 4*z;
2593val[0] = helper_0*(-helper_0 + 32*x*z - 8*x + 1);}
2594{val[1] = 0;}
2595{double helper_0 = 4*x;
2596val[2] = helper_0*(-helper_0 + 32*x*z - 8*z + 1);}
2597}
2598
2599void p_4_basis_grad_value_3d_single_18(double x, double y, double z, double *val) {
2600{val[0] = (16.0/3.0)*z*(8*pow(z, 2) - 6*z + 1);}
2601{val[1] = 0;}
2602{val[2] = (16.0/3.0)*x*(24*pow(z, 2) - 12*z + 1);}
2603}
2604
2605void p_4_basis_grad_value_3d_single_19(double x, double y, double z, double *val) {
2606{val[0] = 0;}
2607{val[1] = (16.0/3.0)*z*(24*pow(y, 2) - 12*y + 1);}
2608{val[2] = (16.0/3.0)*y*(8*pow(y, 2) - 6*y + 1);}
2609}
2610
2611void p_4_basis_grad_value_3d_single_20(double x, double y, double z, double *val) {
2612{val[0] = 0;}
2613{double helper_0 = 4*z;
2614val[1] = helper_0*(-helper_0 + 32*y*z - 8*y + 1);}
2615{double helper_0 = 4*y;
2616val[2] = helper_0*(-helper_0 + 32*y*z - 8*z + 1);}
2617}
2618
2619void p_4_basis_grad_value_3d_single_21(double x, double y, double z, double *val) {
2620{val[0] = 0;}
2621{val[1] = (16.0/3.0)*z*(8*pow(z, 2) - 6*z + 1);}
2622{val[2] = (16.0/3.0)*y*(24*pow(z, 2) - 12*z + 1);}
2623}
2624
2625void p_4_basis_grad_value_3d_single_22(double x, double y, double z, double *val) {
2626{double helper_0 = x + y + z - 1;
2627double helper_1 = 4*x;
2628double helper_2 = helper_1 + 4*y + 4*z - 3;
2629val[0] = 32*y*(helper_0*helper_1 + helper_0*helper_2 + helper_2*x);}
2630{double helper_0 = x + y + z - 1;
2631double helper_1 = 4*y;
2632double helper_2 = helper_1 + 4*x + 4*z - 3;
2633val[1] = 32*x*(helper_0*helper_1 + helper_0*helper_2 + helper_2*y);}
2634{val[2] = 32*x*y*(8*x + 8*y + 8*z - 7);}
2635}
2636
2637void p_4_basis_grad_value_3d_single_23(double x, double y, double z, double *val) {
2638{val[0] = -32*y*(4*y - 1)*(2*x + y + z - 1);}
2639{double helper_0 = 8*y;
2640val[1] = -32*x*(helper_0*x + helper_0*z - x + 12*pow(y, 2) - 10*y - z + 1);}
2641{val[2] = -32*x*y*(4*y - 1);}
2642}
2643
2644void p_4_basis_grad_value_3d_single_24(double x, double y, double z, double *val) {
2645{double helper_0 = 8*x;
2646val[0] = -32*y*(helper_0*y + helper_0*z + 12*pow(x, 2) - 10*x - y - z + 1);}
2647{val[1] = -32*x*(4*x - 1)*(x + 2*y + z - 1);}
2648{val[2] = -32*x*y*(4*x - 1);}
2649}
2650
2651void p_4_basis_grad_value_3d_single_25(double x, double y, double z, double *val) {
2652{double helper_0 = x + y + z - 1;
2653double helper_1 = 4*x;
2654double helper_2 = helper_1 + 4*y + 4*z - 3;
2655val[0] = 32*z*(helper_0*helper_1 + helper_0*helper_2 + helper_2*x);}
2656{val[1] = 32*x*z*(8*x + 8*y + 8*z - 7);}
2657{double helper_0 = x + y + z - 1;
2658double helper_1 = 4*z;
2659double helper_2 = helper_1 + 4*x + 4*y - 3;
2660val[2] = 32*x*(helper_0*helper_1 + helper_0*helper_2 + helper_2*z);}
2661}
2662
2663void p_4_basis_grad_value_3d_single_26(double x, double y, double z, double *val) {
2664{val[0] = -32*z*(4*z - 1)*(2*x + y + z - 1);}
2665{val[1] = -32*x*z*(4*z - 1);}
2666{double helper_0 = 8*z;
2667val[2] = -32*x*(helper_0*x + helper_0*y - x - y + 12*pow(z, 2) - 10*z + 1);}
2668}
2669
2670void p_4_basis_grad_value_3d_single_27(double x, double y, double z, double *val) {
2671{double helper_0 = 8*x;
2672val[0] = -32*z*(helper_0*y + helper_0*z + 12*pow(x, 2) - 10*x - y - z + 1);}
2673{val[1] = -32*x*z*(4*x - 1);}
2674{val[2] = -32*x*(4*x - 1)*(x + y + 2*z - 1);}
2675}
2676
2677void p_4_basis_grad_value_3d_single_28(double x, double y, double z, double *val) {
2678{val[0] = 32*y*z*(8*x - 1);}
2679{val[1] = 32*x*z*(4*x - 1);}
2680{val[2] = 32*x*y*(4*x - 1);}
2681}
2682
2683void p_4_basis_grad_value_3d_single_29(double x, double y, double z, double *val) {
2684{val[0] = 32*y*z*(4*z - 1);}
2685{val[1] = 32*x*z*(4*z - 1);}
2686{val[2] = 32*x*y*(8*z - 1);}
2687}
2688
2689void p_4_basis_grad_value_3d_single_30(double x, double y, double z, double *val) {
2690{val[0] = 32*y*z*(4*y - 1);}
2691{val[1] = 32*x*z*(8*y - 1);}
2692{val[2] = 32*x*y*(4*y - 1);}
2693}
2694
2695void p_4_basis_grad_value_3d_single_31(double x, double y, double z, double *val) {
2696{val[0] = -32*y*z*(4*y - 1);}
2697{double helper_0 = 8*y;
2698val[1] = -32*z*(helper_0*x + helper_0*z - x + 12*pow(y, 2) - 10*y - z + 1);}
2699{val[2] = -32*y*(4*y - 1)*(x + y + 2*z - 1);}
2700}
2701
2702void p_4_basis_grad_value_3d_single_32(double x, double y, double z, double *val) {
2703{val[0] = -32*y*z*(4*z - 1);}
2704{val[1] = -32*z*(4*z - 1)*(x + 2*y + z - 1);}
2705{double helper_0 = 8*z;
2706val[2] = -32*y*(helper_0*x + helper_0*y - x - y + 12*pow(z, 2) - 10*z + 1);}
2707}
2708
2709void p_4_basis_grad_value_3d_single_33(double x, double y, double z, double *val) {
2710{val[0] = 32*y*z*(8*x + 8*y + 8*z - 7);}
2711{double helper_0 = x + y + z - 1;
2712double helper_1 = 4*y;
2713double helper_2 = helper_1 + 4*x + 4*z - 3;
2714val[1] = 32*z*(helper_0*helper_1 + helper_0*helper_2 + helper_2*y);}
2715{double helper_0 = x + y + z - 1;
2716double helper_1 = 4*z;
2717double helper_2 = helper_1 + 4*x + 4*y - 3;
2718val[2] = 32*y*(helper_0*helper_1 + helper_0*helper_2 + helper_2*z);}
2719}
2720
2721void p_4_basis_grad_value_3d_single_34(double x, double y, double z, double *val) {
2722{val[0] = -256*y*z*(2*x + y + z - 1);}
2723{val[1] = -256*x*z*(x + 2*y + z - 1);}
2724{val[2] = -256*x*y*(x + y + 2*z - 1);}
2725}
2726
2727
2728
2729void p_4_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
2730val.resize(uv.rows(), 3);
2731double gradient[3];
2732switch(local_index){
2733 case 0:
2734 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2735 p_4_basis_grad_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2736 val(i, 0) = gradient[0];
2737 val(i, 1) = gradient[1];
2738 val(i, 2) = gradient[2];
2739 }
2740 break;
2741 case 1:
2742 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2743 p_4_basis_grad_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2744 val(i, 0) = gradient[0];
2745 val(i, 1) = gradient[1];
2746 val(i, 2) = gradient[2];
2747 }
2748 break;
2749 case 2:
2750 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2751 p_4_basis_grad_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2752 val(i, 0) = gradient[0];
2753 val(i, 1) = gradient[1];
2754 val(i, 2) = gradient[2];
2755 }
2756 break;
2757 case 3:
2758 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2759 p_4_basis_grad_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2760 val(i, 0) = gradient[0];
2761 val(i, 1) = gradient[1];
2762 val(i, 2) = gradient[2];
2763 }
2764 break;
2765 case 4:
2766 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2767 p_4_basis_grad_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2768 val(i, 0) = gradient[0];
2769 val(i, 1) = gradient[1];
2770 val(i, 2) = gradient[2];
2771 }
2772 break;
2773 case 5:
2774 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2775 p_4_basis_grad_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2776 val(i, 0) = gradient[0];
2777 val(i, 1) = gradient[1];
2778 val(i, 2) = gradient[2];
2779 }
2780 break;
2781 case 6:
2782 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2783 p_4_basis_grad_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2784 val(i, 0) = gradient[0];
2785 val(i, 1) = gradient[1];
2786 val(i, 2) = gradient[2];
2787 }
2788 break;
2789 case 7:
2790 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2791 p_4_basis_grad_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2792 val(i, 0) = gradient[0];
2793 val(i, 1) = gradient[1];
2794 val(i, 2) = gradient[2];
2795 }
2796 break;
2797 case 8:
2798 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2799 p_4_basis_grad_value_3d_single_8(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2800 val(i, 0) = gradient[0];
2801 val(i, 1) = gradient[1];
2802 val(i, 2) = gradient[2];
2803 }
2804 break;
2805 case 9:
2806 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2807 p_4_basis_grad_value_3d_single_9(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2808 val(i, 0) = gradient[0];
2809 val(i, 1) = gradient[1];
2810 val(i, 2) = gradient[2];
2811 }
2812 break;
2813 case 10:
2814 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2815 p_4_basis_grad_value_3d_single_10(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2816 val(i, 0) = gradient[0];
2817 val(i, 1) = gradient[1];
2818 val(i, 2) = gradient[2];
2819 }
2820 break;
2821 case 11:
2822 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2823 p_4_basis_grad_value_3d_single_11(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2824 val(i, 0) = gradient[0];
2825 val(i, 1) = gradient[1];
2826 val(i, 2) = gradient[2];
2827 }
2828 break;
2829 case 12:
2830 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2831 p_4_basis_grad_value_3d_single_12(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2832 val(i, 0) = gradient[0];
2833 val(i, 1) = gradient[1];
2834 val(i, 2) = gradient[2];
2835 }
2836 break;
2837 case 13:
2838 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2839 p_4_basis_grad_value_3d_single_13(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2840 val(i, 0) = gradient[0];
2841 val(i, 1) = gradient[1];
2842 val(i, 2) = gradient[2];
2843 }
2844 break;
2845 case 14:
2846 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2847 p_4_basis_grad_value_3d_single_14(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2848 val(i, 0) = gradient[0];
2849 val(i, 1) = gradient[1];
2850 val(i, 2) = gradient[2];
2851 }
2852 break;
2853 case 15:
2854 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2855 p_4_basis_grad_value_3d_single_15(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2856 val(i, 0) = gradient[0];
2857 val(i, 1) = gradient[1];
2858 val(i, 2) = gradient[2];
2859 }
2860 break;
2861 case 16:
2862 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2863 p_4_basis_grad_value_3d_single_16(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2864 val(i, 0) = gradient[0];
2865 val(i, 1) = gradient[1];
2866 val(i, 2) = gradient[2];
2867 }
2868 break;
2869 case 17:
2870 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2871 p_4_basis_grad_value_3d_single_17(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2872 val(i, 0) = gradient[0];
2873 val(i, 1) = gradient[1];
2874 val(i, 2) = gradient[2];
2875 }
2876 break;
2877 case 18:
2878 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2879 p_4_basis_grad_value_3d_single_18(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2880 val(i, 0) = gradient[0];
2881 val(i, 1) = gradient[1];
2882 val(i, 2) = gradient[2];
2883 }
2884 break;
2885 case 19:
2886 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2887 p_4_basis_grad_value_3d_single_19(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2888 val(i, 0) = gradient[0];
2889 val(i, 1) = gradient[1];
2890 val(i, 2) = gradient[2];
2891 }
2892 break;
2893 case 20:
2894 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2895 p_4_basis_grad_value_3d_single_20(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2896 val(i, 0) = gradient[0];
2897 val(i, 1) = gradient[1];
2898 val(i, 2) = gradient[2];
2899 }
2900 break;
2901 case 21:
2902 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2903 p_4_basis_grad_value_3d_single_21(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2904 val(i, 0) = gradient[0];
2905 val(i, 1) = gradient[1];
2906 val(i, 2) = gradient[2];
2907 }
2908 break;
2909 case 22:
2910 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2911 p_4_basis_grad_value_3d_single_22(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2912 val(i, 0) = gradient[0];
2913 val(i, 1) = gradient[1];
2914 val(i, 2) = gradient[2];
2915 }
2916 break;
2917 case 23:
2918 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2919 p_4_basis_grad_value_3d_single_23(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2920 val(i, 0) = gradient[0];
2921 val(i, 1) = gradient[1];
2922 val(i, 2) = gradient[2];
2923 }
2924 break;
2925 case 24:
2926 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2927 p_4_basis_grad_value_3d_single_24(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2928 val(i, 0) = gradient[0];
2929 val(i, 1) = gradient[1];
2930 val(i, 2) = gradient[2];
2931 }
2932 break;
2933 case 25:
2934 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2935 p_4_basis_grad_value_3d_single_25(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2936 val(i, 0) = gradient[0];
2937 val(i, 1) = gradient[1];
2938 val(i, 2) = gradient[2];
2939 }
2940 break;
2941 case 26:
2942 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2943 p_4_basis_grad_value_3d_single_26(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2944 val(i, 0) = gradient[0];
2945 val(i, 1) = gradient[1];
2946 val(i, 2) = gradient[2];
2947 }
2948 break;
2949 case 27:
2950 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2951 p_4_basis_grad_value_3d_single_27(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2952 val(i, 0) = gradient[0];
2953 val(i, 1) = gradient[1];
2954 val(i, 2) = gradient[2];
2955 }
2956 break;
2957 case 28:
2958 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2959 p_4_basis_grad_value_3d_single_28(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2960 val(i, 0) = gradient[0];
2961 val(i, 1) = gradient[1];
2962 val(i, 2) = gradient[2];
2963 }
2964 break;
2965 case 29:
2966 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2967 p_4_basis_grad_value_3d_single_29(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2968 val(i, 0) = gradient[0];
2969 val(i, 1) = gradient[1];
2970 val(i, 2) = gradient[2];
2971 }
2972 break;
2973 case 30:
2974 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2975 p_4_basis_grad_value_3d_single_30(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2976 val(i, 0) = gradient[0];
2977 val(i, 1) = gradient[1];
2978 val(i, 2) = gradient[2];
2979 }
2980 break;
2981 case 31:
2982 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2983 p_4_basis_grad_value_3d_single_31(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2984 val(i, 0) = gradient[0];
2985 val(i, 1) = gradient[1];
2986 val(i, 2) = gradient[2];
2987 }
2988 break;
2989 case 32:
2990 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2991 p_4_basis_grad_value_3d_single_32(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2992 val(i, 0) = gradient[0];
2993 val(i, 1) = gradient[1];
2994 val(i, 2) = gradient[2];
2995 }
2996 break;
2997 case 33:
2998 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2999 p_4_basis_grad_value_3d_single_33(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
3000 val(i, 0) = gradient[0];
3001 val(i, 1) = gradient[1];
3002 val(i, 2) = gradient[2];
3003 }
3004 break;
3005 case 34:
3006 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
3007 p_4_basis_grad_value_3d_single_34(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
3008 val(i, 0) = gradient[0];
3009 val(i, 1) = gradient[1];
3010 val(i, 2) = gradient[2];
3011 }
3012 break;
3013 default: assert(false);
3014}
3015}
3016
3017
3018void p_4_nodes_3d(Eigen::MatrixXd &res) {
3019 res.resize(35, 3); res <<
30200, 0, 0,
30211, 0, 0,
30220, 1, 0,
30230, 0, 1,
30241.0/4.0, 0, 0,
30251.0/2.0, 0, 0,
30263.0/4.0, 0, 0,
30273.0/4.0, 1.0/4.0, 0,
30281.0/2.0, 1.0/2.0, 0,
30291.0/4.0, 3.0/4.0, 0,
30300, 3.0/4.0, 0,
30310, 1.0/2.0, 0,
30320, 1.0/4.0, 0,
30330, 0, 1.0/4.0,
30340, 0, 1.0/2.0,
30350, 0, 3.0/4.0,
30363.0/4.0, 0, 1.0/4.0,
30371.0/2.0, 0, 1.0/2.0,
30381.0/4.0, 0, 3.0/4.0,
30390, 3.0/4.0, 1.0/4.0,
30400, 1.0/2.0, 1.0/2.0,
30410, 1.0/4.0, 3.0/4.0,
30421.0/4.0, 1.0/4.0, 0,
30431.0/4.0, 1.0/2.0, 0,
30441.0/2.0, 1.0/4.0, 0,
30451.0/4.0, 0, 1.0/4.0,
30461.0/4.0, 0, 1.0/2.0,
30471.0/2.0, 0, 1.0/4.0,
30481.0/2.0, 1.0/4.0, 1.0/4.0,
30491.0/4.0, 1.0/4.0, 1.0/2.0,
30501.0/4.0, 1.0/2.0, 1.0/4.0,
30510, 1.0/2.0, 1.0/4.0,
30520, 1.0/4.0, 1.0/2.0,
30530, 1.0/4.0, 1.0/4.0,
30541.0/4.0, 1.0/4.0, 1.0/4.0;
3055}
3056
3057
3058}
3059
3060void p_nodes_3d(const int p, Eigen::MatrixXd &val){
3061switch(p){
3062 case 0: p_0_nodes_3d(val); break;
3063 case 1: p_1_nodes_3d(val); break;
3064 case 2: p_2_nodes_3d(val); break;
3065 case 3: p_3_nodes_3d(val); break;
3066 case 4: p_4_nodes_3d(val); break;
3067 default: p_n_nodes_3d(p, val);
3068}}
3069void p_basis_value_3d(const bool bernstein, const int p, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
3070if(bernstein) { b_basis_value_3d(p, local_index, uv, val); return; }
3071
3072
3073switch(p){
3074 case 0: p_0_basis_value_3d(local_index, uv, val); break;
3075 case 1: p_1_basis_value_3d(local_index, uv, val); break;
3076 case 2: p_2_basis_value_3d(local_index, uv, val); break;
3077 case 3: p_3_basis_value_3d(local_index, uv, val); break;
3078 case 4: p_4_basis_value_3d(local_index, uv, val); break;
3079 default: p_n_basis_value_3d(p, local_index, uv, val);
3080}}
3081
3082void p_grad_basis_value_3d(const bool bernstein, const int p, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
3083if(bernstein) { b_grad_basis_value_3d(p, local_index, uv, val); return; }
3084
3085
3086switch(p){
3087 case 0: p_0_basis_grad_value_3d(local_index, uv, val); break;
3088 case 1: p_1_basis_grad_value_3d(local_index, uv, val); break;
3089 case 2: p_2_basis_grad_value_3d(local_index, uv, val); break;
3090 case 3: p_3_basis_grad_value_3d(local_index, uv, val); break;
3091 case 4: p_4_basis_grad_value_3d(local_index, uv, val); break;
3092 default: p_n_basis_grad_value_3d(p, local_index, uv, val);
3093}}
3094
3095namespace {
3096
3097}}}
double val
Definition Assembler.cpp:86
int y
int z
int x
void b_basis_value_3d(const int b, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)
void p_grad_basis_value_2d(const bool bernstein, const int p, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)
void p_n_nodes_3d(const int p, Eigen::MatrixXd &val)
Definition p_n_bases.cpp:81
void p_n_basis_grad_value_2d(const int p, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)
void p_n_basis_grad_value_3d(const int p, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)
void p_grad_basis_value_3d(const bool bernstein, const int p, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)
void p_nodes_2d(const int p, Eigen::MatrixXd &val)
void p_nodes_3d(const int p, Eigen::MatrixXd &val)
void b_grad_basis_value_3d(const int b, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)
void p_n_basis_value_3d(const int p, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)
void b_basis_value_2d(const int b, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)
void p_n_basis_value_2d(const int p, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)
void p_basis_value_3d(const bool bernstein, const int p, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)
void b_grad_basis_value_2d(const int b, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)
void p_n_nodes_2d(const int p, Eigen::MatrixXd &val)
void p_basis_value_2d(const bool bernstein, const int p, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)