<div class="gmail_quote">On Thu, Feb 23, 2012 at 13:05, Jungho Lee <span dir="ltr"><<a href="mailto:julee@mcs.anl.gov">julee@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div id=":13n">[C D;A B][x;y] = [v;w] (to be able to explore different<br>
preconditioning strategies), which currently doesn't seem to be<br>
supported. At first glance it seems like this can be easily solved by<br>
adding extra IS (is) and PetscInt* (fields) objects in<br>
_PC_FieldSplitLink, read in integer arrays for rows and columns (the<br>
symmetric case where the rows and columns have the same indices is<br>
already handled by -pc_fieldsplit_%d_fields), fill in the extra IS<br>
object, and allow the user to use these two different IS's in the<br>
MatGetSubMatrix calls in PCSetUp_FieldSplit. Is it really as simple as<br>
that, or am I missing something here?</div></blockquote></div><br><div>I suggest leaving the original field ordering. Add a new function PCFieldSplitSetPermutation(PC,const PetscInt *rowperm,const PetscInt *colperm). Then your desired permutation is</div>
<div><br></div><div>-pc_fieldsplit_permutation_row 1,0</div><div>-pc_fieldsplit_permutation_col 0,1</div><div><br></div><div><br></div><div>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).</div>