Actual source code: partitionerimpl.h
1: #if !defined(PARTITIONERIMPL_H)
2: #define PARTITIONERIMPL_H
4: #include <petscviewer.h>
5: #include <petscpartitioner.h>
6: #include <petsc/private/petscimpl.h>
8: PETSC_EXTERN PetscBool PetscPartitionerRegisterAllCalled;
9: PETSC_EXTERN PetscErrorCode PetscPartitionerRegisterAll(void);
11: typedef struct _PetscPartitionerOps *PetscPartitionerOps;
12: struct _PetscPartitionerOps {
13: PetscErrorCode (*setfromoptions)(PetscOptionItems*, PetscPartitioner);
14: PetscErrorCode (*setup)(PetscPartitioner);
15: PetscErrorCode (*reset)(PetscPartitioner);
16: PetscErrorCode (*view)(PetscPartitioner, PetscViewer);
17: PetscErrorCode (*destroy)(PetscPartitioner);
18: PetscErrorCode (*partition)(PetscPartitioner, PetscInt, PetscInt, PetscInt[], PetscInt[], PetscSection, PetscSection, PetscSection, IS*);
19: };
21: struct _p_PetscPartitioner {
22: PETSCHEADER(struct _PetscPartitionerOps);
23: void *data; /* Implementation object */
24: PetscInt height; /* Height of points to partition into non-overlapping subsets */
25: PetscInt edgeCut; /* The number of edge cut by the partition */
26: PetscReal balance; /* The maximum partition size divided by the minimum size */
27: PetscViewer viewer;
28: PetscViewer viewerGraph;
29: PetscBool viewGraph;
30: PetscBool noGraph; /* if true, the partitioner does not need the connectivity graph, only the number of local vertices */
31: PetscBool usevwgt; /* if true, the partitioner looks at the local section vertSection to weight the vertices of the graph */
32: };
34: #endif