37
37
#define MAX_numSides 2
116
NoRef /* marks end of list */
79
Finley_Point1_Contact,
92
Finley_Line2Face_Contact,
93
Finley_Line3Face_Contact,
94
Finley_Line4Face_Contact,
95
Finley_Tri3Face_Contact,
96
Finley_Tri6Face_Contact,
97
Finley_Tri9Face_Contact,
98
Finley_Tri10Face_Contact,
99
Finley_Rec4Face_Contact,
100
Finley_Rec8Face_Contact,
101
Finley_Rec9Face_Contact,
102
Finley_Rec12Face_Contact,
103
Finley_Rec16Face_Contact,
104
Finley_Tet4Face_Contact,
105
Finley_Tet10Face_Contact,
106
Finley_Tet16Face_Contact,
107
Finley_Hex8Face_Contact,
108
Finley_Hex20Face_Contact,
109
Finley_Hex27Face_Contact,
110
Finley_Hex32Face_Contact,
116
Finley_NoRef /* marks end of list */
117
} Finley_ElementTypeId;
119
119
/**************************************************************/
121
121
/* this struct holds the definition of the reference element: */
123
123
typedef struct Finley_ReferenceElementInfo {
124
ElementTypeId TypeId; /* the id */
124
Finley_ElementTypeId TypeId; /* the id */
125
125
char* Name; /* the name in text form e.g. Line1,Rec12,... */
126
126
dim_t numNodes; /* number of nodes defining the element*/
127
127
dim_t numSubElements; /* number of subelements. >1 is macro elements are used. */
132
132
index_t offsets[MAX_numSides+1]; /* offset to the side nodes: offsets[s]...offset[s+1]-1 referes to the nodes to be used for side s*/
135
ElementTypeId LinearTypeId; /* id of the linear version of the element */
135
Finley_ElementTypeId LinearTypeId; /* id of the linear version of the element */
137
index_t linearNodes[MAX_numNodes*MAX_numSides]; /* gives the list of nodes defining the linear or macro element */
137
index_t linearNodes[MAX_numNodes*MAX_numSides]; /* gives the list of nodes defining the linear or macro element */
139
139
Finley_QuadTypeId Quadrature; /* quadrature scheme */
140
140
Finley_ShapeFunctionTypeId Parametrization; /* shape function for parametrization of the element */
183
183
/* interfaces: */
185
Finley_ReferenceElement* Finley_ReferenceElement_alloc(ElementTypeId,int);
185
Finley_ReferenceElement* Finley_ReferenceElement_alloc(Finley_ElementTypeId,int);
186
186
void Finley_ReferenceElement_dealloc(Finley_ReferenceElement*);
187
ElementTypeId Finley_ReferenceElement_getTypeId(char*);
187
Finley_ElementTypeId Finley_ReferenceElement_getTypeId(char*);
188
188
Finley_ReferenceElement* Finley_ReferenceElement_reference(Finley_ReferenceElement* in);
189
Finley_ReferenceElementInfo* Finley_ReferenceElement_getInfo(ElementTypeId id);
189
Finley_ReferenceElementInfo* Finley_ReferenceElement_getInfo(Finley_ElementTypeId id);
192
192
#define Finley_ReferenceElement_getNumNodes(__in__) (__in__)->Type->numNodes
194
194
#endif /* #ifndef INC_FINLEY_REFERENCEELEMENTS */