Dear PETSc -- Context: I am solving a not very smooth and very nonlinear problem using SNES. Robustness is an issue but I think there is no theory to help me, and I am stuck mollifying the problem a bit when divergence happens. Thus I deal with the returned divergence reason (i.e. SNESConvergedReason) by making the problem slightly easier. This deals with DIVERGED_LINE_SEARCH and DIVERGED_LINEAR_SOLVE the way I want, for example.
The problem is that sometimes zero pivots occur, either in default (GMRES+ILU or GMRES+BJACOBI+sub_ILU) or in domain decomposition (GMRES+ASM+sub_LU). I want to catch and deal with these zero pivots in the same way, ideally. Is there a way to make zero pivot propagate through to generate a new negative SNESConvergedReason? Note that DIVERGED_LINEAR_SOLVE would tell me enough; it seems to me a zero pivot during application of the preconditioner *is* a DIVERGED_LINEAR_SOLVE error anyway. If not, can I at least catch the zero pivot error so it is not an error (i.e. so the program continues), without ignoring all errors? I think I don't want to push PetscIgnoreErrorHandler, because I am happy with how other errors are handled. Thanks, Ed -- Ed Bueler Dept of Math and Stat and Geophysical Institute University of Alaska Fairbanks Fairbanks, AK 99775-6660 301C Chapman and 410D Elvey 907 474-7693 and 907 474-7199 (fax 907 474-5394)