FDP also failed using the Newton solver. Interestingly the first few nonlinear iterations have the same residual as with my hand-coded jacobian.
The convergence for 8x8x8 is bad from the very beginning while for smaller problems it is quadratic.
When I ran with -pc_type svd and -pc_svd_monitor using my hand-coded jacobian it stalled (as you indicated it might). My workstation is a bit old (and my jacobian expensive) so that is the likely issue. I'll keep it running in the background and update later.
With PJFNK I still find that the linear system doesn't converge on these larger problems. On a 2x2x2 grid using the following PETSc options:
[Preconditioning]
[./SMP]
type = SMP
#type = FDP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew -ksp_monitor_true_residual -ksp_compute_singularvalues'
petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -ksp_gmres_restart'
petsc_options_value = 'asm lu 1 101 '
[]
I get the following (2x2x2 grid):
0 Nonlinear |R| = 3.657852e+03
0 Linear |R| = 3.657852e+03
0 KSP unpreconditioned resid norm 3.657851852883e+03 true resid norm 3.657851852883e+03 ||r(i)||/||b|| 1.000000000000e+00
1 Linear |R| = 1.066267e-04
1 KSP unpreconditioned resid norm 1.066266618933e-04 true resid norm 1.066266618196e-04 ||r(i)||/||b|| 2.915007663187e-08
Iteratively computed extreme singular values: max 1. min 1. max/min 1.
1 Nonlinear |R| = 2.198872e+02
0 Linear |R| = 2.198872e+02
0 KSP unpreconditioned resid norm 2.198871848142e+02 true resid norm 2.198871848142e+02 ||r(i)||/||b|| 1.000000000000e+00
1 Linear |R| = 2.207833e-05
1 KSP unpreconditioned resid norm 2.207833388103e-05 true resid norm 2.207833388140e-05 ||r(i)||/||b|| 1.004075517182e-07
Iteratively computed extreme singular values: max 1. min 1. max/min 1.
2 Nonlinear |R| = 2.842126e+00
0 Linear |R| = 2.842126e+00
0 KSP unpreconditioned resid norm 2.842126011735e+00 true resid norm 2.842126011735e+00 ||r(i)||/||b|| 1.000000000000e+00
1 Linear |R| = 7.695418e-07
1 KSP unpreconditioned resid norm 7.695417882062e-07 true resid norm 7.695417881913e-07 ||r(i)||/||b|| 2.707627265694e-07
Iteratively computed extreme singular values: max 1. min 1. max/min 1.
3 Nonlinear |R| = 1.843390e-03
0 Linear |R| = 1.843390e-03
0 KSP unpreconditioned resid norm 1.843390298813e-03 true resid norm 1.843390298813e-03 ||r(i)||/||b|| 1.000000000000e+00
1 Linear |R| = 7.104829e-10
1 KSP unpreconditioned resid norm 7.104828873693e-10 true resid norm 7.104828873698e-10 ||r(i)||/||b|| 3.854218435604e-07
Iteratively computed extreme singular values: max 1. min 1. max/min 1.
4 Nonlinear |R| = 1.947349e-09
But on a 8x8x8 grid I get:
0 Nonlinear |R| = 2.019572e+05
0 Linear |R| = 2.019572e+05
0 KSP unpreconditioned resid norm 2.019572436327e+05 true resid norm 2.019572436327e+05 ||r(i)||/||b|| 1.000000000000e+00
1 Linear |R| = 5.441531e-02
1 KSP unpreconditioned resid norm 5.441531418677e-02 true resid norm 5.441531418322e-02 ||r(i)||/||b|| 2.694397745008e-07
Iteratively computed extreme singular values: max 1. min 1. max/min 1.
1 Nonlinear |R| = 9.020061e+04
0 Linear |R| = 9.020061e+04
0 KSP unpreconditioned resid norm 9.020060927729e+04 true resid norm 9.020060927729e+04 ||r(i)||/||b|| 1.000000000000e+00
1 Linear |R| = 4.024374e-03
1 KSP unpreconditioned resid norm 4.024373994073e-03 true resid norm 4.024373994732e-03 ||r(i)||/||b|| 4.461581830740e-08
Iteratively computed extreme singular values: max 1. min 1. max/min 1.
2 Nonlinear |R| = 3.721752e+04
0 Linear |R| = 3.721752e+04
0 KSP unpreconditioned resid norm 3.721752052275e+04 true resid norm 3.721752052275e+04 ||r(i)||/||b|| 1.000000000000e+00
1 Linear |R| = 8.978024e-04
1 KSP unpreconditioned resid norm 8.978023858695e-04 true resid norm 8.978023859251e-04 ||r(i)||/||b|| 2.412311119372e-08
Iteratively computed extreme singular values: max 1. min 1. max/min 1.
3 Nonlinear |R| = 1.466025e+04
So as you can see it is following the Newton nonlinear residual exactly though it still doesn't converge. When I use boomerAMG it isn't able to solve the linear problem at all.
This branch does involve custom kernels which call a shared object library compiled external to MOOSE. Let me do some checking about sharing my repositories. I may have some restrictions there.
Nathan