<div class="gmail_quote">On Thu, May 10, 2012 at 2:19 PM, Stefano Zampini <span dir="ltr"><<a href="mailto:stefano.zampini@gmail.com" target="_blank">stefano.zampini@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>For MatIS, I would be fine with creating a new MatIS using the same local matrices on a subcommunicator, then MatConvert'ing it to AIJ (that will do assembly), and discarding the temporary subcomm MatIS.</div>
</blockquote></div><br></div>So, I need to implement MatConvert_MATIS_AIJ.<br><br>I need such a procedure to create a new MATIS representing the BDDC coarse matrix, not to assemble a parallel matrix. Note that the converted matrix should be SEQAIJ for actual implementation of PETSc MATIS.</blockquote>
<div><br></div><div>This is to do recursive BDDC or what?</div><div><br></div><div>MatConvert does not change the linear operator, it just changes the format. I get the impression from this email that you want to make it do more than that.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> It seems to me that the best logic should then be<br>
<br>if(im_active_on_the_next_level) MatCreateSEQAIJ(PETSC_COMM_SELF,A_MATIS_NEW...<br>MatConvert(A_MATIS,MATAIJ,MAT_REUSE_MATRIX,&A_MATIS_NEW)<br><br>Mat_Convert_MATIS_AIJ should than detect the only process having already created the converted matrix. In case you need a parallel AIJ matrix , then the call should be<br>
<br>MatConvert(A_MATIS,MATAIJ,MAT_INITIAL_MATRIX,&A_MATIS_NEW)<br>
<br>and A_MATIS_NEW should than be created by the procedure and take the same comm of A_MATIS. Is it fine for you? <br clear="all"><span class="HOEnZb"><font color="#888888"><br>-- <br>Stefano<br>
</font></span></blockquote></div><br>