/[escript]/branches/RW_WIN32/finley/src/finleyC/ReferenceElements.h
ViewVC logotype

Contents of /branches/RW_WIN32/finley/src/finleyC/ReferenceElements.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 186 - (show annotations)
Sun Nov 20 10:51:16 2005 UTC (13 years, 11 months ago) by robwdcock
File MIME type: text/plain
File size: 6837 byte(s)
PARTIAL WIN32 PORT
+ Paso, ext_math and mmio libraries build using scons in top level directory
+ Scons build system currently hard coded against RW's third-party library paths.
+ Still lots TODO to complete port and build system 
1 /*
2 ******************************************************************************
3 * *
4 * COPYRIGHT ACcESS 2003,2004,2005 - All Rights Reserved *
5 * *
6 * This software is the property of ACcESS. No part of this code *
7 * may be copied in any form or by any means without the expressed written *
8 * consent of ACcESS. Copying, use or modification of this software *
9 * by any unauthorised person is illegal unless that person has a software *
10 * license agreement with ACcESS. *
11 * *
12 ******************************************************************************
13 */
14
15 /**************************************************************/
16
17 /* Finley: Reference elements */
18
19 /**************************************************************/
20
21 /* Author: gross@access.edu.au */
22 /* Version: $Id$ */
23
24 /**************************************************************/
25
26 #ifndef INC_FINLEY_REFERENCEELEMENTS
27 #define INC_FINLEY_REFERENCEELEMENTS
28
29
30 /**************************************************************/
31
32 #include "Finley.h"
33 #include "ShapeFunctions.h"
34 #include "Quadrature.h"
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38
39 /**************************************************************/
40
41 /* The ids of the allowed reference ellements: */
42
43 #define MAX_numNodes 64
44
45 typedef enum {
46 Point1,
47 Line2,
48 Line3,
49 Line4,
50 Tri3,
51 Tri6,
52 Tri9,
53 Tri10,
54 Rec4,
55 Rec8,
56 Rec9,
57 Rec12,
58 Rec16,
59 Tet4,
60 Tet10,
61 Tet16,
62 Hex8,
63 Hex20,
64 Hex32,
65 Line2Face,
66 Line3Face,
67 Line4Face,
68 Tri3Face,
69 Tri6Face,
70 Tri9Face,
71 Tri10Face,
72 Rec4Face,
73 Rec8Face,
74 Rec9Face,
75 Rec12Face,
76 Rec16Face,
77 Tet4Face,
78 Tet10Face,
79 Tet16Face,
80 Hex8Face,
81 Hex20Face,
82 Hex32Face,
83 Point1_Contact,
84 Line2_Contact,
85 Line3_Contact,
86 Line4_Contact,
87 Tri3_Contact,
88 Tri6_Contact,
89 Tri9_Contact,
90 Tri10_Contact,
91 Rec4_Contact,
92 Rec8_Contact,
93 Rec9_Contact,
94 Rec12_Contact,
95 Rec16_Contact,
96 Line2Face_Contact,
97 Line3Face_Contact,
98 Line4Face_Contact,
99 Tri3Face_Contact,
100 Tri6Face_Contact,
101 Tri9Face_Contact,
102 Tri10Face_Contact,
103 Rec4Face_Contact,
104 Rec8Face_Contact,
105 Rec9Face_Contact,
106 Rec12Face_Contact,
107 Rec16Face_Contact,
108 Tet4Face_Contact,
109 Tet10Face_Contact,
110 Tet16Face_Contact,
111 Hex8Face_Contact,
112 Hex20Face_Contact,
113 Hex32Face_Contact,
114 NoType /* marks end of list */
115 } ElementTypeId;
116
117 /**************************************************************/
118
119 /* this struct holds the definition of the reference element: */
120
121 typedef struct Finley_RefElementInfo {
122 ElementTypeId TypeId; /* the id */
123 char* Name; /* the name in text form e.g. Line1,Rec12,... */
124 dim_t numDim; /* dimension of the element */
125 dim_t numNodes; /* number of nodes defining the element*/
126 dim_t numShapes; /* number of shape functions, typically = numNodes*/
127 dim_t numOrder; /* order of the shape functions */
128 dim_t numVertices; /* number of vertices of the element */
129 ElementTypeId LinearTypeId; /* id of the linear version of the element */
130 index_t linearNodes[MAX_numNodes]; /* gives the list of nodes defining the linear element, typically it is linearNodes[i]=i */
131 Finley_Shape_Function* getValues; /* function to evaluate the shape functions at a set of points */
132 Finley_Quad_getNodes* getQuadNodes; /* function to set the quadrature points */
133 Finley_Quad_getNumNodes* getNumQuadNodes; /* function selects the number of quadrature nodes for a given accuracy order */
134 dim_t numGeoNodes; /* nuber of nodes used to describe the geometry of the geometrically relevant part of the element */
135 /* typically this is numNodes but for volumenic elements used to descrbe faces this is the number of */
136 /* nodes on the particular face */
137 index_t geoNodes[MAX_numNodes]; /* list to gather the geometrically relevant nodes */
138 dim_t numNodesOnFace; /* if the element is allowed as a face element, numNodesOnFace defines the number of nodes */
139 /* defining the face */
140 /* the following lists are only used for face elements defined by numNodesOnFace>0 */
141 index_t faceNode[MAX_numNodes]; /* list of the nodes defining the face */
142 index_t shiftNodes[MAX_numNodes]; /* defines a permutation of the nodes which rotates the nodes on the face */
143 index_t reverseNodes[MAX_numNodes]; /* reverses the order of the nodes on a face. teh permutation has keep 0 fixed. */
144 /* shiftNodes={-1} or reverseNodes={-1} are ignored. */
145 } Finley_RefElementInfo;
146
147 /**************************************************************/
148
149 /* this struct holds the realization of a reference element */
150
151 typedef struct Finley_RefElement {
152 Finley_RefElementInfo* Type; /* type of the reference element */
153 int numQuadNodes; /* number of quadrature points */
154 double *QuadNodes; /* coordinates of quadrature nodes */
155 double *QuadWeights; /* weights of the quadrature scheme */
156 double *S; /* shape functions at quadrature nodes */
157 double *dSdv; /* derivative of the shape functions at quadrature nodes */
158 } Finley_RefElement;
159
160 /**************************************************************/
161
162 /* interfaces: */
163
164 Finley_RefElement* Finley_RefElement_alloc(ElementTypeId,int);
165 void Finley_RefElement_dealloc(Finley_RefElement*);
166 ElementTypeId Finley_RefElement_getTypeId(char*);
167 #ifdef __cplusplus
168 }
169 #endif /* __cplusplus */
170
171
172 #endif /* #ifndef INC_FINLEY_REFERENCEELEMENTS */
173
174 /*
175 * $Log$
176 * Revision 1.3 2005/09/15 03:44:23 jgs
177 * Merge of development branch dev-02 back to main trunk on 2005-09-15
178 *
179 * Revision 1.2.2.1 2005/09/07 06:26:21 gross
180 * the solver from finley are put into the standalone package paso now
181 *
182 * Revision 1.2 2005/07/08 04:07:56 jgs
183 * Merge of development branch back to main trunk on 2005-07-08
184 *
185 * Revision 1.1.1.1.2.1 2005/06/29 02:34:55 gross
186 * some changes towards 64 integers in finley
187 *
188 * Revision 1.1.1.1 2004/10/26 06:53:57 jgs
189 * initial import of project esys2
190 *
191 * Revision 1.1.1.1 2004/06/24 04:00:40 johng
192 * Initial version of eys using boost-python.
193 *
194 *
195 */

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26