Actual source code: triimpl.h
1: /* $Id: triimpl.h,v 1.2 1999/07/23 06:35:47 knepley Exp $ */
2: /*
3: This private file should not be included in users' code.
4: */
6: #ifndef __TRIIMPL_H
8: #include src/mesh/meshimpl.h
10: /* This avoids allocation of coordinate arrays passed to operator functions */
11: #define MAX_CORNERS 6
13: typedef struct {
14: /* Necessary data
15: -- d is the space dimension
16: -- Each node is given a class (integer) which indicates a set of fields
17: which are defined on that node
18: -- A field is said to contain a class if that field is defined on any
19: node of that class
20: */
21: double *nodes; /* [dN]: List of node coordinates stored x_1, y_1, (z_1), x_2, y_2, (z_2), ... */
22: double *nodesOld; /* [dN]: List of previous node coordinates stored x_1, y_1, (z_1), x_2, y_2, (z_2), ... */
23: int *markers; /* [N]: List of node markers 0 Interior, >0 Bd Number, <0 -Bd Number (usually for moving boundaries) */
24: int *degrees; /* [N]: List of the degree of each node */
25: int *edges; /* [2E]: List of edge endpoints */
26: int *edgemarkers; /* [E]: List of edge markers 0 Interior, >0 Bd Number, <0 -Bd Number (usually for moving boundaries) */
27: int *faces; /* [C'F]: List of triangle corners */
28: int *facemarkers; /* [F]: List of face markers 0 Interior, >0 Bd Number, <0 -Bd Number (usually for moving boundaries) */
29: int *neighbors; /* [3F]: List of triangle neighbors, neighbor i is opposite vertex i
30: [4C]: List of tetrahedron neighbors, neighbor i is opposite vertex i */
31: int *cells; /* [C*C]: List of tetrahedron corners */
32: int *bdNodes; /* [NB]: List of boundary nodes, ordered by markers, topologically ordered per marker in 2D */
33: int *bdEdges; /* [EB]: List of boundary edges, ordered by markers, topologically ordered per marker in 2D */
34: int *bdFaces; /* [FB]: List of boundary edges, ordered by markers */
35: int *bdMarkers; /* [B]: List of markers in the order they appear in bdBegin[], bdNodes[], etc. */
36: int *bdBegin; /* [B+1]: List of indices for boundary beginnings in bdNodes[] */
37: int *bdEdgeBegin; /* [B+1]: List of indices for boundary beginnings in bdEdges[] */
38: int *bdFaceBegin; /* [B+1]: List of indices for boundary beginnings in bdFaces[] */
40: /* Derived data that is nice to have around */
41: double *areas; /* [F]: List of face areas */
42: double *aspectRatios; /* [F]: List of face aspect ratios */
43: double *volumes; /* [C]: List of cell areas */
44: } Mesh_Triangular;
46: #endif /* __TRIIMPL_H */