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