Hi Gideon,<br>&nbsp;&nbsp;&nbsp; I&#39;ve created a small package built around petsc which contains implementations for representing block vectors, matrices and preconditioners. Whilst no documentation exist yet (sorry), a number of examples are included with the package. In addition, I have only defined a subset of operations for the block objects, but there are enough to allow you to setup, precondition and solve both linear &amp; nonlinear block systems.
<br><br>You can obtain the tarball from within the following URL<br>&nbsp;&nbsp;&nbsp; <a href="http://www.mcc.monash.edu.au/Codes/PetscExt">http://www.mcc.monash.edu.au/Codes/PetscExt</a><br><br>If you do try to use this package, and encounter any difficulties, please don&#39;t hesitate to contact me.
<br><br><br>Cheers,<br>&nbsp;&nbsp;&nbsp; Dave May.<br><br><br><br><div class="gmail_quote">On Jan 8, 2008 8:19 AM, Gideon Simpson &lt;<a href="mailto:grs2103@columbia.edu">grs2103@columbia.edu</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style="">Is there a robust way to implement the following?<div><br></div><div>Suppose I have a block diagonal matrix</div><div>P = [A 0; 0 Q];</div><div>and I know the indices of A and Q in this block matrix. &nbsp;I now want to apply different preconditioners on the A block and on the Q block. &nbsp;
</div><div><br></div><div>One way, that I&#39;ve had some success with, is to write a PCSHELL, where I split the input and output vectors using index sets and apply the relevant preconditioner on each of these. &nbsp;However, this hardwires things, and I was wondering if there was another method.
</div><font color="#888888"><br><br><div> <p style="margin: 0px;"><font style="font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none;" face="Helvetica" size="3">
-gideon</font></p>  </div><br></font></div></blockquote></div><br>