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