#ifndef MESH_H #define MESH_H /* * * mesh.h - mesh structures * * Mark A. Christon * */ typedef enum { ONED2, QUAD4, HEX8 } Eltype; typedef enum { ASCII_MESH, OTHER_MESH } Meshtype; /* Parameters for elements */ #define NNPE_HEX8 8 #define NUM_HEX8_FACES 6 #define NNPE_HEX8_FACES 4 #define NNPE_QUAD4 4 #define NUM_QUAD4_FACES 4 #define NNPE_QUAD4_FACES 2 #define NNPE_ONED2 2 #define MAXCHR 80 /* Maximum character length */ /* Generalized mesh structure */ typedef struct { /* analysis title */ char title[MAXCHR]; /* Mesh type */ int meshtype; /* Number of nodes */ int Nnp; /* Dimension of mesh */ int Ndim; /* Block information */ int Neblock; /* Nodeset and sideset count */ int Nnd_sets; int Nsd_sets; /* 8-node Hex elements */ int Nel8; int Nnpe8; int Nmat8; int Nface8; int Nedge8; /* 4-node quad elements */ int Nel4; int Nnpe4; int Nmat4; int Nedge4; /* 2-node elements */ int Nel2; int Nnpe2; int Nmat2; /* Nodal coordinates */ Real *x[3]; /* Field data -- nodal unknowns */ Real *field; } MeshData; typedef struct { int ix[8]; int mat; } Hex8; typedef struct { int ix[4]; int mat; } Quad4; typedef struct { int ix[2]; int mat; } Oned2; /* Nodeset data structure */ typedef struct { int id; /* Nodeset id */ int Nnp; /* Number of nodes in nodeset */ int *node_list; /* Node list for nodeset */ } Nodeset; /* Sideset data structure */ typedef struct { int id; /* Nodeset id */ int Nel; /* Number of elements in sideset */ int Nnp; /* Number of nodes in sideset */ int Ndf; /* Number of distribution factors */ int *el; /* Element list for sideset */ int *side; /* Side list for sideset */ int *ix; /* Connectivity for sideset */ } Sideset; /* Element Block data structure */ typedef struct { int Nel; /* Number of elements in the block */ int Nnpe; /* Number of nodes per element */ int Nattr; /* Number of attributes */ int Nnd_var; /* Number of nodal variables */ int Nel_var; /* Number of element variables */ int eltype; /* Element type for current block */ int Nface; int Nedge; } EBlock; #endif /* MESH_H */