<br><br><div class="gmail_quote">On Sat, Oct 1, 2011 at 03:04, Hui Zhang <span dir="ltr">&lt;<a href="mailto:mike.hui.zhang@hotmail.com">mike.hui.zhang@hotmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div style="word-wrap:break-word">Thank you, Jed!  I have more questions: <div><br><div>if I do C=A*B with A(or B) of MatNest type and B(or A, resp.) of usual type,<div>what type will C be of?  </div></div></div></div></blockquote>
<div><br></div><div>MatMatMult() is not currently supported for any type combination involving MatNest.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div style="word-wrap:break-word"><div><div><div>And is there any function not supporting MatNest, for example, does LU decomposition </div><div>supports MatNest? </div></div></div></div></blockquote><div><br></div><div>No, and the only practical way to do so would be to convert it to an AIJ format.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word"><div><div><div>Does one sometimes need to convert MatNest to the usual type and how to do it? </div>
</div></div></div></blockquote><div><br></div><div>MatConvert() except that case is not written so it won&#39;t work yet. I will write it, it&#39;s not difficult, but it hasn&#39;t been needed yet.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div style="word-wrap:break-word"><div><div><div>The MatNest is useful to me because my matrix is in the form [K1*K2  K3*K4].</div><div>I think to construct it as MatNest is easier than setting up Aij.</div></div></div></div>
</blockquote><div><br></div><div>The difficulty to construct them should be about the same. In particular, you should be able to use identical code to assemble into either format by building [K1, K3] and [K2; K4]. You can create these matrices (set dimensions and types, but no values), call MatGetLocalSubMatrix() to address the &quot;blocks&quot;, and call the assembly routines for each block. Then do the MatMatMult. The assembly part will work for any format, the MatMatMult() will currently require AIJ (not Nest), but will work as soon as MatMatMult_Nest() is implemented.</div>
<div><br></div></div>