Skip to main content
`Ctrl`+`K`

# DMPlexIsInterpolated

Find out to what extent the `DMPLEX` is topologically interpolated.

## Synopsis

    #include "petscdmplex.h"
    PetscErrorCode DMPlexIsInterpolated(DM dm, DMPlexInterpolatedFlag *interpolated)

Not Collective

## Input Parameter

- dm - The `DMPLEX` object

## Output Parameter

- interpolated - Flag whether the `DM` is interpolated

## Notes

Unlike `DMPlexIsInterpolatedCollective()`, this is NOT collective so the results can be different on different ranks in special cases. However, `DMPlexInterpolate()` guarantees the result is the same on all.

Unlike `DMPlexIsInterpolatedCollective()`, this cannot return `DMPLEX_INTERPOLATED_MIXED`.

## Developer Notes

Initially, plex->interpolated = `DMPLEX_INTERPOLATED_INVALID`.

If plex->interpolated == `DMPLEX_INTERPOLATED_INVALID`, `DMPlexIsInterpolated_Internal()` is called. It checks the actual topology and sets plex->interpolated on each rank separately to one of `DMPLEX_INTERPOLATED_NONE`, `DMPLEX_INTERPOLATED_PARTIAL` or `DMPLEX_INTERPOLATED_FULL`.

If plex->interpolated != `DMPLEX_INTERPOLATED_INVALID`, this function just returns plex->interpolated.

`DMPlexInterpolate()` sets plex->interpolated = `DMPLEX_INTERPOLATED_FULL`, and DMPlexUninterpolate() sets plex->interpolated = `DMPLEX_INTERPOLATED_NONE`.

## See Also

`DMPLEX`, `DMPlexInterpolate()`, `DMPlexIsInterpolatedCollective()`

## Level

intermediate

## Location

src/dm/impls/plex/plexinterpolate.c

## Implementations

DMPlexIsInterpolated_Internal() in src/dm/impls/plex/plexinterpolate.c

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