1 |
|
2 |
/******************************************************* |
3 |
* |
4 |
* Copyright (c) 2003-2009 by University of Queensland |
5 |
* Earth Systems Science Computational Center (ESSCC) |
6 |
* http://www.uq.edu.au/esscc |
7 |
* |
8 |
* Primary Business: Queensland, Australia |
9 |
* Licensed under the Open Software License version 3.0 |
10 |
* http://www.opensource.org/licenses/osl-3.0.php |
11 |
* |
12 |
*******************************************************/ |
13 |
|
14 |
|
15 |
/**************************************************************/ |
16 |
|
17 |
/* Finley: integration schemes for element shapes Tri, Quad, Hex, Tet, Line, Point */ |
18 |
|
19 |
/**************************************************************/ |
20 |
|
21 |
#ifndef INC_FINLEY_QUADRATURE |
22 |
#define INC_FINLEY_QUADRATURE |
23 |
|
24 |
/**************************************************************/ |
25 |
|
26 |
#include "Finley.h" |
27 |
|
28 |
/**************************************************************/ |
29 |
|
30 |
#define MAX_numQuadNodesLine 10 |
31 |
|
32 |
typedef enum { |
33 |
PointQuad, |
34 |
LineQuad, |
35 |
TriQuad, |
36 |
RecQuad, |
37 |
TetQuad, |
38 |
HexQuad, |
39 |
NoQuad /* marks end of list */ |
40 |
} Finley_QuadTypeId; |
41 |
|
42 |
typedef void (Finley_Quad_getNodes) (dim_t,double*,double*); |
43 |
typedef dim_t (Finley_Quad_getNumNodes) (dim_t); |
44 |
typedef dim_t(Finley_Quad_getMacro)(dim_t numSubElements, int numQuadNodes, double* quadNodes, double* quadWeights, |
45 |
dim_t numF, double* dFdv, |
46 |
dim_t new_len, double* new_quadNodes, double* new_quadWeights, |
47 |
double* new_dFfv ); |
48 |
|
49 |
typedef struct Finley_QuadInfo { |
50 |
Finley_QuadTypeId TypeId; /* the id */ |
51 |
char* Name; /* the name in text form e.g. Line,Rec,... */ |
52 |
dim_t numDim; /* spacial dimension */ |
53 |
dim_t numVertices; /* number of vertices of the element */ |
54 |
Finley_Quad_getNodes* getQuadNodes; /* function to set the quadrature points for a given order */ |
55 |
Finley_Quad_getNumNodes* getNumQuadNodes; /* function selects the number of quadrature nodes for a given accuracy order */ |
56 |
Finley_Quad_getMacro *getMacro; /* transfers a given quadrature scheme to a macro element structure */ |
57 |
} Finley_QuadInfo; |
58 |
|
59 |
/**************************************************************/ |
60 |
|
61 |
/* Interfaces: */ |
62 |
|
63 |
|
64 |
Finley_Quad_getMacro Finley_Quad_MacroPoint; |
65 |
Finley_Quad_getMacro Finley_Quad_MacroLine; |
66 |
Finley_Quad_getMacro Finley_Quad_MacroTri; |
67 |
Finley_Quad_getMacro Finley_Quad_MacroRec; |
68 |
Finley_Quad_getMacro Finley_Quad_MacroTet; |
69 |
Finley_Quad_getMacro Finley_Quad_MacroHex; |
70 |
|
71 |
|
72 |
Finley_Quad_getNodes Finley_Quad_getNodesTri; |
73 |
Finley_Quad_getNodes Finley_Quad_getNodesTet; |
74 |
Finley_Quad_getNodes Finley_Quad_getNodesRec; |
75 |
Finley_Quad_getNodes Finley_Quad_getNodesHex; |
76 |
Finley_Quad_getNodes Finley_Quad_getNodesLine; |
77 |
Finley_Quad_getNodes Finley_Quad_getNodesPoint; |
78 |
Finley_Quad_getNodes Finley_Quad_getNodesTriOnFace; |
79 |
Finley_Quad_getNodes Finley_Quad_getNodesRecOnFace; |
80 |
Finley_Quad_getNodes Finley_Quad_getNodesLineOnFace; |
81 |
Finley_Quad_getNodes Finley_Quad_getNodesPointOnFace; |
82 |
Finley_Quad_getNodes Finley_Quad_getNodesTriMacro; |
83 |
Finley_Quad_getNodes Finley_Quad_getNodesTetMacro; |
84 |
Finley_Quad_getNodes Finley_Quad_getNodesRecMacro; |
85 |
Finley_Quad_getNodes Finley_Quad_getNodesHexMacro; |
86 |
Finley_Quad_getNodes Finley_Quad_getNodesLineMacro; |
87 |
|
88 |
|
89 |
|
90 |
Finley_Quad_getNumNodes Finley_Quad_getNumNodesPoint; |
91 |
Finley_Quad_getNumNodes Finley_Quad_getNumNodesLine; |
92 |
Finley_Quad_getNumNodes Finley_Quad_getNumNodesTri; |
93 |
Finley_Quad_getNumNodes Finley_Quad_getNumNodesRec; |
94 |
Finley_Quad_getNumNodes Finley_Quad_getNumNodesTet; |
95 |
Finley_Quad_getNumNodes Finley_Quad_getNumNodesHex; |
96 |
|
97 |
void Finley_Quad_makeNodesOnFace(dim_t, dim_t,double*,double*, Finley_Quad_getNodes); |
98 |
Finley_QuadInfo* Finley_QuadInfo_getInfo(Finley_QuadTypeId id); |
99 |
|
100 |
#endif /* #ifndef INC_FINLEY_QUADRATURE */ |
101 |
|