forked from petsc/petsc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpetscdmplextypes.h
90 lines (76 loc) · 3.06 KB
/
petscdmplextypes.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#pragma once
/* SUBMANSEC = DMPlex */
/*E
DMPlexShape - The domain shape used for automatic mesh creation.
Values:
+ `DM_SHAPE_BOX` - The tensor product of intervals in dimension d
. `DM_SHAPE_BOX_SURFACE` - The surface of a box in dimension d+1
. `DM_SHAPE_BALL` - The d-dimensional ball
. `DM_SHAPE_SPHERE` - The surface of the (d+1)-dimensional ball
. `DM_SHAPE_CYLINDER` - The tensor product of the interval and disk
. `DM_SHAPE_SCHWARZ_P` - The Schwarz-P triply periodic minimal surface
. `DM_SHAPE_GYROID` - The Gyroid triply periodic minimal surface
. `DM_SHAPE_DOUBLET` - The mesh of two cells of a specified type
. `DM_SHAPE_ANNULUS` - The area between two concentric spheres in dimension d
- `DM_SHAPE_HYPERCUBIC` - The skeleton of the tensor product of the intervals
Level: beginner
.seealso: [](ch_dmbase), `DMPLEX`, `DMPlexGetCellRefiner()`, `DMPlexSetCellRefiner()`, `DMRefine()`, `DMPolytopeType`, `DMPlexCoordMap`
E*/
typedef enum {
DM_SHAPE_BOX,
DM_SHAPE_BOX_SURFACE,
DM_SHAPE_BALL,
DM_SHAPE_SPHERE,
DM_SHAPE_CYLINDER,
DM_SHAPE_SCHWARZ_P,
DM_SHAPE_GYROID,
DM_SHAPE_DOUBLET,
DM_SHAPE_ANNULUS,
DM_SHAPE_HYPERCUBIC,
DM_SHAPE_ZBOX,
DM_SHAPE_UNKNOWN
} DMPlexShape;
PETSC_EXTERN const char *const DMPlexShapes[];
/*E
DMPlexCoordMap - The coordinate mapping used for automatic mesh creation.
Values:
+ `DM_COORD_MAP_NONE` - The identity map
. `DM_COORD_MAP_SHEAR` - The shear (additive) map along some dimension
. `DM_COORD_MAP_FLARE` - The flare (multiplicative) map along some dimension
. `DM_COORD_MAP_ANNULUS` - The map from a rectangle to an annulus
. `DM_COORD_MAP_SHELL` - The map from a rectangular solid to an spherical shell
Level: beginner
.seealso: [](ch_dmbase), `DMPLEX`, `DMPlexGetCellRefiner()`, `DMPlexSetCellRefiner()`, `DMRefine()`, `DMPolytopeType`, `DMPlexShape`
E*/
typedef enum {
DM_COORD_MAP_NONE,
DM_COORD_MAP_SHEAR,
DM_COORD_MAP_FLARE,
DM_COORD_MAP_ANNULUS,
DM_COORD_MAP_SHELL,
DM_COORD_MAP_UNKNOWN
} DMPlexCoordMap;
PETSC_EXTERN const char *const DMPlexCoordMaps[];
/*E
DMPlexCSRAlgorithm - The algorithm for building the adjacency graph in CSR format, usually for a mesh partitioner
Values:
+ `DM_PLEX_CSR_MAT` - Use `MatPartitioning` by first making a matrix
. `DM_PLEX_CSR_GRAPH` - Use the original `DMPLEX` and communicate along the boundary
- `DM_PLEX_CSR_OVERLAP` - Build an overlapped `DMPLEX` and then locally compute
Level: beginner
.seealso: [](ch_dmbase), `DMPLEX`, `DMPlexCreatePartitionerGraph()`, `PetscPartitionerDMPlexPartition()`, `DMPlexDistribute()`
E*/
typedef enum {
DM_PLEX_CSR_MAT,
DM_PLEX_CSR_GRAPH,
DM_PLEX_CSR_OVERLAP
} DMPlexCSRAlgorithm;
PETSC_EXTERN const char *const DMPlexCSRAlgorithms[];
typedef struct _p_DMPlexPointQueue *DMPlexPointQueue;
struct _p_DMPlexPointQueue {
PetscInt size; /* Size of the storage array */
PetscInt *points; /* Array of mesh points */
PetscInt front; /* Index of the front of the queue */
PetscInt back; /* Index of the back of the queue */
PetscInt num; /* Number of enqueued points */
};