<div dir="ltr">Just to reiterate,add, emphasize what what was said. AMG solvers are very tricky to make robust to all -- even reasonable -- inputs. To say nothing of all inputs, but there are a finite number of ways the code can segv and we want fix them -- one by one.  This code is in fact sable, for 2-3 year now but users find valid ways to create a segv or mysterious failure and we fix these.  One at a time, but there is a finite number.<div><br></div><div>Many PC can be unsymmetric (ILU, MG with F-cycles) and in the case of ILU indefinite to boot (thus the fix that Barry talked about).  And as Jed says CG seems to be pretty robust to this.  I've seen PETSc CG return negative eigenvalues for large deformation elasticity that do in fact go indefinite (buckling) but it worked fine and Newton eventually converged to an SPD system.</div><div><br></div><div>AMG (MG in general) should not be indefinite with valid inputs, for scalar Laplacian at least. So a V-cycle preconditioner for an SPD matrix, with an SPD smoother should stay SPD.  It might die but it should not be indefinite.</div><div><br></div><div>Mark</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Oct 23, 2014 at 2:12 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"><span class="">Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> writes:<br>
>    It is any interesting question if there is anything one can “do” to<br>
>    a preconditioner to insure that it is SPD or detect if it may not<br>
>    be BEFORE actually running the CG with that preconditioned.<br>
<br>
</span>You can use an eigensolver for the extreme eigenvalues of the iteration<br>
matrix for the smoother.  And if it's unstable, report that.  This is<br>
one thing that the petsc-eig plugin (which I'll update) can do, but it's<br>
too expensive to do by default.<br>
</blockquote></div><br></div>