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

Reply via email to