Thank you, Dave. But there is still a question: how can I get the residual vector in each iteration? It seems difficult to get it without modifying the GMRES codes.<br><br>Best regards,<br>Jiaxun<br><b><i>Dave May &lt;dave.mayhem23@gmail.com&gt;</i></b> Ð´µÀ£º<blockquote class="replbq" style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"> Hi,<br>&nbsp;&nbsp;&nbsp; You can use the function<br><pre>PetscErrorCode PETSCKSP_DLLEXPORT KSPSetConvergenceTest(KSP ksp,PetscErrorCode (*converge)(KSP,PetscInt,PetscReal,KSPConvergedReason*,void*),void *cctx)</pre>to define your own convergence test.<br> <br>Cheers,<br>&nbsp;&nbsp;&nbsp; Dave.<br><br><br><br><br><br><div class="gmail_quote">2008/2/2 jiaxun hou &lt;<a href="mailto:jiaxun_hou@yahoo.com.cn">jiaxun_hou@yahoo.com.cn</a>&gt;:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> Hi everyone,<br><br>I want to use the
 Left Preconditioned GMRES to solve a linear system, and the stopping criterion&nbsp; must&nbsp; be&nbsp; based on the&nbsp; actual residuals (b-Ax). But the&nbsp; GMRES codes of PETSc seems to use the preconditioned residuals (B^-1(b-Ax)) only. In addition,&nbsp; when I set KSPSetNormType(ksp,KSP_NORM_UNPRECONDITIONED), I receive the error message: "Currently can use GMRES with only preconditioned residual (right preconditioning not coded)". So, is there any way to set stopping criterion based on the actual residuals?<br> <br>Best regards,<br>Jiaxun<br> <div>          </div><hr size="1"><a href="http://cn.mail.yahoo.com/gc/index.html?entry=5&amp;souce=mail_mailletter_tagline" target="_blank">ÑÅ»¢ÓÊÏä´«µÝÐÂÄê×£¸££¬¸öÐԺؿ¨ËÍÇ×Åó£¡</a> </blockquote></div><br> </blockquote><br><p>&#32;


      <hr size=1><a href="http://cn.mail.yahoo.com/gc/index.html?entry=5&souce=mail_mailletter_tagline">ÑÅ»¢ÓÊÏä´«µÝÐÂÄê×£¸££¬¸öÐԺؿ¨ËÍÇ×Åó£¡</a>