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