PolyFEM
Loading...
Searching...
No Matches
VolumePenalty3d.hpp
Go to the documentation of this file.
1// Auto-generated code for VolumePenalty3d energy
2#pragma once
3#include <Eigen/Dense>
4
5namespace polyfem {
6 namespace autogen {
7 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3> VolumePenalty3d_gradient(const RowVectorNd &p, const double t, const int el_id, const Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3>& F, const double k) {
8 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3> grad(3,3);
9 const double F00 = F(0, 0);
10 const double F01 = F(0, 1);
11 const double F02 = F(0, 2);
12 const double F10 = F(1, 0);
13 const double F11 = F(1, 1);
14 const double F12 = F(1, 2);
15 const double F20 = F(2, 0);
16 const double F21 = F(2, 1);
17 const double F22 = F(2, 2);
18 std::array<double, 9> result_0;
19 const auto helper_0 = F11*F22;
20const auto helper_1 = F12*F21;
21const auto helper_2 = F00*helper_0;
22const auto helper_3 = F00*helper_1;
23const auto helper_4 = F10*F22;
24const auto helper_5 = F01*helper_4;
25const auto helper_6 = F12*F20;
26const auto helper_7 = F01*helper_6;
27const auto helper_8 = F10*F21;
28const auto helper_9 = F02*helper_8;
29const auto helper_10 = F11*F20;
30const auto helper_11 = F02*helper_10;
31const auto helper_12 = 0.5*k*(1.0*helper_11 - 1.0*helper_2 + 1.0*helper_3 + 1.0*helper_5 - 1.0*helper_7 - 1.0*helper_9 + 1.0/(-helper_11 + helper_2 - helper_3 - helper_5 + helper_7 + helper_9));
32result_0[0] = -helper_12*(helper_0 - helper_1);
33result_0[1] = helper_12*(helper_4 - helper_6);
34result_0[2] = -helper_12*(-helper_10 + helper_8);
35result_0[3] = helper_12*(F01*F22 - F02*F21);
36result_0[4] = -helper_12*(F00*F22 - F02*F20);
37result_0[5] = helper_12*(F00*F21 - F01*F20);
38result_0[6] = -helper_12*(F01*F12 - F02*F11);
39result_0[7] = helper_12*(F00*F12 - F02*F10);
40result_0[8] = -helper_12*(F00*F11 - F01*F10);;
41 grad(0, 0) = result_0[0];
42 grad(0, 1) = result_0[1];
43 grad(0, 2) = result_0[2];
44 grad(1, 0) = result_0[3];
45 grad(1, 1) = result_0[4];
46 grad(1, 2) = result_0[5];
47 grad(2, 0) = result_0[6];
48 grad(2, 1) = result_0[7];
49 grad(2, 2) = result_0[8];
50 return grad;
51 }
52
53 inline Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, 0, 9, 9> VolumePenalty3d_hessian(const RowVectorNd &p, const double t, const int el_id, const Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3>& F, const double k) {
54 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, 0, 9, 9> hess(9,9);
55 std::array<double, 81> result_0;
56 const double F00 = F(0, 0);
57 const double F01 = F(0, 1);
58 const double F02 = F(0, 2);
59 const double F10 = F(1, 0);
60 const double F11 = F(1, 1);
61 const double F12 = F(1, 2);
62 const double F20 = F(2, 0);
63 const double F21 = F(2, 1);
64 const double F22 = F(2, 2);
65 const auto helper_0 = F11*F22;
66const auto helper_1 = F12*F21;
67const auto helper_2 = helper_0 - helper_1;
68const auto helper_3 = F12*F20;
69const auto helper_4 = F10*F21;
70const auto helper_5 = F10*F22;
71const auto helper_6 = F11*F20;
72const auto helper_7 = F00*helper_0 - F00*helper_1 + F01*helper_3 - F01*helper_5 + F02*helper_4 - F02*helper_6;
73const auto helper_8 = pow(helper_7, -2);
74const auto helper_9 = 0.5*k;
75const auto helper_10 = helper_9*(helper_8 + 1.0);
76const auto helper_11 = -helper_3 + helper_5;
77const auto helper_12 = helper_10*helper_2;
78const auto helper_13 = -helper_11*helper_12;
79const auto helper_14 = helper_4 - helper_6;
80const auto helper_15 = helper_12*helper_14;
81const auto helper_16 = F01*F22 - F02*F21;
82const auto helper_17 = -helper_12*helper_16;
83const auto helper_18 = F00*F22 - F02*F20;
84const auto helper_19 = helper_18*helper_2;
85const auto helper_20 = 1.0*helper_7;
86const auto helper_21 = F22*helper_20;
87const auto helper_22 = 1.0/helper_7;
88const auto helper_23 = F22*helper_22;
89const auto helper_24 = helper_9*(helper_19*helper_8 + 1.0*helper_19 + helper_21 - helper_23);
90const auto helper_25 = F00*F21 - F01*F20;
91const auto helper_26 = helper_2*helper_25;
92const auto helper_27 = F21*helper_22;
93const auto helper_28 = -helper_9*(F21*helper_20 + helper_26*helper_8 + 1.0*helper_26 - helper_27);
94const auto helper_29 = F01*F12 - F02*F11;
95const auto helper_30 = helper_12*helper_29;
96const auto helper_31 = F00*F12 - F02*F10;
97const auto helper_32 = helper_2*helper_31;
98const auto helper_33 = F12*helper_22;
99const auto helper_34 = -helper_9*(F12*helper_20 + helper_32*helper_8 + 1.0*helper_32 - helper_33);
100const auto helper_35 = F00*F11 - F01*F10;
101const auto helper_36 = helper_2*helper_35;
102const auto helper_37 = F11*helper_20;
103const auto helper_38 = F11*helper_22;
104const auto helper_39 = helper_9*(helper_36*helper_8 + 1.0*helper_36 + helper_37 - helper_38);
105const auto helper_40 = helper_10*helper_11;
106const auto helper_41 = -helper_14*helper_40;
107const auto helper_42 = helper_11*helper_16;
108const auto helper_43 = helper_9*(-helper_21 + helper_23 + helper_42*helper_8 + 1.0*helper_42);
109const auto helper_44 = -helper_18*helper_40;
110const auto helper_45 = helper_11*helper_25;
111const auto helper_46 = F20*helper_20;
112const auto helper_47 = F20*helper_22;
113const auto helper_48 = helper_9*(helper_45*helper_8 + 1.0*helper_45 + helper_46 - helper_47);
114const auto helper_49 = helper_11*helper_29;
115const auto helper_50 = helper_9*(1.0*F12*helper_7 - helper_33 - helper_49*helper_8 - 1.0*helper_49);
116const auto helper_51 = helper_31*helper_40;
117const auto helper_52 = helper_11*helper_35;
118const auto helper_53 = F10*helper_22;
119const auto helper_54 = -helper_9*(F10*helper_20 + helper_52*helper_8 + 1.0*helper_52 - helper_53);
120const auto helper_55 = helper_14*helper_16;
121const auto helper_56 = helper_9*(1.0*F21*helper_7 - helper_27 - helper_55*helper_8 - 1.0*helper_55);
122const auto helper_57 = helper_14*helper_18;
123const auto helper_58 = helper_9*(-helper_46 + helper_47 + helper_57*helper_8 + 1.0*helper_57);
124const auto helper_59 = helper_10*helper_14;
125const auto helper_60 = -helper_25*helper_59;
126const auto helper_61 = helper_14*helper_29;
127const auto helper_62 = helper_9*(-helper_37 + helper_38 + helper_61*helper_8 + 1.0*helper_61);
128const auto helper_63 = helper_14*helper_31;
129const auto helper_64 = helper_9*(1.0*F10*helper_7 - helper_53 - helper_63*helper_8 - 1.0*helper_63);
130const auto helper_65 = helper_35*helper_59;
131const auto helper_66 = helper_10*helper_16;
132const auto helper_67 = -helper_18*helper_66;
133const auto helper_68 = helper_25*helper_66;
134const auto helper_69 = -helper_29*helper_66;
135const auto helper_70 = helper_16*helper_31;
136const auto helper_71 = F02*helper_20;
137const auto helper_72 = F02*helper_22;
138const auto helper_73 = helper_9*(helper_70*helper_8 + 1.0*helper_70 + helper_71 - helper_72);
139const auto helper_74 = helper_16*helper_35;
140const auto helper_75 = F01*helper_22;
141const auto helper_76 = -helper_9*(F01*helper_20 + helper_74*helper_8 + 1.0*helper_74 - helper_75);
142const auto helper_77 = helper_10*helper_18;
143const auto helper_78 = -helper_25*helper_77;
144const auto helper_79 = helper_18*helper_29;
145const auto helper_80 = helper_9*(-helper_71 + helper_72 + helper_79*helper_8 + 1.0*helper_79);
146const auto helper_81 = -helper_31*helper_77;
147const auto helper_82 = helper_18*helper_35;
148const auto helper_83 = F00*helper_20;
149const auto helper_84 = F00*helper_22;
150const auto helper_85 = helper_9*(helper_8*helper_82 + 1.0*helper_82 + helper_83 - helper_84);
151const auto helper_86 = helper_25*helper_29;
152const auto helper_87 = helper_9*(1.0*F01*helper_7 - helper_75 - helper_8*helper_86 - 1.0*helper_86);
153const auto helper_88 = helper_25*helper_31;
154const auto helper_89 = helper_9*(helper_8*helper_88 - helper_83 + helper_84 + 1.0*helper_88);
155const auto helper_90 = helper_10*helper_35;
156const auto helper_91 = -helper_25*helper_90;
157const auto helper_92 = -helper_10*helper_29*helper_31;
158const auto helper_93 = helper_29*helper_90;
159const auto helper_94 = -helper_31*helper_90;
160result_0[0] = helper_10*pow(helper_2, 2);
161result_0[1] = helper_13;
162result_0[2] = helper_15;
163result_0[3] = helper_17;
164result_0[4] = helper_24;
165result_0[5] = helper_28;
166result_0[6] = helper_30;
167result_0[7] = helper_34;
168result_0[8] = helper_39;
169result_0[9] = helper_13;
170result_0[10] = helper_10*pow(helper_11, 2);
171result_0[11] = helper_41;
172result_0[12] = helper_43;
173result_0[13] = helper_44;
174result_0[14] = helper_48;
175result_0[15] = helper_50;
176result_0[16] = helper_51;
177result_0[17] = helper_54;
178result_0[18] = helper_15;
179result_0[19] = helper_41;
180result_0[20] = helper_10*pow(helper_14, 2);
181result_0[21] = helper_56;
182result_0[22] = helper_58;
183result_0[23] = helper_60;
184result_0[24] = helper_62;
185result_0[25] = helper_64;
186result_0[26] = helper_65;
187result_0[27] = helper_17;
188result_0[28] = helper_43;
189result_0[29] = helper_56;
190result_0[30] = helper_10*pow(helper_16, 2);
191result_0[31] = helper_67;
192result_0[32] = helper_68;
193result_0[33] = helper_69;
194result_0[34] = helper_73;
195result_0[35] = helper_76;
196result_0[36] = helper_24;
197result_0[37] = helper_44;
198result_0[38] = helper_58;
199result_0[39] = helper_67;
200result_0[40] = helper_10*pow(helper_18, 2);
201result_0[41] = helper_78;
202result_0[42] = helper_80;
203result_0[43] = helper_81;
204result_0[44] = helper_85;
205result_0[45] = helper_28;
206result_0[46] = helper_48;
207result_0[47] = helper_60;
208result_0[48] = helper_68;
209result_0[49] = helper_78;
210result_0[50] = helper_10*pow(helper_25, 2);
211result_0[51] = helper_87;
212result_0[52] = helper_89;
213result_0[53] = helper_91;
214result_0[54] = helper_30;
215result_0[55] = helper_50;
216result_0[56] = helper_62;
217result_0[57] = helper_69;
218result_0[58] = helper_80;
219result_0[59] = helper_87;
220result_0[60] = helper_10*pow(helper_29, 2);
221result_0[61] = helper_92;
222result_0[62] = helper_93;
223result_0[63] = helper_34;
224result_0[64] = helper_51;
225result_0[65] = helper_64;
226result_0[66] = helper_73;
227result_0[67] = helper_81;
228result_0[68] = helper_89;
229result_0[69] = helper_92;
230result_0[70] = helper_10*pow(helper_31, 2);
231result_0[71] = helper_94;
232result_0[72] = helper_39;
233result_0[73] = helper_54;
234result_0[74] = helper_65;
235result_0[75] = helper_76;
236result_0[76] = helper_85;
237result_0[77] = helper_91;
238result_0[78] = helper_93;
239result_0[79] = helper_94;
240result_0[80] = helper_10*pow(helper_35, 2);;
241 hess(0, 0) = result_0[0];
242 hess(0, 1) = result_0[1];
243 hess(0, 2) = result_0[2];
244 hess(0, 3) = result_0[3];
245 hess(0, 4) = result_0[4];
246 hess(0, 5) = result_0[5];
247 hess(0, 6) = result_0[6];
248 hess(0, 7) = result_0[7];
249 hess(0, 8) = result_0[8];
250 hess(1, 0) = result_0[9];
251 hess(1, 1) = result_0[10];
252 hess(1, 2) = result_0[11];
253 hess(1, 3) = result_0[12];
254 hess(1, 4) = result_0[13];
255 hess(1, 5) = result_0[14];
256 hess(1, 6) = result_0[15];
257 hess(1, 7) = result_0[16];
258 hess(1, 8) = result_0[17];
259 hess(2, 0) = result_0[18];
260 hess(2, 1) = result_0[19];
261 hess(2, 2) = result_0[20];
262 hess(2, 3) = result_0[21];
263 hess(2, 4) = result_0[22];
264 hess(2, 5) = result_0[23];
265 hess(2, 6) = result_0[24];
266 hess(2, 7) = result_0[25];
267 hess(2, 8) = result_0[26];
268 hess(3, 0) = result_0[27];
269 hess(3, 1) = result_0[28];
270 hess(3, 2) = result_0[29];
271 hess(3, 3) = result_0[30];
272 hess(3, 4) = result_0[31];
273 hess(3, 5) = result_0[32];
274 hess(3, 6) = result_0[33];
275 hess(3, 7) = result_0[34];
276 hess(3, 8) = result_0[35];
277 hess(4, 0) = result_0[36];
278 hess(4, 1) = result_0[37];
279 hess(4, 2) = result_0[38];
280 hess(4, 3) = result_0[39];
281 hess(4, 4) = result_0[40];
282 hess(4, 5) = result_0[41];
283 hess(4, 6) = result_0[42];
284 hess(4, 7) = result_0[43];
285 hess(4, 8) = result_0[44];
286 hess(5, 0) = result_0[45];
287 hess(5, 1) = result_0[46];
288 hess(5, 2) = result_0[47];
289 hess(5, 3) = result_0[48];
290 hess(5, 4) = result_0[49];
291 hess(5, 5) = result_0[50];
292 hess(5, 6) = result_0[51];
293 hess(5, 7) = result_0[52];
294 hess(5, 8) = result_0[53];
295 hess(6, 0) = result_0[54];
296 hess(6, 1) = result_0[55];
297 hess(6, 2) = result_0[56];
298 hess(6, 3) = result_0[57];
299 hess(6, 4) = result_0[58];
300 hess(6, 5) = result_0[59];
301 hess(6, 6) = result_0[60];
302 hess(6, 7) = result_0[61];
303 hess(6, 8) = result_0[62];
304 hess(7, 0) = result_0[63];
305 hess(7, 1) = result_0[64];
306 hess(7, 2) = result_0[65];
307 hess(7, 3) = result_0[66];
308 hess(7, 4) = result_0[67];
309 hess(7, 5) = result_0[68];
310 hess(7, 6) = result_0[69];
311 hess(7, 7) = result_0[70];
312 hess(7, 8) = result_0[71];
313 hess(8, 0) = result_0[72];
314 hess(8, 1) = result_0[73];
315 hess(8, 2) = result_0[74];
316 hess(8, 3) = result_0[75];
317 hess(8, 4) = result_0[76];
318 hess(8, 5) = result_0[77];
319 hess(8, 6) = result_0[78];
320 hess(8, 7) = result_0[79];
321 hess(8, 8) = result_0[80];
322 return hess;
323 }
324 }
325}
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > VolumePenalty3d_gradient(const RowVectorNd &p, const double t, const int el_id, const Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > &F, const double k)
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 9, 9 > VolumePenalty3d_hessian(const RowVectorNd &p, const double t, const int el_id, const Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > &F, const double k)
Eigen::Matrix< double, 1, Eigen::Dynamic, Eigen::RowMajor, 1, 3 > RowVectorNd
Definition Types.hpp:13