[petsc-users] MatSetValues: reorder the values

Barry Smith bsmith at mcs.anl.gov
Sun May 27 10:40:23 CDT 2012


On May 27, 2012, at 10:06 AM, Hui Zhang wrote:

> Since the values I want to take from v[] are not contiguous in v[], I found even with
> MatSetValuesLocal I can not avoid to make a copy of the values(that I want to take) in
> a new array vnew[]. 

   That extra copy is inexpensive compared to all the other overheads of MatSetValues() it will be barely noticeable.

   Barry


> 
> On May 27, 2012, at 2:12 PM, Dmitry Karpeev wrote:
> 
>> Have you looked at MatSetValuesLocal() 
>> http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatSetValuesLocal.html?  
>> That routine might be close enough to what you need.
>> Dmitry.
>> 
>> On Sun, May 27, 2012 at 4:01 AM, Hui Zhang <mike.hui.zhang at hotmail.com> wrote:
>> Also, in the case that only a *subset* of v[] is used, the new function sounds easy to me.
>> 
>> 
>> 
>>> Current MatSetValues is
>>> MatSetValues(Mat mat,PetscInt m,const PetscInt idxm[],PetscInt n,const PetscInt idxn[],const PetscScalar v[],InsertMode addv)
>>> I want something like
>>> MatSetValues(Mat mat,PetscInt m,const PetscInt idxm[],PetscInt n,const PetscInt idxn[],const PetscScalar v[], const PetscInt idxv[], InsertMode addv)
>>>          -----------------------
>>>          add a new parameter
>>> 
>>> 
>>> 
>>> 
>>> such that the values v[0..m*n] are first reordered to v[idxv[0..m*n]] before set to the mat.
>>> We may first do permutation on v before passing to current MatSetValues.  But won't the 
>>> 
>>> 
>>> 
>>> new function be easier to use? 
>>> 
>>> In the case that idxm[], idxn[] are obtained from a certain application ordering
>>> but not the ordering of v[], I think I need the new function.
>>> Of course, this new function sounds unnecessary because reordering v is equivalent to reordering 
>>> 
>>> 
>>> 
>>> idxm[] and idxn[].  But the second method seems not an easy task to me, is it?
>>> 
>>> Thanks!  
>>> 
>>> 
>>> 
>> 
>> 
> 



More information about the petsc-users mailing list