v0.14.0
Loading...
Searching...
No Matches
EdgeQuadHexPolynomials.hpp
Go to the documentation of this file.
1/** \file EdgeQuadHexPolynomials.hpp
2
3 \brief Implementation of base Demkowicz functions on quad and hex
4
5 Based on Hierarchic Finite Element Bases on Unstructured QUADS (2D)
6 and HEXES (3D) Meshes
7
8*/
9
10#ifndef __EDGE_QUAD_HEX_HPP__
11#define __EDGE_QUAD_HEX_HPP__
12
13namespace MoFEM {
15
16MoFEMErrorCode Legendre_polynomials01(int p, double s, double *L);
17
18MoFEMErrorCode Integrated_Legendre01(int p, double s, double *L, double *diffL);
19
20MoFEMErrorCode Face_orientMat(int *face_nodes, double orientMat[2][2]);
21
22/*
23Segment (1d) basis functions
24
25 0-----------1
26*/
28 double *diffN, double *bubbleN,
29 double *diff_bubbleN,
30 int nb_integration_pts);
31
32MoFEMErrorCode L2_ShapeFunctions_ONSEGMENT(int p, double *N, double *diffN,
33 double *funN, double *funDiffN,
34 int nb_integration_pts);
35
36/*
37 Quads
38 3-------2------2
39 | | y
40 | | ^
41 3 1 |
42 | | |
43 | | 0----- > x
44 0-------0------1
45*/
46
47/**
48* \brief H1 Edge base functions on Quad
49
50Function generates hierarchical base of H1 comforting functions on a 2D
51Quad.
52
53* @param sense array of orientation of edges (take 1 or -1)
54* @param p array of orders (in each direction) of base
55functions
56* @param N array vertex shape functions evaluated at each
57integration point
58* @param diffN derivatives of vertex shape functions
59* @return edgeN base functions on edges at qd pts
60* @return diff_edgeN derivatives of edge shape functions at qd pts
61* @param nb_integration_pts number of integration points
62* @param base_polynomials polynomial base function (f.e. Legendre of
63Integrated Legendre)
64* @return error code
65*/
66MoFEMErrorCode H1_EdgeShapeFunctions_ONQUAD(int *sense, int *p, double *N,
67 double *diffN, double *edgeN[4],
68 double *edgeDiffN[4],
69 int nb_integration_pts);
70
71/**
72* \brief H1 Face bubble functions on Quad.
73
74Function generates hierarchical base of H1 comforting functions on a 2D quad.
75
76* @param face_nodes face nodes order
77* @param p array of orders (in each direction) of base functions
78* @param N array vertex shape functions evaluated at each
79integration point
80* @param diffN derivatives of vertex shape functions
81* @return edgeN base functions on edges at qd pts
82* @return diff_edgeN derivatives of edge shape functions at qd pts
83* @param nb_integration_pts number of integration points
84* @param base_polynomials polynomial base function (f.e. Legendre of Integrated
85Legendre)
86* @return error code
87*/
88MoFEMErrorCode H1_FaceShapeFunctions_ONQUAD(int *face_nodes, int *p, double *N,
89 double *diffN, double *faceN,
90 double *diff_faceN,
91 int nb_integration_pts);
92
93/**
94* \brief L2 Face base functions on Quad
95
96Function generates hierarchical base of H1 comforting functions on a 2D quad.
97
98* @param p array of orders (in each direction) of base functions
99* @param N array vertex shape functions evaluated at each
100integration point
101* @param diffN derivatives of vertex shape functions
102* @return edgeN base functions on edges at qd pts
103* @return diff_edgeN derivatives of edge shape functions at qd pts
104* @param nb_integration_pts number of integration points
105* @param base_polynomials polynomial base function (f.e. Legendre of Integrated
106Legendre)
107* @return error code
108*/
109MoFEMErrorCode L2_FaceShapeFunctions_ONQUAD(int *p, double *N, double *diffN,
110 double *face_buble,
111 double *diff_face_bubble,
112 int nb_integration_pts);
113
114MoFEMErrorCode Hcurl_EdgeShapeFunctions_ONQUAD(int *sense, int *p, double *N,
115 double *diffN, double *edgeN[4],
116 double *curl_edgeN[4],
117 int nb_integration_pts);
118
120 double *N, double *diffN,
121 double *faceN[],
122 double *diff_faceN[],
123 int nb_integration_pts);
124
126 double *N, double *diffN,
127 double *faceN, double *diff_faceN,
128 int nb_integration_pts);
129
130/* Reference Hex and its canonical vertex and edge numbering
131 7---------10----------6
132 /| /|
133 / | / |
134 11 | 9 | x3
135 / 7 / | |
136 / | / 6 | x2
137 4----------8----------5 | | /
138 | | | | | /
139 | 3----------2----------2 | /
140 | / | / o -------- x1
141 4 / 5 /
142 | 3 | 1
143 | / | /
144 |/ |/
145 0---------0-----------1
146
147 Hex Face Canonical numbering
148
149 1. 1 2 3 4
150 2. 1 2 6 5
151 3. 2 3 7 6
152 4. 4 3 7 8
153 5. 1 4 8 5
154 6. 5 6 7 8
155*/
156
157MoFEMErrorCode H1_EdgeShapeFunctions_ONHEX(int *sense, int *p, double *N,
158 double *N_diff, double *edgeN[12],
159 double *diff_edgeN[12],
160 int nb_integration_pts);
161
163H1_FaceShapeFunctions_ONHEX(int *face_nodes, int *face_nodes_order, int *p,
164 double *N, double *N_diff, double *faceN[6],
165 double *diff_faceN[6], int nb_integration_pts);
166
168 double *N_diff, double *faceN,
169 double *diff_faceN,
170 int nb_integration_pts);
171
173 double *N_diff, double *volN,
174 double *diff_volN,
175 int nb_integration_pts);
176
177MoFEMErrorCode Hcurl_EdgeShapeFunctions_ONHEX(int *sense, int *p, double *N,
178 double *N_diff, double *edgeN[12],
179 double *diff_edgeN[12],
180 int nb_integration_pts);
181
183 int *face_nodes, int *face_nodes_order, int *p, double *N, double *N_diff,
184 double *faceN[6][2], double *diff_faceN[6][2], int nb_integration_pts);
185
187 double *N_diff,
188 double *volN[3],
189 double *diff_volN[3],
190 int nb_integration_pts);
191
193Hdiv_FaceShapeFunctions_ONHEX(int *face_nodes, int *face_nodes_order, int *p,
194 double *N, double *diffN, double *faceN[6],
195 double *div_faceN[6], int nb_integration_pts);
196
198 double *N_diff,
199 double *bubleN[3],
200 double *div_bubleN[3],
201 int nb_integration_pts);
202
203} // namespace DemkowiczHexAndQuad
204
205} // namespace MoFEM
206
207#endif // __EDGE_QUAD_HEX_HPP__
static Index< 'p', 3 > p
MoFEMErrorCode Hcurl_EdgeShapeFunctions_ONHEX(int *sense, int *p, double *N, double *N_diff, double *edgeN[12], double *diff_edgeN[12], int nb_integration_pts)
MoFEMErrorCode L2_FaceShapeFunctions_ONQUAD(int *p, double *N, double *diffN, double *face_buble, double *diff_face_bubble, int nb_integration_pts)
L2 Face base functions on Quad.
MoFEMErrorCode H1_EdgeShapeFunctions_ONHEX(int *sense, int *p, double *N, double *N_diff, double *edgeN[12], double *diff_edgeN[12], int nb_integration_pts)
MoFEMErrorCode H1_FaceShapeFunctions_ONQUAD(int *face_nodes, int *p, double *N, double *diffN, double *faceN, double *diff_faceN, int nb_integration_pts)
H1 Face bubble functions on Quad.
MoFEMErrorCode Integrated_Legendre01(int p, double s, double *L, double *diffL)
MoFEMErrorCode L2_InteriorShapeFunctions_ONHEX(const int *p, double *N, double *N_diff, double *volN, double *diff_volN, int nb_integration_pts)
MoFEMErrorCode Hcurl_EdgeShapeFunctions_ONQUAD(int *sense, int *p, double *N, double *diffN, double *edgeN[4], double *curl_edgeN[4], int nb_integration_pts)
MoFEMErrorCode H1_FaceShapeFunctions_ONHEX(int *face_nodes, int *face_nodes_order, int *p, double *N, double *N_diff, double *faceN[6], double *diff_faceN[6], int nb_integration_pts)
MoFEMErrorCode Hcurl_FaceShapeFunctions_ONQUAD(int *face_nodes, int *p, double *N, double *diffN, double *faceN[], double *diff_faceN[], int nb_integration_pts)
MoFEMErrorCode Hdiv_FaceShapeFunctions_ONHEX(int *face_nodes, int *face_nodes_order, int *p, double *N, double *diffN, double *faceN[6], double *div_faceN[6], int nb_integration_pts)
MoFEMErrorCode H1_EdgeShapeFunctions_ONQUAD(int *sense, int *p, double *N, double *diffN, double *edgeN[4], double *edgeDiffN[4], int nb_integration_pts)
H1 Edge base functions on Quad.
MoFEMErrorCode Hcurl_FaceShapeFunctions_ONHEX(int *face_nodes, int *face_nodes_order, int *p, double *N, double *N_diff, double *faceN[6][2], double *diff_faceN[6][2], int nb_integration_pts)
MoFEMErrorCode L2_ShapeFunctions_ONSEGMENT(int p, double *N, double *diffN, double *funN, double *funDiffN, int nb_integration_pts)
MoFEMErrorCode H1_BubbleShapeFunctions_ONSEGMENT(int p, double *N, double *diffN, double *bubbleN, double *diff_bubbleN, int nb_integration_pts)
MoFEMErrorCode H1_InteriorShapeFunctions_ONHEX(const int *p, double *N, double *N_diff, double *faceN, double *diff_faceN, int nb_integration_pts)
MoFEMErrorCode Hdiv_InteriorShapeFunctions_ONHEX(int *p, double *N, double *N_diff, double *bubleN[3], double *div_bubleN[3], int nb_integration_pts)
MoFEMErrorCode Hdiv_FaceShapeFunctions_ONQUAD(int *face_nodes, int *p, double *N, double *diffN, double *faceN, double *diff_faceN, int nb_integration_pts)
MoFEMErrorCode Legendre_polynomials01(int p, double s, double *L)
MoFEMErrorCode Face_orientMat(int *face_nodes, double orientMat[2][2])
MoFEMErrorCode Hcurl_InteriorShapeFunctions_ONHEX(int *p, double *N, double *N_diff, double *volN[3], double *diff_volN[3], int nb_integration_pts)
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Definition: Exceptions.hpp:56
implementation of Data Operators for Forces and Sources
Definition: Common.hpp:10
const int N
Definition: speed_test.cpp:3