On Dec 27, 2012, at 10:34 AM, amlan barua <abarua at iit.edu> wrote:
> I think I can use VecSetValues, is that right? Yes you could do that. But since you are using a DMDA you could also use DMGetLocalVector(), DMGlobalToLocalBegin/End() followed by DMDAVecGetArray() to access the ghost values. Barry > Amlan > > > On Thu, Dec 27, 2012 at 9:04 AM, amlan barua <abarua at iit.edu> wrote: > Hi Barry, > Is this scattering a very costly operation? I have to compute x[i] = > f(x[i-1]) where f is known. Since this operation is strictly sequential, I > thought of gathering the entire vector on processor 0, do the sequential > operation there and scatter the result back. However this is unnecessary > because I only need the bordering x[i] values. What can be a better way? > Amlan > > > On Thu, Dec 27, 2012 at 8:18 AM, Barry Smith <bsmith at mcs.anl.gov> wrote: > > ierr = DMDACreateNaturalVector(da,&natural);CHKERRQ(ierr); > ierr = > DMDAGlobalToNaturalBegin(da,xin,INSERT_VALUES,natural);CHKERRQ(ierr); > ierr = DMDAGlobalToNaturalEnd(da,xin,INSERT_VALUES,natural);CHKERRQ(ierr); > > Now do VecScatterCreateToZero() from natural and the vector will be in the > natural ordering on process zero with the dof interlaced. > > > Barry > > On Dec 27, 2012, at 12:22 AM, amlan barua <abarua at iit.edu> wrote: > > > Hi, > > Is there an analogue of VecScatterCreateToZero for DA vectors? The DMDA > > object has more than one degrees of freedom. > > If there isn't any, should I use an IS object to do the scattering? > > Amlan > > >
