xref: /petsc/include/petscpartitioner.h (revision df4cd43f92eaa320656440c40edb1046daee8f75)
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 .seealso: `PetscPartitionerCreate()`, `PetscPartitionerSetType()`, `PetscPartitionerType`
14 S*/
15 typedef struct _p_PetscPartitioner *PetscPartitioner;
16 
17 PETSC_EXTERN PetscClassId   PETSCPARTITIONER_CLASSID;
18 PETSC_EXTERN PetscErrorCode PetscPartitionerInitializePackage(void);
19 PETSC_EXTERN PetscErrorCode PetscPartitionerFinalizePackage(void);
20 
21 /*J
22   PetscPartitionerType - String with the name of a PETSc graph partitioner
23 
24   Level: beginner
25 
26 .seealso: `PetscPartitionerSetType()`, `PetscPartitioner`
27 J*/
28 typedef const char *PetscPartitionerType;
29 #define PETSCPARTITIONERPARMETIS "parmetis"
30 #define PETSCPARTITIONERPTSCOTCH "ptscotch"
31 #define PETSCPARTITIONERCHACO    "chaco"
32 #define PETSCPARTITIONERSIMPLE   "simple"
33 #define PETSCPARTITIONERSHELL    "shell"
34 #define PETSCPARTITIONERGATHER   "gather"
35 
36 PETSC_EXTERN PetscFunctionList PetscPartitionerList;
37 PETSC_EXTERN PetscErrorCode    PetscPartitionerRegister(const char[], PetscErrorCode (*)(PetscPartitioner));
38 
39 PETSC_EXTERN PetscErrorCode PetscPartitionerCreate(MPI_Comm, PetscPartitioner *);
40 PETSC_EXTERN PetscErrorCode PetscPartitionerDestroy(PetscPartitioner *);
41 PETSC_EXTERN PetscErrorCode PetscPartitionerSetType(PetscPartitioner, PetscPartitionerType);
42 PETSC_EXTERN PetscErrorCode PetscPartitionerGetType(PetscPartitioner, PetscPartitionerType *);
43 PETSC_EXTERN PetscErrorCode PetscPartitionerSetUp(PetscPartitioner);
44 PETSC_EXTERN PetscErrorCode PetscPartitionerReset(PetscPartitioner);
45 PETSC_EXTERN PetscErrorCode PetscPartitionerSetFromOptions(PetscPartitioner);
46 PETSC_EXTERN PetscErrorCode PetscPartitionerViewFromOptions(PetscPartitioner, PetscObject, const char[]);
47 PETSC_EXTERN PetscErrorCode PetscPartitionerView(PetscPartitioner, PetscViewer);
48 PETSC_EXTERN PetscErrorCode PetscPartitionerPartition(PetscPartitioner, PetscInt, PetscInt, PetscInt[], PetscInt[], PetscSection, PetscSection, PetscSection, IS *);
49 
50 PETSC_EXTERN PetscErrorCode PetscPartitionerShellSetPartition(PetscPartitioner, PetscInt, const PetscInt[], const PetscInt[]);
51 PETSC_EXTERN PetscErrorCode PetscPartitionerShellSetRandom(PetscPartitioner, PetscBool);
52 PETSC_EXTERN PetscErrorCode PetscPartitionerShellGetRandom(PetscPartitioner, PetscBool *);
53 
54 /* We should implement MatPartitioning with PetscPartitioner */
55 #include <petscmat.h>
56 #define PETSCPARTITIONERMATPARTITIONING "matpartitioning"
57 PETSC_EXTERN PetscErrorCode PetscPartitionerMatPartitioningGetMatPartitioning(PetscPartitioner, MatPartitioning *);
58 
59 #endif
60