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
