PetscSFSetGraph#
Set a parallel star forest
Synopsis#
#include "petscsf.h"
PetscErrorCode PetscSFSetGraph(PetscSF sf, PetscInt nroots, PetscInt nleaves, PetscInt *ilocal, PetscCopyMode localmode, PetscSFNode *iremote, PetscCopyMode remotemode)
Collective
Input Parameters#
sf - star forest
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, pass
NULL
for contiguous storage (locations must be >= 0, enforced during setup in debug mode)localmode - copy mode for
ilocal
iremote - remote locations of root vertices for each leaf on the current process (locations must be >= 0, enforced during setup in debug mode)
remotemode - copy mode for
iremote
Notes#
Leaf indices in ilocal
must be unique, otherwise an error occurs.
Input arrays ilocal
and iremote
follow the PetscCopyMode
semantics.
In particular, if localmode
or remotemode
is PETSC_OWN_POINTER
or PETSC_USE_POINTER
,
PETSc might modify the respective array;
if PETSC_USE_POINTER
, the user must delete the array after PetscSFDestroy()
.
Only if PETSC_COPY_VALUES
is used, the respective array is guaranteed to stay intact and a const array can be passed (but a cast to non-const is needed).
Fortran Notes#
In Fortran you must use PETSC_COPY_VALUES
for localmode
and remotemode
.
Developer Notes#
We sort leaves to check for duplicates and contiguousness and to find minleaf/maxleaf.
This also allows to compare leaf sets of two PetscSF
s easily.
See Also#
PetscSF
, PetscSFType
, PetscSFCreate()
, PetscSFView()
, PetscSFGetGraph()
Level#
intermediate
Location#
Examples#
src/vec/is/sf/tutorials/ex2.c
src/ts/tutorials/ex11_sa.c
src/vec/is/sf/tutorials/ex1.c
src/vec/is/sf/tutorials/ex1f.F90
src/dm/tutorials/swarm_ex3.c
src/vec/is/sf/tutorials/ex3.c
Index of all PetscSF routines
Table of Contents for all manual pages
Index of all manual pages