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