<div dir="ltr">Dear PETSc --<div><br></div><div>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.</div><div><br></div><div>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).</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>Thanks,</div><div><br></div><div>Ed<br clear="all"><div><br></div>-- <br><div class="gmail_signature">Ed Bueler<br>Dept of Math and Stat and Geophysical Institute<br>University of Alaska Fairbanks<br>Fairbanks, AK 99775-6660<br>301C Chapman and 410D Elvey<br>907 474-7693 and 907 474-7199 (fax 907 474-5394)</div>
</div></div>