> > 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. >
So, I need to implement MatConvert_MATIS_AIJ. 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. It seems to me that the best logic should then be if(im_active_on_the_next_level) MatCreateSEQAIJ(PETSC_COMM_SELF,A_MATIS_NEW... MatConvert(A_MATIS,MATAIJ,MAT_REUSE_MATRIX,&A_MATIS_NEW) 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 MatConvert(A_MATIS,MATAIJ,MAT_INITIAL_MATRIX,&A_MATIS_NEW) and A_MATIS_NEW should than be created by the procedure and take the same comm of A_MATIS. Is it fine for you? -- Stefano -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120510/4d36c291/attachment.html>