Hi Patrick, Thanks for the clarification. I want it to be an efficient operation. The idea is to convert a generalized eigenvalue problem (H*x = lamda*M*x) to a standard one (M^{-1}*H*x = lambda*x). The M^{-1} is of type MATNEST whereas H is MPIAIJ. In my problem M^{-1} is computed once whereas H changes every iteration. So performing low-level matrix multiplication or creating H as MATNEST and assembling it from its sub-matrices at every iteration sounds inefficient.
Regards, Bikash On Mon, May 11, 2015 at 9:21 AM, Patrick Sanan <patrick.sa...@gmail.com> wrote: > MatMatMult with MATNEST does not seem to be supported, based only on the > fact that there are no functions of the form MatMatMult_*_MatNest defined > with the MATNEST implementation : > http://www.mcs.anl.gov/petsc/petsc-current/src/mat/impls/nest/matnest.c.html > > Does this operation need to be efficient? (That is, are you forming this > matrix for debugging or experimental purposes, or with the intention of > using it within an efficient, scalable piece of code?). If not, it should > be possible to use lower-level matrix operations as defined by the API to > extract the appropriately-sized submatrices from A and (assuming that > MatMatMult is defined between MATMPIAIJ and the submatrices of your > Matnest), perform the matrix multiplications and additions "by hand" . > > On Mon, May 11, 2015 at 2:44 PM, Bikash Kanungo <bik...@umich.edu> wrote: > >> Hi, >> >> I have two matrices: A of type MPIAIJ and B of type MATNEST. Is there any >> way to perform A*B after B has been assembled from its sub-matrices? >> >> Thanks, >> Bikash >> >> -- >> Bikash S. Kanungo >> PhD Student >> Computational Materials Physics Group >> Mechanical Engineering >> University of Michigan >> >> > -- Bikash S. Kanungo PhD Student Computational Materials Physics Group Mechanical Engineering University of Michigan