1 #if !defined(_PETSCDMDATYPES_H) 2 #define _PETSCDMDATYPES_H 3 4 #include <petscdmtypes.h> 5 6 /*E 7 DMDAStencilType - Determines if the stencil extends only along the coordinate directions, or also 8 to the northeast, northwest etc 9 10 Level: beginner 11 12 .seealso: DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMDACreate(), DMDASetStencilType() 13 E*/ 14 typedef enum { DMDA_STENCIL_STAR,DMDA_STENCIL_BOX } DMDAStencilType; 15 16 /*E 17 DMDABoundaryType - Describes the choice for fill of ghost cells on physical domain boundaries. 18 19 Level: beginner 20 21 A boundary may be of type DMDA_BOUNDARY_NONE (no ghost nodes), DMDA_BOUNDARY_GHOST (ghost nodes 22 exist but aren't filled, you can put values into them and then apply a stencil that uses those ghost locations), 23 DMDA_BOUNDARY_MIRROR (not yet implemented for 3d), or DMDA_BOUNDARY_PERIODIC 24 (ghost nodes filled by the opposite edge of the domain). 25 26 Note: This is information for the boundary of the __PHYSICAL__ domain. It has nothing to do with boundaries between 27 processes, that width is always determined by the stencil width, see DMDASetStencilWidth(). 28 29 .seealso: DMDASetBoundaryType(), DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMDACreate() 30 E*/ 31 typedef enum { DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_GHOSTED, DMDA_BOUNDARY_MIRROR, DMDA_BOUNDARY_PERIODIC } DMDABoundaryType; 32 33 /*E 34 DMDAInterpolationType - Defines the type of interpolation that will be returned by 35 DMCreateInterpolation. 36 37 Level: beginner 38 39 .seealso: DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMCreateInterpolation(), DMDASetInterpolationType(), DMDACreate() 40 E*/ 41 typedef enum { DMDA_Q0, DMDA_Q1 } DMDAInterpolationType; 42 43 /*E 44 DMDAElementType - Defines the type of elements that will be returned by 45 DMDAGetElements() 46 47 Level: beginner 48 49 .seealso: DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMCreateInterpolation(), DMDASetInterpolationType(), 50 DMDASetElementType(), DMDAGetElements(), DMDARestoreElements(), DMDACreate() 51 E*/ 52 typedef enum { DMDA_ELEMENT_P1, DMDA_ELEMENT_Q1 } DMDAElementType; 53 54 /*S 55 DMDALocalInfo - C struct that contains information about a structured grid and a processors logical 56 location in it. 57 58 Level: beginner 59 60 Concepts: distributed array 61 62 Developer note: Then entries in this struct are int instead of PetscInt so that the elements may 63 be extracted in Fortran as if from an integer array 64 65 .seealso: DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMDestroy(), DM, DMDAGetLocalInfo(), DMDAGetInfo() 66 S*/ 67 typedef struct { 68 PetscInt dim,dof,sw; 69 PetscInt mx,my,mz; /* global number of grid points in each direction */ 70 PetscInt xs,ys,zs; /* starting point of this processor, excluding ghosts */ 71 PetscInt xm,ym,zm; /* number of grid points on this processor, excluding ghosts */ 72 PetscInt gxs,gys,gzs; /* starting point of this processor including ghosts */ 73 PetscInt gxm,gym,gzm; /* number of grid points on this processor including ghosts */ 74 DMDABoundaryType bx,by,bz; /* type of ghost nodes at boundary */ 75 DMDAStencilType st; 76 DM da; 77 } DMDALocalInfo; 78 79 #endif 80