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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 155 - (hide annotations)
Wed Nov 9 02:02:19 2005 UTC (13 years, 11 months ago) by jgs
Original Path: trunk/finley/src/finleyC/ReferenceElements.h
File MIME type: text/plain
File size: 6751 byte(s)
move all directories from trunk/esys2 into trunk and remove esys2

1 jgs 150 /*
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 jgs 82
15     /**************************************************************/
16    
17     /* Finley: Reference elements */
18    
19     /**************************************************************/
20    
21     /* Author: gross@access.edu.au */
22     /* Version: $Id$ */
23    
24     /**************************************************************/
25    
26 jgs 150 #ifndef INC_FINLEY_REFERENCEELEMENTS
27     #define INC_FINLEY_REFERENCEELEMENTS
28    
29    
30     /**************************************************************/
31    
32     #include "Finley.h"
33 jgs 82 #include "ShapeFunctions.h"
34     #include "Quadrature.h"
35    
36     /**************************************************************/
37    
38     /* The ids of the allowed reference ellements: */
39    
40     #define MAX_numNodes 64
41    
42     typedef enum {
43     Point1,
44     Line2,
45     Line3,
46     Line4,
47     Tri3,
48     Tri6,
49     Tri9,
50     Tri10,
51     Rec4,
52     Rec8,
53     Rec9,
54     Rec12,
55     Rec16,
56     Tet4,
57     Tet10,
58     Tet16,
59     Hex8,
60     Hex20,
61     Hex32,
62     Line2Face,
63     Line3Face,
64     Line4Face,
65     Tri3Face,
66     Tri6Face,
67     Tri9Face,
68     Tri10Face,
69     Rec4Face,
70     Rec8Face,
71     Rec9Face,
72     Rec12Face,
73     Rec16Face,
74     Tet4Face,
75     Tet10Face,
76     Tet16Face,
77     Hex8Face,
78     Hex20Face,
79     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     Hex20Face_Contact,
110     Hex32Face_Contact,
111     NoType /* marks end of list */
112     } ElementTypeId;
113    
114     /**************************************************************/
115    
116     /* this struct holds the definition of the reference element: */
117    
118     typedef struct Finley_RefElementInfo {
119     ElementTypeId TypeId; /* the id */
120     char* Name; /* the name in text form e.g. Line1,Rec12,... */
121 jgs 123 dim_t numDim; /* dimension of the element */
122     dim_t numNodes; /* number of nodes defining the element*/
123     dim_t numShapes; /* number of shape functions, typically = numNodes*/
124     dim_t numOrder; /* order of the shape functions */
125     dim_t numVertices; /* number of vertices of the element */
126 jgs 82 ElementTypeId LinearTypeId; /* id of the linear version of the element */
127 jgs 123 index_t linearNodes[MAX_numNodes]; /* gives the list of nodes defining the linear element, typically it is linearNodes[i]=i */
128 jgs 82 Finley_Shape_Function* getValues; /* function to evaluate the shape functions at a set of points */
129     Finley_Quad_getNodes* getQuadNodes; /* function to set the quadrature points */
130     Finley_Quad_getNumNodes* getNumQuadNodes; /* function selects the number of quadrature nodes for a given accuracy order */
131 jgs 123 dim_t numGeoNodes; /* nuber of nodes used to describe the geometry of the geometrically relevant part of the element */
132 jgs 82 /* typically this is numNodes but for volumenic elements used to descrbe faces this is the number of */
133     /* nodes on the particular face */
134 jgs 123 index_t geoNodes[MAX_numNodes]; /* list to gather the geometrically relevant nodes */
135     dim_t numNodesOnFace; /* if the element is allowed as a face element, numNodesOnFace defines the number of nodes */
136 jgs 82 /* defining the face */
137     /* the following lists are only used for face elements defined by numNodesOnFace>0 */
138 jgs 123 index_t faceNode[MAX_numNodes]; /* list of the nodes defining the face */
139     index_t shiftNodes[MAX_numNodes]; /* defines a permutation of the nodes which rotates the nodes on the face */
140     index_t reverseNodes[MAX_numNodes]; /* reverses the order of the nodes on a face. teh permutation has keep 0 fixed. */
141     /* shiftNodes={-1} or reverseNodes={-1} are ignored. */
142 jgs 82 } Finley_RefElementInfo;
143    
144     /**************************************************************/
145    
146     /* this struct holds the realization of a reference element */
147    
148     typedef struct Finley_RefElement {
149     Finley_RefElementInfo* Type; /* type of the reference element */
150     int numQuadNodes; /* number of quadrature points */
151     double *QuadNodes; /* coordinates of quadrature nodes */
152     double *QuadWeights; /* weights of the quadrature scheme */
153     double *S; /* shape functions at quadrature nodes */
154     double *dSdv; /* derivative of the shape functions at quadrature nodes */
155     } Finley_RefElement;
156    
157     /**************************************************************/
158    
159     /* interfaces: */
160    
161     Finley_RefElement* Finley_RefElement_alloc(ElementTypeId,int);
162     void Finley_RefElement_dealloc(Finley_RefElement*);
163     ElementTypeId Finley_RefElement_getTypeId(char*);
164    
165     #endif /* #ifndef INC_FINLEY_REFERENCEELEMENTS */
166    
167     /*
168     * $Log$
169 jgs 150 * Revision 1.3 2005/09/15 03:44:23 jgs
170     * Merge of development branch dev-02 back to main trunk on 2005-09-15
171     *
172     * Revision 1.2.2.1 2005/09/07 06:26:21 gross
173     * the solver from finley are put into the standalone package paso now
174     *
175 jgs 123 * Revision 1.2 2005/07/08 04:07:56 jgs
176     * Merge of development branch back to main trunk on 2005-07-08
177 jgs 82 *
178 jgs 123 * Revision 1.1.1.1.2.1 2005/06/29 02:34:55 gross
179     * some changes towards 64 integers in finley
180     *
181     * Revision 1.1.1.1 2004/10/26 06:53:57 jgs
182     * initial import of project esys2
183     *
184 jgs 82 * Revision 1.1.1.1 2004/06/24 04:00:40 johng
185     * Initial version of eys using boost-python.
186     *
187     *
188     */

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26