Actual source code: plextrfilter.c

  1: #include <petsc/private/dmplextransformimpl.h>

  3: static PetscErrorCode DMPlexTransformView_Filter(DMPlexTransform tr, PetscViewer viewer)
  4: {
  5:   PetscBool isascii;

  9:   PetscObjectTypeCompare((PetscObject)viewer, PETSCVIEWERASCII, &isascii);
 10:   if (isascii) {
 11:     const char *name;

 13:     PetscObjectGetName((PetscObject)tr, &name);
 14:     PetscViewerASCIIPrintf(viewer, "Filter transformation %s\n", name ? name : "");
 15:   } else {
 16:     SETERRQ(PetscObjectComm((PetscObject)tr), PETSC_ERR_SUP, "Viewer type %s not yet supported for DMPlexTransform writing", ((PetscObject)viewer)->type_name);
 17:   }
 18:   return 0;
 19: }

 21: static PetscErrorCode DMPlexTransformSetUp_Filter(DMPlexTransform tr)
 22: {
 23:   return 0;
 24: }

 26: static PetscErrorCode DMPlexTransformDestroy_Filter(DMPlexTransform tr)
 27: {
 28:   DMPlexTransform_Filter *f = (DMPlexTransform_Filter *)tr->data;

 30:   DMLabelDestroy(&f->label);
 31:   PetscFree(f);
 32:   return 0;
 33: }

 35: static PetscErrorCode DMPlexTransformCellTransform_Filter(DMPlexTransform cr, DMPolytopeType source, PetscInt p, PetscInt *rt, PetscInt *Nt, DMPolytopeType *target[], PetscInt *size[], PetscInt *cone[], PetscInt *ornt[])
 36: {
 37:   return 0;
 38: }

 40: static PetscErrorCode DMPlexTransformInitialize_Filter(DMPlexTransform tr)
 41: {
 42:   tr->ops->view           = DMPlexTransformView_Filter;
 43:   tr->ops->setup          = DMPlexTransformSetUp_Filter;
 44:   tr->ops->destroy        = DMPlexTransformDestroy_Filter;
 45:   tr->ops->celltransform  = DMPlexTransformCellTransform_Filter;
 46:   tr->ops->mapcoordinates = DMPlexTransformMapCoordinatesBarycenter_Internal;
 47:   return 0;
 48: }

 50: PETSC_EXTERN PetscErrorCode DMPlexTransformCreate_Filter(DMPlexTransform tr)
 51: {
 52:   DMPlexTransform_Filter *f;

 55:   PetscNew(&f);
 56:   tr->data = f;

 58:   DMPlexTransformInitialize_Filter(tr);
 59:   return 0;
 60: }