petscmaster 20181211
VecScatterBegin
Begins a generalized scatter from one vector to another. Complete the scattering phase with VecScatterEnd().
Synopsis
#include "petscvec.h"
PetscErrorCode VecScatterBegin(VecScatter ctx,Vec x,Vec y,InsertMode addv,ScatterMode mode)
Neighborwise Collective on VecScatter and Vec
Input Parameters
 ctx   scatter context generated by VecScatterCreate() or VecScatterCreateWithData()

 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()
Notes
The vectors x and y need not be the same vectors used in the call
to VecScatterSetData() or VecScatterCreateWithData(), but x must have the same parallel data layout
as that passed in as the x to VecScatterSetData() or VecScatterCreateWithData(), 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,...,ni1
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
VecScatterCreateWithData(), VecScatterEnd()
Level
intermediate
Location
src/vec/vscat/interface/vscatfce.c
Examples
src/vec/vec/utils/tagger/examples/tutorials/ex1.c.html
src/dm/examples/tutorials/ex2.c.html
src/dm/examples/tutorials/ex6.c.html
src/ksp/ksp/examples/tutorials/ex43.c.html
src/ksp/ksp/examples/tutorials/ex49.c.html
src/tao/pde_constrained/examples/tutorials/elliptic.c.html
src/tao/pde_constrained/examples/tutorials/parabolic.c.html
src/tao/pde_constrained/examples/tutorials/hyperbolic.c.html
Implementations
VecScatterBegin_SGToSG in src/vec/vscat/impls/seq/seqvscat.c
VecScatterBegin_SGToSS_Stride1 in src/vec/vscat/impls/seq/seqvscat.c
VecScatterBegin_SGToSS in src/vec/vscat/impls/seq/seqvscat.c
VecScatterBegin_SSToSG_Stride1 in src/vec/vscat/impls/seq/seqvscat.c
VecScatterBegin_SSToSG in src/vec/vscat/impls/seq/seqvscat.c
VecScatterBegin_SSToSS in src/vec/vscat/impls/seq/seqvscat.c
VecScatterBegin_MPI_ToAll in src/vec/vscat/impls/vscat.c
VecScatterBegin_MPI_ToOne in src/vec/vscat/impls/vscat.c
Index of all Vec routines
Table of Contents for all manual pages
Index of all manual pages