[petsc-users] 2 level schur

Luc Berger-Vergiat lb2653 at columbia.edu
Thu Mar 20 18:20:12 CDT 2014

Hi all,
I am solving a four field problem using two Schur complements. Here are 
the arguments that I usually pass to PETSc to do it:

    -ksp_type gmres -pc_type fieldsplit -pc_fieldsplit_type schur
    -pc_fieldsplit_schur_factorization_type full
    -pc_fieldsplit_schur_precondition selfp -pc_fieldsplit_0_fields 2,3
    -pc_fieldsplit_1_fields 0,1 -fieldsplit_0_ksp_type preonly
    -fieldsplit_0_pc_type fieldsplit -fieldsplit_0_pc_fieldsplit_type
    schur -fieldsplit_0_pc_fieldsplit_schur_factorization_type full
    -fieldsplit_0_pc_fieldsplit_schur_precondition selfp
    -fieldsplit_0_fieldsplit_Field_2_fields 2
    -fieldsplit_0_fieldsplit_Field_3_fields 3
    -fieldsplit_0_fieldsplit_Field_2_ksp_type preonly
    -fieldsplit_0_fieldsplit_Field_2_pc_type ilu
    -fieldsplit_0_fieldsplit_Field_3_ksp_type preonly
    -fieldsplit_0_fieldsplit_Field_3_pc_type jacobi
    -fieldsplit_1_ksp_type preonly -fieldsplit_1_pc_type lu -malloc_log
    mlog -log_summary time.log

One issue with this is that when I change 
-fieldsplit_0_fieldsplit_Field_2_fields 2 to 
-fieldsplit_0_fieldsplit_Field_2_fields 3 it is ineffective, as if PETSc 
automatically assign IS 2 to Field 2 even though it is not what I want.
Is there a way to pass the arguments correctly so that PETSc goes about 
switching the IS set of -fieldsplit_0_fieldsplit_Field_2 and 
This is crucial to me since I am using the selfp option and the matrix 
associated to IS 3 is diagonal. By assigning the fields correctly I can 
get an exact Schur preconditioner and hence very fast convergence. Right 
now my convergence is not optimal because of this.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140320/7cfe174e/attachment-0001.html>

More information about the petsc-users mailing list