Li,

   It is possible, but as Hong said probably never appropriate. Especially if 
KSP has iterated for 10,000 iterations. If you want SNES to "try" the direction 
given by a failed solve you should use a much smaller maximum number of 
iterations for KSP.

   Anways, to do what you desire 

#include <petsc/private/kspimpl.h>

call KSPSetPostSolve() and in your post solve() function simply do ksp->reason 
= KSP_CONVERGED_ITS.

 Barry


  

> On Sep 26, 2019, at 10:58 AM, Zhang, Hong via petsc-users 
> <[email protected]> wrote:
> 
> Li :
> You can use '-ksp_max_it 20000' to change maximum iteration count. However, 
> it does not make sense to continue after it fails at 10000 iterations. You 
> should figure out why linear solver diverges. Run your code with 
> '-ksp_monitor' or '-ksp_monitor_true_residual'.
> Hong
> 
> Dear developer,
> 
> I am using SNES for solving a nonlinear system.  For some cases, SNES 
> diverged -3 with "DIVERGED_LINEAR_SOLVE" when the linear solver reached its 
> maximum iteration count (i.e -ksp_max_it 10000).
> Is that possible to let SNES continue even though the linear solver reaches 
> the maximum number of iterations? Just take the result at 10000 for the 
> Jacobian solution and then update the Newton step?
> 
> Best,
> Li
> 
> 
> 
> This message and its contents, including attachments are intended solely for 
> the original recipient. If you are not the intended recipient or have 
> received this message in error, please notify me immediately and delete this 
> message from your computer system. Any unauthorized use or distribution is 
> prohibited. Please consider the environment before printing this email.

Reply via email to