[petsc-users] DGMRES Right preconditioner

Gong Ding gdiso at ustc.edu
Mon Oct 3 04:47:09 CDT 2011

I had installed petsc-3.2, which has a new deflated GMRES solver.
It seems the deflation procedure provides addtional precondition on top of GMRES.

However, it seems the deflation was implemented as first right preconditioner:

if (ksp->pc_side == PC_LEFT) {
                /* Apply the first preconditioner */
                ierr = KSP_PCApplyBAorAB (ksp,VEC_VV (it), VEC_TEMP,VEC_TEMP_MATOP);
                CHKERRQ (ierr);
                /* Then apply Deflation as a preconditioner */
                ierr=KSPDGMRESApplyDeflation (ksp, VEC_TEMP, VEC_VV (1+it));
                CHKERRQ (ierr);
            } else if (ksp->pc_side == PC_RIGHT) {
                ierr=KSPDGMRESApplyDeflation (ksp, VEC_VV (it), VEC_TEMP);
                CHKERRQ (ierr);
                ierr=KSP_PCApplyBAorAB (ksp, VEC_TEMP, VEC_VV (1+it), VEC_TEMP_MATOP);
                CHKERRQ (ierr);

Since a "fixed" external preconditoner M such as ILU or my own PC will be used,
I want the deflation apply on AM^-1. As a result, the update of deflation preconditioner will not
affect the fixed preconditioner M. How should I modify the source code?

Gong Ding


More information about the petsc-users mailing list