VecScatterBegin#
Begins a generalized scatter from one vector to another. Complete the scattering phase with VecScatterEnd()
.
Synopsis#
#include "petscsf.h"
PetscErrorCode VecScatterBegin(VecScatter sf, Vec x, Vec y, InsertMode addv, ScatterMode mode)
Neighbor-wise Collective
Input Parameters#
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
orINSERT_VALUES
, withINSERT_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
orSCATTER_REVERSE
Notes#
The vectors x
and y
need not be the same vectors used in the call
to VecScatterCreate()
, but x
must have the same parallel data layout
as that passed in as the x
to VecScatterCreate()
, similarly for the y
.
Most likely they have been obtained from VecDuplicate()
.
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.
See Also#
Low-level Vector Communication, VecScatter
, VecScatterCreate()
, VecScatterEnd()
Level#
intermediate
Location#
Examples#
src/ts/tutorials/ex29.c
src/vec/vec/tutorials/ex44.c
src/dm/tutorials/ex6.c
src/vec/vec/utils/tagger/tutorials/ex1.c
src/ts/tutorials/ex30.c
src/ksp/ksp/tutorials/ex43.c
src/dm/tutorials/ex14.c
src/dm/tutorials/ex25.c
src/dm/tutorials/ex22.c
src/ksp/ksp/tutorials/ex73.c
Index of all PetscSF routines
Table of Contents for all manual pages
Index of all manual pages