On Tue, Mar 15, 2011 at 6:09 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br>
On Mar 15, 2011, at 6:03 PM, Matthew Knepley wrote:<br>
<br>
> On Tue, Mar 15, 2011 at 6:00 PM, Jed Brown <<a href="mailto:jed@59a2.org">jed@59a2.org</a>> wrote:<br>
> On Tue, Mar 15, 2011 at 23:50, Matthew Knepley <<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>> wrote:<br>
> That is not what I have here. I want to change a portion, but outside of that I want it to fall back to a global matrix.<br>
><br>
> You were going to put your MatShell in the "pmat" slot, right? What are you going to use for preconditioning the other blocks? If it's the same as in "mat", you could use a MatNest for both operators and put the special sauce in that slot of the "pmat".<br>

><br>
> This is the same objection Barry has. I do not want this tied to a particular matrix impl for the global matrix.<br>
<br>
</div>  But you are tying it to a MATSHELL, that is a particular impl<br></blockquote><div><br></div><div>Only the precon thing is a MATSHELL, not my original matrix. The way Jed is saying to do it (I think) is to</div><div>
have my original matrix assembled as a MatNest.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
  Why not pass your Mat (maybe a global MPIAIJ) as the mat and pass your MatNest as your pmat and have some of the subblocks in the MatNest be defined by submatrices of of the MPIAIJ matrix.<br>
<br>
  That is, introduce a new matrix class that contains a pointer to a big matrix and two IS. The IS defines the part of the big matrix that this new matrix object represent. In this way you can build your pmat as a MatNest and put whatever stuff you want in some of its blocks but have the other blocks be defined as parts of the original mat (which is the big assed AIJ or anything else).</blockquote>
<div><br></div><div>That is what I have, without the MatNest (I do not see what it adds here).</div><div><br></div><div>  Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<font color="#888888"><br>
<br>
  Barry<br>
</font><div><div></div><div class="h5"><br>
><br>
> If you assemble the matrix entirely monolithically (using MatSetValues globally instead of MatSetValuesLocal on each physics separately), then we haven't written MatSetValues_Nest yet so maybe your MatShell is the right idea.<br>

><br>
><br>
> Related: What do people think about having MatGetSubMatrix() retain ownership of the submatrix?<br>
><br>
> Does it matter with our interface? Should be transparent.<br>
><br>
>    Matt<br>
><br>
> --<br>
> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
> -- Norbert Wiener<br>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener<br>