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[]. 

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!  
>> 
>> 
>> 
>> 
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120527/3e11f32d/attachment.html>

Reply via email to