xref: /petsc/include/petscdmdatypes.h (revision 5b6bfdb9644f185dbf5e5a09b808ec241507e1e7)
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   Concepts: distributed array
44 
45   Fortran Notes - This should be declared as
46 $    DMDALocalInfo :: info(DMDA_LOCAL_INFO_SIZE)
47      and the entries accessed via
48 $    info(DMDA_LOCAL_INFO_DIM)
49 $    info(DMDA_LOCAL_INFO_DOF) etc.
50    The entries bx,by,bz, st, and da are not accessible from Fortran.
51 
52 .seealso:  DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMDestroy(), DM, DMDAGetLocalInfo(), DMDAGetInfo()
53 S*/
54 typedef struct {
55   PetscInt         dim,dof,sw;
56   PetscInt         mx,my,mz;    /* global number of grid points in each direction */
57   PetscInt         xs,ys,zs;    /* starting point of this processor, excluding ghosts */
58   PetscInt         xm,ym,zm;    /* number of grid points on this processor, excluding ghosts */
59   PetscInt         gxs,gys,gzs;    /* starting point of this processor including ghosts */
60   PetscInt         gxm,gym,gzm;    /* number of grid points on this processor including ghosts */
61   DMBoundaryType   bx,by,bz; /* type of ghost nodes at boundary */
62   DMDAStencilType  st;
63   DM               da;
64 } DMDALocalInfo;
65 
66 #endif
67