~vcs-imports/escript-finley/trunk

« back to all changes in this revision

Viewing changes to finley/src/ReferenceElements.h

  • Committer: jfenwick
  • Date: 2010-10-11 01:48:14 UTC
  • Revision ID: svn-v4:77569008-7704-0410-b7a0-a92fef0b09fd:trunk:3259
Merging dudley and scons updates from branches

Show diffs side-by-side

added added

removed removed

Lines of Context:
37
37
#define MAX_numSides 2
38
38
 
39
39
typedef enum {
40
 
  Point1,
41
 
  Line2,
42
 
  Line3,
43
 
  Line4,
44
 
  Tri3,
45
 
  Tri6,
46
 
  Tri9,
47
 
  Tri10,
48
 
  Rec4,
49
 
  Rec8,
50
 
  Rec9,
51
 
  Rec12,
52
 
  Rec16,
53
 
  Tet4,
54
 
  Tet10,
55
 
  Tet16,
56
 
  Hex8,
57
 
  Hex20,
58
 
  Hex27,
59
 
  Hex32,
60
 
  Line2Face,
61
 
  Line3Face,
62
 
  Line4Face,
63
 
  Tri3Face,
64
 
  Tri6Face,
65
 
  Tri9Face,
66
 
  Tri10Face,
67
 
  Rec4Face,
68
 
  Rec8Face,
69
 
  Rec9Face,
70
 
  Rec12Face,
71
 
  Rec16Face,
72
 
  Tet4Face, 
73
 
  Tet10Face, 
74
 
  Tet16Face,
75
 
  Hex8Face,
76
 
  Hex20Face, 
77
 
  Hex27Face, 
78
 
  Hex32Face, 
79
 
  Point1_Contact,
80
 
  Line2_Contact,
81
 
  Line3_Contact,
82
 
  Line4_Contact,
83
 
  Tri3_Contact,
84
 
  Tri6_Contact,
85
 
  Tri9_Contact,
86
 
  Tri10_Contact,
87
 
  Rec4_Contact,
88
 
  Rec8_Contact,
89
 
  Rec9_Contact,
90
 
  Rec12_Contact,
91
 
  Rec16_Contact,
92
 
  Line2Face_Contact,
93
 
  Line3Face_Contact,
94
 
  Line4Face_Contact,
95
 
  Tri3Face_Contact,
96
 
  Tri6Face_Contact,
97
 
  Tri9Face_Contact,
98
 
  Tri10Face_Contact,
99
 
  Rec4Face_Contact,
100
 
  Rec8Face_Contact,
101
 
  Rec9Face_Contact,
102
 
  Rec12Face_Contact,
103
 
  Rec16Face_Contact,
104
 
  Tet4Face_Contact, 
105
 
  Tet10Face_Contact, 
106
 
  Tet16Face_Contact,
107
 
  Hex8Face_Contact,
108
 
  Hex20Face_Contact,
109
 
  Hex27Face_Contact, 
110
 
  Hex32Face_Contact, 
111
 
  Line3Macro, 
112
 
  Tri6Macro, 
113
 
  Rec9Macro,
114
 
  Tet10Macro,
115
 
  Hex27Macro,
116
 
  NoRef   /* marks end of list */
117
 
} ElementTypeId;
 
40
  Finley_Point1,
 
41
  Finley_Line2,
 
42
  Finley_Line3,
 
43
  Finley_Line4,
 
44
  Finley_Tri3,
 
45
  Finley_Tri6,
 
46
  Finley_Tri9,
 
47
  Finley_Tri10,
 
48
  Finley_Rec4,
 
49
  Finley_Rec8,
 
50
  Finley_Rec9,
 
51
  Finley_Rec12,
 
52
  Finley_Rec16,
 
53
  Finley_Tet4,
 
54
  Finley_Tet10,
 
55
  Finley_Tet16,
 
56
  Finley_Hex8,
 
57
  Finley_Hex20,
 
58
  Finley_Hex27,
 
59
  Finley_Hex32,
 
60
  Finley_Line2Face,
 
61
  Finley_Line3Face,
 
62
  Finley_Line4Face,
 
63
  Finley_Tri3Face,
 
64
  Finley_Tri6Face,
 
65
  Finley_Tri9Face,
 
66
  Finley_Tri10Face,
 
67
  Finley_Rec4Face,
 
68
  Finley_Rec8Face,
 
69
  Finley_Rec9Face,
 
70
  Finley_Rec12Face,
 
71
  Finley_Rec16Face,
 
72
  Finley_Tet4Face, 
 
73
  Finley_Tet10Face, 
 
74
  Finley_Tet16Face,
 
75
  Finley_Hex8Face,
 
76
  Finley_Hex20Face, 
 
77
  Finley_Hex27Face, 
 
78
  Finley_Hex32Face, 
 
79
  Finley_Point1_Contact,
 
80
  Finley_Line2_Contact,
 
81
  Finley_Line3_Contact,
 
82
  Finley_Line4_Contact,
 
83
  Finley_Tri3_Contact,
 
84
  Finley_Tri6_Contact,
 
85
  Finley_Tri9_Contact,
 
86
  Finley_Tri10_Contact,
 
87
  Finley_Rec4_Contact,
 
88
  Finley_Rec8_Contact,
 
89
  Finley_Rec9_Contact,
 
90
  Finley_Rec12_Contact,
 
91
  Finley_Rec16_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, 
 
111
  Finley_Line3Macro, 
 
112
  Finley_Tri6Macro, 
 
113
  Finley_Rec9Macro,
 
114
  Finley_Tet10Macro,
 
115
  Finley_Hex27Macro,
 
116
  Finley_NoRef   /* marks end of list */
 
117
} Finley_ElementTypeId;
118
118
 
119
119
/**************************************************************/
120
120
 
121
121
/*  this struct holds the definition of the reference element: */
122
122
 
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*/                                                           
133
133
 
134
134
  
135
 
  ElementTypeId LinearTypeId;                /* id of the linear version of the element */
 
135
  Finley_ElementTypeId LinearTypeId;         /* id of the linear version of the element */
136
136
  
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 */
138
138
  
139
139
  Finley_QuadTypeId Quadrature;                /* quadrature scheme */
140
140
  Finley_ShapeFunctionTypeId Parametrization;  /* shape function for parametrization of the element */
182
182
 
183
183
/*    interfaces: */
184
184
 
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);
190
190
 
191
191
 
192
192
#define Finley_ReferenceElement_getNumNodes(__in__) (__in__)->Type->numNodes
193
193
 
194
194
#endif /* #ifndef INC_FINLEY_REFERENCEELEMENTS */
 
195