1*012bc364SMatthew G. Knepley #if !defined(PETSCDMPLEXTRANSFORM_H) 2*012bc364SMatthew G. Knepley #define PETSCDMPLEXTRANSFORM_H 3*012bc364SMatthew G. Knepley 4*012bc364SMatthew G. Knepley #include <petscdmplex.h> 5*012bc364SMatthew G. Knepley #include <petscdmplextransformtypes.h> 6*012bc364SMatthew G. Knepley 7*012bc364SMatthew G. Knepley PETSC_EXTERN PetscClassId DMPLEXTRANSFORM_CLASSID; 8*012bc364SMatthew G. Knepley 9*012bc364SMatthew G. Knepley typedef const char* DMPlexTransformType; 10*012bc364SMatthew G. Knepley #define DMPLEXREFINEREGULAR "refine_regular" 11*012bc364SMatthew G. Knepley #define DMPLEXREFINEALFELD "refine_alfeld" 12*012bc364SMatthew G. Knepley #define DMPLEXREFINEPOWELLSABIN "refine_powell_sabin" 13*012bc364SMatthew G. Knepley #define DMPLEXREFINEBOUNDARYLAYER "refine_boundary_layer" 14*012bc364SMatthew G. Knepley #define DMPLEXREFINESBR "refine_sbr" 15*012bc364SMatthew G. Knepley #define DMPLEXREFINETOBOX "refine_tobox" 16*012bc364SMatthew G. Knepley #define DMPLEXREFINETOSIMPLEX "refine_tosimplex" 17*012bc364SMatthew G. Knepley #define DMPLEXEXTRUDE "extrude" 18*012bc364SMatthew G. Knepley #define DMPLEXTRANSFORMFILTER "transform_filter" 19*012bc364SMatthew G. Knepley 20*012bc364SMatthew G. Knepley PETSC_EXTERN PetscFunctionList DMPlexTransformList; 21*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformCreate(MPI_Comm, DMPlexTransform *); 22*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformSetType(DMPlexTransform, DMPlexTransformType); 23*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformGetType(DMPlexTransform, DMPlexTransformType *); 24*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformRegister(const char[], PetscErrorCode (*)(DMPlexTransform)); 25*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformRegisterAll(void); 26*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformRegisterDestroy(void); 27*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformSetFromOptions(DMPlexTransform); 28*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformSetUp(DMPlexTransform); 29*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformView(DMPlexTransform, PetscViewer); 30*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformDestroy(DMPlexTransform *); 31*012bc364SMatthew G. Knepley 32*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformGetDM(DMPlexTransform, DM *); 33*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformSetDM(DMPlexTransform, DM); 34*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformGetActive(DMPlexTransform, DMLabel *); 35*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformSetActive(DMPlexTransform, DMLabel); 36*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformGetTargetPoint(DMPlexTransform, DMPolytopeType, DMPolytopeType, PetscInt, PetscInt, PetscInt *); 37*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformGetSourcePoint(DMPlexTransform, PetscInt, DMPolytopeType *, DMPolytopeType *, PetscInt *, PetscInt *); 38*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformCellTransform(DMPlexTransform, DMPolytopeType, PetscInt, PetscInt *, PetscInt *, DMPolytopeType *[], PetscInt *[], PetscInt *[], PetscInt *[]); 39*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformCellTransformIdentity(DMPlexTransform, DMPolytopeType, PetscInt, PetscInt *, PetscInt *, DMPolytopeType *[], PetscInt *[], PetscInt *[], PetscInt *[]); 40*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformGetSubcellOrientationIdentity(DMPlexTransform, DMPolytopeType, PetscInt, PetscInt, DMPolytopeType, PetscInt, PetscInt, PetscInt *, PetscInt *); 41*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformGetSubcellOrientation(DMPlexTransform, DMPolytopeType, PetscInt, PetscInt, DMPolytopeType, PetscInt, PetscInt, PetscInt *, PetscInt *); 42*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformMapCoordinates(DMPlexTransform, DMPolytopeType, DMPolytopeType, PetscInt, PetscInt, PetscInt, const PetscScalar[], PetscScalar[]); 43*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformCreateDiscLabels(DMPlexTransform, DM); 44*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformApply(DMPlexTransform, DM, DM *); 45*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformGetCone(DMPlexTransform, PetscInt, const PetscInt *[], const PetscInt *[]); 46*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformGetConeOriented(DMPlexTransform, PetscInt, PetscInt, const PetscInt *[], const PetscInt *[]); 47*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformRestoreCone(DMPlexTransform, PetscInt, const PetscInt *[], const PetscInt *[]); 48*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformGetCellVertices(DMPlexTransform, DMPolytopeType, PetscInt *, PetscScalar *[]); 49*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformGetSubcellVertices(DMPlexTransform, DMPolytopeType, DMPolytopeType, PetscInt, PetscInt *[]); 50*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexTransformAdaptLabel(DM, DMLabel, DM *); 51*012bc364SMatthew G. Knepley 52*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexSetTransformType(DM, DMPlexTransformType); 53*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexGetTransformType(DM, DMPlexTransformType*); 54*012bc364SMatthew G. Knepley 55*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexRefineRegularGetAffineTransforms(DMPlexTransform, DMPolytopeType, PetscInt *, PetscReal *[], PetscReal *[], PetscReal *[]); 56*012bc364SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMPlexRefineRegularGetAffineFaceTransforms(DMPlexTransform, DMPolytopeType, PetscInt *, PetscReal *[], PetscReal *[], PetscReal *[], PetscReal *[]); 57*012bc364SMatthew G. Knepley 58*012bc364SMatthew G. Knepley #endif 59