[petsc-users] a preconditioner question

Jed Brown jed at 59A2.org
Tue Jun 8 11:02:43 CDT 2010


On Tue, 8 Jun 2010 11:27:58 -0400, "SUN Chun" <Chun.SUN at 3ds.com> wrote:
> Hi Petsc Developers,
> 
> I was using a preconditioner of ASM with subpc ILU, (outside KSP is
> BCGS). I have an impression that ASM is somewhat close to block-Jacobi
> in a parallel sense. Then I was thinking to do multiple
> preconditioning for the whole system to increase the convergence
> behavior on the boundary equations. However I can't find any options
> that I can increase the "passes" of preconditioner usage.

These inner "passes" are Richardson iterations, you can implement with

  -pc_type ksp -ksp_ksp_type richardson -ksp_ksp_max_it 4 -ksp_pc_type asm

> I was also trying "-pc_type composite", then specifying
> "-pc_composite_pcs asm,asm", and "-sub_pc_type ilu", this gave me
> error of ilu can not run in parallel. But I was intended to run ilu as
> sub_pc inside each domain.

Try -sub_sub_pc_type ilu (default, BTW), or -sub_1_sub_pc_type if you
only want to apply to one of the "passes".  But this method just applies
the preconditioners additively, so the left-preconditioned Krylov
operator is just (P_0+P_1)A.  To combine them multiplicatively use
-pc_composite_type multiplicative, but note that this always takes a
full step (like Richardson with relaxation constant 1) so your
preconditioner would have to have uniform control of the spectrum.  So
this might possibly do what you want, but you probably want to use a
nested Richardson instead of Composite.

Be sure to run with -ksp_view when nesting preconditioners deeply,
otherwise it's easy to get lost and not be doing quite what you expect.

Jed


More information about the petsc-users mailing list