Actual source code: petscsftypes.h

      1: #if !defined(PETSCSFTYPES_H)
      2: #define PETSCSFTYPES_H

      4: /*S
      5:    PetscSF - PETSc object for setting up and managing the communication of certain entries of arrays and Vecs between MPI processes.

      7:    Level: intermediate

      9:        PetscSF uses the concept of star forests to indicate and determine the communication patterns concisely and efficiently.
     10:   A star  https://en.wikipedia.org/wiki/Star_(graph_theory) forest is simply a collection of trees of height 1. The leave nodes represent
     11:   "ghost locations" for the root nodes.

     13: .seealso: PetscSFCreate(), VecScatter, VecScatterCreate()
     14: S*/
     15: typedef struct _p_PetscSF* PetscSF;

     17: /*J
     18:     PetscSFType - String with the name of a PetscSF type

     20:    Level: beginner

     22: .seealso: PetscSFSetType(), PetscSF
     23: J*/
     24: typedef const char *PetscSFType;

     26: /*S
     27:    PetscSFNode - specifier of owner and index

     29:    Level: beginner

     31:   Sample Usage:
     32: $      PetscSFNode    *remote;
     33: $    PetscMalloc1(nleaves,&remote);
     34: $    for (i=0; i<size; i++) {
     35: $      remote[i].rank = i;
     36: $      remote[i].index = rank;
     37: $    }

     39:   Sample Fortran Usage:
     40: $     type(PetscSFNode) remote(6)
     41: $      remote(1)%rank  = modulo(rank+size-1,size)
     42: $      remote(1)%index = 1 * stride

     44: .seealso: PetscSFSetGraph()
     45: S*/
     46: typedef struct {
     47:   PetscInt rank;                /* Rank of owner */
     48:   PetscInt index;               /* Index of node on rank */
     49: } PetscSFNode;

     51: /*S
     52:      VecScatter - Object used to manage communication of data
     53:        between vectors in parallel. Manages both scatters and gathers

     55:    Level: beginner

     57: .seealso:  VecScatterCreate(), VecScatterBegin(), VecScatterEnd()
     58: S*/
     59: typedef PetscSF VecScatter;

     61: /*J
     62:     VecScatterType - String with the name of a PETSc vector scatter type

     64:    Level: beginner

     66: .seealso: VecScatterSetType(), VecScatter, VecScatterCreate(), VecScatterDestroy()
     67: J*/
     68: typedef PetscSFType VecScatterType;
     69: #endif