#include "petscvec.h" PetscErrorCode VecScatterBegin(VecScatter ctx,Vec x,Vec y,InsertMode addv,ScatterMode mode)Neighbor-wise Collective on VecScatter and Vec
ctx | - scatter context generated by VecScatterCreate() | |
x | - the vector from which we scatter | |
y | - the vector to which we scatter | |
addv | - either ADD_VALUES or INSERT_VALUES, with INSERT_VALUES mode any location not scattered to retains its old value; i.e. the vector is NOT first zeroed. | |
mode | - the scattering mode, usually SCATTER_FORWARD. The available modes are: SCATTER_FORWARD or SCATTER_REVERSE |
Options Database: See VecScatterCreate()
You cannot change the values in the input vector between the calls to VecScatterBegin() and VecScatterEnd().
If you use SCATTER_REVERSE the two arguments x and y should be reversed, from the SCATTER_FORWARD.
y[iy[i]] = x[ix[i]], for i=0,...,ni-1
This scatter is far more general than the conventional scatter, since it can be a gather or a scatter or a combination, depending on the indices ix and iy. If x is a parallel vector and y is sequential, VecScatterBegin() can serve to gather values to a single processor. Similarly, if y is parallel and x sequential, the routine can scatter from one processor to many processors.