Skip to main content
`Ctrl`+`K`

# PetscSF

PETSc object for managing the communication of certain entries of arrays and `Vec` between MPI processes.

## Synopsis

    typedef struct _p_PetscSF *PetscSF;

`PetscSF` uses the concept of star forests to indicate and determine the communication patterns concisely and efficiently. A star https://en.wikipedia.org/wiki/Star_(graph_theory) forest is simply a collection of trees of height 1. The leave nodes represent “ghost locations” for the root nodes.

The standard usage paradigm for `PetscSF` is to provide the communication pattern with `PetscSFSetGraph()` or `PetscSFSetGraphWithPattern()` and then perform the communication using `PetscSFBcastBegin()` and `PetscSFBcastEnd()`, `PetscSFReduceBegin()` and `PetscSFReduceEnd()`.

## See Also

PetscSF - an alternative to low-level MPI calls for data communication, `PetscSFCreate()`, `PetscSFSetGraph()`, `PetscSFSetGraphWithPattern()`, `PetscSFBcastBegin()`, `PetscSFBcastEnd()`, `PetscSFReduceBegin()`, `PetscSFReduceEnd()`, `VecScatter`, `VecScatterCreate()`

## Level

intermediate

## Location

include/petscsftypes.h

## Examples

src/dm/tutorials/ex25.c
src/dm/tutorials/swarm_ex3.c
src/ts/tutorials/ex30.c
src/vec/is/sf/tutorials/ex3.c
src/dm/impls/plex/tutorials/ex14.c
src/ts/tutorials/ex11.c
src/vec/is/sf/tutorials/ex1f.F90
src/dm/impls/plex/tutorials/ex15.c
src/vec/is/sf/tutorials/ex1.c
src/vec/is/sf/tutorials/ex2.c

## Implementations

_p_PetscSF in include/petsc/private/sfimpl.h
PetscSF_Allgatherv in src/vec/is/sf/impls/basic/allgatherv/sfallgatherv.h
PetscSF_Neighbor in src/vec/is/sf/impls/basic/neighbor/sfneighbor.c
PetscSF_Basic in src/vec/is/sf/impls/basic/sfbasic.h
PetscSF_Window in src/vec/is/sf/impls/window/sfwindow.c

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