Date: 2025-03-28T21:10:40+00:00

Actual source code: petscdmdatypes.h

      1: #pragma once

      3: #include <petscdmtypes.h>

      5: /* SUBMANSEC = DMDA */

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

     11:    Level: beginner

     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;

     20: /*E
     21:     DMDAInterpolationType - Defines the type of interpolation that will be returned by
     22:                             `DMCreateInterpolation()`.

     24:    Level: beginner

     26: .seealso: [](ch_dmbase), `DMDA`, `DMDACreate1d()`, `DMDACreate2d()`, `DMDACreate3d()`, `DMCreateInterpolation()`, `DMDASetInterpolationType()`, `DMDACreate()`
     27: E*/
     28: typedef enum {
     29:   DMDA_Q0,
     30:   DMDA_Q1
     31: } DMDAInterpolationType;

     33: /*E
     34:    DMDAElementType - Defines the type of elements that will be returned by
     35:                      `DMDAGetElements()`

     37:    Level: beginner

     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;

     47: /*S
     48:   DMDALocalInfo - C struct that contains information about a structured grid and a processes logical
     49:                   location in it.

     51:   Level: beginner

     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.

     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;