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
DMPLEXobject
Output Parameter#
interpolated - Flag whether the
DMis 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#
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