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