Actual source code: plextrfilter.c

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

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

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

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

 23: static PetscErrorCode DMPlexTransformSetUp_Filter(DMPlexTransform tr)
 24: {
 26:   return(0);
 27: }

 29: static PetscErrorCode DMPlexTransformDestroy_Filter(DMPlexTransform tr)
 30: {
 31:   DMPlexTransform_Filter *f = (DMPlexTransform_Filter *) tr->data;
 32:   PetscErrorCode          ierr;

 35:   DMLabelDestroy(&f->label);
 36:   PetscFree(f);
 37:   return(0);
 38: }

 40: static PetscErrorCode DMPlexTransformCellTransform_Filter(DMPlexTransform cr, DMPolytopeType source, PetscInt p, PetscInt *rt, PetscInt *Nt, DMPolytopeType *target[], PetscInt *size[], PetscInt *cone[], PetscInt *ornt[])
 41: {
 43:   return(0);
 44: }

 46: static PetscErrorCode DMPlexTransformInitialize_Filter(DMPlexTransform tr)
 47: {
 49:   tr->ops->view    = DMPlexTransformView_Filter;
 50:   tr->ops->setup   = DMPlexTransformSetUp_Filter;
 51:   tr->ops->destroy = DMPlexTransformDestroy_Filter;
 52:   tr->ops->celltransform = DMPlexTransformCellTransform_Filter;
 53:   tr->ops->mapcoordinates = DMPlexTransformMapCoordinatesBarycenter_Internal;
 54:   return(0);
 55: }

 57: PETSC_EXTERN PetscErrorCode DMPlexTransformCreate_Filter(DMPlexTransform tr)
 58: {
 59:   DMPlexTransform_Filter *f;
 60:   PetscErrorCode          ierr;

 64:   PetscNewLog(tr, &f);
 65:   tr->data = f;

 67:   DMPlexTransformInitialize_Filter(tr);
 68:   return(0);
 69: }