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 */