Hi Matthew, Yes SLEPc does allow me to solve a generalized eigenvalue problem. But the generalized solvers are not as robust as the standard eigenvalue solvers. That's the reason I want to use explicit MatMatMult so that I can use standard eigenvalue solvers.
Thanks, Bikash On May 11, 2015 1:00 PM, "Matthew Knepley" <knep...@gmail.com> wrote: > On Mon, May 11, 2015 at 8:47 AM, Bikash Kanungo <bik...@umich.edu> wrote: > >> 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. >> > > You can solve these types of things with SLEPc without explicit MatMat. > > Matt > > >> 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 >> >> > > > -- > What most experimenters take for granted before they begin their > experiments is infinitely more interesting than any results to which their > experiments lead. > -- Norbert Wiener >