1 #pragma once 2 3 #include <petscdmtypes.h> 4 5 /* SUBMANSEC = DMDA */ 6 7 /*E 8 DMDAStencilType - Determines if the stencil extends only along the coordinate directions, or also 9 to the northeast, northwest etc 10 11 Level: beginner 12 13 .seealso: [](ch_dmbase), `DMDA`, `DMDA_STENCIL_BOX`, `DMDA_STENCIL_STAR`,`DMDACreate1d()`, `DMDACreate2d()`, `DMDACreate3d()`, `DMDACreate()`, `DMDASetStencilType()` 14 E*/ 15 typedef enum { 16 DMDA_STENCIL_STAR, 17 DMDA_STENCIL_BOX 18 } DMDAStencilType; 19 20 /*E 21 DMDAInterpolationType - Defines the type of interpolation that will be returned by 22 `DMCreateInterpolation()`. 23 24 Level: beginner 25 26 .seealso: [](ch_dmbase), `DMDA`, `DMDACreate1d()`, `DMDACreate2d()`, `DMDACreate3d()`, `DMCreateInterpolation()`, `DMDASetInterpolationType()`, `DMDACreate()` 27 E*/ 28 typedef enum { 29 DMDA_Q0, 30 DMDA_Q1 31 } DMDAInterpolationType; 32 33 /*E 34 DMDAElementType - Defines the type of elements that will be returned by 35 `DMDAGetElements()` 36 37 Level: beginner 38 39 .seealso: [](ch_dmbase), `DMDA`, `DMDACreate1d()`, `DMDACreate2d()`, `DMDACreate3d()`, `DMCreateInterpolation()`, `DMDASetInterpolationType()`, 40 `DMDASetElementType()`, `DMDAGetElements()`, `DMDARestoreElements()`, `DMDACreate()` 41 E*/ 42 typedef enum { 43 DMDA_ELEMENT_P1, 44 DMDA_ELEMENT_Q1 45 } DMDAElementType; 46 47 /*S 48 DMDALocalInfo - C struct that contains information about a structured grid and a processes logical 49 location in it. 50 51 Level: beginner 52 53 Fortran Note: 54 This should be declared as 55 $ `DMDALocalInfo` :: info(DMDA_LOCAL_INFO_SIZE) 56 and the entries accessed via 57 .vb 58 info(DMDA_LOCAL_INFO_DIM) 59 info(DMDA_LOCAL_INFO_DOF) etc. 60 .ve 61 The entries bx,by,bz, st, and da are not accessible from Fortran. 62 63 .seealso: [](ch_dmbase), `DMDA`, `DMDACreate1d()`, `DMDACreate2d()`, `DMDACreate3d()`, `DMDestroy()`, `DM`, `DMDAGetLocalInfo()`, `DMDAGetInfo()` 64 S*/ 65 typedef struct { 66 PetscInt dim, dof, sw; 67 PetscInt mx, my, mz; /* global number of grid points in each direction */ 68 PetscInt xs, ys, zs; /* starting point of this processor, excluding ghosts */ 69 PetscInt xm, ym, zm; /* number of grid points on this processor, excluding ghosts */ 70 PetscInt gxs, gys, gzs; /* starting point of this processor including ghosts */ 71 PetscInt gxm, gym, gzm; /* number of grid points on this processor including ghosts */ 72 DMBoundaryType bx, by, bz; /* type of ghost nodes at boundary */ 73 DMDAStencilType st; 74 DM da; 75 } DMDALocalInfo; 76