> the analytic Jacobian gets used. That said, our options scheme is lame
You said that, I did refrain from calling it confusing! ;) That said, you're doing a terrific job, so just having a small weirdness in something as peripheral as command line options is just a testament to how good PETSc is! > to use separate options when only one can possibly be used. We should > have -snes_jacobian <analytic,mf,mf_operator,fd,fd_color> or similar. So there are five different cases? I think my misunderstanding was related to mf_operator and fd_color: I did not realise they were distinct from md and fd, hence my perception that there should only be 3 different possibilities. Yet I only found four! I would imagine the one I missed is fd_color, correct? It seems to me -snes_fd == -snes_fd 1 and this uses the fd approx Jacobian [1] -snes_mf == -snes_mf 1 uses mf -snes_mf_operator uses, well, mf_operator (and calls RHS 16 times, btw) -snes_fd_color uses FD with colouring (this is the case which calls RHS 3 times; the hand-written Jacobian needs 7) -NOTHING AT ALL is the same as -snes_fd_color (this is what confused me most) -there is no way to tell PETSc "yes, I want hand-written Jacobian"? Even setting them all to explicitly to zero seems to cause fd_color to be used. (I do not get any errors and I get the right result after 3 calls to the RHS even if I never call SetJacobian.) Cheers, Juha By the way Matthew, all the tests converged with CONVERGED_FNORM_RELATIVE. [1] If I so both SNESSetJacobian and SNESSetUseFD (or jt SetFromOptions and call but -snes_fd 1), which one takes precedence? The last one called?
