[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 回复: Re: About unpreconditioned residuals in Left Preconditioned GMRES




   To calculate the true residual norm at each iteration of left preconditioned GMRES requires
actually forming b - A*x which means computing A*x which means computing x (which is not available
without additional calculations at each iteration). This is why we do not support left preconditioning with 
true residual norm convergence test.

   You should use the KSP type of FGMRES, it is written using right preconditioning and for a standard PC
is identical to regular GMRES.

   Barry

On Feb 2, 2008, at 10:09 AM, jiaxun hou wrote:

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.

Best regards,
Jiaxun
Dave May <dave.mayhem23@xxxxxxxxx> 写道:
Hi,
    You can use the function
PetscErrorCode PETSCKSP_DLLEXPORT KSPSetConvergenceTest(KSP ksp,PetscErrorCode (*converge)(KSP,PetscInt,PetscReal,KSPConvergedReason*,void*),void *cctx)
to define your own convergence test.

Cheers,
    Dave.





2008/2/2 jiaxun hou <jiaxun_hou@xxxxxxxxxxxx>:
Hi everyone,

I want to use the Left Preconditioned GMRES to solve a linear system, and the stopping criterion  must  be  based on the  actual residuals (b-Ax). But the  GMRES codes of PETSc seems to use the preconditioned residuals (B^-1(b-Ax)) only. In addition,  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?

Best regards,
Jiaxun

雅虎邮箱传递新年祝福,个性贺卡送亲朋!




雅虎邮箱传递新年祝福,个性贺卡送亲朋!