Skip to main content
`Ctrl`+`K`

# DMCreateSectionSubDM

Returns an `IS` and `subDM` containing a `PetscSection` that encapsulates a subproblem defined by a subset of the fields in a `PetscSection` in the `DM`.

## Synopsis

    #include "petscdm.h"
    PetscErrorCode DMCreateSectionSubDM(DM dm, PetscInt numFields, const PetscInt fields[], const PetscInt numComps[], const PetscInt comps[], IS *is, DM *subdm)

Not Collective

## Input Parameters

- dm - The `DM` object

- numFields - The number of fields to incorporate into `subdm`

- fields - The field numbers of the selected fields

- numComps - The number of components from each field to incorporate into `subdm`, or PETSC_DECIDE for all components

- comps - The component numbers of the selected fields (omitted for PTESC_DECIDE fields)

## Output Parameters

- is - The global indices for the subproblem or `NULL`

- subdm - The `DM` for the subproblem, which must already have be cloned from `dm` or `NULL`

## Notes

If `is` and `subdm` are both `NULL` this does nothing

## See Also

`DMCreateSubDM()`, `DMGetLocalSection()`, `DMPlexSetMigrationSF()`, `DMView()`

## Level

intermediate

## Location

src/dm/interface/dmi.c

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