Matt,<br><br>I tried what you suggested but it didn&#39;t work. I inserted the following lines in my &quot;PCApply&quot; routine:<br><br>(...)<br><br>    ierr = SNESGetKSP(snes, &amp;ksp); CHKERRQ(ierr);<br>    ierr = KSPGetIterationNumber(ksp, &amp;its); CHKERRQ(ierr);<br>
<br>    if(its % pc-&gt;lag)<br>    {<br>// skip the preconditioning phase<br>        return 0;<br>    }<br><br>// else apply preconditioner<br><br>Then I ran a test and here&#39;s what happened:<br><br>$ ./sbratu -xdiv 32 -ydiv 32 -snes_mf -user_precond -snes_converged_reason -snes_monitor -ksp_converged_reason -smfulusgs_lag 2<br>
  0 SNES Function norm 1.165810453479e+00 <br>Linear solve did not converge due to DIVERGED_NULL iterations 1<br>Nonlinear solve did not converge due to DIVERGED_LINEAR_SOLVE<br><br>What&#39;s wrong with this?<br><br>Rafael<br>