#include "petscsf.h" PetscErrorCode VecScatterBegin(VecScatter sf,Vec x,Vec y,InsertMode addv,ScatterMode mode)Neighbor-wise Collective on VecScatter
|sf||- scatter context generated by VecScatterCreate()|
|x||- the vector from which we scatter|
|y||- the vector to which we scatter|
|addv||- either ADD_VALUES, MAX_VALUES, MIN_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.