Barry, I came across the same problem and decided to use KSPSetNormType instead of KSPSetPCSide. Do I understand correctly that CG with KSP_NORM_UNPRECONDITIONED would be as efficient as with KSP_NORM_PRECONDITIONED? Since PC_RIGHT is not supported, I was under the impression that the former would basically be the latter with an additional true residual evaluation for the convergence monitor, which would be less efficient.
Chris > On Mar 8, 2017, at 10:47 AM, Kong, Fande <[email protected]> wrote: > > Thanks Barry, > > We are using "KSPSetPCSide(ksp, pcside)" in the code. I just tried > "-ksp_pc_side right", and petsc did not error out. > > I like to understand why CG does not work with right preconditioning? > Mathematically, the right preconditioning does not make sense? No, mathematically it makes sense to do it on the right. It is just that the PETSc code was never written to support it on the right. One reason is that CG is interesting that you can run with the true residual or the preconditioned residual with left preconditioning, hence less incentive to ever bother writing it to support right preconditioning. For completeness we should support right as well as symmetric. Barry dr. ir. Christiaan Klaij | Senior Researcher | Research & Development MARIN | T +31 317 49 33 44 | mailto:[email protected] | http://www.marin.nl MARIN news: http://www.marin.nl/web/News/News-items/Your-future-is-Blue-Blueweek-April-1013.htm
