<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Nov 23, 2014 at 6:36 PM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">"Welland, Michael J." <<a href="mailto:mwelland@anl.gov">mwelland@anl.gov</a>> writes:<br>
<br>
> I'm using PCFieldSplit with 2 fields, and sometimes the ksp solver for<br>
> one of those fields diverges. Is it possible to have it immediately<br>
> kill the outer ksp solver when this happens?<br>
<br>
</div></div>I can't think of a nice way.  You could set a convergence test for the<br>
outer that checks the converged reason on the inner solvers<br>
(PCFieldSplitGetSubKSP, KSPGetConvergedReason).<br>
<br>
This is actually a recurring issue across hierarchical preconditioners.<br>
In many cases, the hierarchical preconditioner is attempting to add<br>
robustness or leverage inexact component solves, in which case inner<br>
solves don't "converge".  It would not be hard to add a crude check in<br>
PCFieldSplit, but fine-grained control over which component solver is<br>
expected to converge seems like it would add significant complexity.<br>
But I see the value, so we should figure something out.<br>
</blockquote></div><br>This is also a problem when using nonlinear preconditioners, since the</div><div class="gmail_extra">SNES rarely converges. We have a nice command line way to tell Newton</div><div class="gmail_extra">to ignore KSP failures, so maybe we need something like that for nested</div><div class="gmail_extra">KSPs.</div><div class="gmail_extra"><br></div><div class="gmail_extra">   MAtt<br clear="all"><div><br></div>-- <br><div class="gmail_signature">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div>
</div></div>