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