<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Aug 31, 2016 at 3:49 AM, Choi Kyungjun <span dir="ltr"><<a href="mailto:kyungjun.choi92@gmail.com" target="_blank">kyungjun.choi92@gmail.com</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">Dear Petsc.<div><br></div><div>I am implementing Petsc library for my CFD flow code.</div><div><br></div><div>Thanks to Matt, I got what I wanted last week. </div><div><br></div><div>It was the GMRES with matrix-free method, no preconditioning matrix and command line options are below.</div><div><br></div><div><b>-snes_mf    -pc_type none    -..monitor   -..converged_reason</b></div><div><br></div><div>The solve worked, but performed very poorly.</div><div><br></div><div><br></div><div>I learned that the efficiency of Krylov-subspace methods depends strongly depends on a good preconditioner.</div><div><br></div><div><div>And in the Petsc manual, the matrix-free method is allowed only with no preconditioning, a user-provided preconditioner matrix, or a user-provided preconditioner shell.<br></div></div><div><br></div><div><br></div><div>Here are my questions.</div><div><br></div><div>1) To improve the solver performance using GMRES, is there any way using snes_mf without preconditioning matrix?</div></div></blockquote><div><br></div><div>Not really. The CHEBY preconditioner will work without an explicit matrix, however its not great by itself.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>2) For user-provided preconditioner matrix, I saw some example codes that provide approx. Jacobian matrix as preconditioner matrix. But this means that I should derive approx. Jacobian mat for system, am I right?</div></div></blockquote><div><br></div><div>Yes.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>3) I'd like to know which is the fastest way to solve with GMRES method. Could you tell me or let me know any other examples?</div></div></blockquote><div><br></div><div>1) The solve depends greatly on the physics/matrix you are using. Without knowing that, we can't say anything. For example, is</div><div>the system elliptic? If so, then using Multigrid (MG) is generally a good idea.</div><div><br></div><div>2) In general, I think its a mistake to think of GMRES or any KSP as a solver. We should think of them as accelerators for solvers,</div><div>as they were originally intended. For example, MG is a good solver for elliptic CFD equations, as long as you somehow deal with</div><div>incompressibility. Then you can use GMRES to cleanup some things you miss when implementing your MG solver.</div><div><br></div><div>3) The best thing to do in this case is to look at the literature, which is voluminous, and find the solver you want to implement. PETSc</div><div>really speeds up the actually implementation and testing.</div><div><br></div><div>  Thanks,</div><div><br></div><div>     Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Thank you very much for your help.</div><div><br></div><div>Sincerely,</div><div><br></div><div>Kyungjun.</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>