How to fill a matrix with a vector parallelly

Barry Smith bsmith at mcs.anl.gov
Sun Nov 29 19:53:13 CST 2009


   Since evenvectors will (almost always) be dense vectors you will  
want to use a MPIDENSE matrix to store them. So create a MPIDENSE  
matrix with the same row layout as the eigenvector then on each  
process use VecGetArray() to access that processes part of the vector  
and MatGetArray() to access that part of the matrix and copy the  
values over from the vector array to the matrix array.

    Barry

On Nov 29, 2009, at 7:41 PM, ming zhu wrote:

> HI
> I am trying to solve an eigenvalue problem. A = U * LAMBDA*U'.   
> While SLEPC proivdes a solver to get an eigenvector and the related  
> eigenvalue, I have to fill the eigenvector to form the eigen matrix.  
> However, there seems no such function to do this directly. I was  
> trying to use VecGetValues and filled the matrix one by one.  
> Howevevr, it can not do that in parallel.
>
>    Is there anyone can help me ?
>
> Thank you
>
>
> 好玩贺卡等你发,邮箱贺卡全新上线!



More information about the petsc-users mailing list