[petsc-dev] non-symmetric permutation in PCFieldSplit

Jungho Lee julee at mcs.anl.gov
Thu Feb 23 13:05:22 CST 2012


I'd like to solve a system with a block structure with PCFieldSplit:

[A B;C D][x;y] = [v;w]

(I wrote it this way to simplify notation but x and y are in fact
interlaced, i.e., I'm solving a permuted version of the system above,
where the variables are laid out as x_1 y_1 x_2 y_2 ...., so the
system is fieldsplit-friendly)

Applying PCFieldSplit to the equivalent system

[D C;B A][y;x] = [w;v]

can be done with command line options (-pc_fieldsplit_0_fields 1
-pc_fieldsplit_1_fields 0), but I'm also interested in solving

[C D;A B][x;y] = [v;w] (to be able to explore different
preconditioning strategies), which currently doesn't seem to be
supported. At first glance it seems like this can be easily solved by
adding extra IS (is) and PetscInt* (fields) objects in
_PC_FieldSplitLink, read in integer arrays for rows and columns (the
symmetric case where the rows and columns have the same indices is
already handled by -pc_fieldsplit_%d_fields), fill in the extra IS
object, and allow the user to use these two different IS's in the
MatGetSubMatrix calls in PCSetUp_FieldSplit. Is it really as simple as
that, or am I missing something here?

Thanks,
Jungho



More information about the petsc-dev mailing list