146 const std::string &type)
149 if (type ==
"Bifurcation")
154 for (
int i = 0; i < 3; ++i)
156 GetC(c[i],
beta[i], Au[i], A0[i], alpha[i]);
162 J.SetValue(0, 3, c[0] / Au[0]);
170 J.SetValue(1, 4, -c[1] / Au[1]);
178 J.SetValue(2, 5, -c[2] / Au[2]);
180 J.SetValue(3, 0, Au[0]);
181 J.SetValue(3, 1, -Au[1]);
182 J.SetValue(3, 2, -Au[2]);
183 J.SetValue(3, 3, uu[0]);
184 J.SetValue(3, 4, -uu[1]);
185 J.SetValue(3, 5, -uu[2]);
187 J.SetValue(4, 0, 2 * uu[0]);
188 J.SetValue(4, 1, -2 * uu[1]);
190 J.SetValue(4, 3, 2 * c[0] * c[0] / Au[0]);
191 J.SetValue(4, 4, -2 * c[1] * c[1] / Au[1]);
194 J.SetValue(5, 0, 2 * uu[0]);
196 J.SetValue(5, 2, -2 * uu[2]);
197 J.SetValue(5, 3, 2 * c[0] * c[0] / Au[0]);
199 J.SetValue(5, 5, -2 * c[2] * c[2] / Au[2]);
204 else if (type ==
"Merge")
209 for (
int i = 0; i < 3; ++i)
211 GetC(c[i],
beta[i], Au[i], A0[i], alpha[i]);
217 J.SetValue(0, 3, -c[0] / Au[0]);
225 J.SetValue(1, 4, c[1] / Au[1]);
233 J.SetValue(2, 5, c[2] / Au[2]);
235 J.SetValue(3, 0, Au[0]);
236 J.SetValue(3, 1, -Au[1]);
237 J.SetValue(3, 2, -Au[2]);
238 J.SetValue(3, 3, uu[0]);
239 J.SetValue(3, 4, -uu[1]);
240 J.SetValue(3, 5, -uu[2]);
242 J.SetValue(4, 0, 2 * uu[0]);
243 J.SetValue(4, 1, -2 * uu[1]);
245 J.SetValue(4, 3, 2 * c[0] * c[0] / Au[0]);
246 J.SetValue(4, 4, -2 * c[1] * c[1] / Au[1]);
249 J.SetValue(5, 0, 2 * uu[0]);
251 J.SetValue(5, 2, -2 * uu[2]);
252 J.SetValue(5, 3, 2 * c[0] * c[0] / Au[0]);
254 J.SetValue(5, 5, -2 * c[2] * c[2] / Au[2]);
259 else if (type ==
"Interface")
264 for (
int i = 0; i < 2; ++i)
266 GetC(c[i],
beta[i], Au[i], A0[i], alpha[i]);
271 J.SetValue(0, 2, c[0] / Au[0]);
277 J.SetValue(1, 3, -c[1] / Au[1]);
279 J.SetValue(2, 0, Au[0]);
280 J.SetValue(2, 1, -Au[1]);
281 J.SetValue(2, 2, uu[0]);
282 J.SetValue(2, 3, -uu[1]);
284 J.SetValue(3, 0, 2 * uu[0]);
285 J.SetValue(3, 1, -2 * uu[1]);
286 J.SetValue(3, 2, 2 * c[0] * c[0] / Au[0]);
287 J.SetValue(3, 3, -2 * c[1] * c[1] / Au[1]);