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#

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