Actual source code: partgather.c
  1: #include <petsc/private/partitionerimpl.h>
  3: typedef struct {
  4:   PetscInt dummy;
  5: } PetscPartitioner_Gather;
  7: static PetscErrorCode PetscPartitionerDestroy_Gather(PetscPartitioner part)
  8: {
 12:   PetscFree(part->data);
 13:   return(0);
 14: }
 16: static PetscErrorCode PetscPartitionerView_Gather_ASCII(PetscPartitioner part, PetscViewer viewer)
 17: {
 19:   return(0);
 20: }
 22: static PetscErrorCode PetscPartitionerView_Gather(PetscPartitioner part, PetscViewer viewer)
 23: {
 24:   PetscBool      iascii;
 30:   PetscObjectTypeCompare((PetscObject) viewer, PETSCVIEWERASCII, &iascii);
 31:   if (iascii) {PetscPartitionerView_Gather_ASCII(part, viewer);}
 32:   return(0);
 33: }
 35: static PetscErrorCode PetscPartitionerPartition_Gather(PetscPartitioner part, PetscInt nparts, PetscInt numVertices, PetscInt start[], PetscInt adjacency[], PetscSection vertSection, PetscSection targetSection, PetscSection partSection, IS *partition)
 36: {
 37:   PetscInt       np;
 41:   ISCreateStride(PETSC_COMM_SELF, numVertices, 0, 1, partition);
 42:   PetscSectionSetDof(partSection,0,numVertices);
 43:   for (np = 1; np < nparts; ++np) {PetscSectionSetDof(partSection, np, 0);}
 44:   return(0);
 45: }
 47: static PetscErrorCode PetscPartitionerInitialize_Gather(PetscPartitioner part)
 48: {
 50:   part->noGraph        = PETSC_TRUE;
 51:   part->ops->view      = PetscPartitionerView_Gather;
 52:   part->ops->destroy   = PetscPartitionerDestroy_Gather;
 53:   part->ops->partition = PetscPartitionerPartition_Gather;
 54:   return(0);
 55: }
 57: /*MC
 58:   PETSCPARTITIONERGATHER = "gather" - A PetscPartitioner object
 60:   Level: intermediate
 62: .seealso: PetscPartitionerType, PetscPartitionerCreate(), PetscPartitionerSetType()
 63: M*/
 65: PETSC_EXTERN PetscErrorCode PetscPartitionerCreate_Gather(PetscPartitioner part)
 66: {
 67:   PetscPartitioner_Gather *p;
 68:   PetscErrorCode           ierr;
 72:   PetscNewLog(part, &p);
 73:   part->data = p;
 75:   PetscPartitionerInitialize_Gather(part);
 76:   return(0);
 77: }