Skip to main content
`Ctrl`+`K`

# DMCreateDomainDecompositionScatters

Returns scatters to the subdomain vectors from the global vector for subdomains created with `DMCreateDomainDecomposition()`

## Synopsis

    #include "petscdm.h"
    #include "petscdmlabel.h"
    #include "petscds.h"
    PetscErrorCode DMCreateDomainDecompositionScatters(DM dm, PetscInt n, DM subdms[], VecScatter *iscat[], VecScatter *oscat[], VecScatter *gscat[])

Not Collective

## Input Parameters

- dm - the `DM` object

- n - the number of subdomains

- subdms - the local subdomains

## Output Parameters

- iscat - scatter from global vector to nonoverlapping global vector entries on subdomain

- oscat - scatter from global vector to overlapping global vector entries on subdomain

- gscat - scatter from global vector to local vector on subdomain (fills in ghosts)

## Note

This is an alternative to the `iis` and `ois` arguments in `DMCreateDomainDecomposition()` that allow for the solution of general nonlinear problems with overlapping subdomain methods. While merely having index sets that enable subsets of the residual equations to be created is fine for linear problems, nonlinear problems require local assembly of solution and residual data.

## Developer Note

Can the `subdms` input be anything or are they exactly the `DM` obtained from `DMCreateDomainDecomposition()`?

## See Also

DM Basics, `DM`, `DMCreateDomainDecomposition()`, `DMDestroy()`, `DMView()`, `DMCreateInterpolation()`, `DMCreateColoring()`, `DMCreateMatrix()`, `DMCreateMassMatrix()`, `DMCreateFieldIS()`

## Level

developer

## Location

src/dm/interface/dm.c

## Examples

src/ts/tutorials/ex29.c
src/dm/tutorials/ex14.c

## Implementations

DMCreateDomainDecompositionScatters_DA() in src/dm/impls/da/dadd.c
DMCreateDomainDecompositionScatters_pforest() in src/dm/impls/forest/p4est/pforest.h
DMCreateDomainDecompositionScatters_Plex() in src/dm/impls/plex/plexdd.c

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