<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Mar 14, 2017 at 5:42 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
> On Mar 14, 2017, at 5:32 PM, Fangbo Wang <<a href="mailto:fangbowa@buffalo.edu">fangbowa@buffalo.edu</a>> wrote:<br>
><br>
> Hi,<br>
><br>
> I know this is not a problem specific to PETSc, but I have this doubt for a long time and want to ask the experts here.<br>
><br>
> Suppose I have a very large linear system of equations with 1.5 million unkowns. It is common to use relative tolerance as a stopping criteria.<br>
><br>
> For a small linear system, I usually use 1e-6, or 1e-8, or 1e-10, etc. But for a very large linear system, do I need to use a relative tolerance much smaller than the previous I use? (Theoretically I think the relative tolerance has nothing related to system size).<br>
><br>
> However, something very weird happens. I used 1e-7 as my relative tolerance for my linear system  with 1.5 million unknows using conjugate gradient method with jacobi preconditioner, the solver can not converge to 1e-7 with 10,000 iterations. I can use a larger tolerance but the solution is not good.<br>
<br>
</span>   This is not particularly weird. Jacobi preconditioning can perform very poorly depending on the structure of your matrix.<br>
<br>
   So first you need a better preconditioner. Where does the matrix come from? This helps determine what preconditioner to use. For example, is it a pressure solve, a structural mechanics problem, a Stokes-like problem, a fully implicit cdf problem.</blockquote><div><br></div><div>Simple estimates can be useful for thinking about solvers:</div><div><br></div><div>  1) Lets say the conditioning of your problem looks like the Laplacian, since I know what that is and since I believe elasticity does look like this. The</div><div>      condition number grows as h^{-2}</div><div><br></div><div>          kappa = C h^{-2}</div><div><br></div><div>  2) Using CG to solve a system to a given relative tolerance takes about sqrt(kappa) iterations</div><div><br></div><div>  3) I do not think Jacobi contributes to asymptotics, just the constant</div><div><br></div><div>  4) Overall, that means it will take</div><div><br></div><div>          C h^{-1}</div><div><br></div><div>       iterations to solve your system. As you refine, the number of iterations goes up until you jsut cannot solve it anymore.</div><div>       This is exactly what is meant by a non-scalable solver, and as Barry point out, for this problem MG provides a scalable</div><div>       solver. A lot of times, MG is hard to tune correctly so we use something to handle a few problematic modes in the</div><div>       problem for which MG as not tuned correctly, and that would be the Krylov method.</div><div><br></div><div>    Thanks,</div><div><br></div><div>      Matt</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="HOEnZb"><font color="#888888"><br>
   Barry<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
><br>
> Any one have some  advices? Thank you very much!<br>
><br>
> Best regards,<br>
><br>
> Fangbo Wang<br>
><br>
> --<br>
> Fangbo Wang, PhD student<br>
> Stochastic Geomechanics Research Group<br>
> Department of Civil, Structural and Environmental Engineering<br>
> University at Buffalo<br>
> Email: <a href="mailto:fangbowa@buffalo.edu">fangbowa@buffalo.edu</a><br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="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>