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