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
