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), 24288e7d53SBarry Smith DM_BOUNDARY_MIRROR (the ghost value is the same as the value 1 grid point in; that is the 0th grid point in the real mesh acts like a mirror to define the ghost point value; 25288e7d53SBarry Smith not yet implemented for 3d), DM_BOUNDARY_PERIODIC (ghost vertices/cells filled by the opposite 26bff4a2f0SMatthew G. Knepley edge of the domain), or DM_BOUNDARY_TWIST (like periodic, only glued backwards like a Mobius strip). 27bff4a2f0SMatthew G. Knepley 28bff4a2f0SMatthew G. Knepley Note: This is information for the boundary of the __PHYSICAL__ domain. It has nothing to do with boundaries between 29bff4a2f0SMatthew G. Knepley processes, that width is always determined by the stencil width, see DMDASetStencilWidth(). 30bff4a2f0SMatthew G. Knepley 31288e7d53SBarry Smith Note: If the physical grid points have values 0 1 2 3 with DM_BOUNDARY_MIRROR then the local vector with ghost points has the values 1 0 1 2 3 2 32288e7d53SBarry Smith 33288e7d53SBarry Smith Developer notes: Should DM_BOUNDARY_MIRROR have the same meaning with DMDA_Q0, that is a staggered grid? In that case should the ghost point have the same value 34288e7d53SBarry Smith as the 0th grid point where the physical boundary serves as the mirror? 35288e7d53SBarry Smith 36288e7d53SBarry Smith References: http://scicomp.stackexchange.com/questions/5355/writing-the-poisson-equation-finite-difference-matrix-with-neumann-boundary-cond 37288e7d53SBarry Smith 38bff4a2f0SMatthew G. Knepley .seealso: DMDASetBoundaryType(), DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMDACreate() 39bff4a2f0SMatthew G. Knepley E*/ 40bff4a2f0SMatthew G. Knepley typedef enum {DM_BOUNDARY_NONE, DM_BOUNDARY_GHOSTED, DM_BOUNDARY_MIRROR, DM_BOUNDARY_PERIODIC, DM_BOUNDARY_TWIST} DMBoundaryType; 41bff4a2f0SMatthew G. Knepley 4262a38674SMatthew G. Knepley /*E 43*9dc85fa5SMatthew G. Knepley DMBoundaryConditionType - indicates what type of boundary condition is to be imposed 44*9dc85fa5SMatthew G. Knepley 45*9dc85fa5SMatthew G. Knepley Note: This flag indicates the type of function which will define the condition: 46*9dc85fa5SMatthew G. Knepley $ DM_BC_ESSENTIAL - A Dirichlet condition using a function of the coordinates 47*9dc85fa5SMatthew G. Knepley $ DM_BC_ESSENTIAL_FIELD - A Dirichlet condition using a function of the coordinates and auxiliary field data 48*9dc85fa5SMatthew G. Knepley $ DM_BC_NATURAL - A Neumann condition using a function of the coordinates 49*9dc85fa5SMatthew G. Knepley $ DM_BC_NATURAL_FIELD - A Dirichlet condition using a function of the coordinates and auxiliary field data 50*9dc85fa5SMatthew G. Knepley $ DM_BC_NATURAL_RIEMANN - A flux condition which determines the state in ghost cells 51*9dc85fa5SMatthew G. Knepley The user can check whether a boundary condition is essential using (type & DM_BC_ESSENTIAL), and similarly for 52*9dc85fa5SMatthew G. Knepley natural conditions (type & DM_BC_NATURAL) 53*9dc85fa5SMatthew G. Knepley 54*9dc85fa5SMatthew G. Knepley Level: beginner 55*9dc85fa5SMatthew G. Knepley 56*9dc85fa5SMatthew G. Knepley .seealso: DMAddBoundary(), DMGetBoundary() 57*9dc85fa5SMatthew G. Knepley E*/ 58*9dc85fa5SMatthew G. Knepley typedef enum {DM_BC_ESSENTIAL = 1, DM_BC_ESSENTIAL_FIELD = 5, DM_BC_NATURAL = 2, DM_BC_NATURAL_FIELD = 6, DM_BC_NATURAL_RIEMANN = 10} DMBoundaryConditionType; 59*9dc85fa5SMatthew G. Knepley 60*9dc85fa5SMatthew G. Knepley /*E 6162a38674SMatthew G. Knepley DMPointLocationType - Describes the method to handle point location failure 6262a38674SMatthew G. Knepley 6362a38674SMatthew G. Knepley Level: beginner 6462a38674SMatthew G. Knepley 6562a38674SMatthew G. Knepley If a search using DM_POINTLOCATION_NONE fails, the failure is signaled with a negative cell number. On the 6662a38674SMatthew G. Knepley other hand, if DM_POINTLOCATION_NEAREST is used, on failure, the (approximate) nearest point in the mesh is 672d1fa6caSMatthew G. Knepley used, replacing the given point in the input vector. DM_POINTLOCATION_REMOVE returns values only for points 682d1fa6caSMatthew G. Knepley which were located. 6962a38674SMatthew G. Knepley 7062a38674SMatthew G. Knepley .seealso: DMLocatePoints() 7162a38674SMatthew G. Knepley E*/ 722d1fa6caSMatthew G. Knepley typedef enum {DM_POINTLOCATION_NONE, DM_POINTLOCATION_NEAREST, DM_POINTLOCATION_REMOVE} DMPointLocationType; 7362a38674SMatthew G. Knepley 745675c177SMatthew G. Knepley /*E 755675c177SMatthew G. Knepley DMAdaptationType - Describes the strategy used for adaptive solves 765675c177SMatthew G. Knepley 775675c177SMatthew G. Knepley Level: beginner 785675c177SMatthew G. Knepley 795675c177SMatthew G. Knepley If a search using DM_POINTLOCATION_NONE fails, the failure is signaled with a negative cell number. On the 805675c177SMatthew G. Knepley other hand, if DM_POINTLOCATION_NEAREST is used, on failure, the (approximate) nearest point in the mesh is 815675c177SMatthew G. Knepley used, replacing the given point in the input vector. DM_POINTLOCATION_REMOVE returns values only for points 825675c177SMatthew G. Knepley which were located. 835675c177SMatthew G. Knepley 845675c177SMatthew G. Knepley .seealso: DMAdaptorSolve() 855675c177SMatthew G. Knepley E*/ 865675c177SMatthew G. Knepley typedef enum {DM_ADAPTATION_INITIAL, DM_ADAPTATION_SEQUENTIAL, DM_ADAPTATION_MULTILEVEL} DMAdaptationType; 875675c177SMatthew G. Knepley 88*9dc85fa5SMatthew G. Knepley /*E 89*9dc85fa5SMatthew G. Knepley DMAdaptFlag - Marker in the label prescribing adaptation 90*9dc85fa5SMatthew G. Knepley 91*9dc85fa5SMatthew G. Knepley Level: beginner 92*9dc85fa5SMatthew G. Knepley 93*9dc85fa5SMatthew G. Knepley .seealso: DMAdaptLabel() 94*9dc85fa5SMatthew G. Knepley E*/ 95*9dc85fa5SMatthew G. Knepley typedef enum {DM_ADAPT_DETERMINE = PETSC_DETERMINE, DM_ADAPT_KEEP = 0, DM_ADAPT_REFINE, DM_ADAPT_COARSEN, DM_ADAPT_RESERVED_COUNT} DMAdaptFlag; 96*9dc85fa5SMatthew G. Knepley 9777623264SMatthew G. Knepley /*S 9877623264SMatthew G. Knepley PetscPartitioner - PETSc object that manages a graph partitioner 9977623264SMatthew G. Knepley 10077623264SMatthew G. Knepley Level: intermediate 10177623264SMatthew G. Knepley 10277623264SMatthew G. Knepley Concepts: partition, mesh 10377623264SMatthew G. Knepley 10477623264SMatthew G. Knepley .seealso: PetscPartitionerCreate(), PetscPartitionerSetType(), PetscPartitionerType 10577623264SMatthew G. Knepley S*/ 10677623264SMatthew G. Knepley typedef struct _p_PetscPartitioner *PetscPartitioner; 10777623264SMatthew G. Knepley 108*9dc85fa5SMatthew G. Knepley /*E 109*9dc85fa5SMatthew G. Knepley PetscUnit - The seven fundamental SI units 110*9dc85fa5SMatthew G. Knepley 111*9dc85fa5SMatthew G. Knepley Level: beginner 112*9dc85fa5SMatthew G. Knepley 113*9dc85fa5SMatthew G. Knepley .seealso: DMPlexGetScale(), DMPlexSetScale() 114*9dc85fa5SMatthew G. Knepley E*/ 115*9dc85fa5SMatthew G. Knepley typedef enum {PETSC_UNIT_LENGTH, PETSC_UNIT_MASS, PETSC_UNIT_TIME, PETSC_UNIT_CURRENT, PETSC_UNIT_TEMPERATURE, PETSC_UNIT_AMOUNT, PETSC_UNIT_LUMINOSITY, NUM_PETSC_UNITS} PetscUnit; 116*9dc85fa5SMatthew G. Knepley 1171e25c274SJed Brown #endif 118