On Sun, Nov 23, 2014 at 6:36 PM, Jed Brown <[email protected]> wrote:

> "Welland, Michael J." <[email protected]> writes:
>
> > I'm using PCFieldSplit with 2 fields, and sometimes the ksp solver for
> > one of those fields diverges. Is it possible to have it immediately
> > kill the outer ksp solver when this happens?
>
> I can't think of a nice way.  You could set a convergence test for the
> outer that checks the converged reason on the inner solvers
> (PCFieldSplitGetSubKSP, KSPGetConvergedReason).
>
> This is actually a recurring issue across hierarchical preconditioners.
> In many cases, the hierarchical preconditioner is attempting to add
> robustness or leverage inexact component solves, in which case inner
> solves don't "converge".  It would not be hard to add a crude check in
> PCFieldSplit, but fine-grained control over which component solver is
> expected to converge seems like it would add significant complexity.
> But I see the value, so we should figure something out.
>

This is also a problem when using nonlinear preconditioners, since the
SNES rarely converges. We have a nice command line way to tell Newton
to ignore KSP failures, so maybe we need something like that for nested
KSPs.

   MAtt

-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener

Reply via email to