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