Skip to main content
`Ctrl`+`K`

# DMPlexDistribute

Distributes the mesh and any associated sections.

## Synopsis

    #include "petscdmplex.h"
    #include "petscdmlabel.h"
    PetscErrorCode DMPlexDistribute(DM dm, PetscInt overlap, PeOp PetscSF *sf, DM *dmParallel)

Collective

## Input Parameters

- dm - The original `DMPLEX` object

- overlap - The overlap of partitions, 0 is the default

## Output Parameters

- sf - The `PetscSF` used for point distribution, or `NULL` if not needed

- dmParallel - The distributed `DMPLEX` object

## Note

If the mesh was not distributed, the output `dmParallel` will be `NULL`.

The user can control the definition of adjacency for the mesh using `DMSetAdjacency()`. They should choose the combination appropriate for the function representation on the mesh.

## See Also

`DMPLEX`, `DM`, `DMPlexCreate()`, `DMSetAdjacency()`, `DMPlexGetOverlap()`

## Level

intermediate

## Location

src/dm/impls/plex/plexdistribute.c

## Examples

src/dm/tutorials/ex21.c
src/dm/label/tutorials/ex1.c
src/dm/label/tutorials/ex1f90.F90
src/dm/tutorials/ex20.c
src/ts/tutorials/ex30.c

## Implementations

DMPlexDistribute_Multistage() in src/dm/impls/plex/plexdistribute.c

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