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: }