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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1198 - (hide annotations)
Tue Jun 19 00:24:29 2007 UTC (12 years, 8 months ago) by btully
File MIME type: text/plain
File size: 6555 byte(s)
Updated Rec9 Shape Functions.
Included a new definition for Hex27 Reference Element and associated Shape Functions.

1 jgs 150 /*
2 elspeth 626 ************************************************************
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 jgs 150 */
12 jgs 82
13     /**************************************************************/
14    
15     /* Finley: Reference elements */
16    
17     /**************************************************************/
18    
19     /* Author: gross@access.edu.au */
20     /* Version: $Id$ */
21    
22     /**************************************************************/
23    
24 jgs 150 #ifndef INC_FINLEY_REFERENCEELEMENTS
25     #define INC_FINLEY_REFERENCEELEMENTS
26    
27    
28     /**************************************************************/
29    
30     #include "Finley.h"
31 jgs 82 #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 btully 1198 Hex27,
60 jgs 82 Hex32,
61     Line2Face,
62     Line3Face,
63     Line4Face,
64     Tri3Face,
65     Tri6Face,
66     Tri9Face,
67     Tri10Face,
68     Rec4Face,
69     Rec8Face,
70     Rec9Face,
71     Rec12Face,
72     Rec16Face,
73     Tet4Face,
74     Tet10Face,
75     Tet16Face,
76     Hex8Face,
77     Hex20Face,
78 btully 1198 Hex27Face,
79 jgs 82 Hex32Face,
80     Point1_Contact,
81     Line2_Contact,
82     Line3_Contact,
83     Line4_Contact,
84     Tri3_Contact,
85     Tri6_Contact,
86     Tri9_Contact,
87     Tri10_Contact,
88     Rec4_Contact,
89     Rec8_Contact,
90     Rec9_Contact,
91     Rec12_Contact,
92     Rec16_Contact,
93     Line2Face_Contact,
94     Line3Face_Contact,
95     Line4Face_Contact,
96     Tri3Face_Contact,
97     Tri6Face_Contact,
98     Tri9Face_Contact,
99     Tri10Face_Contact,
100     Rec4Face_Contact,
101     Rec8Face_Contact,
102     Rec9Face_Contact,
103     Rec12Face_Contact,
104     Rec16Face_Contact,
105     Tet4Face_Contact,
106     Tet10Face_Contact,
107     Tet16Face_Contact,
108     Hex8Face_Contact,
109 btully 1198 Hex20Face_Contact,
110     Hex27Face_Contact,
111 jgs 82 Hex32Face_Contact,
112     NoType /* marks end of list */
113     } ElementTypeId;
114    
115     /**************************************************************/
116    
117     /* this struct holds the definition of the reference element: */
118    
119     typedef struct Finley_RefElementInfo {
120     ElementTypeId TypeId; /* the id */
121     char* Name; /* the name in text form e.g. Line1,Rec12,... */
122 gross 777 dim_t numLocalDim; /* local dimension of the element */
123 jgs 123 dim_t numDim; /* dimension of the element */
124     dim_t numNodes; /* number of nodes defining the element*/
125     dim_t numShapes; /* number of shape functions, typically = numNodes*/
126     dim_t numOrder; /* order of the shape functions */
127     dim_t numVertices; /* number of vertices of the element */
128 jgs 82 ElementTypeId LinearTypeId; /* id of the linear version of the element */
129 jgs 123 index_t linearNodes[MAX_numNodes]; /* gives the list of nodes defining the linear element, typically it is linearNodes[i]=i */
130 jgs 82 Finley_Shape_Function* getValues; /* function to evaluate the shape functions at a set of points */
131     Finley_Quad_getNodes* getQuadNodes; /* function to set the quadrature points */
132     Finley_Quad_getNumNodes* getNumQuadNodes; /* function selects the number of quadrature nodes for a given accuracy order */
133 jgs 123 dim_t numGeoNodes; /* nuber of nodes used to describe the geometry of the geometrically relevant part of the element */
134 jgs 82 /* typically this is numNodes but for volumenic elements used to descrbe faces this is the number of */
135     /* nodes on the particular face */
136 jgs 123 index_t geoNodes[MAX_numNodes]; /* list to gather the geometrically relevant nodes */
137     dim_t numNodesOnFace; /* if the element is allowed as a face element, numNodesOnFace defines the number of nodes */
138 jgs 82 /* defining the face */
139     /* the following lists are only used for face elements defined by numNodesOnFace>0 */
140 jgs 123 index_t faceNode[MAX_numNodes]; /* list of the nodes defining the face */
141     index_t shiftNodes[MAX_numNodes]; /* defines a permutation of the nodes which rotates the nodes on the face */
142     index_t reverseNodes[MAX_numNodes]; /* reverses the order of the nodes on a face. teh permutation has keep 0 fixed. */
143     /* shiftNodes={-1} or reverseNodes={-1} are ignored. */
144 jgs 82 } Finley_RefElementInfo;
145    
146     /**************************************************************/
147    
148     /* this struct holds the realization of a reference element */
149    
150     typedef struct Finley_RefElement {
151     Finley_RefElementInfo* Type; /* type of the reference element */
152     int numQuadNodes; /* number of quadrature points */
153     double *QuadNodes; /* coordinates of quadrature nodes */
154     double *QuadWeights; /* weights of the quadrature scheme */
155     double *S; /* shape functions at quadrature nodes */
156     double *dSdv; /* derivative of the shape functions at quadrature nodes */
157     } Finley_RefElement;
158    
159     /**************************************************************/
160    
161     /* interfaces: */
162    
163     Finley_RefElement* Finley_RefElement_alloc(ElementTypeId,int);
164     void Finley_RefElement_dealloc(Finley_RefElement*);
165     ElementTypeId Finley_RefElement_getTypeId(char*);
166    
167     #endif /* #ifndef INC_FINLEY_REFERENCEELEMENTS */
168    
169     /*
170     * $Log$
171 jgs 150 * Revision 1.3 2005/09/15 03:44:23 jgs
172     * Merge of development branch dev-02 back to main trunk on 2005-09-15
173     *
174     * Revision 1.2.2.1 2005/09/07 06:26:21 gross
175     * the solver from finley are put into the standalone package paso now
176     *
177 jgs 123 * Revision 1.2 2005/07/08 04:07:56 jgs
178     * Merge of development branch back to main trunk on 2005-07-08
179 jgs 82 *
180 jgs 123 * Revision 1.1.1.1.2.1 2005/06/29 02:34:55 gross
181     * some changes towards 64 integers in finley
182     *
183     * Revision 1.1.1.1 2004/10/26 06:53:57 jgs
184     * initial import of project esys2
185     *
186 jgs 82 * Revision 1.1.1.1 2004/06/24 04:00:40 johng
187     * Initial version of eys using boost-python.
188     *
189     *
190     */

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26