PolyFEM
Loading...
Searching...
No Matches
auto_q_bases_1d_val.cpp
Go to the documentation of this file.
2
3
4namespace polyfem {
5namespace autogen {
6namespace {
7void q_0_basis_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
8
9auto x=uv.col(0).array();
10
11result_0.resize(x.size(),1);
12switch(local_index){
13 case 0: {result_0.setOnes();} break;
14 default: assert(false);
15}}
16void q_1_basis_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
17
18auto x=uv.col(0).array();
19
20switch(local_index){
21 case 0: {result_0 = 1.0*(1 - x);} break;
22 case 1: {result_0 = 1.0*x;} break;
23 default: assert(false);
24}}
25void q_2_basis_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
26
27auto x=uv.col(0).array();
28
29switch(local_index){
30 case 0: {result_0 = 1.0*(x - 1)*(2.0*x - 1.0);} break;
31 case 1: {result_0 = -4.0*x*(x - 1);} break;
32 case 2: {result_0 = x*(2.0*x - 1.0);} break;
33 default: assert(false);
34}}
35void q_3_basis_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
36
37auto x=uv.col(0).array();
38
39switch(local_index){
40 case 0: {result_0 = -4.5*pow(x, 3) + 9.0*pow(x, 2) - 5.5*x + 1.0;} break;
41 case 1: {result_0 = 4.4999999999999991*x*(x - 1)*(3.0*x - 2.0);} break;
42 case 2: {result_0 = -x*(13.499999999999996*pow(x, 2) - 17.999999999999996*x + 4.4999999999999991);} break;
43 case 3: {result_0 = x*(4.4999999999999991*pow(x, 2) - 4.4999999999999982*x + 0.99999999999999956);} break;
44 default: assert(false);
45}}
46void q_m2_basis_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
47
48auto x=uv.col(0).array();
49
50switch(local_index){
51 case 0: {result_0 = 1.0*(x - 1)*(2.0*x - 1.0);} break;
52 case 1: {result_0 = -4.0*x*(x - 1);} break;
53 case 2: {result_0 = x*(2.0*x - 1.0);} break;
54 default: assert(false);
55}}
56void q_4_basis_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
57
58auto x=uv.col(0).array();
59
60switch(local_index){
61 case 0: {result_0 = 1.0*(x - 1)*(1.3333333333333333*x - 1.0)*(2.0*x - 1.0)*(4.0*x - 1.0);} break;
62 case 1: {result_0 = -x*(42.666666666666664*pow(x, 3) - 96.0*pow(x, 2) + 69.333333333333329*x - 16.0);} break;
63 case 2: {const auto helper_0 = 4.0*x;
64result_0 = helper_0*(helper_0 - 3.0)*(helper_0 - 1.0)*(x - 1);} break;
65 case 3: {result_0 = -x*(42.666666666666664*pow(x, 3) - 74.666666666666657*pow(x, 2) + 37.333333333333329*x - 5.333333333333333);} break;
66 case 4: {result_0 = x*(10.666666666666666*pow(x, 3) - 16.0*pow(x, 2) + 7.333333333333333*x - 1.0);} break;
67 default: assert(false);
68}}
69void q_5_basis_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
70
71auto x=uv.col(0).array();
72
73switch(local_index){
74 case 0: {result_0 = -26.041666666666671*pow(x, 5) + 78.125*pow(x, 4) - 88.541666666666671*pow(x, 3) + 46.875*pow(x, 2) - 11.416666666666668*x + 1.0;} break;
75 case 1: {result_0 = 6.25*x*(x - 1)*(1.6666666666666665*x - 1.3333333333333333)*(2.5*x - 1.5)*(5.0*x - 2.0);} break;
76 case 2: {result_0 = -x*(260.41666666666674*pow(x, 4) - 677.08333333333348*pow(x, 3) + 614.58333333333348*pow(x, 2) - 222.91666666666674*x + 25.000000000000007);} break;
77 case 3: {result_0 = 4.166666666666667*x*(x - 1)*(2.5*x - 0.5)*(4.9999999999999982*x - 3.9999999999999987)*(5.0000000000000009*x - 2.0000000000000004);} break;
78 case 4: {result_0 = -x*(130.20833333333329*pow(x, 4) - 286.45833333333326*pow(x, 3) + 213.5416666666666*pow(x, 2) - 63.541666666666636*x + 6.2499999999999982);} break;
79 case 5: {result_0 = x*(26.041666666666675*pow(x, 4) - 52.08333333333335*pow(x, 3) + 36.458333333333343*pow(x, 2) - 10.41666666666667*x + 1.0000000000000002);} break;
80 default: assert(false);
81}}
82void q_6_basis_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &result_0){
83
84auto x=uv.col(0).array();
85
86switch(local_index){
87 case 0: {result_0 = 1.0*(x - 1)*(1.2*x - 1.0)*(1.5*x - 1.0)*(2.0*x - 1.0)*(3.0*x - 1.0)*(6.0*x - 1.0);} break;
88 case 1: {result_0 = -x*(388.79999999999984*pow(x, 5) - 1295.9999999999995*pow(x, 4) + 1673.9999999999993*pow(x, 3) - 1043.9999999999995*pow(x, 2) + 313.19999999999987*x - 35.999999999999986);} break;
89 case 2: {result_0 = 4.4999999999999991*x*(x - 1)*(2.0*x - 1.6666666666666667)*(3.0*x - 2.0)*(5.9999999999999991*x - 2.9999999999999996)*(6.0*x - 1.0);} break;
90 case 3: {result_0 = -x*(1295.9999999999998*pow(x, 5) - 3887.9999999999991*pow(x, 4) + 4355.9999999999982*pow(x, 3) - 2231.9999999999991*pow(x, 2) + 507.99999999999983*x - 39.999999999999986);} break;
91 case 4: {result_0 = 4.4999999999999991*x*(x - 1)*(2.0*x - 0.33333333333333331)*(3.0*x - 1.0)*(5.9999999999999973*x - 4.9999999999999982)*(6.0000000000000018*x - 3.0000000000000009);} break;
92 case 5: {result_0 = -x*(388.79999999999984*pow(x, 5) - 1036.7999999999997*pow(x, 4) + 1025.9999999999995*pow(x, 3) - 467.99999999999983*pow(x, 2) + 97.199999999999946*x - 7.1999999999999957);} break;
93 case 6: {result_0 = x*(64.799999999999997*pow(x, 5) - 162.0*pow(x, 4) + 153.0*pow(x, 3) - 67.5*pow(x, 2) + 13.699999999999998*x - 0.99999999999999967);} break;
94 default: assert(false);
95}}
96}
97
98void q_basis_value_1d(const int q, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
99switch(q){
100 case 0: q_0_basis_value_1d(local_index, uv, val); break;
101 case 1: q_1_basis_value_1d(local_index, uv, val); break;
102 case 2: q_2_basis_value_1d(local_index, uv, val); break;
103 case 3: q_3_basis_value_1d(local_index, uv, val); break;
104 case -2: q_m2_basis_value_1d(local_index, uv, val); break;
105 case 4: q_4_basis_value_1d(local_index, uv, val); break;
106 case 5: q_5_basis_value_1d(local_index, uv, val); break;
107 case 6: q_6_basis_value_1d(local_index, uv, val); break;
108 default: assert(false);
109}}
110}}
double val
Definition Assembler.cpp:86
int x
void q_basis_value_1d(const int q, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)