Dear list, I am a bit confused by some SNES options. How do -snes_mf, -snes_fd, SNESSetJacobian exactly interact?
I run my code (it's basically the Bratu3D example in python) with -snes_fd 0 -snes_mf 0 and my RHS code gets called 7 times -snes_fd 0 -snes_mf 1 and RHS called 44 times -snes_fd 1 -snes_mf 0 and RHS called 775 times -snes_fd 1 -snes_mf 1 and RHS called 44 times without -snes_mf AT ALL but with -snes_fd 0 I get RHS called 3 times [1] without -snes_mf AT ALL but with -snes_fd 1 I get RHS called 775 times without -snes_mf OR -snes_fd, I get RHS called 3 times [1] without -snes_fd at all and -snes_mf, I get 44 calls without -snes_fd at all and -snes_mf 1, I get 44 calls without -snes_fd at all and -snes_mf 0, I get 3 calls [1] I would have expected -snes_mf 0 and no snes_mf at all to behave in the same way. I am also puzzled by the fact that there seem to be four different ways to solve the problem: with Jacobian (3 calls), with fd (775 calls) and with mf (44 calls). What is the 7 calls case all about? I guess in all the years I've used PETSc I should have learnt better, but I had never taught it to anyone before, so hand't noticed my lack of knowledge. Cheers, Juha [1] This causes my Jacobian routine to be called as intended.
