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/3c6fe56f/attachment-0001.html>
