Skip to main content
`Ctrl`+`K`

# DMCreateColoring

Gets coloring of a graph associated with the `DM`. Often the graph represents the operator matrix associated with the discretization of a PDE on the `DM`.

## Synopsis

    #include "petscdm.h"
    #include "petscdmlabel.h"
    #include "petscds.h"
    PetscErrorCode DMCreateColoring(DM dm, ISColoringType ctype, ISColoring *coloring)

Collective

## Input Parameters

- dm - the `DM` object

- ctype - `IS_COLORING_LOCAL` or `IS_COLORING_GLOBAL`

## Output Parameter

- coloring - the coloring

## Notes

Coloring of matrices can also be computed directly from the sparse matrix nonzero structure via the `MatColoring` object or from the mesh from which the matrix comes from (what this function provides). In general using the mesh produces a more optimal coloring (fewer colors).

This produces a coloring with the distance of 2, see `MatSetColoringDistance()` which can be used for efficiently computing Jacobians with `MatFDColoringCreate()` For `DMDA` in three dimensions with periodic boundary conditions the number of grid points in each dimension must be divisible by 2*stencil_width + 1, otherwise an error will be generated.

## See Also

DM Basics, `DM`, `ISColoring`, `DMDestroy()`, `DMView()`, `DMCreateGlobalVector()`, `DMCreateInterpolation()`, `DMCreateMatrix()`, `DMCreateMassMatrix()`, `DMSetMatType()`, `MatColoring`, `MatFDColoringCreate()`

## Level

developer

## Location

src/dm/interface/dm.c

## Examples

src/tao/unconstrained/tutorials/minsurf2.c
src/snes/tutorials/ex14.c

## Implementations

DMCreateColoring_Composite() in src/dm/impls/composite/pack.c
DMCreateColoring_DA() in src/dm/impls/da/fdda.c
DMCreateColoring_Redundant() in src/dm/impls/redundant/dmredundant.c

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