11e25c274SJed Brown #if !defined(_PETSCDMTYPES_H) 21e25c274SJed Brown #define _PETSCDMTYPES_H 31e25c274SJed Brown 41e25c274SJed Brown /*S 51e25c274SJed Brown DM - Abstract PETSc object that manages an abstract grid object and its interactions with the algebraic solvers 61e25c274SJed Brown 71e25c274SJed Brown Level: intermediate 81e25c274SJed Brown 91e25c274SJed Brown Concepts: grids, grid refinement 101e25c274SJed Brown 111e25c274SJed Brown Notes: The DMDACreate() based object and the DMCompositeCreate() based object are examples of DMs 121e25c274SJed Brown 131e25c274SJed Brown .seealso: DMCompositeCreate(), DMDACreate(), DMSetType(), DMType 141e25c274SJed Brown S*/ 151e25c274SJed Brown typedef struct _p_DM* DM; 161e25c274SJed Brown 17bff4a2f0SMatthew G. Knepley /*E 18bff4a2f0SMatthew G. Knepley DMBoundaryType - Describes the choice for fill of ghost cells on physical domain boundaries. 19bff4a2f0SMatthew G. Knepley 20bff4a2f0SMatthew G. Knepley Level: beginner 21bff4a2f0SMatthew G. Knepley 22619efd4aSMatthew G. Knepley A boundary may be of type DM_BOUNDARY_NONE (no ghost nodes), DM_BOUNDARY_GHOSTED (ghost vertices/cells 23bff4a2f0SMatthew G. Knepley exist but aren't filled, you can put values into them and then apply a stencil that uses those ghost locations), 24bff4a2f0SMatthew G. Knepley DM_BOUNDARY_MIRROR (not yet implemented for 3d), DM_BOUNDARY_PERIODIC (ghost vertices/cells filled by the opposite 25bff4a2f0SMatthew G. Knepley edge of the domain), or DM_BOUNDARY_TWIST (like periodic, only glued backwards like a Mobius strip). 26bff4a2f0SMatthew G. Knepley 27bff4a2f0SMatthew G. Knepley Note: This is information for the boundary of the __PHYSICAL__ domain. It has nothing to do with boundaries between 28bff4a2f0SMatthew G. Knepley processes, that width is always determined by the stencil width, see DMDASetStencilWidth(). 29bff4a2f0SMatthew G. Knepley 30bff4a2f0SMatthew G. Knepley .seealso: DMDASetBoundaryType(), DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMDACreate() 31bff4a2f0SMatthew G. Knepley E*/ 32bff4a2f0SMatthew G. Knepley typedef enum {DM_BOUNDARY_NONE, DM_BOUNDARY_GHOSTED, DM_BOUNDARY_MIRROR, DM_BOUNDARY_PERIODIC, DM_BOUNDARY_TWIST} DMBoundaryType; 33bff4a2f0SMatthew G. Knepley 3462a38674SMatthew G. Knepley /*E 3562a38674SMatthew G. Knepley DMPointLocationType - Describes the method to handle point location failure 3662a38674SMatthew G. Knepley 3762a38674SMatthew G. Knepley Level: beginner 3862a38674SMatthew G. Knepley 3962a38674SMatthew G. Knepley If a search using DM_POINTLOCATION_NONE fails, the failure is signaled with a negative cell number. On the 4062a38674SMatthew G. Knepley other hand, if DM_POINTLOCATION_NEAREST is used, on failure, the (approximate) nearest point in the mesh is 41*2d1fa6caSMatthew G. Knepley used, replacing the given point in the input vector. DM_POINTLOCATION_REMOVE returns values only for points 42*2d1fa6caSMatthew G. Knepley which were located. 4362a38674SMatthew G. Knepley 4462a38674SMatthew G. Knepley .seealso: DMLocatePoints() 4562a38674SMatthew G. Knepley E*/ 46*2d1fa6caSMatthew G. Knepley typedef enum {DM_POINTLOCATION_NONE, DM_POINTLOCATION_NEAREST, DM_POINTLOCATION_REMOVE} DMPointLocationType; 4762a38674SMatthew G. Knepley 4877623264SMatthew G. Knepley /*S 4977623264SMatthew G. Knepley PetscPartitioner - PETSc object that manages a graph partitioner 5077623264SMatthew G. Knepley 5177623264SMatthew G. Knepley Level: intermediate 5277623264SMatthew G. Knepley 5377623264SMatthew G. Knepley Concepts: partition, mesh 5477623264SMatthew G. Knepley 5577623264SMatthew G. Knepley .seealso: PetscPartitionerCreate(), PetscPartitionerSetType(), PetscPartitionerType 5677623264SMatthew G. Knepley S*/ 5777623264SMatthew G. Knepley typedef struct _p_PetscPartitioner *PetscPartitioner; 5877623264SMatthew G. Knepley 591e25c274SJed Brown #endif 60