[petsc-users] how to catch zero pivot errors underneath SNES

Ed Bueler elbueler at alaska.edu
Wed Apr 8 11:08:48 CDT 2015


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)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150408/00ac8cb1/attachment.html>


More information about the petsc-users mailing list