PolyFEM
Loading...
Searching...
No Matches
auto_b_bases.cpp
Go to the documentation of this file.
1#include "auto_b_bases.hpp"
2
3
4namespace polyfem {
5namespace autogen {
6namespace {
7double b_0_basis_value_2d_single_0(double x, double y) {
8double result;
9result = 1;
10return result;
11}
12
13
14
15void b_0_basis_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
16result_0.resize(uv.rows(), 1);
17switch(local_index){
18 case 0:
19 for (Eigen::Index i = 0; i < uv.rows(); ++i)
20 result_0(i, 0) = b_0_basis_value_2d_single_0(uv(i, 0), uv(i, 1));
21 break;
22 default: assert(false);
23}
24}
25void b_0_basis_grad_value_2d_single_0(double x, double y, double *val) {
26{val[0] = 0;}
27{val[1] = 0;}
28}
29
30
31
32void b_0_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
33val.resize(uv.rows(), 2);
34double gradient[2];
35switch(local_index){
36 case 0:
37 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
38 b_0_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
39 val(i, 0) = gradient[0];
40 val(i, 1) = gradient[1];
41 }
42 break;
43 default: assert(false);
44}
45}
46
47
48double b_1_basis_value_2d_single_0(double x, double y) {
49double result;
50result = -x - y + 1;
51return result;
52}
53
54double b_1_basis_value_2d_single_1(double x, double y) {
55double result;
56result = x;
57return result;
58}
59
60double b_1_basis_value_2d_single_2(double x, double y) {
61double result;
62result = y;
63return result;
64}
65
66
67
68void b_1_basis_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
69result_0.resize(uv.rows(), 1);
70switch(local_index){
71 case 0:
72 for (Eigen::Index i = 0; i < uv.rows(); ++i)
73 result_0(i, 0) = b_1_basis_value_2d_single_0(uv(i, 0), uv(i, 1));
74 break;
75 case 1:
76 for (Eigen::Index i = 0; i < uv.rows(); ++i)
77 result_0(i, 0) = b_1_basis_value_2d_single_1(uv(i, 0), uv(i, 1));
78 break;
79 case 2:
80 for (Eigen::Index i = 0; i < uv.rows(); ++i)
81 result_0(i, 0) = b_1_basis_value_2d_single_2(uv(i, 0), uv(i, 1));
82 break;
83 default: assert(false);
84}
85}
86void b_1_basis_grad_value_2d_single_0(double x, double y, double *val) {
87{val[0] = -1;}
88{val[1] = -1;}
89}
90
91void b_1_basis_grad_value_2d_single_1(double x, double y, double *val) {
92{val[0] = 1;}
93{val[1] = 0;}
94}
95
96void b_1_basis_grad_value_2d_single_2(double x, double y, double *val) {
97{val[0] = 0;}
98{val[1] = 1;}
99}
100
101
102
103void b_1_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
104val.resize(uv.rows(), 2);
105double gradient[2];
106switch(local_index){
107 case 0:
108 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
109 b_1_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
110 val(i, 0) = gradient[0];
111 val(i, 1) = gradient[1];
112 }
113 break;
114 case 1:
115 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
116 b_1_basis_grad_value_2d_single_1(uv(i, 0), uv(i, 1), gradient);
117 val(i, 0) = gradient[0];
118 val(i, 1) = gradient[1];
119 }
120 break;
121 case 2:
122 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
123 b_1_basis_grad_value_2d_single_2(uv(i, 0), uv(i, 1), gradient);
124 val(i, 0) = gradient[0];
125 val(i, 1) = gradient[1];
126 }
127 break;
128 default: assert(false);
129}
130}
131
132
133double b_2_basis_value_2d_single_0(double x, double y) {
134double result;
135result = pow(x + y - 1, 2);
136return result;
137}
138
139double b_2_basis_value_2d_single_1(double x, double y) {
140double result;
141result = pow(x, 2);
142return result;
143}
144
145double b_2_basis_value_2d_single_2(double x, double y) {
146double result;
147result = pow(y, 2);
148return result;
149}
150
151double b_2_basis_value_2d_single_3(double x, double y) {
152double result;
153result = -2*x*(x + y - 1);
154return result;
155}
156
157double b_2_basis_value_2d_single_4(double x, double y) {
158double result;
159result = 2*x*y;
160return result;
161}
162
163double b_2_basis_value_2d_single_5(double x, double y) {
164double result;
165result = -2*y*(x + y - 1);
166return result;
167}
168
169
170
171void b_2_basis_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
172result_0.resize(uv.rows(), 1);
173switch(local_index){
174 case 0:
175 for (Eigen::Index i = 0; i < uv.rows(); ++i)
176 result_0(i, 0) = b_2_basis_value_2d_single_0(uv(i, 0), uv(i, 1));
177 break;
178 case 1:
179 for (Eigen::Index i = 0; i < uv.rows(); ++i)
180 result_0(i, 0) = b_2_basis_value_2d_single_1(uv(i, 0), uv(i, 1));
181 break;
182 case 2:
183 for (Eigen::Index i = 0; i < uv.rows(); ++i)
184 result_0(i, 0) = b_2_basis_value_2d_single_2(uv(i, 0), uv(i, 1));
185 break;
186 case 3:
187 for (Eigen::Index i = 0; i < uv.rows(); ++i)
188 result_0(i, 0) = b_2_basis_value_2d_single_3(uv(i, 0), uv(i, 1));
189 break;
190 case 4:
191 for (Eigen::Index i = 0; i < uv.rows(); ++i)
192 result_0(i, 0) = b_2_basis_value_2d_single_4(uv(i, 0), uv(i, 1));
193 break;
194 case 5:
195 for (Eigen::Index i = 0; i < uv.rows(); ++i)
196 result_0(i, 0) = b_2_basis_value_2d_single_5(uv(i, 0), uv(i, 1));
197 break;
198 default: assert(false);
199}
200}
201void b_2_basis_grad_value_2d_single_0(double x, double y, double *val) {
202{val[0] = 2*(x + y - 1);}
203{val[1] = 2*(x + y - 1);}
204}
205
206void b_2_basis_grad_value_2d_single_1(double x, double y, double *val) {
207{val[0] = 2*x;}
208{val[1] = 0;}
209}
210
211void b_2_basis_grad_value_2d_single_2(double x, double y, double *val) {
212{val[0] = 0;}
213{val[1] = 2*y;}
214}
215
216void b_2_basis_grad_value_2d_single_3(double x, double y, double *val) {
217{val[0] = 2*(-2*x - y + 1);}
218{val[1] = -2*x;}
219}
220
221void b_2_basis_grad_value_2d_single_4(double x, double y, double *val) {
222{val[0] = 2*y;}
223{val[1] = 2*x;}
224}
225
226void b_2_basis_grad_value_2d_single_5(double x, double y, double *val) {
227{val[0] = -2*y;}
228{val[1] = 2*(-x - 2*y + 1);}
229}
230
231
232
233void b_2_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
234val.resize(uv.rows(), 2);
235double gradient[2];
236switch(local_index){
237 case 0:
238 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
239 b_2_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
240 val(i, 0) = gradient[0];
241 val(i, 1) = gradient[1];
242 }
243 break;
244 case 1:
245 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
246 b_2_basis_grad_value_2d_single_1(uv(i, 0), uv(i, 1), gradient);
247 val(i, 0) = gradient[0];
248 val(i, 1) = gradient[1];
249 }
250 break;
251 case 2:
252 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
253 b_2_basis_grad_value_2d_single_2(uv(i, 0), uv(i, 1), gradient);
254 val(i, 0) = gradient[0];
255 val(i, 1) = gradient[1];
256 }
257 break;
258 case 3:
259 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
260 b_2_basis_grad_value_2d_single_3(uv(i, 0), uv(i, 1), gradient);
261 val(i, 0) = gradient[0];
262 val(i, 1) = gradient[1];
263 }
264 break;
265 case 4:
266 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
267 b_2_basis_grad_value_2d_single_4(uv(i, 0), uv(i, 1), gradient);
268 val(i, 0) = gradient[0];
269 val(i, 1) = gradient[1];
270 }
271 break;
272 case 5:
273 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
274 b_2_basis_grad_value_2d_single_5(uv(i, 0), uv(i, 1), gradient);
275 val(i, 0) = gradient[0];
276 val(i, 1) = gradient[1];
277 }
278 break;
279 default: assert(false);
280}
281}
282
283
284double b_3_basis_value_2d_single_0(double x, double y) {
285double result;
286result = -pow(x + y - 1, 3);
287return result;
288}
289
290double b_3_basis_value_2d_single_1(double x, double y) {
291double result;
292result = pow(x, 3);
293return result;
294}
295
296double b_3_basis_value_2d_single_2(double x, double y) {
297double result;
298result = pow(y, 3);
299return result;
300}
301
302double b_3_basis_value_2d_single_3(double x, double y) {
303double result;
304result = 3*x*pow(x + y - 1, 2);
305return result;
306}
307
308double b_3_basis_value_2d_single_4(double x, double y) {
309double result;
310result = -3*pow(x, 2)*(x + y - 1);
311return result;
312}
313
314double b_3_basis_value_2d_single_5(double x, double y) {
315double result;
316result = 3*pow(x, 2)*y;
317return result;
318}
319
320double b_3_basis_value_2d_single_6(double x, double y) {
321double result;
322result = 3*x*pow(y, 2);
323return result;
324}
325
326double b_3_basis_value_2d_single_7(double x, double y) {
327double result;
328result = -3*pow(y, 2)*(x + y - 1);
329return result;
330}
331
332double b_3_basis_value_2d_single_8(double x, double y) {
333double result;
334result = 3*y*pow(x + y - 1, 2);
335return result;
336}
337
338double b_3_basis_value_2d_single_9(double x, double y) {
339double result;
340result = -6*x*y*(x + y - 1);
341return result;
342}
343
344
345
346void b_3_basis_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
347result_0.resize(uv.rows(), 1);
348switch(local_index){
349 case 0:
350 for (Eigen::Index i = 0; i < uv.rows(); ++i)
351 result_0(i, 0) = b_3_basis_value_2d_single_0(uv(i, 0), uv(i, 1));
352 break;
353 case 1:
354 for (Eigen::Index i = 0; i < uv.rows(); ++i)
355 result_0(i, 0) = b_3_basis_value_2d_single_1(uv(i, 0), uv(i, 1));
356 break;
357 case 2:
358 for (Eigen::Index i = 0; i < uv.rows(); ++i)
359 result_0(i, 0) = b_3_basis_value_2d_single_2(uv(i, 0), uv(i, 1));
360 break;
361 case 3:
362 for (Eigen::Index i = 0; i < uv.rows(); ++i)
363 result_0(i, 0) = b_3_basis_value_2d_single_3(uv(i, 0), uv(i, 1));
364 break;
365 case 4:
366 for (Eigen::Index i = 0; i < uv.rows(); ++i)
367 result_0(i, 0) = b_3_basis_value_2d_single_4(uv(i, 0), uv(i, 1));
368 break;
369 case 5:
370 for (Eigen::Index i = 0; i < uv.rows(); ++i)
371 result_0(i, 0) = b_3_basis_value_2d_single_5(uv(i, 0), uv(i, 1));
372 break;
373 case 6:
374 for (Eigen::Index i = 0; i < uv.rows(); ++i)
375 result_0(i, 0) = b_3_basis_value_2d_single_6(uv(i, 0), uv(i, 1));
376 break;
377 case 7:
378 for (Eigen::Index i = 0; i < uv.rows(); ++i)
379 result_0(i, 0) = b_3_basis_value_2d_single_7(uv(i, 0), uv(i, 1));
380 break;
381 case 8:
382 for (Eigen::Index i = 0; i < uv.rows(); ++i)
383 result_0(i, 0) = b_3_basis_value_2d_single_8(uv(i, 0), uv(i, 1));
384 break;
385 case 9:
386 for (Eigen::Index i = 0; i < uv.rows(); ++i)
387 result_0(i, 0) = b_3_basis_value_2d_single_9(uv(i, 0), uv(i, 1));
388 break;
389 default: assert(false);
390}
391}
392void b_3_basis_grad_value_2d_single_0(double x, double y, double *val) {
393{val[0] = -3*pow(x + y - 1, 2);}
394{val[1] = -3*pow(x + y - 1, 2);}
395}
396
397void b_3_basis_grad_value_2d_single_1(double x, double y, double *val) {
398{val[0] = 3*pow(x, 2);}
399{val[1] = 0;}
400}
401
402void b_3_basis_grad_value_2d_single_2(double x, double y, double *val) {
403{val[0] = 0;}
404{val[1] = 3*pow(y, 2);}
405}
406
407void b_3_basis_grad_value_2d_single_3(double x, double y, double *val) {
408{double helper_0 = y - 1;
409val[0] = 3*(helper_0 + x)*(helper_0 + 3*x);}
410{val[1] = 6*x*(x + y - 1);}
411}
412
413void b_3_basis_grad_value_2d_single_4(double x, double y, double *val) {
414{double helper_0 = 3*x;
415val[0] = -helper_0*(helper_0 + 2*y - 2);}
416{val[1] = -3*pow(x, 2);}
417}
418
419void b_3_basis_grad_value_2d_single_5(double x, double y, double *val) {
420{val[0] = 6*x*y;}
421{val[1] = 3*pow(x, 2);}
422}
423
424void b_3_basis_grad_value_2d_single_6(double x, double y, double *val) {
425{val[0] = 3*pow(y, 2);}
426{val[1] = 6*x*y;}
427}
428
429void b_3_basis_grad_value_2d_single_7(double x, double y, double *val) {
430{val[0] = -3*pow(y, 2);}
431{double helper_0 = 3*y;
432val[1] = -helper_0*(helper_0 + 2*x - 2);}
433}
434
435void b_3_basis_grad_value_2d_single_8(double x, double y, double *val) {
436{val[0] = 6*y*(x + y - 1);}
437{double helper_0 = x - 1;
438val[1] = 3*(helper_0 + y)*(helper_0 + 3*y);}
439}
440
441void b_3_basis_grad_value_2d_single_9(double x, double y, double *val) {
442{val[0] = -6*y*(2*x + y - 1);}
443{val[1] = -6*x*(x + 2*y - 1);}
444}
445
446
447
448void b_3_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
449val.resize(uv.rows(), 2);
450double gradient[2];
451switch(local_index){
452 case 0:
453 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
454 b_3_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
455 val(i, 0) = gradient[0];
456 val(i, 1) = gradient[1];
457 }
458 break;
459 case 1:
460 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
461 b_3_basis_grad_value_2d_single_1(uv(i, 0), uv(i, 1), gradient);
462 val(i, 0) = gradient[0];
463 val(i, 1) = gradient[1];
464 }
465 break;
466 case 2:
467 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
468 b_3_basis_grad_value_2d_single_2(uv(i, 0), uv(i, 1), gradient);
469 val(i, 0) = gradient[0];
470 val(i, 1) = gradient[1];
471 }
472 break;
473 case 3:
474 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
475 b_3_basis_grad_value_2d_single_3(uv(i, 0), uv(i, 1), gradient);
476 val(i, 0) = gradient[0];
477 val(i, 1) = gradient[1];
478 }
479 break;
480 case 4:
481 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
482 b_3_basis_grad_value_2d_single_4(uv(i, 0), uv(i, 1), gradient);
483 val(i, 0) = gradient[0];
484 val(i, 1) = gradient[1];
485 }
486 break;
487 case 5:
488 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
489 b_3_basis_grad_value_2d_single_5(uv(i, 0), uv(i, 1), gradient);
490 val(i, 0) = gradient[0];
491 val(i, 1) = gradient[1];
492 }
493 break;
494 case 6:
495 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
496 b_3_basis_grad_value_2d_single_6(uv(i, 0), uv(i, 1), gradient);
497 val(i, 0) = gradient[0];
498 val(i, 1) = gradient[1];
499 }
500 break;
501 case 7:
502 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
503 b_3_basis_grad_value_2d_single_7(uv(i, 0), uv(i, 1), gradient);
504 val(i, 0) = gradient[0];
505 val(i, 1) = gradient[1];
506 }
507 break;
508 case 8:
509 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
510 b_3_basis_grad_value_2d_single_8(uv(i, 0), uv(i, 1), gradient);
511 val(i, 0) = gradient[0];
512 val(i, 1) = gradient[1];
513 }
514 break;
515 case 9:
516 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
517 b_3_basis_grad_value_2d_single_9(uv(i, 0), uv(i, 1), gradient);
518 val(i, 0) = gradient[0];
519 val(i, 1) = gradient[1];
520 }
521 break;
522 default: assert(false);
523}
524}
525
526
527double b_4_basis_value_2d_single_0(double x, double y) {
528double result;
529result = pow(x + y - 1, 4);
530return result;
531}
532
533double b_4_basis_value_2d_single_1(double x, double y) {
534double result;
535result = pow(x, 4);
536return result;
537}
538
539double b_4_basis_value_2d_single_2(double x, double y) {
540double result;
541result = pow(y, 4);
542return result;
543}
544
545double b_4_basis_value_2d_single_3(double x, double y) {
546double result;
547result = -4*x*pow(x + y - 1, 3);
548return result;
549}
550
551double b_4_basis_value_2d_single_4(double x, double y) {
552double result;
553result = 6*pow(x, 2)*pow(x + y - 1, 2);
554return result;
555}
556
557double b_4_basis_value_2d_single_5(double x, double y) {
558double result;
559result = -4*pow(x, 3)*(x + y - 1);
560return result;
561}
562
563double b_4_basis_value_2d_single_6(double x, double y) {
564double result;
565result = 4*pow(x, 3)*y;
566return result;
567}
568
569double b_4_basis_value_2d_single_7(double x, double y) {
570double result;
571result = 6*pow(x, 2)*pow(y, 2);
572return result;
573}
574
575double b_4_basis_value_2d_single_8(double x, double y) {
576double result;
577result = 4*x*pow(y, 3);
578return result;
579}
580
581double b_4_basis_value_2d_single_9(double x, double y) {
582double result;
583result = -4*pow(y, 3)*(x + y - 1);
584return result;
585}
586
587double b_4_basis_value_2d_single_10(double x, double y) {
588double result;
589result = 6*pow(y, 2)*pow(x + y - 1, 2);
590return result;
591}
592
593double b_4_basis_value_2d_single_11(double x, double y) {
594double result;
595result = -4*y*pow(x + y - 1, 3);
596return result;
597}
598
599double b_4_basis_value_2d_single_12(double x, double y) {
600double result;
601result = 12*x*y*pow(x + y - 1, 2);
602return result;
603}
604
605double b_4_basis_value_2d_single_13(double x, double y) {
606double result;
607result = -12*x*pow(y, 2)*(x + y - 1);
608return result;
609}
610
611double b_4_basis_value_2d_single_14(double x, double y) {
612double result;
613result = -12*pow(x, 2)*y*(x + y - 1);
614return result;
615}
616
617
618
619void b_4_basis_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
620result_0.resize(uv.rows(), 1);
621switch(local_index){
622 case 0:
623 for (Eigen::Index i = 0; i < uv.rows(); ++i)
624 result_0(i, 0) = b_4_basis_value_2d_single_0(uv(i, 0), uv(i, 1));
625 break;
626 case 1:
627 for (Eigen::Index i = 0; i < uv.rows(); ++i)
628 result_0(i, 0) = b_4_basis_value_2d_single_1(uv(i, 0), uv(i, 1));
629 break;
630 case 2:
631 for (Eigen::Index i = 0; i < uv.rows(); ++i)
632 result_0(i, 0) = b_4_basis_value_2d_single_2(uv(i, 0), uv(i, 1));
633 break;
634 case 3:
635 for (Eigen::Index i = 0; i < uv.rows(); ++i)
636 result_0(i, 0) = b_4_basis_value_2d_single_3(uv(i, 0), uv(i, 1));
637 break;
638 case 4:
639 for (Eigen::Index i = 0; i < uv.rows(); ++i)
640 result_0(i, 0) = b_4_basis_value_2d_single_4(uv(i, 0), uv(i, 1));
641 break;
642 case 5:
643 for (Eigen::Index i = 0; i < uv.rows(); ++i)
644 result_0(i, 0) = b_4_basis_value_2d_single_5(uv(i, 0), uv(i, 1));
645 break;
646 case 6:
647 for (Eigen::Index i = 0; i < uv.rows(); ++i)
648 result_0(i, 0) = b_4_basis_value_2d_single_6(uv(i, 0), uv(i, 1));
649 break;
650 case 7:
651 for (Eigen::Index i = 0; i < uv.rows(); ++i)
652 result_0(i, 0) = b_4_basis_value_2d_single_7(uv(i, 0), uv(i, 1));
653 break;
654 case 8:
655 for (Eigen::Index i = 0; i < uv.rows(); ++i)
656 result_0(i, 0) = b_4_basis_value_2d_single_8(uv(i, 0), uv(i, 1));
657 break;
658 case 9:
659 for (Eigen::Index i = 0; i < uv.rows(); ++i)
660 result_0(i, 0) = b_4_basis_value_2d_single_9(uv(i, 0), uv(i, 1));
661 break;
662 case 10:
663 for (Eigen::Index i = 0; i < uv.rows(); ++i)
664 result_0(i, 0) = b_4_basis_value_2d_single_10(uv(i, 0), uv(i, 1));
665 break;
666 case 11:
667 for (Eigen::Index i = 0; i < uv.rows(); ++i)
668 result_0(i, 0) = b_4_basis_value_2d_single_11(uv(i, 0), uv(i, 1));
669 break;
670 case 12:
671 for (Eigen::Index i = 0; i < uv.rows(); ++i)
672 result_0(i, 0) = b_4_basis_value_2d_single_12(uv(i, 0), uv(i, 1));
673 break;
674 case 13:
675 for (Eigen::Index i = 0; i < uv.rows(); ++i)
676 result_0(i, 0) = b_4_basis_value_2d_single_13(uv(i, 0), uv(i, 1));
677 break;
678 case 14:
679 for (Eigen::Index i = 0; i < uv.rows(); ++i)
680 result_0(i, 0) = b_4_basis_value_2d_single_14(uv(i, 0), uv(i, 1));
681 break;
682 default: assert(false);
683}
684}
685void b_4_basis_grad_value_2d_single_0(double x, double y, double *val) {
686{val[0] = 4*pow(x + y - 1, 3);}
687{val[1] = 4*pow(x + y - 1, 3);}
688}
689
690void b_4_basis_grad_value_2d_single_1(double x, double y, double *val) {
691{val[0] = 4*pow(x, 3);}
692{val[1] = 0;}
693}
694
695void b_4_basis_grad_value_2d_single_2(double x, double y, double *val) {
696{val[0] = 0;}
697{val[1] = 4*pow(y, 3);}
698}
699
700void b_4_basis_grad_value_2d_single_3(double x, double y, double *val) {
701{double helper_0 = y - 1;
702val[0] = -4*pow(helper_0 + x, 2)*(helper_0 + 4*x);}
703{val[1] = -12*x*pow(x + y - 1, 2);}
704}
705
706void b_4_basis_grad_value_2d_single_4(double x, double y, double *val) {
707{double helper_0 = y - 1;
708val[0] = 12*x*(helper_0 + x)*(helper_0 + 2*x);}
709{val[1] = 12*pow(x, 2)*(x + y - 1);}
710}
711
712void b_4_basis_grad_value_2d_single_5(double x, double y, double *val) {
713{val[0] = -4*pow(x, 2)*(4*x + 3*y - 3);}
714{val[1] = -4*pow(x, 3);}
715}
716
717void b_4_basis_grad_value_2d_single_6(double x, double y, double *val) {
718{val[0] = 12*pow(x, 2)*y;}
719{val[1] = 4*pow(x, 3);}
720}
721
722void b_4_basis_grad_value_2d_single_7(double x, double y, double *val) {
723{val[0] = 12*x*pow(y, 2);}
724{val[1] = 12*pow(x, 2)*y;}
725}
726
727void b_4_basis_grad_value_2d_single_8(double x, double y, double *val) {
728{val[0] = 4*pow(y, 3);}
729{val[1] = 12*x*pow(y, 2);}
730}
731
732void b_4_basis_grad_value_2d_single_9(double x, double y, double *val) {
733{val[0] = -4*pow(y, 3);}
734{val[1] = -4*pow(y, 2)*(3*x + 4*y - 3);}
735}
736
737void b_4_basis_grad_value_2d_single_10(double x, double y, double *val) {
738{val[0] = 12*pow(y, 2)*(x + y - 1);}
739{double helper_0 = x - 1;
740val[1] = 12*y*(helper_0 + y)*(helper_0 + 2*y);}
741}
742
743void b_4_basis_grad_value_2d_single_11(double x, double y, double *val) {
744{val[0] = -12*y*pow(x + y - 1, 2);}
745{double helper_0 = x - 1;
746val[1] = -4*pow(helper_0 + y, 2)*(helper_0 + 4*y);}
747}
748
749void b_4_basis_grad_value_2d_single_12(double x, double y, double *val) {
750{double helper_0 = y - 1;
751val[0] = 12*y*(helper_0 + x)*(helper_0 + 3*x);}
752{double helper_0 = x - 1;
753val[1] = 12*x*(helper_0 + y)*(helper_0 + 3*y);}
754}
755
756void b_4_basis_grad_value_2d_single_13(double x, double y, double *val) {
757{val[0] = -12*pow(y, 2)*(2*x + y - 1);}
758{val[1] = -12*x*y*(2*x + 3*y - 2);}
759}
760
761void b_4_basis_grad_value_2d_single_14(double x, double y, double *val) {
762{val[0] = -12*x*y*(3*x + 2*y - 2);}
763{val[1] = -12*pow(x, 2)*(x + 2*y - 1);}
764}
765
766
767
768void b_4_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
769val.resize(uv.rows(), 2);
770double gradient[2];
771switch(local_index){
772 case 0:
773 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
774 b_4_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
775 val(i, 0) = gradient[0];
776 val(i, 1) = gradient[1];
777 }
778 break;
779 case 1:
780 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
781 b_4_basis_grad_value_2d_single_1(uv(i, 0), uv(i, 1), gradient);
782 val(i, 0) = gradient[0];
783 val(i, 1) = gradient[1];
784 }
785 break;
786 case 2:
787 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
788 b_4_basis_grad_value_2d_single_2(uv(i, 0), uv(i, 1), gradient);
789 val(i, 0) = gradient[0];
790 val(i, 1) = gradient[1];
791 }
792 break;
793 case 3:
794 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
795 b_4_basis_grad_value_2d_single_3(uv(i, 0), uv(i, 1), gradient);
796 val(i, 0) = gradient[0];
797 val(i, 1) = gradient[1];
798 }
799 break;
800 case 4:
801 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
802 b_4_basis_grad_value_2d_single_4(uv(i, 0), uv(i, 1), gradient);
803 val(i, 0) = gradient[0];
804 val(i, 1) = gradient[1];
805 }
806 break;
807 case 5:
808 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
809 b_4_basis_grad_value_2d_single_5(uv(i, 0), uv(i, 1), gradient);
810 val(i, 0) = gradient[0];
811 val(i, 1) = gradient[1];
812 }
813 break;
814 case 6:
815 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
816 b_4_basis_grad_value_2d_single_6(uv(i, 0), uv(i, 1), gradient);
817 val(i, 0) = gradient[0];
818 val(i, 1) = gradient[1];
819 }
820 break;
821 case 7:
822 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
823 b_4_basis_grad_value_2d_single_7(uv(i, 0), uv(i, 1), gradient);
824 val(i, 0) = gradient[0];
825 val(i, 1) = gradient[1];
826 }
827 break;
828 case 8:
829 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
830 b_4_basis_grad_value_2d_single_8(uv(i, 0), uv(i, 1), gradient);
831 val(i, 0) = gradient[0];
832 val(i, 1) = gradient[1];
833 }
834 break;
835 case 9:
836 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
837 b_4_basis_grad_value_2d_single_9(uv(i, 0), uv(i, 1), gradient);
838 val(i, 0) = gradient[0];
839 val(i, 1) = gradient[1];
840 }
841 break;
842 case 10:
843 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
844 b_4_basis_grad_value_2d_single_10(uv(i, 0), uv(i, 1), gradient);
845 val(i, 0) = gradient[0];
846 val(i, 1) = gradient[1];
847 }
848 break;
849 case 11:
850 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
851 b_4_basis_grad_value_2d_single_11(uv(i, 0), uv(i, 1), gradient);
852 val(i, 0) = gradient[0];
853 val(i, 1) = gradient[1];
854 }
855 break;
856 case 12:
857 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
858 b_4_basis_grad_value_2d_single_12(uv(i, 0), uv(i, 1), gradient);
859 val(i, 0) = gradient[0];
860 val(i, 1) = gradient[1];
861 }
862 break;
863 case 13:
864 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
865 b_4_basis_grad_value_2d_single_13(uv(i, 0), uv(i, 1), gradient);
866 val(i, 0) = gradient[0];
867 val(i, 1) = gradient[1];
868 }
869 break;
870 case 14:
871 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
872 b_4_basis_grad_value_2d_single_14(uv(i, 0), uv(i, 1), gradient);
873 val(i, 0) = gradient[0];
874 val(i, 1) = gradient[1];
875 }
876 break;
877 default: assert(false);
878}
879}
880
881
882}
883
884
885void b_basis_value_2d(const int b, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
886
887switch(b){
888 case 0: b_0_basis_value_2d(local_index, uv, val); break;
889 case 1: b_1_basis_value_2d(local_index, uv, val); break;
890 case 2: b_2_basis_value_2d(local_index, uv, val); break;
891 case 3: b_3_basis_value_2d(local_index, uv, val); break;
892 case 4: b_4_basis_value_2d(local_index, uv, val); break;
893 default: assert(false);
894}}
895
896void b_grad_basis_value_2d(const int b, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
897
898switch(b){
899 case 0: b_0_basis_grad_value_2d(local_index, uv, val); break;
900 case 1: b_1_basis_grad_value_2d(local_index, uv, val); break;
901 case 2: b_2_basis_grad_value_2d(local_index, uv, val); break;
902 case 3: b_3_basis_grad_value_2d(local_index, uv, val); break;
903 case 4: b_4_basis_grad_value_2d(local_index, uv, val); break;
904 default: assert(false);
905}}
906
907namespace {
908double b_0_basis_value_3d_single_0(double x, double y, double z) {
909double result;
910result = 1;
911return result;
912}
913
914
915
916void b_0_basis_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
917result_0.resize(uv.rows(), 1);
918switch(local_index){
919 case 0:
920 for (Eigen::Index i = 0; i < uv.rows(); ++i)
921 result_0(i, 0) = b_0_basis_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2));
922 break;
923 default: assert(false);
924}
925}
926void b_0_basis_grad_value_3d_single_0(double x, double y, double z, double *val) {
927{val[0] = 0;}
928{val[1] = 0;}
929{val[2] = 0;}
930}
931
932
933
934void b_0_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
935val.resize(uv.rows(), 3);
936double gradient[3];
937switch(local_index){
938 case 0:
939 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
940 b_0_basis_grad_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
941 val(i, 0) = gradient[0];
942 val(i, 1) = gradient[1];
943 val(i, 2) = gradient[2];
944 }
945 break;
946 default: assert(false);
947}
948}
949
950
951double b_1_basis_value_3d_single_0(double x, double y, double z) {
952double result;
953result = -x - y - z + 1;
954return result;
955}
956
957double b_1_basis_value_3d_single_1(double x, double y, double z) {
958double result;
959result = x;
960return result;
961}
962
963double b_1_basis_value_3d_single_2(double x, double y, double z) {
964double result;
965result = y;
966return result;
967}
968
969double b_1_basis_value_3d_single_3(double x, double y, double z) {
970double result;
971result = z;
972return result;
973}
974
975
976
977void b_1_basis_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
978result_0.resize(uv.rows(), 1);
979switch(local_index){
980 case 0:
981 for (Eigen::Index i = 0; i < uv.rows(); ++i)
982 result_0(i, 0) = b_1_basis_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2));
983 break;
984 case 1:
985 for (Eigen::Index i = 0; i < uv.rows(); ++i)
986 result_0(i, 0) = b_1_basis_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2));
987 break;
988 case 2:
989 for (Eigen::Index i = 0; i < uv.rows(); ++i)
990 result_0(i, 0) = b_1_basis_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2));
991 break;
992 case 3:
993 for (Eigen::Index i = 0; i < uv.rows(); ++i)
994 result_0(i, 0) = b_1_basis_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2));
995 break;
996 default: assert(false);
997}
998}
999void b_1_basis_grad_value_3d_single_0(double x, double y, double z, double *val) {
1000{val[0] = -1;}
1001{val[1] = -1;}
1002{val[2] = -1;}
1003}
1004
1005void b_1_basis_grad_value_3d_single_1(double x, double y, double z, double *val) {
1006{val[0] = 1;}
1007{val[1] = 0;}
1008{val[2] = 0;}
1009}
1010
1011void b_1_basis_grad_value_3d_single_2(double x, double y, double z, double *val) {
1012{val[0] = 0;}
1013{val[1] = 1;}
1014{val[2] = 0;}
1015}
1016
1017void b_1_basis_grad_value_3d_single_3(double x, double y, double z, double *val) {
1018{val[0] = 0;}
1019{val[1] = 0;}
1020{val[2] = 1;}
1021}
1022
1023
1024
1025void b_1_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
1026val.resize(uv.rows(), 3);
1027double gradient[3];
1028switch(local_index){
1029 case 0:
1030 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1031 b_1_basis_grad_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1032 val(i, 0) = gradient[0];
1033 val(i, 1) = gradient[1];
1034 val(i, 2) = gradient[2];
1035 }
1036 break;
1037 case 1:
1038 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1039 b_1_basis_grad_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1040 val(i, 0) = gradient[0];
1041 val(i, 1) = gradient[1];
1042 val(i, 2) = gradient[2];
1043 }
1044 break;
1045 case 2:
1046 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1047 b_1_basis_grad_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1048 val(i, 0) = gradient[0];
1049 val(i, 1) = gradient[1];
1050 val(i, 2) = gradient[2];
1051 }
1052 break;
1053 case 3:
1054 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1055 b_1_basis_grad_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1056 val(i, 0) = gradient[0];
1057 val(i, 1) = gradient[1];
1058 val(i, 2) = gradient[2];
1059 }
1060 break;
1061 default: assert(false);
1062}
1063}
1064
1065
1066double b_2_basis_value_3d_single_0(double x, double y, double z) {
1067double result;
1068result = pow(x + y + z - 1, 2);
1069return result;
1070}
1071
1072double b_2_basis_value_3d_single_1(double x, double y, double z) {
1073double result;
1074result = pow(x, 2);
1075return result;
1076}
1077
1078double b_2_basis_value_3d_single_2(double x, double y, double z) {
1079double result;
1080result = pow(y, 2);
1081return result;
1082}
1083
1084double b_2_basis_value_3d_single_3(double x, double y, double z) {
1085double result;
1086result = pow(z, 2);
1087return result;
1088}
1089
1090double b_2_basis_value_3d_single_4(double x, double y, double z) {
1091double result;
1092result = -2*x*(x + y + z - 1);
1093return result;
1094}
1095
1096double b_2_basis_value_3d_single_5(double x, double y, double z) {
1097double result;
1098result = 2*x*y;
1099return result;
1100}
1101
1102double b_2_basis_value_3d_single_6(double x, double y, double z) {
1103double result;
1104result = -2*y*(x + y + z - 1);
1105return result;
1106}
1107
1108double b_2_basis_value_3d_single_7(double x, double y, double z) {
1109double result;
1110result = -2*z*(x + y + z - 1);
1111return result;
1112}
1113
1114double b_2_basis_value_3d_single_8(double x, double y, double z) {
1115double result;
1116result = 2*x*z;
1117return result;
1118}
1119
1120double b_2_basis_value_3d_single_9(double x, double y, double z) {
1121double result;
1122result = 2*y*z;
1123return result;
1124}
1125
1126
1127
1128void b_2_basis_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
1129result_0.resize(uv.rows(), 1);
1130switch(local_index){
1131 case 0:
1132 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1133 result_0(i, 0) = b_2_basis_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2));
1134 break;
1135 case 1:
1136 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1137 result_0(i, 0) = b_2_basis_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2));
1138 break;
1139 case 2:
1140 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1141 result_0(i, 0) = b_2_basis_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2));
1142 break;
1143 case 3:
1144 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1145 result_0(i, 0) = b_2_basis_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2));
1146 break;
1147 case 4:
1148 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1149 result_0(i, 0) = b_2_basis_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2));
1150 break;
1151 case 5:
1152 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1153 result_0(i, 0) = b_2_basis_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2));
1154 break;
1155 case 6:
1156 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1157 result_0(i, 0) = b_2_basis_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2));
1158 break;
1159 case 7:
1160 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1161 result_0(i, 0) = b_2_basis_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2));
1162 break;
1163 case 8:
1164 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1165 result_0(i, 0) = b_2_basis_value_3d_single_8(uv(i, 0), uv(i, 1), uv(i, 2));
1166 break;
1167 case 9:
1168 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1169 result_0(i, 0) = b_2_basis_value_3d_single_9(uv(i, 0), uv(i, 1), uv(i, 2));
1170 break;
1171 default: assert(false);
1172}
1173}
1174void b_2_basis_grad_value_3d_single_0(double x, double y, double z, double *val) {
1175{val[0] = 2*(x + y + z - 1);}
1176{val[1] = 2*(x + y + z - 1);}
1177{val[2] = 2*(x + y + z - 1);}
1178}
1179
1180void b_2_basis_grad_value_3d_single_1(double x, double y, double z, double *val) {
1181{val[0] = 2*x;}
1182{val[1] = 0;}
1183{val[2] = 0;}
1184}
1185
1186void b_2_basis_grad_value_3d_single_2(double x, double y, double z, double *val) {
1187{val[0] = 0;}
1188{val[1] = 2*y;}
1189{val[2] = 0;}
1190}
1191
1192void b_2_basis_grad_value_3d_single_3(double x, double y, double z, double *val) {
1193{val[0] = 0;}
1194{val[1] = 0;}
1195{val[2] = 2*z;}
1196}
1197
1198void b_2_basis_grad_value_3d_single_4(double x, double y, double z, double *val) {
1199{val[0] = 2*(-2*x - y - z + 1);}
1200{val[1] = -2*x;}
1201{val[2] = -2*x;}
1202}
1203
1204void b_2_basis_grad_value_3d_single_5(double x, double y, double z, double *val) {
1205{val[0] = 2*y;}
1206{val[1] = 2*x;}
1207{val[2] = 0;}
1208}
1209
1210void b_2_basis_grad_value_3d_single_6(double x, double y, double z, double *val) {
1211{val[0] = -2*y;}
1212{val[1] = 2*(-x - 2*y - z + 1);}
1213{val[2] = -2*y;}
1214}
1215
1216void b_2_basis_grad_value_3d_single_7(double x, double y, double z, double *val) {
1217{val[0] = -2*z;}
1218{val[1] = -2*z;}
1219{val[2] = 2*(-x - y - 2*z + 1);}
1220}
1221
1222void b_2_basis_grad_value_3d_single_8(double x, double y, double z, double *val) {
1223{val[0] = 2*z;}
1224{val[1] = 0;}
1225{val[2] = 2*x;}
1226}
1227
1228void b_2_basis_grad_value_3d_single_9(double x, double y, double z, double *val) {
1229{val[0] = 0;}
1230{val[1] = 2*z;}
1231{val[2] = 2*y;}
1232}
1233
1234
1235
1236void b_2_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
1237val.resize(uv.rows(), 3);
1238double gradient[3];
1239switch(local_index){
1240 case 0:
1241 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1242 b_2_basis_grad_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1243 val(i, 0) = gradient[0];
1244 val(i, 1) = gradient[1];
1245 val(i, 2) = gradient[2];
1246 }
1247 break;
1248 case 1:
1249 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1250 b_2_basis_grad_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1251 val(i, 0) = gradient[0];
1252 val(i, 1) = gradient[1];
1253 val(i, 2) = gradient[2];
1254 }
1255 break;
1256 case 2:
1257 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1258 b_2_basis_grad_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1259 val(i, 0) = gradient[0];
1260 val(i, 1) = gradient[1];
1261 val(i, 2) = gradient[2];
1262 }
1263 break;
1264 case 3:
1265 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1266 b_2_basis_grad_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1267 val(i, 0) = gradient[0];
1268 val(i, 1) = gradient[1];
1269 val(i, 2) = gradient[2];
1270 }
1271 break;
1272 case 4:
1273 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1274 b_2_basis_grad_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1275 val(i, 0) = gradient[0];
1276 val(i, 1) = gradient[1];
1277 val(i, 2) = gradient[2];
1278 }
1279 break;
1280 case 5:
1281 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1282 b_2_basis_grad_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1283 val(i, 0) = gradient[0];
1284 val(i, 1) = gradient[1];
1285 val(i, 2) = gradient[2];
1286 }
1287 break;
1288 case 6:
1289 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1290 b_2_basis_grad_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1291 val(i, 0) = gradient[0];
1292 val(i, 1) = gradient[1];
1293 val(i, 2) = gradient[2];
1294 }
1295 break;
1296 case 7:
1297 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1298 b_2_basis_grad_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1299 val(i, 0) = gradient[0];
1300 val(i, 1) = gradient[1];
1301 val(i, 2) = gradient[2];
1302 }
1303 break;
1304 case 8:
1305 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1306 b_2_basis_grad_value_3d_single_8(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1307 val(i, 0) = gradient[0];
1308 val(i, 1) = gradient[1];
1309 val(i, 2) = gradient[2];
1310 }
1311 break;
1312 case 9:
1313 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1314 b_2_basis_grad_value_3d_single_9(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1315 val(i, 0) = gradient[0];
1316 val(i, 1) = gradient[1];
1317 val(i, 2) = gradient[2];
1318 }
1319 break;
1320 default: assert(false);
1321}
1322}
1323
1324
1325double b_3_basis_value_3d_single_0(double x, double y, double z) {
1326double result;
1327result = -pow(x + y + z - 1, 3);
1328return result;
1329}
1330
1331double b_3_basis_value_3d_single_1(double x, double y, double z) {
1332double result;
1333result = pow(x, 3);
1334return result;
1335}
1336
1337double b_3_basis_value_3d_single_2(double x, double y, double z) {
1338double result;
1339result = pow(y, 3);
1340return result;
1341}
1342
1343double b_3_basis_value_3d_single_3(double x, double y, double z) {
1344double result;
1345result = pow(z, 3);
1346return result;
1347}
1348
1349double b_3_basis_value_3d_single_4(double x, double y, double z) {
1350double result;
1351result = 3*x*pow(x + y + z - 1, 2);
1352return result;
1353}
1354
1355double b_3_basis_value_3d_single_5(double x, double y, double z) {
1356double result;
1357result = -3*pow(x, 2)*(x + y + z - 1);
1358return result;
1359}
1360
1361double b_3_basis_value_3d_single_6(double x, double y, double z) {
1362double result;
1363result = 3*pow(x, 2)*y;
1364return result;
1365}
1366
1367double b_3_basis_value_3d_single_7(double x, double y, double z) {
1368double result;
1369result = 3*x*pow(y, 2);
1370return result;
1371}
1372
1373double b_3_basis_value_3d_single_8(double x, double y, double z) {
1374double result;
1375result = -3*pow(y, 2)*(x + y + z - 1);
1376return result;
1377}
1378
1379double b_3_basis_value_3d_single_9(double x, double y, double z) {
1380double result;
1381result = 3*y*pow(x + y + z - 1, 2);
1382return result;
1383}
1384
1385double b_3_basis_value_3d_single_10(double x, double y, double z) {
1386double result;
1387result = 3*z*pow(x + y + z - 1, 2);
1388return result;
1389}
1390
1391double b_3_basis_value_3d_single_11(double x, double y, double z) {
1392double result;
1393result = -3*pow(z, 2)*(x + y + z - 1);
1394return result;
1395}
1396
1397double b_3_basis_value_3d_single_12(double x, double y, double z) {
1398double result;
1399result = 3*pow(x, 2)*z;
1400return result;
1401}
1402
1403double b_3_basis_value_3d_single_13(double x, double y, double z) {
1404double result;
1405result = 3*x*pow(z, 2);
1406return result;
1407}
1408
1409double b_3_basis_value_3d_single_14(double x, double y, double z) {
1410double result;
1411result = 3*pow(y, 2)*z;
1412return result;
1413}
1414
1415double b_3_basis_value_3d_single_15(double x, double y, double z) {
1416double result;
1417result = 3*y*pow(z, 2);
1418return result;
1419}
1420
1421double b_3_basis_value_3d_single_16(double x, double y, double z) {
1422double result;
1423result = -6*x*y*(x + y + z - 1);
1424return result;
1425}
1426
1427double b_3_basis_value_3d_single_17(double x, double y, double z) {
1428double result;
1429result = -6*x*z*(x + y + z - 1);
1430return result;
1431}
1432
1433double b_3_basis_value_3d_single_18(double x, double y, double z) {
1434double result;
1435result = 6*x*y*z;
1436return result;
1437}
1438
1439double b_3_basis_value_3d_single_19(double x, double y, double z) {
1440double result;
1441result = -6*y*z*(x + y + z - 1);
1442return result;
1443}
1444
1445
1446
1447void b_3_basis_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
1448result_0.resize(uv.rows(), 1);
1449switch(local_index){
1450 case 0:
1451 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1452 result_0(i, 0) = b_3_basis_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2));
1453 break;
1454 case 1:
1455 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1456 result_0(i, 0) = b_3_basis_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2));
1457 break;
1458 case 2:
1459 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1460 result_0(i, 0) = b_3_basis_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2));
1461 break;
1462 case 3:
1463 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1464 result_0(i, 0) = b_3_basis_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2));
1465 break;
1466 case 4:
1467 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1468 result_0(i, 0) = b_3_basis_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2));
1469 break;
1470 case 5:
1471 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1472 result_0(i, 0) = b_3_basis_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2));
1473 break;
1474 case 6:
1475 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1476 result_0(i, 0) = b_3_basis_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2));
1477 break;
1478 case 7:
1479 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1480 result_0(i, 0) = b_3_basis_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2));
1481 break;
1482 case 8:
1483 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1484 result_0(i, 0) = b_3_basis_value_3d_single_8(uv(i, 0), uv(i, 1), uv(i, 2));
1485 break;
1486 case 9:
1487 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1488 result_0(i, 0) = b_3_basis_value_3d_single_9(uv(i, 0), uv(i, 1), uv(i, 2));
1489 break;
1490 case 10:
1491 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1492 result_0(i, 0) = b_3_basis_value_3d_single_10(uv(i, 0), uv(i, 1), uv(i, 2));
1493 break;
1494 case 11:
1495 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1496 result_0(i, 0) = b_3_basis_value_3d_single_11(uv(i, 0), uv(i, 1), uv(i, 2));
1497 break;
1498 case 12:
1499 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1500 result_0(i, 0) = b_3_basis_value_3d_single_12(uv(i, 0), uv(i, 1), uv(i, 2));
1501 break;
1502 case 13:
1503 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1504 result_0(i, 0) = b_3_basis_value_3d_single_13(uv(i, 0), uv(i, 1), uv(i, 2));
1505 break;
1506 case 14:
1507 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1508 result_0(i, 0) = b_3_basis_value_3d_single_14(uv(i, 0), uv(i, 1), uv(i, 2));
1509 break;
1510 case 15:
1511 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1512 result_0(i, 0) = b_3_basis_value_3d_single_15(uv(i, 0), uv(i, 1), uv(i, 2));
1513 break;
1514 case 16:
1515 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1516 result_0(i, 0) = b_3_basis_value_3d_single_16(uv(i, 0), uv(i, 1), uv(i, 2));
1517 break;
1518 case 17:
1519 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1520 result_0(i, 0) = b_3_basis_value_3d_single_17(uv(i, 0), uv(i, 1), uv(i, 2));
1521 break;
1522 case 18:
1523 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1524 result_0(i, 0) = b_3_basis_value_3d_single_18(uv(i, 0), uv(i, 1), uv(i, 2));
1525 break;
1526 case 19:
1527 for (Eigen::Index i = 0; i < uv.rows(); ++i)
1528 result_0(i, 0) = b_3_basis_value_3d_single_19(uv(i, 0), uv(i, 1), uv(i, 2));
1529 break;
1530 default: assert(false);
1531}
1532}
1533void b_3_basis_grad_value_3d_single_0(double x, double y, double z, double *val) {
1534{val[0] = -3*pow(x + y + z - 1, 2);}
1535{val[1] = -3*pow(x + y + z - 1, 2);}
1536{val[2] = -3*pow(x + y + z - 1, 2);}
1537}
1538
1539void b_3_basis_grad_value_3d_single_1(double x, double y, double z, double *val) {
1540{val[0] = 3*pow(x, 2);}
1541{val[1] = 0;}
1542{val[2] = 0;}
1543}
1544
1545void b_3_basis_grad_value_3d_single_2(double x, double y, double z, double *val) {
1546{val[0] = 0;}
1547{val[1] = 3*pow(y, 2);}
1548{val[2] = 0;}
1549}
1550
1551void b_3_basis_grad_value_3d_single_3(double x, double y, double z, double *val) {
1552{val[0] = 0;}
1553{val[1] = 0;}
1554{val[2] = 3*pow(z, 2);}
1555}
1556
1557void b_3_basis_grad_value_3d_single_4(double x, double y, double z, double *val) {
1558{double helper_0 = y + z - 1;
1559val[0] = 3*(helper_0 + x)*(helper_0 + 3*x);}
1560{val[1] = 6*x*(x + y + z - 1);}
1561{val[2] = 6*x*(x + y + z - 1);}
1562}
1563
1564void b_3_basis_grad_value_3d_single_5(double x, double y, double z, double *val) {
1565{double helper_0 = 3*x;
1566val[0] = -helper_0*(helper_0 + 2*y + 2*z - 2);}
1567{val[1] = -3*pow(x, 2);}
1568{val[2] = -3*pow(x, 2);}
1569}
1570
1571void b_3_basis_grad_value_3d_single_6(double x, double y, double z, double *val) {
1572{val[0] = 6*x*y;}
1573{val[1] = 3*pow(x, 2);}
1574{val[2] = 0;}
1575}
1576
1577void b_3_basis_grad_value_3d_single_7(double x, double y, double z, double *val) {
1578{val[0] = 3*pow(y, 2);}
1579{val[1] = 6*x*y;}
1580{val[2] = 0;}
1581}
1582
1583void b_3_basis_grad_value_3d_single_8(double x, double y, double z, double *val) {
1584{val[0] = -3*pow(y, 2);}
1585{double helper_0 = 3*y;
1586val[1] = -helper_0*(helper_0 + 2*x + 2*z - 2);}
1587{val[2] = -3*pow(y, 2);}
1588}
1589
1590void b_3_basis_grad_value_3d_single_9(double x, double y, double z, double *val) {
1591{val[0] = 6*y*(x + y + z - 1);}
1592{double helper_0 = x + z - 1;
1593val[1] = 3*(helper_0 + y)*(helper_0 + 3*y);}
1594{val[2] = 6*y*(x + y + z - 1);}
1595}
1596
1597void b_3_basis_grad_value_3d_single_10(double x, double y, double z, double *val) {
1598{val[0] = 6*z*(x + y + z - 1);}
1599{val[1] = 6*z*(x + y + z - 1);}
1600{double helper_0 = x + y - 1;
1601val[2] = 3*(helper_0 + z)*(helper_0 + 3*z);}
1602}
1603
1604void b_3_basis_grad_value_3d_single_11(double x, double y, double z, double *val) {
1605{val[0] = -3*pow(z, 2);}
1606{val[1] = -3*pow(z, 2);}
1607{double helper_0 = 3*z;
1608val[2] = -helper_0*(helper_0 + 2*x + 2*y - 2);}
1609}
1610
1611void b_3_basis_grad_value_3d_single_12(double x, double y, double z, double *val) {
1612{val[0] = 6*x*z;}
1613{val[1] = 0;}
1614{val[2] = 3*pow(x, 2);}
1615}
1616
1617void b_3_basis_grad_value_3d_single_13(double x, double y, double z, double *val) {
1618{val[0] = 3*pow(z, 2);}
1619{val[1] = 0;}
1620{val[2] = 6*x*z;}
1621}
1622
1623void b_3_basis_grad_value_3d_single_14(double x, double y, double z, double *val) {
1624{val[0] = 0;}
1625{val[1] = 6*y*z;}
1626{val[2] = 3*pow(y, 2);}
1627}
1628
1629void b_3_basis_grad_value_3d_single_15(double x, double y, double z, double *val) {
1630{val[0] = 0;}
1631{val[1] = 3*pow(z, 2);}
1632{val[2] = 6*y*z;}
1633}
1634
1635void b_3_basis_grad_value_3d_single_16(double x, double y, double z, double *val) {
1636{val[0] = -6*y*(2*x + y + z - 1);}
1637{val[1] = -6*x*(x + 2*y + z - 1);}
1638{val[2] = -6*x*y;}
1639}
1640
1641void b_3_basis_grad_value_3d_single_17(double x, double y, double z, double *val) {
1642{val[0] = -6*z*(2*x + y + z - 1);}
1643{val[1] = -6*x*z;}
1644{val[2] = -6*x*(x + y + 2*z - 1);}
1645}
1646
1647void b_3_basis_grad_value_3d_single_18(double x, double y, double z, double *val) {
1648{val[0] = 6*y*z;}
1649{val[1] = 6*x*z;}
1650{val[2] = 6*x*y;}
1651}
1652
1653void b_3_basis_grad_value_3d_single_19(double x, double y, double z, double *val) {
1654{val[0] = -6*y*z;}
1655{val[1] = -6*z*(x + 2*y + z - 1);}
1656{val[2] = -6*y*(x + y + 2*z - 1);}
1657}
1658
1659
1660
1661void b_3_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
1662val.resize(uv.rows(), 3);
1663double gradient[3];
1664switch(local_index){
1665 case 0:
1666 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1667 b_3_basis_grad_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1668 val(i, 0) = gradient[0];
1669 val(i, 1) = gradient[1];
1670 val(i, 2) = gradient[2];
1671 }
1672 break;
1673 case 1:
1674 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1675 b_3_basis_grad_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1676 val(i, 0) = gradient[0];
1677 val(i, 1) = gradient[1];
1678 val(i, 2) = gradient[2];
1679 }
1680 break;
1681 case 2:
1682 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1683 b_3_basis_grad_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1684 val(i, 0) = gradient[0];
1685 val(i, 1) = gradient[1];
1686 val(i, 2) = gradient[2];
1687 }
1688 break;
1689 case 3:
1690 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1691 b_3_basis_grad_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1692 val(i, 0) = gradient[0];
1693 val(i, 1) = gradient[1];
1694 val(i, 2) = gradient[2];
1695 }
1696 break;
1697 case 4:
1698 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1699 b_3_basis_grad_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1700 val(i, 0) = gradient[0];
1701 val(i, 1) = gradient[1];
1702 val(i, 2) = gradient[2];
1703 }
1704 break;
1705 case 5:
1706 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1707 b_3_basis_grad_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1708 val(i, 0) = gradient[0];
1709 val(i, 1) = gradient[1];
1710 val(i, 2) = gradient[2];
1711 }
1712 break;
1713 case 6:
1714 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1715 b_3_basis_grad_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1716 val(i, 0) = gradient[0];
1717 val(i, 1) = gradient[1];
1718 val(i, 2) = gradient[2];
1719 }
1720 break;
1721 case 7:
1722 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1723 b_3_basis_grad_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1724 val(i, 0) = gradient[0];
1725 val(i, 1) = gradient[1];
1726 val(i, 2) = gradient[2];
1727 }
1728 break;
1729 case 8:
1730 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1731 b_3_basis_grad_value_3d_single_8(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1732 val(i, 0) = gradient[0];
1733 val(i, 1) = gradient[1];
1734 val(i, 2) = gradient[2];
1735 }
1736 break;
1737 case 9:
1738 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1739 b_3_basis_grad_value_3d_single_9(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1740 val(i, 0) = gradient[0];
1741 val(i, 1) = gradient[1];
1742 val(i, 2) = gradient[2];
1743 }
1744 break;
1745 case 10:
1746 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1747 b_3_basis_grad_value_3d_single_10(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1748 val(i, 0) = gradient[0];
1749 val(i, 1) = gradient[1];
1750 val(i, 2) = gradient[2];
1751 }
1752 break;
1753 case 11:
1754 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1755 b_3_basis_grad_value_3d_single_11(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1756 val(i, 0) = gradient[0];
1757 val(i, 1) = gradient[1];
1758 val(i, 2) = gradient[2];
1759 }
1760 break;
1761 case 12:
1762 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1763 b_3_basis_grad_value_3d_single_12(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1764 val(i, 0) = gradient[0];
1765 val(i, 1) = gradient[1];
1766 val(i, 2) = gradient[2];
1767 }
1768 break;
1769 case 13:
1770 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1771 b_3_basis_grad_value_3d_single_13(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1772 val(i, 0) = gradient[0];
1773 val(i, 1) = gradient[1];
1774 val(i, 2) = gradient[2];
1775 }
1776 break;
1777 case 14:
1778 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1779 b_3_basis_grad_value_3d_single_14(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1780 val(i, 0) = gradient[0];
1781 val(i, 1) = gradient[1];
1782 val(i, 2) = gradient[2];
1783 }
1784 break;
1785 case 15:
1786 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1787 b_3_basis_grad_value_3d_single_15(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1788 val(i, 0) = gradient[0];
1789 val(i, 1) = gradient[1];
1790 val(i, 2) = gradient[2];
1791 }
1792 break;
1793 case 16:
1794 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1795 b_3_basis_grad_value_3d_single_16(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1796 val(i, 0) = gradient[0];
1797 val(i, 1) = gradient[1];
1798 val(i, 2) = gradient[2];
1799 }
1800 break;
1801 case 17:
1802 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1803 b_3_basis_grad_value_3d_single_17(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1804 val(i, 0) = gradient[0];
1805 val(i, 1) = gradient[1];
1806 val(i, 2) = gradient[2];
1807 }
1808 break;
1809 case 18:
1810 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1811 b_3_basis_grad_value_3d_single_18(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1812 val(i, 0) = gradient[0];
1813 val(i, 1) = gradient[1];
1814 val(i, 2) = gradient[2];
1815 }
1816 break;
1817 case 19:
1818 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
1819 b_3_basis_grad_value_3d_single_19(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
1820 val(i, 0) = gradient[0];
1821 val(i, 1) = gradient[1];
1822 val(i, 2) = gradient[2];
1823 }
1824 break;
1825 default: assert(false);
1826}
1827}
1828
1829
1830double b_4_basis_value_3d_single_0(double x, double y, double z) {
1831double result;
1832result = pow(x + y + z - 1, 4);
1833return result;
1834}
1835
1836double b_4_basis_value_3d_single_1(double x, double y, double z) {
1837double result;
1838result = pow(x, 4);
1839return result;
1840}
1841
1842double b_4_basis_value_3d_single_2(double x, double y, double z) {
1843double result;
1844result = pow(y, 4);
1845return result;
1846}
1847
1848double b_4_basis_value_3d_single_3(double x, double y, double z) {
1849double result;
1850result = pow(z, 4);
1851return result;
1852}
1853
1854double b_4_basis_value_3d_single_4(double x, double y, double z) {
1855double result;
1856result = -4*x*pow(x + y + z - 1, 3);
1857return result;
1858}
1859
1860double b_4_basis_value_3d_single_5(double x, double y, double z) {
1861double result;
1862result = 6*pow(x, 2)*pow(x + y + z - 1, 2);
1863return result;
1864}
1865
1866double b_4_basis_value_3d_single_6(double x, double y, double z) {
1867double result;
1868result = -4*pow(x, 3)*(x + y + z - 1);
1869return result;
1870}
1871
1872double b_4_basis_value_3d_single_7(double x, double y, double z) {
1873double result;
1874result = 4*pow(x, 3)*y;
1875return result;
1876}
1877
1878double b_4_basis_value_3d_single_8(double x, double y, double z) {
1879double result;
1880result = 6*pow(x, 2)*pow(y, 2);
1881return result;
1882}
1883
1884double b_4_basis_value_3d_single_9(double x, double y, double z) {
1885double result;
1886result = 4*x*pow(y, 3);
1887return result;
1888}
1889
1890double b_4_basis_value_3d_single_10(double x, double y, double z) {
1891double result;
1892result = -4*pow(y, 3)*(x + y + z - 1);
1893return result;
1894}
1895
1896double b_4_basis_value_3d_single_11(double x, double y, double z) {
1897double result;
1898result = 6*pow(y, 2)*pow(x + y + z - 1, 2);
1899return result;
1900}
1901
1902double b_4_basis_value_3d_single_12(double x, double y, double z) {
1903double result;
1904result = -4*y*pow(x + y + z - 1, 3);
1905return result;
1906}
1907
1908double b_4_basis_value_3d_single_13(double x, double y, double z) {
1909double result;
1910result = -4*z*pow(x + y + z - 1, 3);
1911return result;
1912}
1913
1914double b_4_basis_value_3d_single_14(double x, double y, double z) {
1915double result;
1916result = 6*pow(z, 2)*pow(x + y + z - 1, 2);
1917return result;
1918}
1919
1920double b_4_basis_value_3d_single_15(double x, double y, double z) {
1921double result;
1922result = -4*pow(z, 3)*(x + y + z - 1);
1923return result;
1924}
1925
1926double b_4_basis_value_3d_single_16(double x, double y, double z) {
1927double result;
1928result = 4*pow(x, 3)*z;
1929return result;
1930}
1931
1932double b_4_basis_value_3d_single_17(double x, double y, double z) {
1933double result;
1934result = 6*pow(x, 2)*pow(z, 2);
1935return result;
1936}
1937
1938double b_4_basis_value_3d_single_18(double x, double y, double z) {
1939double result;
1940result = 4*x*pow(z, 3);
1941return result;
1942}
1943
1944double b_4_basis_value_3d_single_19(double x, double y, double z) {
1945double result;
1946result = 4*pow(y, 3)*z;
1947return result;
1948}
1949
1950double b_4_basis_value_3d_single_20(double x, double y, double z) {
1951double result;
1952result = 6*pow(y, 2)*pow(z, 2);
1953return result;
1954}
1955
1956double b_4_basis_value_3d_single_21(double x, double y, double z) {
1957double result;
1958result = 4*y*pow(z, 3);
1959return result;
1960}
1961
1962double b_4_basis_value_3d_single_22(double x, double y, double z) {
1963double result;
1964result = 12*x*y*pow(x + y + z - 1, 2);
1965return result;
1966}
1967
1968double b_4_basis_value_3d_single_23(double x, double y, double z) {
1969double result;
1970result = -12*x*pow(y, 2)*(x + y + z - 1);
1971return result;
1972}
1973
1974double b_4_basis_value_3d_single_24(double x, double y, double z) {
1975double result;
1976result = -12*pow(x, 2)*y*(x + y + z - 1);
1977return result;
1978}
1979
1980double b_4_basis_value_3d_single_25(double x, double y, double z) {
1981double result;
1982result = 12*x*z*pow(x + y + z - 1, 2);
1983return result;
1984}
1985
1986double b_4_basis_value_3d_single_26(double x, double y, double z) {
1987double result;
1988result = -12*x*pow(z, 2)*(x + y + z - 1);
1989return result;
1990}
1991
1992double b_4_basis_value_3d_single_27(double x, double y, double z) {
1993double result;
1994result = -12*pow(x, 2)*z*(x + y + z - 1);
1995return result;
1996}
1997
1998double b_4_basis_value_3d_single_28(double x, double y, double z) {
1999double result;
2000result = 12*pow(x, 2)*y*z;
2001return result;
2002}
2003
2004double b_4_basis_value_3d_single_29(double x, double y, double z) {
2005double result;
2006result = 12*x*y*pow(z, 2);
2007return result;
2008}
2009
2010double b_4_basis_value_3d_single_30(double x, double y, double z) {
2011double result;
2012result = 12*x*pow(y, 2)*z;
2013return result;
2014}
2015
2016double b_4_basis_value_3d_single_31(double x, double y, double z) {
2017double result;
2018result = -12*pow(y, 2)*z*(x + y + z - 1);
2019return result;
2020}
2021
2022double b_4_basis_value_3d_single_32(double x, double y, double z) {
2023double result;
2024result = -12*y*pow(z, 2)*(x + y + z - 1);
2025return result;
2026}
2027
2028double b_4_basis_value_3d_single_33(double x, double y, double z) {
2029double result;
2030result = 12*y*z*pow(x + y + z - 1, 2);
2031return result;
2032}
2033
2034double b_4_basis_value_3d_single_34(double x, double y, double z) {
2035double result;
2036result = -24*x*y*z*(x + y + z - 1);
2037return result;
2038}
2039
2040
2041
2042void b_4_basis_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
2043result_0.resize(uv.rows(), 1);
2044switch(local_index){
2045 case 0:
2046 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2047 result_0(i, 0) = b_4_basis_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2));
2048 break;
2049 case 1:
2050 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2051 result_0(i, 0) = b_4_basis_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2));
2052 break;
2053 case 2:
2054 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2055 result_0(i, 0) = b_4_basis_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2));
2056 break;
2057 case 3:
2058 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2059 result_0(i, 0) = b_4_basis_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2));
2060 break;
2061 case 4:
2062 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2063 result_0(i, 0) = b_4_basis_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2));
2064 break;
2065 case 5:
2066 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2067 result_0(i, 0) = b_4_basis_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2));
2068 break;
2069 case 6:
2070 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2071 result_0(i, 0) = b_4_basis_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2));
2072 break;
2073 case 7:
2074 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2075 result_0(i, 0) = b_4_basis_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2));
2076 break;
2077 case 8:
2078 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2079 result_0(i, 0) = b_4_basis_value_3d_single_8(uv(i, 0), uv(i, 1), uv(i, 2));
2080 break;
2081 case 9:
2082 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2083 result_0(i, 0) = b_4_basis_value_3d_single_9(uv(i, 0), uv(i, 1), uv(i, 2));
2084 break;
2085 case 10:
2086 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2087 result_0(i, 0) = b_4_basis_value_3d_single_10(uv(i, 0), uv(i, 1), uv(i, 2));
2088 break;
2089 case 11:
2090 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2091 result_0(i, 0) = b_4_basis_value_3d_single_11(uv(i, 0), uv(i, 1), uv(i, 2));
2092 break;
2093 case 12:
2094 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2095 result_0(i, 0) = b_4_basis_value_3d_single_12(uv(i, 0), uv(i, 1), uv(i, 2));
2096 break;
2097 case 13:
2098 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2099 result_0(i, 0) = b_4_basis_value_3d_single_13(uv(i, 0), uv(i, 1), uv(i, 2));
2100 break;
2101 case 14:
2102 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2103 result_0(i, 0) = b_4_basis_value_3d_single_14(uv(i, 0), uv(i, 1), uv(i, 2));
2104 break;
2105 case 15:
2106 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2107 result_0(i, 0) = b_4_basis_value_3d_single_15(uv(i, 0), uv(i, 1), uv(i, 2));
2108 break;
2109 case 16:
2110 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2111 result_0(i, 0) = b_4_basis_value_3d_single_16(uv(i, 0), uv(i, 1), uv(i, 2));
2112 break;
2113 case 17:
2114 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2115 result_0(i, 0) = b_4_basis_value_3d_single_17(uv(i, 0), uv(i, 1), uv(i, 2));
2116 break;
2117 case 18:
2118 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2119 result_0(i, 0) = b_4_basis_value_3d_single_18(uv(i, 0), uv(i, 1), uv(i, 2));
2120 break;
2121 case 19:
2122 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2123 result_0(i, 0) = b_4_basis_value_3d_single_19(uv(i, 0), uv(i, 1), uv(i, 2));
2124 break;
2125 case 20:
2126 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2127 result_0(i, 0) = b_4_basis_value_3d_single_20(uv(i, 0), uv(i, 1), uv(i, 2));
2128 break;
2129 case 21:
2130 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2131 result_0(i, 0) = b_4_basis_value_3d_single_21(uv(i, 0), uv(i, 1), uv(i, 2));
2132 break;
2133 case 22:
2134 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2135 result_0(i, 0) = b_4_basis_value_3d_single_22(uv(i, 0), uv(i, 1), uv(i, 2));
2136 break;
2137 case 23:
2138 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2139 result_0(i, 0) = b_4_basis_value_3d_single_23(uv(i, 0), uv(i, 1), uv(i, 2));
2140 break;
2141 case 24:
2142 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2143 result_0(i, 0) = b_4_basis_value_3d_single_24(uv(i, 0), uv(i, 1), uv(i, 2));
2144 break;
2145 case 25:
2146 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2147 result_0(i, 0) = b_4_basis_value_3d_single_25(uv(i, 0), uv(i, 1), uv(i, 2));
2148 break;
2149 case 26:
2150 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2151 result_0(i, 0) = b_4_basis_value_3d_single_26(uv(i, 0), uv(i, 1), uv(i, 2));
2152 break;
2153 case 27:
2154 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2155 result_0(i, 0) = b_4_basis_value_3d_single_27(uv(i, 0), uv(i, 1), uv(i, 2));
2156 break;
2157 case 28:
2158 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2159 result_0(i, 0) = b_4_basis_value_3d_single_28(uv(i, 0), uv(i, 1), uv(i, 2));
2160 break;
2161 case 29:
2162 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2163 result_0(i, 0) = b_4_basis_value_3d_single_29(uv(i, 0), uv(i, 1), uv(i, 2));
2164 break;
2165 case 30:
2166 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2167 result_0(i, 0) = b_4_basis_value_3d_single_30(uv(i, 0), uv(i, 1), uv(i, 2));
2168 break;
2169 case 31:
2170 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2171 result_0(i, 0) = b_4_basis_value_3d_single_31(uv(i, 0), uv(i, 1), uv(i, 2));
2172 break;
2173 case 32:
2174 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2175 result_0(i, 0) = b_4_basis_value_3d_single_32(uv(i, 0), uv(i, 1), uv(i, 2));
2176 break;
2177 case 33:
2178 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2179 result_0(i, 0) = b_4_basis_value_3d_single_33(uv(i, 0), uv(i, 1), uv(i, 2));
2180 break;
2181 case 34:
2182 for (Eigen::Index i = 0; i < uv.rows(); ++i)
2183 result_0(i, 0) = b_4_basis_value_3d_single_34(uv(i, 0), uv(i, 1), uv(i, 2));
2184 break;
2185 default: assert(false);
2186}
2187}
2188void b_4_basis_grad_value_3d_single_0(double x, double y, double z, double *val) {
2189{val[0] = 4*pow(x + y + z - 1, 3);}
2190{val[1] = 4*pow(x + y + z - 1, 3);}
2191{val[2] = 4*pow(x + y + z - 1, 3);}
2192}
2193
2194void b_4_basis_grad_value_3d_single_1(double x, double y, double z, double *val) {
2195{val[0] = 4*pow(x, 3);}
2196{val[1] = 0;}
2197{val[2] = 0;}
2198}
2199
2200void b_4_basis_grad_value_3d_single_2(double x, double y, double z, double *val) {
2201{val[0] = 0;}
2202{val[1] = 4*pow(y, 3);}
2203{val[2] = 0;}
2204}
2205
2206void b_4_basis_grad_value_3d_single_3(double x, double y, double z, double *val) {
2207{val[0] = 0;}
2208{val[1] = 0;}
2209{val[2] = 4*pow(z, 3);}
2210}
2211
2212void b_4_basis_grad_value_3d_single_4(double x, double y, double z, double *val) {
2213{double helper_0 = y + z - 1;
2214val[0] = -4*pow(helper_0 + x, 2)*(helper_0 + 4*x);}
2215{val[1] = -12*x*pow(x + y + z - 1, 2);}
2216{val[2] = -12*x*pow(x + y + z - 1, 2);}
2217}
2218
2219void b_4_basis_grad_value_3d_single_5(double x, double y, double z, double *val) {
2220{double helper_0 = y + z - 1;
2221val[0] = 12*x*(helper_0 + x)*(helper_0 + 2*x);}
2222{val[1] = 12*pow(x, 2)*(x + y + z - 1);}
2223{val[2] = 12*pow(x, 2)*(x + y + z - 1);}
2224}
2225
2226void b_4_basis_grad_value_3d_single_6(double x, double y, double z, double *val) {
2227{val[0] = -4*pow(x, 2)*(4*x + 3*y + 3*z - 3);}
2228{val[1] = -4*pow(x, 3);}
2229{val[2] = -4*pow(x, 3);}
2230}
2231
2232void b_4_basis_grad_value_3d_single_7(double x, double y, double z, double *val) {
2233{val[0] = 12*pow(x, 2)*y;}
2234{val[1] = 4*pow(x, 3);}
2235{val[2] = 0;}
2236}
2237
2238void b_4_basis_grad_value_3d_single_8(double x, double y, double z, double *val) {
2239{val[0] = 12*x*pow(y, 2);}
2240{val[1] = 12*pow(x, 2)*y;}
2241{val[2] = 0;}
2242}
2243
2244void b_4_basis_grad_value_3d_single_9(double x, double y, double z, double *val) {
2245{val[0] = 4*pow(y, 3);}
2246{val[1] = 12*x*pow(y, 2);}
2247{val[2] = 0;}
2248}
2249
2250void b_4_basis_grad_value_3d_single_10(double x, double y, double z, double *val) {
2251{val[0] = -4*pow(y, 3);}
2252{val[1] = -4*pow(y, 2)*(3*x + 4*y + 3*z - 3);}
2253{val[2] = -4*pow(y, 3);}
2254}
2255
2256void b_4_basis_grad_value_3d_single_11(double x, double y, double z, double *val) {
2257{val[0] = 12*pow(y, 2)*(x + y + z - 1);}
2258{double helper_0 = x + z - 1;
2259val[1] = 12*y*(helper_0 + y)*(helper_0 + 2*y);}
2260{val[2] = 12*pow(y, 2)*(x + y + z - 1);}
2261}
2262
2263void b_4_basis_grad_value_3d_single_12(double x, double y, double z, double *val) {
2264{val[0] = -12*y*pow(x + y + z - 1, 2);}
2265{double helper_0 = x + z - 1;
2266val[1] = -4*pow(helper_0 + y, 2)*(helper_0 + 4*y);}
2267{val[2] = -12*y*pow(x + y + z - 1, 2);}
2268}
2269
2270void b_4_basis_grad_value_3d_single_13(double x, double y, double z, double *val) {
2271{val[0] = -12*z*pow(x + y + z - 1, 2);}
2272{val[1] = -12*z*pow(x + y + z - 1, 2);}
2273{double helper_0 = x + y - 1;
2274val[2] = -4*pow(helper_0 + z, 2)*(helper_0 + 4*z);}
2275}
2276
2277void b_4_basis_grad_value_3d_single_14(double x, double y, double z, double *val) {
2278{val[0] = 12*pow(z, 2)*(x + y + z - 1);}
2279{val[1] = 12*pow(z, 2)*(x + y + z - 1);}
2280{double helper_0 = x + y - 1;
2281val[2] = 12*z*(helper_0 + z)*(helper_0 + 2*z);}
2282}
2283
2284void b_4_basis_grad_value_3d_single_15(double x, double y, double z, double *val) {
2285{val[0] = -4*pow(z, 3);}
2286{val[1] = -4*pow(z, 3);}
2287{val[2] = -4*pow(z, 2)*(3*x + 3*y + 4*z - 3);}
2288}
2289
2290void b_4_basis_grad_value_3d_single_16(double x, double y, double z, double *val) {
2291{val[0] = 12*pow(x, 2)*z;}
2292{val[1] = 0;}
2293{val[2] = 4*pow(x, 3);}
2294}
2295
2296void b_4_basis_grad_value_3d_single_17(double x, double y, double z, double *val) {
2297{val[0] = 12*x*pow(z, 2);}
2298{val[1] = 0;}
2299{val[2] = 12*pow(x, 2)*z;}
2300}
2301
2302void b_4_basis_grad_value_3d_single_18(double x, double y, double z, double *val) {
2303{val[0] = 4*pow(z, 3);}
2304{val[1] = 0;}
2305{val[2] = 12*x*pow(z, 2);}
2306}
2307
2308void b_4_basis_grad_value_3d_single_19(double x, double y, double z, double *val) {
2309{val[0] = 0;}
2310{val[1] = 12*pow(y, 2)*z;}
2311{val[2] = 4*pow(y, 3);}
2312}
2313
2314void b_4_basis_grad_value_3d_single_20(double x, double y, double z, double *val) {
2315{val[0] = 0;}
2316{val[1] = 12*y*pow(z, 2);}
2317{val[2] = 12*pow(y, 2)*z;}
2318}
2319
2320void b_4_basis_grad_value_3d_single_21(double x, double y, double z, double *val) {
2321{val[0] = 0;}
2322{val[1] = 4*pow(z, 3);}
2323{val[2] = 12*y*pow(z, 2);}
2324}
2325
2326void b_4_basis_grad_value_3d_single_22(double x, double y, double z, double *val) {
2327{double helper_0 = y + z - 1;
2328val[0] = 12*y*(helper_0 + x)*(helper_0 + 3*x);}
2329{double helper_0 = x + z - 1;
2330val[1] = 12*x*(helper_0 + y)*(helper_0 + 3*y);}
2331{val[2] = 24*x*y*(x + y + z - 1);}
2332}
2333
2334void b_4_basis_grad_value_3d_single_23(double x, double y, double z, double *val) {
2335{val[0] = -12*pow(y, 2)*(2*x + y + z - 1);}
2336{val[1] = -12*x*y*(2*x + 3*y + 2*z - 2);}
2337{val[2] = -12*x*pow(y, 2);}
2338}
2339
2340void b_4_basis_grad_value_3d_single_24(double x, double y, double z, double *val) {
2341{val[0] = -12*x*y*(3*x + 2*y + 2*z - 2);}
2342{val[1] = -12*pow(x, 2)*(x + 2*y + z - 1);}
2343{val[2] = -12*pow(x, 2)*y;}
2344}
2345
2346void b_4_basis_grad_value_3d_single_25(double x, double y, double z, double *val) {
2347{double helper_0 = y + z - 1;
2348val[0] = 12*z*(helper_0 + x)*(helper_0 + 3*x);}
2349{val[1] = 24*x*z*(x + y + z - 1);}
2350{double helper_0 = x + y - 1;
2351val[2] = 12*x*(helper_0 + z)*(helper_0 + 3*z);}
2352}
2353
2354void b_4_basis_grad_value_3d_single_26(double x, double y, double z, double *val) {
2355{val[0] = -12*pow(z, 2)*(2*x + y + z - 1);}
2356{val[1] = -12*x*pow(z, 2);}
2357{val[2] = -12*x*z*(2*x + 2*y + 3*z - 2);}
2358}
2359
2360void b_4_basis_grad_value_3d_single_27(double x, double y, double z, double *val) {
2361{val[0] = -12*x*z*(3*x + 2*y + 2*z - 2);}
2362{val[1] = -12*pow(x, 2)*z;}
2363{val[2] = -12*pow(x, 2)*(x + y + 2*z - 1);}
2364}
2365
2366void b_4_basis_grad_value_3d_single_28(double x, double y, double z, double *val) {
2367{val[0] = 24*x*y*z;}
2368{val[1] = 12*pow(x, 2)*z;}
2369{val[2] = 12*pow(x, 2)*y;}
2370}
2371
2372void b_4_basis_grad_value_3d_single_29(double x, double y, double z, double *val) {
2373{val[0] = 12*y*pow(z, 2);}
2374{val[1] = 12*x*pow(z, 2);}
2375{val[2] = 24*x*y*z;}
2376}
2377
2378void b_4_basis_grad_value_3d_single_30(double x, double y, double z, double *val) {
2379{val[0] = 12*pow(y, 2)*z;}
2380{val[1] = 24*x*y*z;}
2381{val[2] = 12*x*pow(y, 2);}
2382}
2383
2384void b_4_basis_grad_value_3d_single_31(double x, double y, double z, double *val) {
2385{val[0] = -12*pow(y, 2)*z;}
2386{val[1] = -12*y*z*(2*x + 3*y + 2*z - 2);}
2387{val[2] = -12*pow(y, 2)*(x + y + 2*z - 1);}
2388}
2389
2390void b_4_basis_grad_value_3d_single_32(double x, double y, double z, double *val) {
2391{val[0] = -12*y*pow(z, 2);}
2392{val[1] = -12*pow(z, 2)*(x + 2*y + z - 1);}
2393{val[2] = -12*y*z*(2*x + 2*y + 3*z - 2);}
2394}
2395
2396void b_4_basis_grad_value_3d_single_33(double x, double y, double z, double *val) {
2397{val[0] = 24*y*z*(x + y + z - 1);}
2398{double helper_0 = x + z - 1;
2399val[1] = 12*z*(helper_0 + y)*(helper_0 + 3*y);}
2400{double helper_0 = x + y - 1;
2401val[2] = 12*y*(helper_0 + z)*(helper_0 + 3*z);}
2402}
2403
2404void b_4_basis_grad_value_3d_single_34(double x, double y, double z, double *val) {
2405{val[0] = -24*y*z*(2*x + y + z - 1);}
2406{val[1] = -24*x*z*(x + 2*y + z - 1);}
2407{val[2] = -24*x*y*(x + y + 2*z - 1);}
2408}
2409
2410
2411
2412void b_4_basis_grad_value_3d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
2413val.resize(uv.rows(), 3);
2414double gradient[3];
2415switch(local_index){
2416 case 0:
2417 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2418 b_4_basis_grad_value_3d_single_0(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2419 val(i, 0) = gradient[0];
2420 val(i, 1) = gradient[1];
2421 val(i, 2) = gradient[2];
2422 }
2423 break;
2424 case 1:
2425 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2426 b_4_basis_grad_value_3d_single_1(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2427 val(i, 0) = gradient[0];
2428 val(i, 1) = gradient[1];
2429 val(i, 2) = gradient[2];
2430 }
2431 break;
2432 case 2:
2433 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2434 b_4_basis_grad_value_3d_single_2(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2435 val(i, 0) = gradient[0];
2436 val(i, 1) = gradient[1];
2437 val(i, 2) = gradient[2];
2438 }
2439 break;
2440 case 3:
2441 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2442 b_4_basis_grad_value_3d_single_3(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2443 val(i, 0) = gradient[0];
2444 val(i, 1) = gradient[1];
2445 val(i, 2) = gradient[2];
2446 }
2447 break;
2448 case 4:
2449 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2450 b_4_basis_grad_value_3d_single_4(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2451 val(i, 0) = gradient[0];
2452 val(i, 1) = gradient[1];
2453 val(i, 2) = gradient[2];
2454 }
2455 break;
2456 case 5:
2457 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2458 b_4_basis_grad_value_3d_single_5(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2459 val(i, 0) = gradient[0];
2460 val(i, 1) = gradient[1];
2461 val(i, 2) = gradient[2];
2462 }
2463 break;
2464 case 6:
2465 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2466 b_4_basis_grad_value_3d_single_6(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2467 val(i, 0) = gradient[0];
2468 val(i, 1) = gradient[1];
2469 val(i, 2) = gradient[2];
2470 }
2471 break;
2472 case 7:
2473 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2474 b_4_basis_grad_value_3d_single_7(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2475 val(i, 0) = gradient[0];
2476 val(i, 1) = gradient[1];
2477 val(i, 2) = gradient[2];
2478 }
2479 break;
2480 case 8:
2481 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2482 b_4_basis_grad_value_3d_single_8(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2483 val(i, 0) = gradient[0];
2484 val(i, 1) = gradient[1];
2485 val(i, 2) = gradient[2];
2486 }
2487 break;
2488 case 9:
2489 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2490 b_4_basis_grad_value_3d_single_9(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2491 val(i, 0) = gradient[0];
2492 val(i, 1) = gradient[1];
2493 val(i, 2) = gradient[2];
2494 }
2495 break;
2496 case 10:
2497 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2498 b_4_basis_grad_value_3d_single_10(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2499 val(i, 0) = gradient[0];
2500 val(i, 1) = gradient[1];
2501 val(i, 2) = gradient[2];
2502 }
2503 break;
2504 case 11:
2505 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2506 b_4_basis_grad_value_3d_single_11(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2507 val(i, 0) = gradient[0];
2508 val(i, 1) = gradient[1];
2509 val(i, 2) = gradient[2];
2510 }
2511 break;
2512 case 12:
2513 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2514 b_4_basis_grad_value_3d_single_12(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2515 val(i, 0) = gradient[0];
2516 val(i, 1) = gradient[1];
2517 val(i, 2) = gradient[2];
2518 }
2519 break;
2520 case 13:
2521 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2522 b_4_basis_grad_value_3d_single_13(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2523 val(i, 0) = gradient[0];
2524 val(i, 1) = gradient[1];
2525 val(i, 2) = gradient[2];
2526 }
2527 break;
2528 case 14:
2529 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2530 b_4_basis_grad_value_3d_single_14(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2531 val(i, 0) = gradient[0];
2532 val(i, 1) = gradient[1];
2533 val(i, 2) = gradient[2];
2534 }
2535 break;
2536 case 15:
2537 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2538 b_4_basis_grad_value_3d_single_15(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2539 val(i, 0) = gradient[0];
2540 val(i, 1) = gradient[1];
2541 val(i, 2) = gradient[2];
2542 }
2543 break;
2544 case 16:
2545 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2546 b_4_basis_grad_value_3d_single_16(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2547 val(i, 0) = gradient[0];
2548 val(i, 1) = gradient[1];
2549 val(i, 2) = gradient[2];
2550 }
2551 break;
2552 case 17:
2553 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2554 b_4_basis_grad_value_3d_single_17(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2555 val(i, 0) = gradient[0];
2556 val(i, 1) = gradient[1];
2557 val(i, 2) = gradient[2];
2558 }
2559 break;
2560 case 18:
2561 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2562 b_4_basis_grad_value_3d_single_18(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2563 val(i, 0) = gradient[0];
2564 val(i, 1) = gradient[1];
2565 val(i, 2) = gradient[2];
2566 }
2567 break;
2568 case 19:
2569 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2570 b_4_basis_grad_value_3d_single_19(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2571 val(i, 0) = gradient[0];
2572 val(i, 1) = gradient[1];
2573 val(i, 2) = gradient[2];
2574 }
2575 break;
2576 case 20:
2577 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2578 b_4_basis_grad_value_3d_single_20(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2579 val(i, 0) = gradient[0];
2580 val(i, 1) = gradient[1];
2581 val(i, 2) = gradient[2];
2582 }
2583 break;
2584 case 21:
2585 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2586 b_4_basis_grad_value_3d_single_21(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2587 val(i, 0) = gradient[0];
2588 val(i, 1) = gradient[1];
2589 val(i, 2) = gradient[2];
2590 }
2591 break;
2592 case 22:
2593 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2594 b_4_basis_grad_value_3d_single_22(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2595 val(i, 0) = gradient[0];
2596 val(i, 1) = gradient[1];
2597 val(i, 2) = gradient[2];
2598 }
2599 break;
2600 case 23:
2601 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2602 b_4_basis_grad_value_3d_single_23(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2603 val(i, 0) = gradient[0];
2604 val(i, 1) = gradient[1];
2605 val(i, 2) = gradient[2];
2606 }
2607 break;
2608 case 24:
2609 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2610 b_4_basis_grad_value_3d_single_24(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2611 val(i, 0) = gradient[0];
2612 val(i, 1) = gradient[1];
2613 val(i, 2) = gradient[2];
2614 }
2615 break;
2616 case 25:
2617 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2618 b_4_basis_grad_value_3d_single_25(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2619 val(i, 0) = gradient[0];
2620 val(i, 1) = gradient[1];
2621 val(i, 2) = gradient[2];
2622 }
2623 break;
2624 case 26:
2625 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2626 b_4_basis_grad_value_3d_single_26(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2627 val(i, 0) = gradient[0];
2628 val(i, 1) = gradient[1];
2629 val(i, 2) = gradient[2];
2630 }
2631 break;
2632 case 27:
2633 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2634 b_4_basis_grad_value_3d_single_27(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2635 val(i, 0) = gradient[0];
2636 val(i, 1) = gradient[1];
2637 val(i, 2) = gradient[2];
2638 }
2639 break;
2640 case 28:
2641 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2642 b_4_basis_grad_value_3d_single_28(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2643 val(i, 0) = gradient[0];
2644 val(i, 1) = gradient[1];
2645 val(i, 2) = gradient[2];
2646 }
2647 break;
2648 case 29:
2649 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2650 b_4_basis_grad_value_3d_single_29(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2651 val(i, 0) = gradient[0];
2652 val(i, 1) = gradient[1];
2653 val(i, 2) = gradient[2];
2654 }
2655 break;
2656 case 30:
2657 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2658 b_4_basis_grad_value_3d_single_30(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2659 val(i, 0) = gradient[0];
2660 val(i, 1) = gradient[1];
2661 val(i, 2) = gradient[2];
2662 }
2663 break;
2664 case 31:
2665 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2666 b_4_basis_grad_value_3d_single_31(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2667 val(i, 0) = gradient[0];
2668 val(i, 1) = gradient[1];
2669 val(i, 2) = gradient[2];
2670 }
2671 break;
2672 case 32:
2673 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2674 b_4_basis_grad_value_3d_single_32(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2675 val(i, 0) = gradient[0];
2676 val(i, 1) = gradient[1];
2677 val(i, 2) = gradient[2];
2678 }
2679 break;
2680 case 33:
2681 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2682 b_4_basis_grad_value_3d_single_33(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2683 val(i, 0) = gradient[0];
2684 val(i, 1) = gradient[1];
2685 val(i, 2) = gradient[2];
2686 }
2687 break;
2688 case 34:
2689 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
2690 b_4_basis_grad_value_3d_single_34(uv(i, 0), uv(i, 1), uv(i, 2), gradient);
2691 val(i, 0) = gradient[0];
2692 val(i, 1) = gradient[1];
2693 val(i, 2) = gradient[2];
2694 }
2695 break;
2696 default: assert(false);
2697}
2698}
2699
2700
2701}
2702
2703
2704void b_basis_value_3d(const int b, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
2705
2706switch(b){
2707 case 0: b_0_basis_value_3d(local_index, uv, val); break;
2708 case 1: b_1_basis_value_3d(local_index, uv, val); break;
2709 case 2: b_2_basis_value_3d(local_index, uv, val); break;
2710 case 3: b_3_basis_value_3d(local_index, uv, val); break;
2711 case 4: b_4_basis_value_3d(local_index, uv, val); break;
2712 default: assert(false);
2713}}
2714
2715void b_grad_basis_value_3d(const int b, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
2716
2717switch(b){
2718 case 0: b_0_basis_grad_value_3d(local_index, uv, val); break;
2719 case 1: b_1_basis_grad_value_3d(local_index, uv, val); break;
2720 case 2: b_2_basis_grad_value_3d(local_index, uv, val); break;
2721 case 3: b_3_basis_grad_value_3d(local_index, uv, val); break;
2722 case 4: b_4_basis_grad_value_3d(local_index, uv, val); break;
2723 default: assert(false);
2724}}
2725
2726namespace {
2727
2728}}}
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 b_grad_basis_value_3d(const int b, 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 b_grad_basis_value_2d(const int b, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)