Skip to main content
`Ctrl`+`K`

# PetscSFGetGraph

Get the graph specifying a parallel star forest

## Synopsis

    #include "petscsf.h"
    PetscErrorCode PetscSFGetGraph(PetscSF sf, PetscInt *nroots, PetscInt *nleaves, const PetscInt *ilocal[], const PetscSFNode *iremote[])

Not Collective

## Input Parameter

- sf - star forest

## Output Parameters

- nroots - number of root vertices on the current process (these are possible targets for other MPI process to attach leaves)

- nleaves - number of leaf vertices on the current process, each of these references a root on any MPI process

- ilocal - locations of leaves in leafdata buffers (if returned value is `NULL`, it means leaves are in contiguous storage)

- iremote - remote locations of root vertices for each leaf on the current process

## Notes

We are not currently requiring that the graph is set, thus returning `nroots` = -1 if it has not been set yet

The returned `ilocal` and `iremote` might contain values in different order than the input ones in `PetscSFSetGraph()`

## Fortran Note

Use `PetscSFRestoreGraph()` when access to the arrays is no longer needed

## See Also

PetscSF - an alternative to low-level MPI calls for data communication, `PetscSF`, `PetscSFType`, `PetscSFCreate()`, `PetscSFView()`, `PetscSFSetGraph()`

## Level

intermediate

## Location

src/vec/is/sf/interface/sf.c

## Examples

src/vec/is/sf/tutorials/ex1.c
src/ts/tutorials/ex30.c
src/vec/is/sf/tutorials/ex1f.F90

## Implementations

PetscSFGetGraph_Allgatherv() in src/vec/is/sf/impls/basic/allgatherv/sfallgatherv.c
PetscSFGetGraph_Alltoall() in src/vec/is/sf/impls/basic/alltoall/sfalltoall.c

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