PolyFEM
Loading...
Searching...
No Matches
auto_q_bases_2d_grad.cpp
Go to the documentation of this file.
2
3
4namespace polyfem {
5namespace autogen {
6namespace {
7void q_0_basis_grad_value_2d_single_0(double x, double y, double *val) {
8{val[0] = 0;}
9{val[1] = 0;}
10}
11
12
13
14void q_0_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
15val.resize(uv.rows(), 2);
16double gradient[2];
17switch(local_index){
18 case 0:
19 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
20 q_0_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
21 val(i, 0) = gradient[0];
22 val(i, 1) = gradient[1];
23 }
24 break;
25 default: assert(false);
26}
27}
28
29void q_1_basis_grad_value_2d_single_0(double x, double y, double *val) {
30{val[0] = 1.0*(y - 1);}
31{val[1] = 1.0*(x - 1);}
32}
33
34void q_1_basis_grad_value_2d_single_1(double x, double y, double *val) {
35{val[0] = 1.0*(1 - y);}
36{val[1] = -1.0*x;}
37}
38
39void q_1_basis_grad_value_2d_single_2(double x, double y, double *val) {
40{val[0] = 1.0*y;}
41{val[1] = 1.0*x;}
42}
43
44void q_1_basis_grad_value_2d_single_3(double x, double y, double *val) {
45{val[0] = -1.0*y;}
46{val[1] = 1.0*(1 - x);}
47}
48
49
50
51void q_1_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
52val.resize(uv.rows(), 2);
53double gradient[2];
54switch(local_index){
55 case 0:
56 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
57 q_1_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
58 val(i, 0) = gradient[0];
59 val(i, 1) = gradient[1];
60 }
61 break;
62 case 1:
63 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
64 q_1_basis_grad_value_2d_single_1(uv(i, 0), uv(i, 1), gradient);
65 val(i, 0) = gradient[0];
66 val(i, 1) = gradient[1];
67 }
68 break;
69 case 2:
70 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
71 q_1_basis_grad_value_2d_single_2(uv(i, 0), uv(i, 1), gradient);
72 val(i, 0) = gradient[0];
73 val(i, 1) = gradient[1];
74 }
75 break;
76 case 3:
77 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
78 q_1_basis_grad_value_2d_single_3(uv(i, 0), uv(i, 1), gradient);
79 val(i, 0) = gradient[0];
80 val(i, 1) = gradient[1];
81 }
82 break;
83 default: assert(false);
84}
85}
86
87void q_2_basis_grad_value_2d_single_0(double x, double y, double *val) {
88{val[0] = (4.0*x - 3.0)*(y - 1)*(2.0*y - 1.0);}
89{val[1] = (x - 1)*(2.0*x - 1.0)*(4.0*y - 3.0);}
90}
91
92void q_2_basis_grad_value_2d_single_1(double x, double y, double *val) {
93{val[0] = (4.0*x - 1.0)*(y - 1)*(2.0*y - 1.0);}
94{val[1] = x*(2.0*x - 1.0)*(4.0*y - 3.0);}
95}
96
97void q_2_basis_grad_value_2d_single_2(double x, double y, double *val) {
98{val[0] = y*(4.0*x - 1.0)*(2.0*y - 1.0);}
99{val[1] = x*(2.0*x - 1.0)*(4.0*y - 1.0);}
100}
101
102void q_2_basis_grad_value_2d_single_3(double x, double y, double *val) {
103{val[0] = y*(4.0*x - 3.0)*(2.0*y - 1.0);}
104{val[1] = (x - 1)*(2.0*x - 1.0)*(4.0*y - 1.0);}
105}
106
107void q_2_basis_grad_value_2d_single_4(double x, double y, double *val) {
108{val[0] = -4.0*(2*x - 1)*(y - 1)*(2.0*y - 1.0);}
109{val[1] = -x*(x - 1)*(16.0*y - 12.0);}
110}
111
112void q_2_basis_grad_value_2d_single_5(double x, double y, double *val) {
113{val[0] = -y*(16.0*x - 4.0)*(y - 1);}
114{val[1] = -4.0*x*(2.0*x - 1.0)*(2*y - 1);}
115}
116
117void q_2_basis_grad_value_2d_single_6(double x, double y, double *val) {
118{val[0] = -4.0*y*(2*x - 1)*(2.0*y - 1.0);}
119{val[1] = -x*(x - 1)*(16.0*y - 4.0);}
120}
121
122void q_2_basis_grad_value_2d_single_7(double x, double y, double *val) {
123{val[0] = -y*(16.0*x - 12.0)*(y - 1);}
124{val[1] = -4.0*(x - 1)*(2.0*x - 1.0)*(2*y - 1);}
125}
126
127void q_2_basis_grad_value_2d_single_8(double x, double y, double *val) {
128{val[0] = 16.0*y*(2*x - 1)*(y - 1);}
129{val[1] = 16.0*x*(x - 1)*(2*y - 1);}
130}
131
132
133
134void q_2_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
135val.resize(uv.rows(), 2);
136double gradient[2];
137switch(local_index){
138 case 0:
139 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
140 q_2_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
141 val(i, 0) = gradient[0];
142 val(i, 1) = gradient[1];
143 }
144 break;
145 case 1:
146 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
147 q_2_basis_grad_value_2d_single_1(uv(i, 0), uv(i, 1), gradient);
148 val(i, 0) = gradient[0];
149 val(i, 1) = gradient[1];
150 }
151 break;
152 case 2:
153 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
154 q_2_basis_grad_value_2d_single_2(uv(i, 0), uv(i, 1), gradient);
155 val(i, 0) = gradient[0];
156 val(i, 1) = gradient[1];
157 }
158 break;
159 case 3:
160 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
161 q_2_basis_grad_value_2d_single_3(uv(i, 0), uv(i, 1), gradient);
162 val(i, 0) = gradient[0];
163 val(i, 1) = gradient[1];
164 }
165 break;
166 case 4:
167 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
168 q_2_basis_grad_value_2d_single_4(uv(i, 0), uv(i, 1), gradient);
169 val(i, 0) = gradient[0];
170 val(i, 1) = gradient[1];
171 }
172 break;
173 case 5:
174 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
175 q_2_basis_grad_value_2d_single_5(uv(i, 0), uv(i, 1), gradient);
176 val(i, 0) = gradient[0];
177 val(i, 1) = gradient[1];
178 }
179 break;
180 case 6:
181 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
182 q_2_basis_grad_value_2d_single_6(uv(i, 0), uv(i, 1), gradient);
183 val(i, 0) = gradient[0];
184 val(i, 1) = gradient[1];
185 }
186 break;
187 case 7:
188 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
189 q_2_basis_grad_value_2d_single_7(uv(i, 0), uv(i, 1), gradient);
190 val(i, 0) = gradient[0];
191 val(i, 1) = gradient[1];
192 }
193 break;
194 case 8:
195 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
196 q_2_basis_grad_value_2d_single_8(uv(i, 0), uv(i, 1), gradient);
197 val(i, 0) = gradient[0];
198 val(i, 1) = gradient[1];
199 }
200 break;
201 default: assert(false);
202}
203}
204
205void q_3_basis_grad_value_2d_single_0(double x, double y, double *val) {
206{double helper_0 = x - 1;
207double helper_1 = 1.5*x - 1.0;
208double helper_2 = 3.0*x - 1.0;
209val[0] = (y - 1)*(1.5*y - 1.0)*(3.0*y - 1.0)*(3.0*helper_0*helper_1 + 1.5*helper_0*helper_2 + 1.0*helper_1*helper_2);}
210{double helper_0 = y - 1;
211double helper_1 = 1.5*y - 1.0;
212double helper_2 = 3.0*y - 1.0;
213val[1] = (x - 1)*(1.5*x - 1.0)*(3.0*x - 1.0)*(3.0*helper_0*helper_1 + 1.5*helper_0*helper_2 + 1.0*helper_1*helper_2);}
214}
215
216void q_3_basis_grad_value_2d_single_1(double x, double y, double *val) {
217{double helper_0 = 1.4999999999999998*x;
218double helper_1 = helper_0 - 0.49999999999999989;
219double helper_2 = 2.9999999999999996*x;
220double helper_3 = helper_2 - 1.9999999999999996;
221val[0] = -(y - 1)*(1.5*y - 1.0)*(3.0*y - 1.0)*(helper_0*helper_3 + helper_1*helper_2 + 1.0*helper_1*helper_3);}
222{double helper_0 = y - 1;
223double helper_1 = 1.5*y - 1.0;
224double helper_2 = 3.0*y - 1.0;
225val[1] = -x*(1.4999999999999998*x - 0.49999999999999989)*(2.9999999999999996*x - 1.9999999999999996)*(3.0*helper_0*helper_1 + 1.5*helper_0*helper_2 + 1.0*helper_1*helper_2);}
226}
227
228void q_3_basis_grad_value_2d_single_2(double x, double y, double *val) {
229{double helper_0 = 1.4999999999999998*x;
230double helper_1 = helper_0 - 0.49999999999999989;
231double helper_2 = 2.9999999999999996*x;
232double helper_3 = helper_2 - 1.9999999999999996;
233val[0] = y*(1.4999999999999998*y - 0.49999999999999989)*(2.9999999999999996*y - 1.9999999999999996)*(helper_0*helper_3 + helper_1*helper_2 + 1.0*helper_1*helper_3);}
234{double helper_0 = 1.4999999999999998*y;
235double helper_1 = helper_0 - 0.49999999999999989;
236double helper_2 = 2.9999999999999996*y;
237double helper_3 = helper_2 - 1.9999999999999996;
238val[1] = x*(1.4999999999999998*x - 0.49999999999999989)*(2.9999999999999996*x - 1.9999999999999996)*(helper_0*helper_3 + helper_1*helper_2 + 1.0*helper_1*helper_3);}
239}
240
241void q_3_basis_grad_value_2d_single_3(double x, double y, double *val) {
242{double helper_0 = x - 1;
243double helper_1 = 1.5*x - 1.0;
244double helper_2 = 3.0*x - 1.0;
245val[0] = -y*(1.4999999999999998*y - 0.49999999999999989)*(2.9999999999999996*y - 1.9999999999999996)*(3.0*helper_0*helper_1 + 1.5*helper_0*helper_2 + 1.0*helper_1*helper_2);}
246{double helper_0 = 1.4999999999999998*y;
247double helper_1 = helper_0 - 0.49999999999999989;
248double helper_2 = 2.9999999999999996*y;
249double helper_3 = helper_2 - 1.9999999999999996;
250val[1] = -(x - 1)*(1.5*x - 1.0)*(3.0*x - 1.0)*(helper_0*helper_3 + helper_1*helper_2 + 1.0*helper_1*helper_3);}
251}
252
253void q_3_basis_grad_value_2d_single_4(double x, double y, double *val) {
254{double helper_0 = x - 1;
255double helper_1 = 13.499999999999996*x - 8.9999999999999982;
256val[0] = -(y - 1)*(1.5*y - 1.0)*(3.0*y - 1.0)*(helper_0*helper_1 + 13.499999999999996*helper_0*x + helper_1*x);}
257{double helper_0 = y - 1;
258double helper_1 = 1.5*y - 1.0;
259double helper_2 = 3.0*y - 1.0;
260val[1] = -x*(x - 1)*(3.0*x - 2.0)*(13.499999999999996*helper_0*helper_1 + 6.7499999999999982*helper_0*helper_2 + 4.4999999999999991*helper_1*helper_2);}
261}
262
263void q_3_basis_grad_value_2d_single_5(double x, double y, double *val) {
264{double helper_0 = x - 1;
265double helper_1 = 13.499999999999996*x - 4.4999999999999991;
266val[0] = (y - 1)*(1.5*y - 1.0)*(3.0*y - 1.0)*(helper_0*helper_1 + 13.499999999999996*helper_0*x + helper_1*x);}
267{double helper_0 = y - 1;
268double helper_1 = 1.5*y - 1.0;
269double helper_2 = 3.0*y - 1.0;
270val[1] = x*(x - 1)*(3.0*x - 1.0)*(13.499999999999996*helper_0*helper_1 + 6.7499999999999982*helper_0*helper_2 + 4.4999999999999991*helper_1*helper_2);}
271}
272
273void q_3_basis_grad_value_2d_single_6(double x, double y, double *val) {
274{double helper_0 = 1.4999999999999998*x - 0.49999999999999989;
275double helper_1 = 2.9999999999999996*x - 1.9999999999999996;
276val[0] = y*(y - 1)*(3.0*y - 2.0)*(4.4999999999999991*helper_0*helper_1 + 13.499999999999995*helper_0*x + 6.7499999999999973*helper_1*x);}
277{double helper_0 = y - 1;
278double helper_1 = 13.499999999999996*y - 8.9999999999999982;
279val[1] = x*(1.4999999999999998*x - 0.49999999999999989)*(2.9999999999999996*x - 1.9999999999999996)*(helper_0*helper_1 + 13.499999999999996*helper_0*y + helper_1*y);}
280}
281
282void q_3_basis_grad_value_2d_single_7(double x, double y, double *val) {
283{double helper_0 = 1.4999999999999998*x - 0.49999999999999989;
284double helper_1 = 2.9999999999999996*x - 1.9999999999999996;
285val[0] = -y*(y - 1)*(3.0*y - 1.0)*(4.4999999999999991*helper_0*helper_1 + 13.499999999999995*helper_0*x + 6.7499999999999973*helper_1*x);}
286{double helper_0 = y - 1;
287double helper_1 = 13.499999999999996*y - 4.4999999999999991;
288val[1] = -x*(1.4999999999999998*x - 0.49999999999999989)*(2.9999999999999996*x - 1.9999999999999996)*(helper_0*helper_1 + 13.499999999999996*helper_0*y + helper_1*y);}
289}
290
291void q_3_basis_grad_value_2d_single_8(double x, double y, double *val) {
292{double helper_0 = x - 1;
293double helper_1 = 13.499999999999996*x - 4.4999999999999991;
294val[0] = -y*(1.4999999999999998*y - 0.49999999999999989)*(2.9999999999999996*y - 1.9999999999999996)*(helper_0*helper_1 + 13.499999999999996*helper_0*x + helper_1*x);}
295{double helper_0 = 1.4999999999999998*y - 0.49999999999999989;
296double helper_1 = 2.9999999999999996*y - 1.9999999999999996;
297val[1] = -x*(x - 1)*(3.0*x - 1.0)*(4.4999999999999991*helper_0*helper_1 + 13.499999999999995*helper_0*y + 6.7499999999999973*helper_1*y);}
298}
299
300void q_3_basis_grad_value_2d_single_9(double x, double y, double *val) {
301{double helper_0 = x - 1;
302double helper_1 = 13.499999999999996*x - 8.9999999999999982;
303val[0] = y*(1.4999999999999998*y - 0.49999999999999989)*(2.9999999999999996*y - 1.9999999999999996)*(helper_0*helper_1 + 13.499999999999996*helper_0*x + helper_1*x);}
304{double helper_0 = 1.4999999999999998*y - 0.49999999999999989;
305double helper_1 = 2.9999999999999996*y - 1.9999999999999996;
306val[1] = x*(x - 1)*(3.0*x - 2.0)*(4.4999999999999991*helper_0*helper_1 + 13.499999999999995*helper_0*y + 6.7499999999999973*helper_1*y);}
307}
308
309void q_3_basis_grad_value_2d_single_10(double x, double y, double *val) {
310{double helper_0 = x - 1;
311double helper_1 = 1.5*x - 1.0;
312double helper_2 = 3.0*x - 1.0;
313val[0] = y*(y - 1)*(3.0*y - 1.0)*(13.499999999999996*helper_0*helper_1 + 6.7499999999999982*helper_0*helper_2 + 4.4999999999999991*helper_1*helper_2);}
314{double helper_0 = y - 1;
315double helper_1 = 13.499999999999996*y - 4.4999999999999991;
316val[1] = (x - 1)*(1.5*x - 1.0)*(3.0*x - 1.0)*(helper_0*helper_1 + 13.499999999999996*helper_0*y + helper_1*y);}
317}
318
319void q_3_basis_grad_value_2d_single_11(double x, double y, double *val) {
320{double helper_0 = x - 1;
321double helper_1 = 1.5*x - 1.0;
322double helper_2 = 3.0*x - 1.0;
323val[0] = -y*(y - 1)*(3.0*y - 2.0)*(13.499999999999996*helper_0*helper_1 + 6.7499999999999982*helper_0*helper_2 + 4.4999999999999991*helper_1*helper_2);}
324{double helper_0 = y - 1;
325double helper_1 = 13.499999999999996*y - 8.9999999999999982;
326val[1] = -(x - 1)*(1.5*x - 1.0)*(3.0*x - 1.0)*(helper_0*helper_1 + 13.499999999999996*helper_0*y + helper_1*y);}
327}
328
329void q_3_basis_grad_value_2d_single_12(double x, double y, double *val) {
330{double helper_0 = x - 1;
331double helper_1 = 60.749999999999979*x - 40.499999999999986;
332val[0] = y*(y - 1)*(3.0*y - 2.0)*(helper_0*helper_1 + 60.749999999999979*helper_0*x + helper_1*x);}
333{double helper_0 = y - 1;
334double helper_1 = 60.749999999999979*y - 40.499999999999986;
335val[1] = x*(x - 1)*(3.0*x - 2.0)*(helper_0*helper_1 + 60.749999999999979*helper_0*y + helper_1*y);}
336}
337
338void q_3_basis_grad_value_2d_single_13(double x, double y, double *val) {
339{double helper_0 = x - 1;
340double helper_1 = 60.749999999999979*x - 40.499999999999986;
341val[0] = -y*(y - 1)*(3.0*y - 1.0)*(helper_0*helper_1 + 60.749999999999979*helper_0*x + helper_1*x);}
342{double helper_0 = y - 1;
343double helper_1 = 60.749999999999979*y - 20.249999999999993;
344val[1] = -x*(x - 1)*(3.0*x - 2.0)*(helper_0*helper_1 + 60.749999999999979*helper_0*y + helper_1*y);}
345}
346
347void q_3_basis_grad_value_2d_single_14(double x, double y, double *val) {
348{double helper_0 = x - 1;
349double helper_1 = 60.749999999999979*x - 20.249999999999993;
350val[0] = -y*(y - 1)*(3.0*y - 2.0)*(helper_0*helper_1 + 60.749999999999979*helper_0*x + helper_1*x);}
351{double helper_0 = y - 1;
352double helper_1 = 60.749999999999979*y - 40.499999999999986;
353val[1] = -x*(x - 1)*(3.0*x - 1.0)*(helper_0*helper_1 + 60.749999999999979*helper_0*y + helper_1*y);}
354}
355
356void q_3_basis_grad_value_2d_single_15(double x, double y, double *val) {
357{double helper_0 = x - 1;
358double helper_1 = 60.749999999999979*x - 20.249999999999993;
359val[0] = y*(y - 1)*(3.0*y - 1.0)*(helper_0*helper_1 + 60.749999999999979*helper_0*x + helper_1*x);}
360{double helper_0 = y - 1;
361double helper_1 = 60.749999999999979*y - 20.249999999999993;
362val[1] = x*(x - 1)*(3.0*x - 1.0)*(helper_0*helper_1 + 60.749999999999979*helper_0*y + helper_1*y);}
363}
364
365
366
367void q_3_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
368val.resize(uv.rows(), 2);
369double gradient[2];
370switch(local_index){
371 case 0:
372 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
373 q_3_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
374 val(i, 0) = gradient[0];
375 val(i, 1) = gradient[1];
376 }
377 break;
378 case 1:
379 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
380 q_3_basis_grad_value_2d_single_1(uv(i, 0), uv(i, 1), gradient);
381 val(i, 0) = gradient[0];
382 val(i, 1) = gradient[1];
383 }
384 break;
385 case 2:
386 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
387 q_3_basis_grad_value_2d_single_2(uv(i, 0), uv(i, 1), gradient);
388 val(i, 0) = gradient[0];
389 val(i, 1) = gradient[1];
390 }
391 break;
392 case 3:
393 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
394 q_3_basis_grad_value_2d_single_3(uv(i, 0), uv(i, 1), gradient);
395 val(i, 0) = gradient[0];
396 val(i, 1) = gradient[1];
397 }
398 break;
399 case 4:
400 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
401 q_3_basis_grad_value_2d_single_4(uv(i, 0), uv(i, 1), gradient);
402 val(i, 0) = gradient[0];
403 val(i, 1) = gradient[1];
404 }
405 break;
406 case 5:
407 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
408 q_3_basis_grad_value_2d_single_5(uv(i, 0), uv(i, 1), gradient);
409 val(i, 0) = gradient[0];
410 val(i, 1) = gradient[1];
411 }
412 break;
413 case 6:
414 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
415 q_3_basis_grad_value_2d_single_6(uv(i, 0), uv(i, 1), gradient);
416 val(i, 0) = gradient[0];
417 val(i, 1) = gradient[1];
418 }
419 break;
420 case 7:
421 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
422 q_3_basis_grad_value_2d_single_7(uv(i, 0), uv(i, 1), gradient);
423 val(i, 0) = gradient[0];
424 val(i, 1) = gradient[1];
425 }
426 break;
427 case 8:
428 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
429 q_3_basis_grad_value_2d_single_8(uv(i, 0), uv(i, 1), gradient);
430 val(i, 0) = gradient[0];
431 val(i, 1) = gradient[1];
432 }
433 break;
434 case 9:
435 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
436 q_3_basis_grad_value_2d_single_9(uv(i, 0), uv(i, 1), gradient);
437 val(i, 0) = gradient[0];
438 val(i, 1) = gradient[1];
439 }
440 break;
441 case 10:
442 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
443 q_3_basis_grad_value_2d_single_10(uv(i, 0), uv(i, 1), gradient);
444 val(i, 0) = gradient[0];
445 val(i, 1) = gradient[1];
446 }
447 break;
448 case 11:
449 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
450 q_3_basis_grad_value_2d_single_11(uv(i, 0), uv(i, 1), gradient);
451 val(i, 0) = gradient[0];
452 val(i, 1) = gradient[1];
453 }
454 break;
455 case 12:
456 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
457 q_3_basis_grad_value_2d_single_12(uv(i, 0), uv(i, 1), gradient);
458 val(i, 0) = gradient[0];
459 val(i, 1) = gradient[1];
460 }
461 break;
462 case 13:
463 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
464 q_3_basis_grad_value_2d_single_13(uv(i, 0), uv(i, 1), gradient);
465 val(i, 0) = gradient[0];
466 val(i, 1) = gradient[1];
467 }
468 break;
469 case 14:
470 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
471 q_3_basis_grad_value_2d_single_14(uv(i, 0), uv(i, 1), gradient);
472 val(i, 0) = gradient[0];
473 val(i, 1) = gradient[1];
474 }
475 break;
476 case 15:
477 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
478 q_3_basis_grad_value_2d_single_15(uv(i, 0), uv(i, 1), gradient);
479 val(i, 0) = gradient[0];
480 val(i, 1) = gradient[1];
481 }
482 break;
483 default: assert(false);
484}
485}
486
487void q_m2_basis_grad_value_2d_single_0(double x, double y, double *val) {
488{val[0] = -(y - 1)*(4.0*x + 2.0*y - 3.0);}
489{val[1] = -(x - 1)*(2.0*x + 4.0*y - 3.0);}
490}
491
492void q_m2_basis_grad_value_2d_single_1(double x, double y, double *val) {
493{val[0] = (y - 1)*(-4.0*x + 2.0*y + 1.0);}
494{val[1] = -x*(2.0*x - 4.0*y + 1.0);}
495}
496
497void q_m2_basis_grad_value_2d_single_2(double x, double y, double *val) {
498{val[0] = y*(4.0*x + 2.0*y - 3.0);}
499{val[1] = x*(2.0*x + 4.0*y - 3.0);}
500}
501
502void q_m2_basis_grad_value_2d_single_3(double x, double y, double *val) {
503{val[0] = -y*(-4.0*x + 2.0*y + 1.0);}
504{val[1] = (x - 1)*(2.0*x - 4.0*y + 1.0);}
505}
506
507void q_m2_basis_grad_value_2d_single_4(double x, double y, double *val) {
508{val[0] = 4*(2*x - 1)*(y - 1);}
509{val[1] = 4*x*(x - 1);}
510}
511
512void q_m2_basis_grad_value_2d_single_5(double x, double y, double *val) {
513{val[0] = -4*y*(y - 1);}
514{val[1] = -4*x*(2*y - 1);}
515}
516
517void q_m2_basis_grad_value_2d_single_6(double x, double y, double *val) {
518{val[0] = -4*y*(2*x - 1);}
519{val[1] = -4*x*(x - 1);}
520}
521
522void q_m2_basis_grad_value_2d_single_7(double x, double y, double *val) {
523{val[0] = 4*y*(y - 1);}
524{val[1] = 4*(x - 1)*(2*y - 1);}
525}
526
527
528
529void q_m2_basis_grad_value_2d(const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
530val.resize(uv.rows(), 2);
531double gradient[2];
532switch(local_index){
533 case 0:
534 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
535 q_m2_basis_grad_value_2d_single_0(uv(i, 0), uv(i, 1), gradient);
536 val(i, 0) = gradient[0];
537 val(i, 1) = gradient[1];
538 }
539 break;
540 case 1:
541 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
542 q_m2_basis_grad_value_2d_single_1(uv(i, 0), uv(i, 1), gradient);
543 val(i, 0) = gradient[0];
544 val(i, 1) = gradient[1];
545 }
546 break;
547 case 2:
548 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
549 q_m2_basis_grad_value_2d_single_2(uv(i, 0), uv(i, 1), gradient);
550 val(i, 0) = gradient[0];
551 val(i, 1) = gradient[1];
552 }
553 break;
554 case 3:
555 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
556 q_m2_basis_grad_value_2d_single_3(uv(i, 0), uv(i, 1), gradient);
557 val(i, 0) = gradient[0];
558 val(i, 1) = gradient[1];
559 }
560 break;
561 case 4:
562 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
563 q_m2_basis_grad_value_2d_single_4(uv(i, 0), uv(i, 1), gradient);
564 val(i, 0) = gradient[0];
565 val(i, 1) = gradient[1];
566 }
567 break;
568 case 5:
569 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
570 q_m2_basis_grad_value_2d_single_5(uv(i, 0), uv(i, 1), gradient);
571 val(i, 0) = gradient[0];
572 val(i, 1) = gradient[1];
573 }
574 break;
575 case 6:
576 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
577 q_m2_basis_grad_value_2d_single_6(uv(i, 0), uv(i, 1), gradient);
578 val(i, 0) = gradient[0];
579 val(i, 1) = gradient[1];
580 }
581 break;
582 case 7:
583 for (Eigen::Index i = 0; i < uv.rows(); ++i) {
584 q_m2_basis_grad_value_2d_single_7(uv(i, 0), uv(i, 1), gradient);
585 val(i, 0) = gradient[0];
586 val(i, 1) = gradient[1];
587 }
588 break;
589 default: assert(false);
590}
591}
592
593}
594
595void q_grad_basis_value_2d(const int q, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val){
596switch(q){
597 case 0: q_0_basis_grad_value_2d(local_index, uv, val); break;
598 case 1: q_1_basis_grad_value_2d(local_index, uv, val); break;
599 case 2: q_2_basis_grad_value_2d(local_index, uv, val); break;
600 case 3: q_3_basis_grad_value_2d(local_index, uv, val); break;
601 case -2: q_m2_basis_grad_value_2d(local_index, uv, val); break;
602 default: assert(false);
603}}
604}}
double val
Definition Assembler.cpp:86
int y
int x
void q_grad_basis_value_2d(const int q, const int local_index, const Eigen::MatrixXd &uv, Eigen::MatrixXd &val)