OK. It worksThank you

--- 09?12?1????, ming zhu <foolishzhu at yahoo.com.cn> ???

???: ming zhu <foolishzhu at yahoo.com.cn>
??: Re: How to copy global data to local ?
???: "PETSc users list" <petsc-users at mcs.anl.gov>
??: 2009?12?1?,??,??10:29

It seems that MatGetSubMatrix() only get the local matrix for the processor? If 
U is global(PETSC_COMM_WORLD), the local matrix may not store the column or row 
I wanted. For example, if U is 4*4, and there are 4 processors, processors one 
has local matrix 2*2, but i need the third row, Then,MatGetSubmatrix() may not 
work

--- 09?12?1????, Barry Smith <bsmith at mcs.anl.gov> ???

???: Barry Smith <bsmith at mcs.anl.gov>
??: Re: How to copy global data to local ?
???: "PETSc users list" <petsc-users at mcs.anl.gov>
??: 2009?12?1?,??,??10:23


On Nov 30, 2009, at 11:21 PM, ming zhu wrote:

> Hi
> I have a huge matrix U for
 all processors (PETSC_COMM_WORLD). I only want to copy only two rows (i,j) for 
each local processor. i,j is different for each processor and not related to 
rank.? I was trying to use a vector filter (like, 00000010000). However, if the 
vector is PETSC_COMM_WORLD, it will be changed by different processor. So, how 
to make it ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
? ? ?
 ???^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

???I do not understand what this means. To do the multiply you can and should 
use a vector of PETSC_COMM_WORLD.

???Also multiplying by a vector will not give you back "rows" of a matrix. Do 
you truly want the entire row of nonzeros of the matrix or something else. If 
you want the entire row or part of a row then you can use MatGetSubMatrix().

???Barry

> Thank you
> 
> My original code is
> 
> Vec filter
> VecCreate(PETSC_COMM_WORLD,&filter);
> VecSetsizes(filter,PETSC_DECIDE,m);
> VecSetFromOptions(filter);
> 
> Vecset(filter,0);
> VecSetValue(filter,i,1,INSERT_VALUES);
> 
> ...
> MatMult(U, filter,ui);
> 
> If I create filter with PETSC_COMM_SELF, it is impossible for U and filter to 
> multiply.
> 
> 
>
 
> 
> 
> ?????????????????





        ?????????????????


      ___________________________________________________________ 
  ????????????????? 
http://card.mail.cn.yahoo.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20091202/bd7a0f30/attachment.htm>

Reply via email to