130 const std::string &type)
133 if (type ==
"Bifurcation")
138 for (
int i = 0; i < 3; ++i)
140 GetC(c[i],
beta[i], Au[i], A0[i], alpha[i]);
146 J.SetValue(0, 3, c[0] / Au[0]);
154 J.SetValue(1, 4, -c[1] / Au[1]);
162 J.SetValue(2, 5, -c[2] / Au[2]);
164 J.SetValue(3, 0, Au[0]);
165 J.SetValue(3, 1, -Au[1]);
166 J.SetValue(3, 2, -Au[2]);
167 J.SetValue(3, 3, uu[0]);
168 J.SetValue(3, 4, -uu[1]);
169 J.SetValue(3, 5, -uu[2]);
171 J.SetValue(4, 0, 2 * uu[0]);
172 J.SetValue(4, 1, -2 * uu[1]);
174 J.SetValue(4, 3, 2 * c[0] * c[0] / Au[0]);
175 J.SetValue(4, 4, -2 * c[1] * c[1] / Au[1]);
178 J.SetValue(5, 0, 2 * uu[0]);
180 J.SetValue(5, 2, -2 * uu[2]);
181 J.SetValue(5, 3, 2 * c[0] * c[0] / Au[0]);
183 J.SetValue(5, 5, -2 * c[2] * c[2] / Au[2]);
188 else if (type ==
"Merge")
193 for (
int i = 0; i < 3; ++i)
195 GetC(c[i],
beta[i], Au[i], A0[i], alpha[i]);
201 J.SetValue(0, 3, -c[0] / Au[0]);
209 J.SetValue(1, 4, c[1] / Au[1]);
217 J.SetValue(2, 5, c[2] / Au[2]);
219 J.SetValue(3, 0, Au[0]);
220 J.SetValue(3, 1, -Au[1]);
221 J.SetValue(3, 2, -Au[2]);
222 J.SetValue(3, 3, uu[0]);
223 J.SetValue(3, 4, -uu[1]);
224 J.SetValue(3, 5, -uu[2]);
226 J.SetValue(4, 0, 2 * uu[0]);
227 J.SetValue(4, 1, -2 * uu[1]);
229 J.SetValue(4, 3, 2 * c[0] * c[0] / Au[0]);
230 J.SetValue(4, 4, -2 * c[1] * c[1] / Au[1]);
233 J.SetValue(5, 0, 2 * uu[0]);
235 J.SetValue(5, 2, -2 * uu[2]);
236 J.SetValue(5, 3, 2 * c[0] * c[0] / Au[0]);
238 J.SetValue(5, 5, -2 * c[2] * c[2] / Au[2]);
243 else if (type ==
"Interface")
248 for (
int i = 0; i < 2; ++i)
250 GetC(c[i],
beta[i], Au[i], A0[i], alpha[i]);
255 J.SetValue(0, 2, c[0] / Au[0]);
261 J.SetValue(1, 3, -c[1] / Au[1]);
263 J.SetValue(2, 0, Au[0]);
264 J.SetValue(2, 1, -Au[1]);
265 J.SetValue(2, 2, uu[0]);
266 J.SetValue(2, 3, -uu[1]);
268 J.SetValue(3, 0, 2 * uu[0]);
269 J.SetValue(3, 1, -2 * uu[1]);
270 J.SetValue(3, 2, 2 * c[0] * c[0] / Au[0]);
271 J.SetValue(3, 3, -2 * c[1] * c[1] / Au[1]);