**petsc-main 2021-04-20**

# 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 on VecScatter

### Input Parameters

Options Database: See VecScatterCreate()

### 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

VecScatterCreate(), VecScatterEnd()

### Level

intermediate

### Location

src/vec/is/sf/interface/vscat.c
### Examples

src/vec/vec/utils/tagger/tutorials/ex1.c.html

src/vec/vec/tutorials/ex44.c.html

src/dm/tutorials/ex6.c.html

src/ksp/ksp/tutorials/ex43.c.html

src/ksp/ksp/tutorials/ex49.c.html

src/ksp/ksp/tutorials/ex73.c.html

src/tao/constrained/tutorials/ex1.c.html

src/tao/pde_constrained/tutorials/elliptic.c.html

src/tao/pde_constrained/tutorials/parabolic.c.html

src/tao/pde_constrained/tutorials/hyperbolic.c.html

Index of all PetscSF routines

Table of Contents for all manual pages

Index of all manual pages