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 process to attach leaves)

  • nleaves - number of leaf vertices on the current process, each of these references a root on any 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 Notes#

The returned iremote array is a copy and must be deallocated after use. Consequently, if you want to update the graph, you must call PetscSFSetGraph() after modifying the iremote array.

To check for a NULL ilocal use

if (loc(ilocal) == loc(PETSC_NULL_INTEGER)) then

See Also#

PetscSF, PetscSFType, PetscSFCreate(), PetscSFView(), PetscSFSetGraph()

Level#

intermediate

Location#

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

Examples#

src/ts/tutorials/ex11_sa.c
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