[petsc-users] ghost points, DMs, and vector operations

Gideon Simpson gideon.simpson at gmail.com
Fri Feb 24 21:12:08 CST 2017


I’ve got a simple problem where I use a DM to handle a representation of a vector complex numbers, storing the real and imaginary components at each lattice point. I also have ghost points at either end, i.e.:

DMDACreate1d (PETSC_COMM_WORLD, DM_BOUNDARY_GHOSTED, N, 2 , 1 , NULL, &dm ) ;

I have a few related questions:

1.  Is there a quick way to zero out the ghost points, other than to do 

DMGetLocalVector(dm,&local);	
DMGlobalToLocalBegin(dm,global,INSERT_VALUES,local);
DMGlobalToLocalEnd(dm,global,INSERT_VALUES,local);
DMDAVecGetArray(dm, local, &array);
DMDAGetLocalInfo(dm, &info);
  if(info.xs == 0){
    array[-1].u =0.0;
    array[-1].v =0.0;
  }
  if(info.xs + info.xm == info.mx){
    array[info.mx].u =0.0;
    array[info.mx].v =0.0;
  }
/* call restores after */

My point is, I don’t really need to interfere with any of the entries, just the values in those two ghost points.

2.  If I take a dot product of two such vectors (associated with the dm, as arrays of complex numbers in terms of real and imaginary parts), does the dot product operate on the ghost points too, or just the “real” values?  

3.  If I apply a VecCopy, VecAXPY, or any similar operation  to such vectors, do they also operate on the ghost points?

-gideon



More information about the petsc-users mailing list