PolyFEM
Loading...
Searching...
No Matches
auto_q_bases_1d_grad.cpp
Go to the documentation of this file.
2
3
4namespace polyfem {
5namespace autogen {
6namespace {
7void q_0_basis_grad_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
8
9auto x=uv.col(0).array();
10
11val.resize(uv.rows(), uv.cols());
12 Eigen::ArrayXd result_0(uv.rows());
13switch(local_index){
14 case 0: {{result_0.setZero();val.col(0) = result_0; }} break;
15 default: assert(false);
16}}
17
18void q_1_basis_grad_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
19
20auto x=uv.col(0).array();
21
22val.resize(uv.rows(), uv.cols());
23 Eigen::ArrayXd result_0(uv.rows());
24switch(local_index){
25 case 0: {{result_0.setConstant(-1);val.col(0) = result_0; }} break;
26 case 1: {{result_0.setOnes();val.col(0) = result_0; }} break;
27 default: assert(false);
28}}
29
30void q_2_basis_grad_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
31
32auto x=uv.col(0).array();
33
34val.resize(uv.rows(), uv.cols());
35 Eigen::ArrayXd result_0(uv.rows());
36switch(local_index){
37 case 0: {{result_0 = 4.0*x - 3.0;val.col(0) = result_0; }} break;
38 case 1: {{result_0 = 4.0 - 8.0*x;val.col(0) = result_0; }} break;
39 case 2: {{result_0 = 4.0*x - 1.0;val.col(0) = result_0; }} break;
40 default: assert(false);
41}}
42
43void q_3_basis_grad_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
44
45auto x=uv.col(0).array();
46
47val.resize(uv.rows(), uv.cols());
48 Eigen::ArrayXd result_0(uv.rows());
49switch(local_index){
50 case 0: {{result_0 = -13.5*pow(x, 2) + 18.0*x - 5.5;val.col(0) = result_0; }} break;
51 case 1: {{result_0 = 40.499999999999993*pow(x, 2) - 44.999999999999993*x + 8.9999999999999982;val.col(0) = result_0; }} break;
52 case 2: {{result_0 = -40.499999999999993*pow(x, 2) + 35.999999999999993*x - 4.4999999999999991;val.col(0) = result_0; }} break;
53 case 3: {{result_0 = 13.499999999999996*pow(x, 2) - 8.9999999999999964*x + 0.99999999999999956;val.col(0) = result_0; }} break;
54 default: assert(false);
55}}
56
57void q_m2_basis_grad_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
58
59auto x=uv.col(0).array();
60
61val.resize(uv.rows(), uv.cols());
62 Eigen::ArrayXd result_0(uv.rows());
63switch(local_index){
64 case 0: {{result_0 = 4.0*x - 3.0;val.col(0) = result_0; }} break;
65 case 1: {{result_0 = 4.0 - 8.0*x;val.col(0) = result_0; }} break;
66 case 2: {{result_0 = 4.0*x - 1.0;val.col(0) = result_0; }} break;
67 default: assert(false);
68}}
69
70void q_4_basis_grad_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
71
72auto x=uv.col(0).array();
73
74val.resize(uv.rows(), uv.cols());
75 Eigen::ArrayXd result_0(uv.rows());
76switch(local_index){
77 case 0: {{result_0 = 42.666666666666664*pow(x, 3) - 80.0*pow(x, 2) + 46.666666666666657*x - 8.3333333333333339;val.col(0) = result_0; }} break;
78 case 1: {{result_0 = -170.66666666666666*pow(x, 3) + 288.0*pow(x, 2) - 138.66666666666666*x + 16.0;val.col(0) = result_0; }} break;
79 case 2: {{result_0 = 256.0*pow(x, 3) - 384.0*pow(x, 2) + 152.0*x - 12.0;val.col(0) = result_0; }} break;
80 case 3: {{result_0 = -170.66666666666666*pow(x, 3) + 224.0*pow(x, 2) - 74.666666666666671*x + 5.333333333333333;val.col(0) = result_0; }} break;
81 case 4: {{result_0 = 42.666666666666664*pow(x, 3) - 48.0*pow(x, 2) + 14.666666666666666*x - 1.0;val.col(0) = result_0; }} break;
82 default: assert(false);
83}}
84
85void q_5_basis_grad_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
86
87auto x=uv.col(0).array();
88
89val.resize(uv.rows(), uv.cols());
90 Eigen::ArrayXd result_0(uv.rows());
91switch(local_index){
92 case 0: {{result_0 = -130.20833333333334*pow(x, 4) + 312.50000000000006*pow(x, 3) - 265.62500000000006*pow(x, 2) + 93.75*x - 11.416666666666666;val.col(0) = result_0; }} break;
93 case 1: {{result_0 = 651.04166666666652*pow(x, 4) - 1458.333333333333*pow(x, 3) + 1109.3749999999998*pow(x, 2) - 320.83333333333331*x + 25.0;val.col(0) = result_0; }} break;
94 case 2: {{result_0 = -1302.0833333333337*pow(x, 4) + 2708.3333333333339*pow(x, 3) - 1843.7500000000005*pow(x, 2) + 445.83333333333348*x - 25.000000000000007;val.col(0) = result_0; }} break;
95 case 3: {{result_0 = 1302.0833333333333*pow(x, 4) - 2500.0*pow(x, 3) + 1531.25*pow(x, 2) - 325.0*x + 16.666666666666664;val.col(0) = result_0; }} break;
96 case 4: {{result_0 = -651.0416666666664*pow(x, 4) + 1145.833333333333*pow(x, 3) - 640.62499999999977*pow(x, 2) + 127.08333333333329*x - 6.2499999999999982;val.col(0) = result_0; }} break;
97 case 5: {{result_0 = 130.20833333333337*pow(x, 4) - 208.33333333333337*pow(x, 3) + 109.37500000000004*pow(x, 2) - 20.833333333333339*x + 1.0000000000000002;val.col(0) = result_0; }} break;
98 default: assert(false);
99}}
100
101void q_6_basis_grad_value_1d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
102
103auto x=uv.col(0).array();
104
105val.resize(uv.rows(), uv.cols());
106 Eigen::ArrayXd result_0(uv.rows());
107switch(local_index){
108 case 0: {{result_0 = 388.80000000000001*pow(x, 5) - 1134.0*pow(x, 4) + 1260.0*pow(x, 3) - 661.5*pow(x, 2) + 162.39999999999998*x - 14.699999999999999;val.col(0) = result_0; }} break;
109 case 1: {{result_0 = -2332.7999999999988*pow(x, 5) + 6479.9999999999964*pow(x, 4) - 6695.9999999999964*pow(x, 3) + 3131.9999999999982*pow(x, 2) - 626.39999999999975*x + 35.999999999999986;val.col(0) = result_0; }} break;
110 case 2: {{result_0 = 5831.9999999999982*pow(x, 5) - 15389.999999999995*pow(x, 4) + 14795.999999999995*pow(x, 3) - 6223.4999999999982*pow(x, 2) + 1052.9999999999998*x - 44.999999999999986;val.col(0) = result_0; }} break;
111 case 3: {{result_0 = -7776.0*pow(x, 5) + 19439.999999999996*pow(x, 4) - 17423.999999999996*pow(x, 3) + 6695.9999999999982*pow(x, 2) - 1015.9999999999997*x + 39.999999999999986;val.col(0) = result_0; }} break;
112 case 4: {{result_0 = 5831.9999999999982*pow(x, 5) - 13769.999999999996*pow(x, 4) + 11555.999999999996*pow(x, 3) - 4144.4999999999991*pow(x, 2) + 593.99999999999989*x - 22.499999999999993;val.col(0) = result_0; }} break;
113 case 5: {{result_0 = -2332.7999999999988*pow(x, 5) + 5183.9999999999973*pow(x, 4) - 4103.9999999999982*pow(x, 3) + 1403.9999999999993*pow(x, 2) - 194.39999999999989*x + 7.1999999999999957;val.col(0) = result_0; }} break;
114 case 6: {{result_0 = 388.80000000000001*pow(x, 5) - 810.0*pow(x, 4) + 612.0*pow(x, 3) - 202.5*pow(x, 2) + 27.399999999999999*x - 0.99999999999999967;val.col(0) = result_0; }} break;
115 default: assert(false);
116}}
117
118}
119
120void q_grad_basis_value_1d(const int q, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
121switch(q){
122 case 0: q_0_basis_grad_value_1d(local_index, uv, val); break;
123 case 1: q_1_basis_grad_value_1d(local_index, uv, val); break;
124 case 2: q_2_basis_grad_value_1d(local_index, uv, val); break;
125 case 3: q_3_basis_grad_value_1d(local_index, uv, val); break;
126 case -2: q_m2_basis_grad_value_1d(local_index, uv, val); break;
127 case 4: q_4_basis_grad_value_1d(local_index, uv, val); break;
128 case 5: q_5_basis_grad_value_1d(local_index, uv, val); break;
129 case 6: q_6_basis_grad_value_1d(local_index, uv, val); break;
130 default: assert(false);
131}}
132}}
double val
Definition Assembler.cpp:86
int x
void q_grad_basis_value_1d(const int q, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)