[petsc-users] DIVERGED_LINEAR_SOLVE in SNES
Smith, Barry F.
bsmith at mcs.anl.gov
Thu Sep 26 21:27:39 CDT 2019
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 <petsc-users at mcs.anl.gov> 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.
More information about the petsc-users
mailing list