#include "petscvec.h" PetscErrorCode VecScatterBegin(Vec x,Vec y,InsertMode addv,ScatterMode mode,VecScatter inctx)Collective on VecScatter and Vec
|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|
|inctx||- scatter context generated by VecScatterCreate()|
|-vecscatter_rr||- use ready receiver mode (i.e. receives are post BEFORE sends)|
|-vecscatter_ssend||- use MPI_Ssend() instead of MPI_Send()|
|-vecscatter_packtogether||- packs all the message before sending any and receivers all before sending. Default for the alltoall versions.|
|-vecscatter_sendfirst||- post ALL sends before posting receives (cannot be used with -vecscatter_rr)|
|-vecscatter_alltoallv||- use MPI_Alltoallv() instead of sends and receives|
|-vecscatter_alltoallw||- use MPI_Alltoallw() instead of MPI_Alltoallv() for INSERT_VALUES|
You cannot change the values in the input vector between the calls to VecScatterBegin() and VecScatterEnd().
If you use SCATTER_REVERSE the first two arguments 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.
Index of all Vec routines
Table of Contents for all manual pages
Index of all manual pages