/[escript]/trunk/finley/src/ReferenceElements.h
ViewVC logotype

Contents of /trunk/finley/src/ReferenceElements.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 626 - (show annotations)
Thu Mar 23 02:16:36 2006 UTC (13 years, 7 months ago) by elspeth
File MIME type: text/plain
File size: 6429 byte(s)
Copyright information inserted

1 /*
2 ************************************************************
3 * Copyright 2006 by ACcESS MNRF *
4 * *
5 * http://www.access.edu.au *
6 * Primary Business: Queensland, Australia *
7 * Licensed under the Open Software License version 3.0 *
8 * http://www.opensource.org/licenses/osl-3.0.php *
9 * *
10 ************************************************************
11 */
12
13 /**************************************************************/
14
15 /* Finley: Reference elements */
16
17 /**************************************************************/
18
19 /* Author: gross@access.edu.au */
20 /* Version: $Id$ */
21
22 /**************************************************************/
23
24 #ifndef INC_FINLEY_REFERENCEELEMENTS
25 #define INC_FINLEY_REFERENCEELEMENTS
26
27
28 /**************************************************************/
29
30 #include "Finley.h"
31 #include "ShapeFunctions.h"
32 #include "Quadrature.h"
33
34 /**************************************************************/
35
36 /* The ids of the allowed reference ellements: */
37
38 #define MAX_numNodes 64
39
40 typedef enum {
41 Point1,
42 Line2,
43 Line3,
44 Line4,
45 Tri3,
46 Tri6,
47 Tri9,
48 Tri10,
49 Rec4,
50 Rec8,
51 Rec9,
52 Rec12,
53 Rec16,
54 Tet4,
55 Tet10,
56 Tet16,
57 Hex8,
58 Hex20,
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 Hex32Face,
78 Point1_Contact,
79 Line2_Contact,
80 Line3_Contact,
81 Line4_Contact,
82 Tri3_Contact,
83 Tri6_Contact,
84 Tri9_Contact,
85 Tri10_Contact,
86 Rec4_Contact,
87 Rec8_Contact,
88 Rec9_Contact,
89 Rec12_Contact,
90 Rec16_Contact,
91 Line2Face_Contact,
92 Line3Face_Contact,
93 Line4Face_Contact,
94 Tri3Face_Contact,
95 Tri6Face_Contact,
96 Tri9Face_Contact,
97 Tri10Face_Contact,
98 Rec4Face_Contact,
99 Rec8Face_Contact,
100 Rec9Face_Contact,
101 Rec12Face_Contact,
102 Rec16Face_Contact,
103 Tet4Face_Contact,
104 Tet10Face_Contact,
105 Tet16Face_Contact,
106 Hex8Face_Contact,
107 Hex20Face_Contact,
108 Hex32Face_Contact,
109 NoType /* marks end of list */
110 } ElementTypeId;
111
112 /**************************************************************/
113
114 /* this struct holds the definition of the reference element: */
115
116 typedef struct Finley_RefElementInfo {
117 ElementTypeId TypeId; /* the id */
118 char* Name; /* the name in text form e.g. Line1,Rec12,... */
119 dim_t numDim; /* dimension of the element */
120 dim_t numNodes; /* number of nodes defining the element*/
121 dim_t numShapes; /* number of shape functions, typically = numNodes*/
122 dim_t numOrder; /* order of the shape functions */
123 dim_t numVertices; /* number of vertices of the element */
124 ElementTypeId LinearTypeId; /* id of the linear version of the element */
125 index_t linearNodes[MAX_numNodes]; /* gives the list of nodes defining the linear element, typically it is linearNodes[i]=i */
126 Finley_Shape_Function* getValues; /* function to evaluate the shape functions at a set of points */
127 Finley_Quad_getNodes* getQuadNodes; /* function to set the quadrature points */
128 Finley_Quad_getNumNodes* getNumQuadNodes; /* function selects the number of quadrature nodes for a given accuracy order */
129 dim_t numGeoNodes; /* nuber of nodes used to describe the geometry of the geometrically relevant part of the element */
130 /* typically this is numNodes but for volumenic elements used to descrbe faces this is the number of */
131 /* nodes on the particular face */
132 index_t geoNodes[MAX_numNodes]; /* list to gather the geometrically relevant nodes */
133 dim_t numNodesOnFace; /* if the element is allowed as a face element, numNodesOnFace defines the number of nodes */
134 /* defining the face */
135 /* the following lists are only used for face elements defined by numNodesOnFace>0 */
136 index_t faceNode[MAX_numNodes]; /* list of the nodes defining the face */
137 index_t shiftNodes[MAX_numNodes]; /* defines a permutation of the nodes which rotates the nodes on the face */
138 index_t reverseNodes[MAX_numNodes]; /* reverses the order of the nodes on a face. teh permutation has keep 0 fixed. */
139 /* shiftNodes={-1} or reverseNodes={-1} are ignored. */
140 } Finley_RefElementInfo;
141
142 /**************************************************************/
143
144 /* this struct holds the realization of a reference element */
145
146 typedef struct Finley_RefElement {
147 Finley_RefElementInfo* Type; /* type of the reference element */
148 int numQuadNodes; /* number of quadrature points */
149 double *QuadNodes; /* coordinates of quadrature nodes */
150 double *QuadWeights; /* weights of the quadrature scheme */
151 double *S; /* shape functions at quadrature nodes */
152 double *dSdv; /* derivative of the shape functions at quadrature nodes */
153 } Finley_RefElement;
154
155 /**************************************************************/
156
157 /* interfaces: */
158
159 Finley_RefElement* Finley_RefElement_alloc(ElementTypeId,int);
160 void Finley_RefElement_dealloc(Finley_RefElement*);
161 ElementTypeId Finley_RefElement_getTypeId(char*);
162
163 #endif /* #ifndef INC_FINLEY_REFERENCEELEMENTS */
164
165 /*
166 * $Log$
167 * Revision 1.3 2005/09/15 03:44:23 jgs
168 * Merge of development branch dev-02 back to main trunk on 2005-09-15
169 *
170 * Revision 1.2.2.1 2005/09/07 06:26:21 gross
171 * the solver from finley are put into the standalone package paso now
172 *
173 * Revision 1.2 2005/07/08 04:07:56 jgs
174 * Merge of development branch back to main trunk on 2005-07-08
175 *
176 * Revision 1.1.1.1.2.1 2005/06/29 02:34:55 gross
177 * some changes towards 64 integers in finley
178 *
179 * Revision 1.1.1.1 2004/10/26 06:53:57 jgs
180 * initial import of project esys2
181 *
182 * Revision 1.1.1.1 2004/06/24 04:00:40 johng
183 * Initial version of eys using boost-python.
184 *
185 *
186 */

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26