petsc-3.14.6 2021-03-30
Report Typos and Errors

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 DM 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

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