Skip to main content
`Ctrl`+`K`

# VecScatterCreateToAll

Creates a vector and a scatter context that copies all vector values to each processor

## Synopsis

    #include "petscsf.h"
    PetscErrorCode VecScatterCreateToAll(Vec vin, VecScatter *ctx, Vec *vout)

Collective

## Input Parameter

- vin - an `MPIVEC`

## Output Parameters

- ctx - scatter context

- vout - output `SEQVEC` that is large enough to scatter into

## Example Usage

      VecScatterCreateToAll(vin, &ctx, &vout);

      // scatter as many times as you need
      VecScatterBegin(ctx, vin, vout, INSERT_VALUES, SCATTER_FORWARD);
      VecScatterEnd(ctx, vin, vout, INSERT_VALUES, SCATTER_FORWARD);

      // destroy scatter context and local vector when no longer needed
      VecScatterDestroy(&ctx);
      VecDestroy(&vout);

## Notes

`vout` may be `NULL` [`PETSC_NULL_VEC` from Fortran] if you do not need to have it created

Do NOT create a vector and then pass it in as the final argument `vout`! `vout` is created by this routine automatically (unless you pass `NULL` in for that argument if you do not need it).

## See Also

Low-level Vector Communication, `VecScatter`, `VecScatterCreate()`, `VecScatterCreateToZero()`, `VecScatterBegin()`, `VecScatterEnd()`

## Level

intermediate

## Location

src/vec/vec/utils/vscat.c

## Examples

src/ksp/ksp/tutorials/ex49.c
src/ksp/ksp/tutorials/ex43.c

Index of all Vec routines
Table of Contents for all manual pages
Index of all manual pages