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 PetscSFs easily.

See Also#

PetscSF, PetscSFType, PetscSFCreate(), PetscSFView(), PetscSFGetGraph()

Level#

intermediate

Location#

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

Examples#

src/dm/tutorials/swarm_ex3.c
src/vec/is/sf/tutorials/ex2.c
src/vec/is/sf/tutorials/ex1f.F90
src/vec/is/sf/tutorials/ex1.c
src/ts/tutorials/ex11_sa.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