escript  Revision_
ShapeFunctions.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2016 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 by Centre for Geoscience Computing (GeoComp)
14 *
15 *****************************************************************************/
16 
17 #ifndef __FINLEY_SHAPEFUNCTIONS_H__
18 #define __FINLEY_SHAPEFUNCTIONS_H__
19 
20 #include "Finley.h"
21 
22 #include <boost/shared_ptr.hpp>
23 
24 #define S_INDEX(_J_,_I_,_NUMNODES_) INDEX2(_J_,_I_,_NUMNODES_)
25 #define DSDV_INDEX(_J_,_K_,_I_,_NUMNODES_,_DIM_) INDEX3(_J_,_K_,_I_,_NUMNODES_,_DIM_)
26 
27 namespace finley {
28 
29 typedef enum {
50  NoShape // marks end of list
52 
53 
54 typedef void (ShapeFunction_Evaluation) (int, std::vector<double>&, std::vector<double>&, std::vector<double>&);
55 
59  ShapeFunctionTypeId TypeId;
61  const char* Name;
63  int numDim;
65  int numShapes;
67  int numOrder;
72 };
73 
74 
76 struct ShapeFunction {
77  ShapeFunction(ShapeFunctionTypeId id, int numQuadDim, int numQuadNodes,
78  const std::vector<double>& QuadNodes,
79  const std::vector<double>& QuadWeights);
80 
81  ShapeFunctionTypeId getTypeId(const char*);
82 
83  static const ShapeFunctionInfo* getInfo(ShapeFunctionTypeId id);
84 
90  std::vector<double> QuadNodes;
92  std::vector<double> QuadWeights;
94  std::vector<double> S;
96  std::vector<double> dSdv;
97 };
98 
99 typedef boost::shared_ptr<const ShapeFunction> const_ShapeFunction_ptr;
100 
121 
122 } // namespace finley
123 
124 #endif // __FINLEY_SHAPEFUNCTIONS_H__
125 
ShapeFunction_Evaluation Shape_Hex27
Definition: ShapeFunctions.h:119
Definition: ShapeFunctions.h:34
const char * Name
the name in text form e.g. "Line2", "Rec12", ...
Definition: ShapeFunctions.h:61
ShapeFunction_Evaluation Shape_Tri3
Definition: ShapeFunctions.h:105
std::vector< double > QuadNodes
coordinates of quadrature nodes
Definition: ShapeFunctions.h:90
std::vector< double > dSdv
derivative of the shape functions at quadrature nodes
Definition: ShapeFunctions.h:96
ShapeFunctionTypeId TypeId
shape function type
Definition: ShapeFunctions.h:59
ShapeFunction_Evaluation Shape_Tet16
Definition: ShapeFunctions.h:116
ShapeFunction_Evaluation Shape_Tri10
Definition: ShapeFunctions.h:108
ShapeFunction_Evaluation Shape_Hex32
Definition: ShapeFunctions.h:120
int numVertices
number of vertices of the element
Definition: ShapeFunctions.h:69
Definition: ShapeFunctions.h:33
Definition: ShapeFunctions.h:38
Definition: ShapeFunctions.h:44
int numDim
number of spatial dimensions
Definition: ShapeFunctions.h:63
Definition: ShapeFunctions.h:31
ShapeFunction_Evaluation Shape_Line4
Definition: ShapeFunctions.h:104
Definition: ShapeFunctions.h:49
ShapeFunction_Evaluation Shape_Line2
Definition: ShapeFunctions.h:102
int numQuadNodes
number of quadrature points
Definition: ShapeFunctions.h:88
ShapeFunction_Evaluation Shape_Tri9
Definition: ShapeFunctions.h:107
Definition: ShapeFunctions.h:36
A suite of factory methods for creating various finley domains.
Definition: finley/src/Assemble.h:31
Definition: ShapeFunctions.h:39
Definition: ShapeFunctions.h:46
Definition: ShapeFunctions.h:37
Definition: ShapeFunctions.h:48
int numShapes
number of shape functions
Definition: ShapeFunctions.h:65
ShapeFunction_Evaluation Shape_Hex8
Definition: ShapeFunctions.h:117
Definition: ShapeFunctions.h:40
ShapeFunction_Evaluation Shape_Tri6
Definition: ShapeFunctions.h:106
Definition: ShapeFunctions.h:47
const ShapeFunctionInfo * Type
shape function information
Definition: ShapeFunctions.h:86
void() ShapeFunction_Evaluation(int, std::vector< double > &, std::vector< double > &, std::vector< double > &)
Definition: ShapeFunctions.h:54
Definition: ShapeFunctions.h:30
ShapeFunction_Evaluation Shape_Line3
Definition: ShapeFunctions.h:103
ShapeFunctionTypeId
Definition: ShapeFunctions.h:29
ShapeFunction_Evaluation Shape_Tet4
Definition: ShapeFunctions.h:114
ShapeFunction_Evaluation Shape_Point1
Definition: ShapeFunctions.h:101
Definition: ShapeFunctions.h:50
ShapeFunction_Evaluation * getValues
function to evaluate the shape functions at a set of points
Definition: ShapeFunctions.h:71
ShapeFunction_Evaluation Shape_Rec4
Definition: ShapeFunctions.h:109
ShapeFunction_Evaluation Shape_Rec12
Definition: ShapeFunctions.h:112
this struct holds the evaluation of a shape function on a quadrature scheme
Definition: ShapeFunctions.h:76
boost::shared_ptr< const ShapeFunction > const_ShapeFunction_ptr
Definition: ShapeFunctions.h:99
std::vector< double > QuadWeights
weights of the quadrature scheme
Definition: ShapeFunctions.h:92
ShapeFunction_Evaluation Shape_Rec8
Definition: ShapeFunctions.h:110
ShapeFunction_Evaluation Shape_Tet10
Definition: ShapeFunctions.h:115
std::vector< double > S
shape functions at quadrature nodes
Definition: ShapeFunctions.h:94
Definition: ShapeFunctions.h:41
Definition: ShapeFunctions.h:42
ShapeFunction_Evaluation Shape_Hex20
Definition: ShapeFunctions.h:118
Definition: ShapeFunctions.h:43
Definition: ShapeFunctions.h:45
Definition: ShapeFunctions.h:32
ShapeFunction_Evaluation Shape_Rec16
Definition: ShapeFunctions.h:113
this struct holds the definition of the shape functions on an element
Definition: ShapeFunctions.h:57
int numOrder
order of the shape functions
Definition: ShapeFunctions.h:67
ShapeFunction_Evaluation Shape_Rec9
Definition: ShapeFunctions.h:111
Definition: ShapeFunctions.h:35