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