Actual source code: petscdmdatypes.h
petsc-3.4.2 2013-07-02

      1: #if !defined(_PETSCDMDATYPES_H)
      2: #define _PETSCDMDATYPES_H

      4: #include <petscdmtypes.h>

      6: /*E
      7:     DMDAStencilType - Determines if the stencil extends only along the coordinate directions, or also
      8:       to the northeast, northwest etc

     10:    Level: beginner

     12: .seealso: DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMDACreate(), DMDASetStencilType()
     13: E*/
     14: typedef enum { DMDA_STENCIL_STAR,DMDA_STENCIL_BOX } DMDAStencilType;

     16: /*E
     17:     DMDABoundaryType - Describes the choice for fill of ghost cells on physical domain boundaries.

     19:    Level: beginner

     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).

     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().

     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;

     33: /*E
     34:     DMDAInterpolationType - Defines the type of interpolation that will be returned by
     35:        DMCreateInterpolation.

     37:    Level: beginner

     39: .seealso: DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMCreateInterpolation(), DMDASetInterpolationType(), DMDACreate()
     40: E*/
     41: typedef enum { DMDA_Q0, DMDA_Q1 } DMDAInterpolationType;

     43: /*E
     44:     DMDAElementType - Defines the type of elements that will be returned by
     45:        DMDAGetElements()

     47:    Level: beginner

     49: .seealso: DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMCreateInterpolation(), DMDASetInterpolationType(),
     50:           DMDASetElementType(), DMDAGetElements(), DMDARestoreElements(), DMDACreate()
     51: E*/
     52: typedef enum { DMDA_ELEMENT_P1, DMDA_ELEMENT_Q1 } DMDAElementType;

     54: /*S
     55:      DMDALocalInfo - C struct that contains information about a structured grid and a processors logical
     56:               location in it.

     58:    Level: beginner

     60:   Concepts: distributed array

     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

     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;

     79: #endif