escript Revision_
ReferenceElements.h
Go to the documentation of this file.
1
2/*****************************************************************************
3*
4* Copyright (c) 2003-2020 by The University of Queensland
5* http://www.uq.edu.au
6*
7* Primary Business: Queensland, Australia
8* Licensed under the Apache License, version 2.0
9* http://www.apache.org/licenses/LICENSE-2.0
10*
11* Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12* Development 2012-2013 by School of Earth Sciences
13* Development from 2014-2017 by Centre for Geoscience Computing (GeoComp)
14* Development from 2019 by School of Earth and Environmental Sciences
15**
16*****************************************************************************/
17
18
19/****************************************************************************
20
21 Finley: Reference elements
22
23*****************************************************************************/
24
25#ifndef __FINLEY_REFERENCEELEMENTS_H__
26#define __FINLEY_REFERENCEELEMENTS_H__
27
28#include "system_dep.h"
29
30#include "Finley.h"
31#include "ShapeFunctions.h"
32#include "Quadrature.h"
33
34// The ids of the allowed reference elements:
35#define MAX_numNodes 64
36#define MAX_numSubElements 8
37#define MAX_numSides 2
38
39namespace finley {
40
120
121
127 const char* Name;
137 int offsets[MAX_numSides+1];
138
142 int linearNodes[MAX_numNodes*MAX_numSides];
149
154
157 int relevantGeoNodes[MAX_numNodes];
158
162
163 // the following lists are only used for face elements defined by
164 // numNodesOnFace>0:
165
167 int faceNodes[MAX_numNodes];
168
169 // shiftNodes={-1} or reverseNodes={-1} are ignored.
171 int shiftNodes[MAX_numNodes];
174 int reverseNodes[MAX_numNodes];
175};
176
177
214
215typedef boost::shared_ptr<ReferenceElement> ReferenceElement_ptr;
216typedef boost::shared_ptr<const ReferenceElement> const_ReferenceElement_ptr;
217
218} // namespace finley
219
220#endif // __FINLEY_REFERENCEELEMENTS_H__
221
#define MAX_numSubElements
Definition ReferenceElements.h:36
#define MAX_numSides
Definition ReferenceElements.h:37
#define MAX_numNodes
Definition ReferenceElements.h:35
#define FINLEY_DLL_API
Definition finley/src/system_dep.h:29
A suite of factory methods for creating various finley domains.
Definition finley/src/Assemble.h:32
ShapeFunctionTypeId
Definition ShapeFunctions.h:32
boost::shared_ptr< const ReferenceElement > const_ReferenceElement_ptr
Definition ReferenceElements.h:216
boost::shared_ptr< const ShapeFunction > const_ShapeFunction_ptr
Definition ShapeFunctions.h:102
boost::shared_ptr< ReferenceElement > ReferenceElement_ptr
Definition ReferenceElements.h:215
ElementTypeId
Definition ReferenceElements.h:41
@ Tet10Face
Definition ReferenceElements.h:75
@ Hex32Face
Definition ReferenceElements.h:80
@ Tri10Face
Definition ReferenceElements.h:68
@ Tri10
Definition ReferenceElements.h:49
@ Hex32
Definition ReferenceElements.h:61
@ Tri6_Contact
Definition ReferenceElements.h:86
@ Tri9Face
Definition ReferenceElements.h:67
@ Line4
Definition ReferenceElements.h:45
@ Rec8_Contact
Definition ReferenceElements.h:90
@ Tet10Macro
Definition ReferenceElements.h:116
@ Rec4_Contact
Definition ReferenceElements.h:89
@ Tet16Face
Definition ReferenceElements.h:76
@ Tri3_Contact
Definition ReferenceElements.h:85
@ Line2
Definition ReferenceElements.h:43
@ Rec9Face_Contact
Definition ReferenceElements.h:103
@ Rec4Face_Contact
Definition ReferenceElements.h:101
@ Rec12Face_Contact
Definition ReferenceElements.h:104
@ Hex27Macro
Definition ReferenceElements.h:117
@ Tri6Face_Contact
Definition ReferenceElements.h:98
@ Rec9
Definition ReferenceElements.h:52
@ Hex20Face_Contact
Definition ReferenceElements.h:110
@ Hex8
Definition ReferenceElements.h:58
@ Hex8Face_Contact
Definition ReferenceElements.h:109
@ Hex27
Definition ReferenceElements.h:60
@ Tri3
Definition ReferenceElements.h:46
@ Line4Face_Contact
Definition ReferenceElements.h:96
@ Rec9Face
Definition ReferenceElements.h:71
@ Tri9
Definition ReferenceElements.h:48
@ Rec8Face
Definition ReferenceElements.h:70
@ Tet10Face_Contact
Definition ReferenceElements.h:107
@ Line2Face_Contact
Definition ReferenceElements.h:94
@ Tri6
Definition ReferenceElements.h:47
@ Tri10_Contact
Definition ReferenceElements.h:88
@ Rec16Face_Contact
Definition ReferenceElements.h:105
@ Hex20
Definition ReferenceElements.h:59
@ Tet4
Definition ReferenceElements.h:55
@ Tri10Face_Contact
Definition ReferenceElements.h:100
@ Line3Face
Definition ReferenceElements.h:63
@ NoRef
Definition ReferenceElements.h:118
@ Hex27Face
Definition ReferenceElements.h:79
@ Hex32Face_Contact
Definition ReferenceElements.h:112
@ Tri6Face
Definition ReferenceElements.h:66
@ Hex20Face
Definition ReferenceElements.h:78
@ Tet10
Definition ReferenceElements.h:56
@ Line3_Contact
Definition ReferenceElements.h:83
@ Line2Face
Definition ReferenceElements.h:62
@ Rec9_Contact
Definition ReferenceElements.h:91
@ Rec9Macro
Definition ReferenceElements.h:115
@ Line4_Contact
Definition ReferenceElements.h:84
@ Line3
Definition ReferenceElements.h:44
@ Tri9_Contact
Definition ReferenceElements.h:87
@ Rec16Face
Definition ReferenceElements.h:73
@ Rec12Face
Definition ReferenceElements.h:72
@ Rec4
Definition ReferenceElements.h:50
@ Tet4Face
Definition ReferenceElements.h:74
@ Line3Face_Contact
Definition ReferenceElements.h:95
@ Tri3Face
Definition ReferenceElements.h:65
@ Line3Macro
Definition ReferenceElements.h:113
@ Hex8Face
Definition ReferenceElements.h:77
@ Rec8Face_Contact
Definition ReferenceElements.h:102
@ Tri6Macro
Definition ReferenceElements.h:114
@ Line2_Contact
Definition ReferenceElements.h:82
@ Rec12
Definition ReferenceElements.h:53
@ Rec8
Definition ReferenceElements.h:51
@ Tet16Face_Contact
Definition ReferenceElements.h:108
@ Rec16
Definition ReferenceElements.h:54
@ Tet16
Definition ReferenceElements.h:57
@ Hex27Face_Contact
Definition ReferenceElements.h:111
@ Rec16_Contact
Definition ReferenceElements.h:93
@ Rec4Face
Definition ReferenceElements.h:69
@ Point1
Definition ReferenceElements.h:42
@ Line4Face
Definition ReferenceElements.h:64
@ Tet4Face_Contact
Definition ReferenceElements.h:106
@ Rec12_Contact
Definition ReferenceElements.h:92
@ Tri3Face_Contact
Definition ReferenceElements.h:97
@ Point1_Contact
Definition ReferenceElements.h:81
@ Tri9Face_Contact
Definition ReferenceElements.h:99
QuadTypeId
Definition Quadrature.h:35
this struct holds the definition of the reference element
Definition ReferenceElements.h:123
int numNodes
number of nodes defining the element
Definition ReferenceElements.h:129
QuadTypeId Quadrature
quadrature scheme
Definition ReferenceElements.h:144
ElementTypeId LinearTypeId
type id of the linear version of the element
Definition ReferenceElements.h:140
ShapeFunctionTypeId Parametrization
shape function for parametrization of the element
Definition ReferenceElements.h:146
int numSubElements
number of subelements (>1 if macro elements are used)
Definition ReferenceElements.h:131
int numRelevantGeoNodes
deprecated
Definition ReferenceElements.h:156
const char * Name
the name in text form e.g. "Line1", "Rec12", ...
Definition ReferenceElements.h:127
int numSides
Definition ReferenceElements.h:134
ShapeFunctionTypeId BasisFunctions
shape function for the basis functions
Definition ReferenceElements.h:148
ElementTypeId TypeId
the type
Definition ReferenceElements.h:125
int numNodesOnFace
Definition ReferenceElements.h:161
this struct holds the realization of a reference element
Definition ReferenceElements.h:179
const_ShapeFunction_ptr Parametrization
Definition ReferenceElements.h:204
int numLocalDim
Definition ReferenceElements.h:202
bool DBasisFunctionDvShared
Definition ReferenceElements.h:212
const_ShapeFunction_ptr LinearBasisFunctions
Definition ReferenceElements.h:206
double * DBasisFunctionDv
Definition ReferenceElements.h:209
int getNumNodes() const
Definition ReferenceElements.h:193
int numLinearNodes
Definition ReferenceElements.h:203
const ReferenceElementInfo * Type
type of the reference element
Definition ReferenceElements.h:196
const_ShapeFunction_ptr BasisFunctions
Definition ReferenceElements.h:205
int integrationOrder
used integration order
Definition ReferenceElements.h:200
const ReferenceElementInfo * LinearType
type of the linear reference element
Definition ReferenceElements.h:198
int numNodes
Definition ReferenceElements.h:201