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     DMDAInterpolationType - Defines the type of interpolation that will be returned by
18        DMCreateInterpolation.
19 
20    Level: beginner
21 
22 .seealso: DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMCreateInterpolation(), DMDASetInterpolationType(), DMDACreate()
23 E*/
24 typedef enum { DMDA_Q0, DMDA_Q1 } DMDAInterpolationType;
25 
26 /*E
27     DMDAElementType - Defines the type of elements that will be returned by
28        DMDAGetElements()
29 
30    Level: beginner
31 
32 .seealso: DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMCreateInterpolation(), DMDASetInterpolationType(),
33           DMDASetElementType(), DMDAGetElements(), DMDARestoreElements(), DMDACreate()
34 E*/
35 typedef enum { DMDA_ELEMENT_P1, DMDA_ELEMENT_Q1 } DMDAElementType;
36 
37 /*S
38      DMDALocalInfo - C struct that contains information about a structured grid and a processors logical
39               location in it.
40 
41    Level: beginner
42 
43   Fortran Notes - This should be declared as
44 $    DMDALocalInfo :: info(DMDA_LOCAL_INFO_SIZE)
45      and the entries accessed via
46 $    info(DMDA_LOCAL_INFO_DIM)
47 $    info(DMDA_LOCAL_INFO_DOF) etc.
48    The entries bx,by,bz, st, and da are not accessible from Fortran.
49 
50 .seealso:  DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMDestroy(), DM, DMDAGetLocalInfo(), DMDAGetInfo()
51 S*/
52 typedef struct {
53   PetscInt         dim,dof,sw;
54   PetscInt         mx,my,mz;    /* global number of grid points in each direction */
55   PetscInt         xs,ys,zs;    /* starting point of this processor, excluding ghosts */
56   PetscInt         xm,ym,zm;    /* number of grid points on this processor, excluding ghosts */
57   PetscInt         gxs,gys,gzs;    /* starting point of this processor including ghosts */
58   PetscInt         gxm,gym,gzm;    /* number of grid points on this processor including ghosts */
59   DMBoundaryType   bx,by,bz; /* type of ghost nodes at boundary */
60   DMDAStencilType  st;
61   DM               da;
62 } DMDALocalInfo;
63 
64 #endif
65