1 #ifndef PETSCPARTITIONER_H 2 #define PETSCPARTITIONER_H 3 4 #include <petscsection.h> 5 6 /* SUBMANSEC = MatOrderings */ 7 8 /*S 9 PetscPartitioner - PETSc object that manages a graph partitioner 10 11 Level: intermediate 12 13 Note: 14 Also consider `MatPartitioning` which provides an alternative API for partitioning. 15 16 .seealso: `PetscPartitionerCreate()`, `PetscPartitionerSetType()`, `PetscPartitionerType`, `MatPartitioning`, `MatPartitioningCreate()` 17 S*/ 18 typedef struct _p_PetscPartitioner *PetscPartitioner; 19 20 PETSC_EXTERN PetscClassId PETSCPARTITIONER_CLASSID; 21 PETSC_EXTERN PetscErrorCode PetscPartitionerInitializePackage(void); 22 PETSC_EXTERN PetscErrorCode PetscPartitionerFinalizePackage(void); 23 24 /*J 25 PetscPartitionerType - String with the name of a PETSc graph partitioner 26 27 Level: beginner 28 29 .seealso: `PetscPartitionerSetType()`, `PetscPartitioner` 30 J*/ 31 typedef const char *PetscPartitionerType; 32 #define PETSCPARTITIONERPARMETIS "parmetis" 33 #define PETSCPARTITIONERPTSCOTCH "ptscotch" 34 #define PETSCPARTITIONERCHACO "chaco" 35 #define PETSCPARTITIONERSIMPLE "simple" 36 #define PETSCPARTITIONERSHELL "shell" 37 #define PETSCPARTITIONERGATHER "gather" 38 39 PETSC_EXTERN PetscFunctionList PetscPartitionerList; 40 PETSC_EXTERN PetscErrorCode PetscPartitionerRegister(const char[], PetscErrorCode (*)(PetscPartitioner)); 41 42 PETSC_EXTERN PetscErrorCode PetscPartitionerCreate(MPI_Comm, PetscPartitioner *); 43 PETSC_EXTERN PetscErrorCode PetscPartitionerDestroy(PetscPartitioner *); 44 PETSC_EXTERN PetscErrorCode PetscPartitionerSetType(PetscPartitioner, PetscPartitionerType); 45 PETSC_EXTERN PetscErrorCode PetscPartitionerGetType(PetscPartitioner, PetscPartitionerType *); 46 PETSC_EXTERN PetscErrorCode PetscPartitionerSetUp(PetscPartitioner); 47 PETSC_EXTERN PetscErrorCode PetscPartitionerReset(PetscPartitioner); 48 PETSC_EXTERN PetscErrorCode PetscPartitionerSetFromOptions(PetscPartitioner); 49 PETSC_EXTERN PetscErrorCode PetscPartitionerViewFromOptions(PetscPartitioner, PetscObject, const char[]); 50 PETSC_EXTERN PetscErrorCode PetscPartitionerView(PetscPartitioner, PetscViewer); 51 PETSC_EXTERN PetscErrorCode PetscPartitionerPartition(PetscPartitioner, PetscInt, PetscInt, PetscInt[], PetscInt[], PetscSection, PetscSection, PetscSection, IS *); 52 53 PETSC_EXTERN PetscErrorCode PetscPartitionerShellSetPartition(PetscPartitioner, PetscInt, const PetscInt[], const PetscInt[]); 54 PETSC_EXTERN PetscErrorCode PetscPartitionerShellSetRandom(PetscPartitioner, PetscBool); 55 PETSC_EXTERN PetscErrorCode PetscPartitionerShellGetRandom(PetscPartitioner, PetscBool *); 56 57 /* We should implement MatPartitioning with PetscPartitioner */ 58 #include <petscmat.h> 59 #define PETSCPARTITIONERMATPARTITIONING "matpartitioning" 60 PETSC_EXTERN PetscErrorCode PetscPartitionerMatPartitioningGetMatPartitioning(PetscPartitioner, MatPartitioning *); 61 62 #endif 63