<div dir="ltr">This code structure goes back 20 years, but these are the reasons (not necessarily adequate reasons) for it.<div><br></div><div>1) You need the Jacobi eigen estimates it what is the setup phase of the solver.  Its like needing to do ILU to do the symbolic factorization of a matrix -- you don't have a solver necessarily when you do the setup.</div><div><br></div><div>2) crazy matrices</div><div><br></div><div>3) setting an intelligent minimum eigenvalue for Cheby that is MG specific.</div><div><br></div><div>4) CG should be the default for this because SA should be use for symmetric matrices and CG is much better than GMRES in my experience.</div><div><br></div><div>I think I lost the (4) fight long ago.  (3) is done with user input and maybe we make something like this the default in Cheby because smoothers are where Cheby is used most.  (2) can be ignored or fixed some other way.  (1) could be fixed. It looks like a lot of code reshuffling but a) maybe that is a good thing anyway, and 2) maybe it is not as complicated as it is looking to me right now.  There are a lot of dependencies here.  That is why it is so complicated but I can probably simplify this.</div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 25, 2015 at 11:02 AM, Mark Adams <span dir="ltr"><<a href="mailto:mfadams@lbl.gov" target="_blank">mfadams@lbl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Mon, Feb 23, 2015 at 7:19 AM, Tobin Isaac <span dir="ltr"><<a href="mailto:tisaac@ices.utexas.edu" target="_blank">tisaac@ices.utexas.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>On Sun, Feb 22, 2015 at 07:48:51PM -0700, Jed Brown wrote:<br>
> Barry Smith <<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>> writes:<br>
> >   Jed,<br>
> ><br>
> >    Wrong, wrong, wrong. You are looking at the wrong place in the<br>
> >    code. (Yes, this is a problem with duplicate code in THREE!<br>
> >    places). I am referring to the code around line 795 in gamg.c /* do<br>
> >    my own cheby */ which I actually cut and pasted into my previous<br>
> >    email. You are referring to the code in agg.c around line 1209<br>
> >    which does what you said.<br>
><br>
> Okay, yes.<br>
><br>
> >    The code I am referring to computes the estimates used by the<br>
> >    smoother on each level and thus forces a bypass of the code in<br>
> >    Chebyshev.c it seems completely unneeded to me (aside from maybe<br>
> >    the hack for crazy matrices) since Chebyshev.c will do it next<br>
> >    automatically anyways.<br>
><br>
> Yeah. It would be nice to avoid repeating the estimate when the smoother<br>
> matches the AMG smoothing.<br>
<br>
</div></div>If we just keep the part that calls KSPChebyshevSetEigenvalues()<br>
(gamg.c:801) when the smoother PC is Jacobi or SOR, that would<br>
accomplish this.  The used would have to recognize what's happening<br>
and not call -mg_levels_ksp_chebysev_estimate_eigenvalues, which would<br>
recompute/override the values that gamg sets.<br></blockquote><div><br></div></span><div>That is a reasonable approach.</div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
As for crazy matrices, I think the most general solution is for<br>
KSPChebyshev to try a MatProjectDirichlet(Mat,Vec) method on the rhs<br>
it uses for estimation.<br>
<br></blockquote><div><br></div></span><div>That sounds promising.  Is that basically the same code that I have? </div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  Toby<br>
<br>
</blockquote></div><br></div></div>
</blockquote></div><br></div>