[petsc-dev] non-symmetric permutation in PCFieldSplit

Jed Brown jedbrown at mcs.anl.gov
Thu Feb 23 15:08:23 CST 2012


On Thu, Feb 23, 2012 at 13:05, Jungho Lee <julee at mcs.anl.gov> wrote:

> [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?
>

I suggest leaving the original field ordering. Add a new function
PCFieldSplitSetPermutation(PC,const PetscInt *rowperm,const PetscInt
*colperm). Then your desired permutation is

-pc_fieldsplit_permutation_row 1,0
-pc_fieldsplit_permutation_col 0,1


When we refactor this, we have to get rid of the goofy restriction that
Schur only works directly on 2x2 block systems, and we should really get
rid of the distinction between Schur and relaxation. I think we should be
able to select on a block-entry basis whether to use the entry that appears
in a relaxation-based method (just that entry of the original matrix) or
whether to use the block that appears in a factorization method (most
blocks involve a solve or a Schur complement).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120223/94d286b2/attachment.html>


More information about the petsc-dev mailing list