Skip to main content
`Ctrl`+`K`

# PetscPartitionerPartition

Partition a graph

## Synopsis

    #include "petscpartitioner.h"
    PetscErrorCode PetscPartitionerPartition(PetscPartitioner part, PetscInt nparts, PetscInt numVertices, PetscInt start[], PetscInt adjacency[], PetscSection vertexSection, PetscSection edgeSection, PetscSection targetSection, PetscSection partSection, IS *partition)

Collective

## Input Parameters

- part - The `PetscPartitioner`

- nparts - Number of partitions

- numVertices - Number of vertices in the local part of the graph

- start - row pointers for the local part of the graph (CSR style)

- adjacency - adjacency list (CSR style)

- vertexSection - PetscSection describing the absolute weight of each local vertex (can be `NULL`)

- edgeSection - PetscSection describing the absolute weight of each local edge (can be `NULL`)

- targetSection - PetscSection describing the absolute weight of each partition (can be `NULL`)

## Output Parameters

- partSection - The `PetscSection` giving the division of points by partition

- partition - The list of points by partition

## Options Databasen Keys

- -petscpartitioner_view - View the partitioner information

- -petscpartitioner_view_graph - View the graph we are partitioning

## Notes

The chart of the vertexSection (if present) must contain [0,numVertices), with the number of dofs in the section specifying the absolute weight for each vertex. The chart of the targetSection (if present) must contain [0,nparts), with the number of dofs in the section specifying the absolute weight for each partition. This information must be the same across processes, PETSc does not check it.

## See Also

`PetscPartitionerCreate()`, `PetscPartitionerSetType()`, `PetscSectionCreate()`, `PetscSectionSetChart()`, `PetscSectionSetDof()`

## Level

developer

## Location

src/dm/partitioner/interface/partitioner.c

## Implementations

PetscPartitionerPartition_Chaco() in src/dm/partitioner/impls/chaco/partchaco.c
PetscPartitionerPartition_Gather() in src/dm/partitioner/impls/gather/partgather.c
PetscPartitionerPartition_MatPartitioning() in src/dm/partitioner/impls/matpart/partmatpart.c
PetscPartitionerPartition_ParMetis() in src/dm/partitioner/impls/parmetis/partparmetis.c
PetscPartitionerPartition_PTScotch() in src/dm/partitioner/impls/ptscotch/partptscotch.c
PetscPartitionerPartition_Shell() in src/dm/partitioner/impls/shell/partshell.c
PetscPartitionerPartition_Simple() in src/dm/partitioner/impls/simple/partsimple.c

Index of all DM routines
Table of Contents for all manual pages
Index of all manual pages