v0.15.0
Loading...
Searching...
No Matches
Macros | Functions | Variables
fem_tools.h File Reference

Loose implementation of some useful functions. More...

#include <petscsys.h>
#include <cblas.h>
#include <lapack_wrap.h>

Go to the source code of this file.

Macros

#define LAMBDA(E, NU)   (E * NU / ((1. + NU) * (1. - 2. * NU)))
 
#define MU(E, NU)   (0.5 * E / (1. + NU))
 
#define DELTA(NU_P, NU_PZ, E_P, E_Z)
 
#define N_MBTET0(x, y, z)   (1. - x - y - z)
 tetrahedral shape function
 
#define N_MBTET1(x, y, z)   (x)
 tetrahedral shape function
 
#define N_MBTET2(x, y, z)   (y)
 tetrahedral shape function
 
#define N_MBTET3(x, y, z)   (z)
 tetrahedral shape function
 
#define diffN_MBTET0x   (-1.)
 derivative of tetrahedral shape function
 
#define diffN_MBTET0y   (-1.)
 derivative of tetrahedral shape function
 
#define diffN_MBTET0z   (-1.)
 derivative of tetrahedral shape function
 
#define diffN_MBTET1x   (1.)
 derivative of tetrahedral shape function
 
#define diffN_MBTET1y   (0.)
 derivative of tetrahedral shape function
 
#define diffN_MBTET1z   (0.)
 derivative of tetrahedral shape function
 
#define diffN_MBTET2x   (0.)
 derivative of tetrahedral shape function
 
#define diffN_MBTET2y   (1.)
 derivative of tetrahedral shape function
 
#define diffN_MBTET2z   (0.)
 derivative of tetrahedral shape function
 
#define diffN_MBTET3x   (0.)
 derivative of tetrahedral shape function
 
#define diffN_MBTET3y   (0.)
 derivative of tetrahedral shape function
 
#define diffN_MBTET3z   (1.)
 derivative of tetrahedral shape function
 
#define N_MBTRI0(x, y)   (1. - x - y)
 triangle shape function
 
#define N_MBTRI1(x, y)   (x)
 triangle shape function
 
#define N_MBTRI2(x, y)   (y)
 triangle shape function
 
#define diffN_MBTRI0x   (-1.)
 derivative of triangle shape function
 
#define diffN_MBTRI0y   (-1.)
 derivative of triangle shape function
 
#define diffN_MBTRI1x   (1.)
 derivative of triangle shape function
 
#define diffN_MBTRI1y   (0.)
 derivative of triangle shape function
 
#define diffN_MBTRI2x   (0.)
 derivative of triangle shape function
 
#define diffN_MBTRI2y   (1.)
 derivative of triangle shape function
 
#define N_MBQUAD0(x, y)   ((1. - x) * (1. - y))
 quad shape function
 
#define N_MBQUAD1(x, y)   ((x) * (1. - y))
 quad shape function
 
#define N_MBQUAD2(x, y)   ((x) * (y))
 quad shape function
 
#define N_MBQUAD3(x, y)   ((1. - x) * (y))
 quad shape function
 
#define diffN_MBQUAD0x(y)   (-(1. - y))
 
#define diffN_MBQUAD0y(x)   (-(1. - x))
 
#define diffN_MBQUAD1x(y)   ((1. - y))
 
#define diffN_MBQUAD1y(x)   (-x)
 
#define diffN_MBQUAD2x(y)   (y)
 
#define diffN_MBQUAD2y(x)   (x)
 
#define diffN_MBQUAD3x(y)   (-y)
 
#define diffN_MBQUAD3y(x)   ((1. - x))
 
#define N_MBHEX0(x, y, z)   (N_MBQUAD0(x, y) * (1 - z))
 
#define N_MBHEX1(x, y, z)   (N_MBQUAD1(x, y) * (1 - z))
 
#define N_MBHEX2(x, y, z)   (N_MBQUAD2(x, y) * (1 - z))
 
#define N_MBHEX3(x, y, z)   (N_MBQUAD3(x, y) * (1 - z))
 
#define N_MBHEX4(x, y, z)   (N_MBQUAD0(x, y) * (z))
 
#define N_MBHEX5(x, y, z)   (N_MBQUAD1(x, y) * (z))
 
#define N_MBHEX6(x, y, z)   (N_MBQUAD2(x, y) * (z))
 
#define N_MBHEX7(x, y, z)   (N_MBQUAD3(x, y) * (z))
 
#define diffN_MBHEX0x(y, z)   (diffN_MBQUAD0x(y) * (1 - z))
 
#define diffN_MBHEX1x(y, z)   (diffN_MBQUAD1x(y) * (1 - z))
 
#define diffN_MBHEX2x(y, z)   (diffN_MBQUAD2x(y) * (1 - z))
 
#define diffN_MBHEX3x(y, z)   (diffN_MBQUAD3x(y) * (1 - z))
 
#define diffN_MBHEX4x(y, z)   (diffN_MBQUAD0x(y) * (z))
 
#define diffN_MBHEX5x(y, z)   (diffN_MBQUAD1x(y) * (z))
 
#define diffN_MBHEX6x(y, z)   (diffN_MBQUAD2x(y) * (z))
 
#define diffN_MBHEX7x(y, z)   (diffN_MBQUAD3x(y) * (z))
 
#define diffN_MBHEX0y(x, z)   (diffN_MBQUAD0y(x) * (1 - z))
 
#define diffN_MBHEX1y(x, z)   (diffN_MBQUAD1y(x) * (1 - z))
 
#define diffN_MBHEX2y(x, z)   (diffN_MBQUAD2y(x) * (1 - z))
 
#define diffN_MBHEX3y(x, z)   (diffN_MBQUAD3y(x) * (1 - z))
 
#define diffN_MBHEX4y(x, z)   (diffN_MBQUAD0y(x) * (z))
 
#define diffN_MBHEX5y(x, z)   (diffN_MBQUAD1y(x) * (z))
 
#define diffN_MBHEX6y(x, z)   (diffN_MBQUAD2y(x) * (z))
 
#define diffN_MBHEX7y(x, z)   (diffN_MBQUAD3y(x) * (z))
 
#define diffN_MBHEX0z(x, y)   (-N_MBQUAD0(x, y))
 
#define diffN_MBHEX1z(x, y)   (-N_MBQUAD1(x, y))
 
#define diffN_MBHEX2z(x, y)   (-N_MBQUAD2(x, y))
 
#define diffN_MBHEX3z(x, y)   (-N_MBQUAD3(x, y))
 
#define diffN_MBHEX4z(x, y)   (N_MBQUAD0(x, y))
 
#define diffN_MBHEX5z(x, y)   (N_MBQUAD1(x, y))
 
#define diffN_MBHEX6z(x, y)   (N_MBQUAD2(x, y))
 
#define diffN_MBHEX7z(x, y)   (N_MBQUAD3(x, y))
 
#define N_MBEDGE0(x)   (1. - (x))
 edge shape function
 
#define N_MBEDGE1(x)   (x)
 edge shape function
 
#define diffN_MBEDGE0   (-1.)
 derivative of edge shape function
 
#define diffN_MBEDGE1   (1.)
 derivative of edge shape function
 
#define N_MBTRIQ0(x, y)   ((1. - x - y) * (2 * (1. - x - y) - 1.))
 
#define N_MBTRIQ1(x, y)   (x * (2. * x - 1.))
 
#define N_MBTRIQ2(x, y)   (y * (2. * y - 1.))
 
#define N_MBTRIQ3(x, y)   (4. * (1. - x - y) * x)
 
#define N_MBTRIQ4(x, y)   (4. * x * y)
 
#define N_MBTRIQ5(x, y)   (4. * (1. - x - y) * y)
 
#define diffN_MBTRIQ0x(x, y)   (x + y - 3. * (1. - x - y))
 
#define diffN_MBTRIQ0y(x, y)   (x + y - 3. * (1. - x - y))
 
#define diffN_MBTRIQ1x(x, y)   (-1. + 4. * x)
 
#define diffN_MBTRIQ1y(x, y)   (0.)
 
#define diffN_MBTRIQ2x(x, y)   (0.)
 
#define diffN_MBTRIQ2y(x, y)   (-1. + 4. * y)
 
#define diffN_MBTRIQ3x(x, y)   (4. * ((1. - x - y) - x))
 
#define diffN_MBTRIQ3y(x, y)   (-4. * x)
 
#define diffN_MBTRIQ4x(x, y)   (4. * y)
 
#define diffN_MBTRIQ4y(x, y)   (4. * x)
 
#define diffN_MBTRIQ5x(x, y)   (-4. * y)
 
#define diffN_MBTRIQ5y(x, y)   (4. * ((1. - x - y) - y))
 

Functions

void print_mat (double *M, int m, int n)
 print matric M
 
void print_mat_sym_upper (double *M, int m, int n)
 print upper part of the symmetric matrix
 
void print_mat_complex (__CLPK_doublecomplex *M, int m, int n)
 priint complex matrix
 
PetscErrorCode ShapeMBTRI (double *N, const double *X, const double *Y, const int G_DIM)
 calculate shape functions on triangle
 
PetscErrorCode ShapeDiffMBTRI (double *diffN)
 calculate derivatives of shape functions
 
PetscErrorCode ShapeFaceNormalMBTRI (double *diffN, const double *coords, double *normal)
 
PetscErrorCode ShapeFaceBaseMBTRI (double *diffN, const double *coords, double *normal, double *s1, double *s2)
 
PetscErrorCode ShapeFaceDiffNormalMBTRI (double *diffN, const double *coords, double *diff_normal)
 calculate derivative of normal in respect to nodal positions
 
void ShapeJacMBTRI (double *diffN, const double *coords, double *Jac)
 calculate jacobioan
 
void ShapeDiffMBTRIinvJ (double *diffN, double *invJac, double *diffNinvJac)
 calculate derivatives of shape functions in space
 
PetscErrorCode ShapeMBTET (double *N, const double *G_X, const double *G_Y, const double *G_Z, int DIM)
 calculate shape functions
 
PetscErrorCode ShapeDiffMBTET (double *diffN)
 calculate derivatives of shape functions
 
double ShapeDetJacVolume (double *jac)
 determined of jacobian
 
PetscErrorCode ShapeJacMBTET (double *diffN, const double *coords, double *jac)
 calculate jacobian
 
PetscErrorCode ShapeInvJacVolume (double *jac)
 
double ShapeVolumeMBTET (double *diffN, const double *coords)
 calculate TET volume
 
PetscErrorCode ShapeDiffMBTETinvJ (double *diffN, double *invJac, double *diffNinvJac)
 calculate shape functions derivatives in space
 
PetscErrorCode Spin (double *spinOmega, double *vecOmega)
 calculate spin matrix from vector
 
PetscErrorCode make_complex_matrix (double *reA, double *imA, __CLPK_doublecomplex *xA)
 Compose complex matrix (3x3) from two real matrices.
 
PetscErrorCode Normal_hierarchical (int order_approx, int *order_edge_approx, int order, int *order_edge, double *diffN, double *diffN_face, double *diffN_edge[], double *dofs, double *dofs_edge[], double *dofs_face, double *idofs, double *idofs_edge[], double *idofs_face, __CLPK_doublecomplex *xnormal, __CLPK_doublecomplex *s1, __CLPK_doublecomplex *s2, int gg)
 Complex normal.
 
PetscErrorCode Base_scale (__CLPK_doublecomplex *xnormal, __CLPK_doublecomplex *xs1, __CLPK_doublecomplex *xs2)
 
PetscErrorCode ShapeMBTET_inverse (double *N, double *diffN, const double *elem_coords, const double *glob_coords, double *loc_coords)
 calculate local coordinates for given global coordinates
 
PetscErrorCode ShapeMBTRI_inverse (double *N, double *diffN, const double *elem_coords, const double *glob_coords, double *loc_coords)
 calculate local coordinates of triangle element for given global coordinates in 2D (Assume e.g. z=0)
 
PetscErrorCode GradientOfDeformation (double *diffN, double *dofs, double *F)
 calculate gradient of deformation
 
PetscErrorCode ShapeMBEDGE (double *N, const double *G_X, int DIM)
 
PetscErrorCode ShapeDiffMBEDGE (double *diffN)
 
PetscErrorCode ShapeMBTRIQ (double *N, const double *X, const double *Y, const int G_DIM)
 
PetscErrorCode ShapeDiffMBTRIQ (double *diffN, const double *X, const double *Y, const int G_DIM)
 
PetscErrorCode ShapeMBTETQ (double *N, const double x, const double y, const double z)
 
PetscErrorCode ShapeDiffMBTETQ (double *diffN, const double x, const double y, const double z)
 
PetscErrorCode ShapeMBTETQ_GAUSS (double *N, const double *X, const double *Y, const double *Z, const int G_DIM)
 
PetscErrorCode ShapeDiffMBTETQ_GAUSS (double *diffN, const double *X, const double *Y, const double *Z, const int G_DIM)
 
PetscErrorCode ShapeJacMBTETQ (const double *diffN, const double *coords, double *Jac)
 
PetscErrorCode ShapeMBTETQ_detJac_at_Gauss_Points (double *detJac_at_Gauss_Points, const double *diffN, const double *coords, int G_DIM)
 
double ShapeVolumeMBTETQ (const double *diffN, const double *coords, int G_DIM, double *G_TET_W)
 
PetscErrorCode ShapeMBTETQ_inverse (double *N, double *diffN, const double *elem_coords, const double *glob_coords, double *loc_coords, const double eps)
 
void ShapeDiffMBTETinvJ_complex (double *diffN, __CLPK_doublecomplex *invJac, __CLPK_doublecomplex *diffNinvJac, enum CBLAS_TRANSPOSE Trans)
 
PetscErrorCode ShapeFaceNormalMBTRI_complex (double *diffN, __CLPK_doublecomplex *xcoords, __CLPK_doublecomplex *xnormal)
 
PetscErrorCode MakeComplexTensor (double *reA, double *imA, __CLPK_doublecomplex *xA)
 
PetscErrorCode InvertComplexGradient (__CLPK_doublecomplex *xF)
 
PetscErrorCode DeterminantComplexGradient (__CLPK_doublecomplex *xF, __CLPK_doublecomplex *det_xF)
 
PetscErrorCode Grundmann_Moeller_integration_points_1D_EDGE (int rule, double *G_TRI_X, double *G_TRI_W)
 Compute weights and integration points for edge using Grundmann_Moeller rule.
 
PetscErrorCode Grundmann_Moeller_integration_points_2D_TRI (int rule, double *G_TRI_X, double *G_TRI_Y, double *G_TRI_W)
 
PetscErrorCode Grundmann_Moeller_integration_points_3D_TET (int rule, double *G_TET_X, double *G_TET_Y, double *G_TET_Z, double *G_TET_W)
 

Variables

static const double G_TRI_X1 [] = {3.3333333333333331e-01}
 
static const double G_TRI_Y1 [] = {3.3333333333333331e-01}
 
static const double G_TRI_W1 [] = {1.}
 
static const double G_TRI_X3 [] = {0.5, 0., 0.5}
 
static const double G_TRI_Y3 [] = {0., 0.5, 0.5}
 
static const double G_TRI_W3 []
 
static const double G_TRI_X4 []
 
static const double G_TRI_Y4 []
 
static const double G_TRI_W4 []
 
static const double G_TRI_X7 []
 
static const double G_TRI_Y7 []
 
static const double G_TRI_W7 []
 
static const double G_TRI_X13 []
 
static const double G_TRI_Y13 []
 
static const double G_TRI_W13 []
 
static const double G_TRI_X19 []
 
static const double G_TRI_Y19 []
 
static const double G_TRI_W19 []
 
static const double G_TRI_X28 []
 
static const double G_TRI_Y28 []
 
static const double G_TRI_W28 []
 
static const double G_TRI_X37 []
 
static const double G_TRI_Y37 []
 
static const double G_TRI_W37 []
 
static const double G_TRI_X286 []
 
static const double G_TRI_Y286 []
 
static const double G_TRI_W286 []
 
static const double G_TET_X1 [] = {0.25}
 
static const double G_TET_Y1 [] = {0.25}
 
static const double G_TET_Z1 [] = {0.25}
 
static const double G_TET_W1 [] = {1.}
 
static const double G_TET_X4 []
 
static const double G_TET_Y4 []
 
static const double G_TET_Z4 []
 
static const double G_TET_W4 [] = {0.25, 0.25, 0.25, 0.25}
 
static const double G_TET_X5 []
 
static const double G_TET_Y5 []
 
static const double G_TET_Z5 []
 
static const double G_TET_W5 []
 
static const double G_TET_X10 []
 
static const double G_TET_Y10 []
 
static const double G_TET_Z10 []
 
static const double G_TET_W10 []
 
static const double G_TET_X45 []
 
static const double G_TET_Y45 []
 
static const double G_TET_Z45 []
 
static const double G_TET_W45 []
 
static const double NC_TET_X84 []
 
static const double NC_TET_Y84 []
 
static const double NC_TET_Z84 []
 
static const double NC_TET_W84 []
 

Detailed Description

Loose implementation of some useful functions.

FIXME: Implementation here is very unstructured, need cleaning and pruning

Definition in file fem_tools.h.

Macro Definition Documentation

◆ DELTA

#define DELTA (   NU_P,
  NU_PZ,
  E_P,
  E_Z 
)
Value:
(((1 + NU_P) * (1 - NU_P - 2 * NU_PZ * (NU_PZ * E_Z / E_P))) / \
(E_P * E_P * E_Z))

Definition at line 24 of file fem_tools.h.

130 {
131#endif
132
133/// print matric M
134void print_mat(double *M, int m, int n);
135/// print upper part of the symmetric matrix
136void print_mat_sym_upper(double *M, int m, int n);
137/// priint complex matrix
138void print_mat_complex(__CLPK_doublecomplex *M, int m, int n);
139
140/// \brief calculate shape functions on triangle
141/// \param N shape function array
142/// \param X array of Gauss X coordinates
143/// \param Y array of Gauss Y coordinates
144/// \param G_DIM number of Gauss points
145PetscErrorCode ShapeMBTRI(double *N, const double *X, const double *Y,
146 const int G_DIM);
147/// calculate derivatives of shape functions
148PetscErrorCode ShapeDiffMBTRI(double *diffN);
149
150/// calculate face normal
151/// \param diffN derivatives of shape functions
152/// \param coords is position of the nodes
153/// \param normal vector
154PetscErrorCode ShapeFaceNormalMBTRI(double *diffN, const double *coords,
155 double *normal);
156PetscErrorCode ShapeFaceBaseMBTRI(double *diffN, const double *coords,
157 double *normal, double *s1, double *s2);
158
159/// calculate derivative of normal in respect to nodal positions
160PetscErrorCode ShapeFaceDiffNormalMBTRI(double *diffN, const double *coords,
161 double *diff_normal);
162/// calculate jacobioan
163void ShapeJacMBTRI(double *diffN, const double *coords, double *Jac);
164/// calculate derivatives of shape functions in space
165void ShapeDiffMBTRIinvJ(double *diffN, double *invJac, double *diffNinvJac);
166/// calculate shape functions
167PetscErrorCode ShapeMBTET(double *N, const double *G_X, const double *G_Y,
168 const double *G_Z, int DIM);
169/// calculate derivatives of shape functions
170PetscErrorCode ShapeDiffMBTET(double *diffN);
171/// determined of jacobian
172double ShapeDetJacVolume(double *jac);
173/// calculate jacobian
174PetscErrorCode ShapeJacMBTET(double *diffN, const double *coords, double *jac);
175// calculate inverse of jacobian
176PetscErrorCode ShapeInvJacVolume(double *jac);
177/// calculate TET volume
178double ShapeVolumeMBTET(double *diffN, const double *coords);
179/// calculate shape functions derivatives in space
180PetscErrorCode ShapeDiffMBTETinvJ(double *diffN, double *invJac,
181 double *diffNinvJac);
182
183/// calculate spin matrix from vector
184// \param spinOmega is a spin matrix
185// \param vecOmega is a spin vector
186PetscErrorCode Spin(double *spinOmega, double *vecOmega);
187
188/// Compose complex matrix (3x3) from two real matrices
189PetscErrorCode make_complex_matrix(double *reA, double *imA,
191/// Complex normal
192PetscErrorCode
193Normal_hierarchical(int order_approx, int *order_edge_approx, int order,
194 int *order_edge, double *diffN, double *diffN_face,
195 double *diffN_edge[], double *dofs, double *dofs_edge[],
196 double *dofs_face, double *idofs, double *idofs_edge[],
197 double *idofs_face, __CLPK_doublecomplex *xnormal,
199PetscErrorCode Base_scale(__CLPK_doublecomplex *xnormal,
201
202/**
203 * \brief calculate local coordinates for given global coordinates
204 *
205 * new version for multiple points need to be implemented
206 */
207PetscErrorCode ShapeMBTET_inverse(double *N, double *diffN,
208 const double *elem_coords,
209 const double *glob_coords,
210 double *loc_coords);
211
212/**
213 * \brief calculate local coordinates of triangle element for given global
214coordinates in 2D (Assume e.g. z=0) \f[ \left[\begin{array}{cc}
215\frac{\partial N_{1}}{\partial\xi}x_{N_{1}}+\frac{\partial
216N_{2}}{\partial\xi}x_{N_{2}}+\frac{\partial N_{3}}{\partial\xi}x_{N_{3}} &
217\frac{\partial N_{1}}{\partial\eta}x_{N_{1}}+\frac{\partial
218N_{2}}{\partial\eta}x_{N_{2}}+\frac{\partial N_{3}}{\partial\eta}x_{N_{3}}\\
219\frac{\partial N_{1}}{\partial\xi}y_{N_{1}}+\frac{\partial
220N_{2}}{\partial\xi}y_{N_{2}}+\frac{\partial N_{3}}{\partial\xi}y_{N_{3}} &
221\frac{\partial N_{1}}{\partial\eta}y_{N_{1}}+\frac{\partial
222N_{2}}{\partial\eta}y_{N_{2}}+\frac{\partial N_{3}}{\partial\eta}y_{N_{3}}
223\end{array}\right]\left\{ \begin{array}{c}
224\xi\\
225\eta
226\end{array}\right\} =\left\{ \begin{array}{c}
227x_{gp}-\left(N_{1}x_{N_{1}}+N_{2}x_{N_{2}}+N_{3}x_{N_{3}}\right)\\
228y_{gp}-\left(N_{1}y_{N_{1}}+N_{2}y_{N_{2}}+N_{3}y_{N_{3}}\right)
229\end{array}\right\}
230 \f]
231
232 /// \param N shape function array
233 /// \param diffN array of shape function derivative w.r.t to local coordinates
234 /// \param elem_coords global coordinates of element
235 /// \param glob_coords global coordinates of required point
236 /// \param loc_coords local coordinates of required point
237 */
238PetscErrorCode ShapeMBTRI_inverse(double *N, double *diffN,
239 const double *elem_coords,
240 const double *glob_coords,
241 double *loc_coords);
242
243/// calculate gradient of deformation
244PetscErrorCode GradientOfDeformation(double *diffN, double *dofs, double *F);
245
246// 2 Node edge
247PetscErrorCode ShapeMBEDGE(double *N, const double *G_X, int DIM);
248PetscErrorCode ShapeDiffMBEDGE(double *diffN);
249
250// 10 Node Tet
251PetscErrorCode ShapeMBTRIQ(double *N, const double *X, const double *Y,
252 const int G_DIM);
253PetscErrorCode ShapeDiffMBTRIQ(double *diffN, const double *X, const double *Y,
254 const int G_DIM);
255PetscErrorCode ShapeMBTETQ(double *N, const double x, const double y,
256 const double z);
257PetscErrorCode ShapeDiffMBTETQ(double *diffN, const double x, const double y,
258 const double z);
259PetscErrorCode ShapeMBTETQ_GAUSS(double *N, const double *X, const double *Y,
260 const double *Z, const int G_DIM);
261PetscErrorCode ShapeDiffMBTETQ_GAUSS(double *diffN, const double *X,
262 const double *Y, const double *Z,
263 const int G_DIM);
264PetscErrorCode ShapeJacMBTETQ(const double *diffN, const double *coords,
265 double *Jac);
266PetscErrorCode
267ShapeMBTETQ_detJac_at_Gauss_Points(double *detJac_at_Gauss_Points,
268 const double *diffN, const double *coords,
269 int G_DIM);
270double ShapeVolumeMBTETQ(const double *diffN, const double *coords, int G_DIM,
271 double *G_TET_W);
272PetscErrorCode ShapeMBTETQ_inverse(double *N, double *diffN,
273 const double *elem_coords,
274 const double *glob_coords,
275 double *loc_coords, const double eps);
276
277// complex part
279 __CLPK_doublecomplex *diffNinvJac,
280 enum CBLAS_TRANSPOSE Trans);
281PetscErrorCode ShapeFaceNormalMBTRI_complex(double *diffN,
282 __CLPK_doublecomplex *xcoords,
283 __CLPK_doublecomplex *xnormal);
284PetscErrorCode MakeComplexTensor(double *reA, double *imA,
288 __CLPK_doublecomplex *det_xF);
289
290// integration
291/// Compute weights and integration points for edge using Grundmann_Moeller rule
293 double *G_TRI_X,
294 double *G_TRI_W);
295/// Compute weights and integration points for 2D Triangle using
296/// Grundmann_Moeller rule
297PetscErrorCode Grundmann_Moeller_integration_points_2D_TRI(int rule,
298 double *G_TRI_X,
299 double *G_TRI_Y,
300 double *G_TRI_W);
301/// Compute weights and integration points for 3D Tet using Grundmann_Moeller
302/// rule
303PetscErrorCode Grundmann_Moeller_integration_points_3D_TET(int rule,
304 double *G_TET_X,
305 double *G_TET_Y,
306 double *G_TET_Z,
307 double *G_TET_W);
308
309// http://people.sc.fsu.edu/~jburkardt/datasets/quadrature_rules_tet/quadrature_rules_tet.html
310// TRI
311static const double G_TRI_X1[] = {3.3333333333333331e-01};
312static const double G_TRI_Y1[] = {3.3333333333333331e-01};
313static const double G_TRI_W1[] = {1.};
314static const double G_TRI_X3[] = {0.5, 0., 0.5};
315static const double G_TRI_Y3[] = {0., 0.5, 0.5};
316static const double G_TRI_W3[] = {
317 3.3333333333333331e-01, 3.3333333333333331e-01, 3.3333333333333331e-01};
318static const double G_TRI_X4[] = {
319 7.503111022260811058e-02, 1.785587282636164064e-01,
320 2.800199154990741235e-01, 6.663902460147014262e-01};
321static const double G_TRI_Y4[] = {
322 2.800199154990741235e-01, 6.663902460147014262e-01,
323 7.503111022260811058e-02, 1.785587282636164064e-01};
324static const double G_TRI_W4[] = {
325 1.8195861825602258066e-01, 3.1804138174397683647e-01,
326 1.8195861825602258066e-01, 3.1804138174397683647e-01};
327static const double G_TRI_X7[] = {
328 0.333333333333333, 0.736712498968435, 0.736712498968435, 0.237932366472434,
329 0.237932366472434, 0.025355134551932, 0.025355134551932};
330static const double G_TRI_Y7[] = {
331 0.333333333333333, 0.237932366472434, 0.025355134551932, 0.736712498968435,
332 0.025355134551932, 0.736712498968435, 0.237932366472434};
333static const double G_TRI_W7[] = {
334 0.375000000000000, 0.104166666666667, 0.104166666666667, 0.104166666666667,
335 0.104166666666667, 0.104166666666667, 0.104166666666667};
336static const double G_TRI_X13[] = {
337 0.333333333333333, 0.479308067841923, 0.260345966079038, 0.260345966079038,
338 0.869739794195568, 0.065130102902216, 0.065130102902216, 0.638444188569809,
339 0.638444188569809, 0.312865496004875, 0.312865496004875, 0.048690315425316,
340 0.048690315425316};
341static const double G_TRI_Y13[] = {
342 0.333333333333333, 0.260345966079038, 0.479308067841923, 0.260345966079038,
343 0.065130102902216, 0.869739794195568, 0.065130102902216, 0.312865496004875,
344 0.048690315425316, 0.638444188569809, 0.048690315425316, 0.638444188569809,
345 0.312865496004875};
346static const double G_TRI_W13[] = {
347 -0.149570044467670, 0.175615257433204, 0.175615257433204, 0.175615257433204,
348 0.053347235608839, 0.053347235608839, 0.053347235608839, 0.077113760890257,
349 0.077113760890257, 0.077113760890257, 0.077113760890257, 0.077113760890257,
350 0.077113760890257};
351
352static const double G_TRI_X19[] = {
353 0.333333333333333, 0.797426985353087, 0.101286507323456, 0.101286507323456,
354 0.059715871789770, 0.470142064105115, 0.470142064105115, 0.535795346449899,
355 0.232102326775050, 0.232102326775050, 0.941038278231121, 0.029480860884440,
356 0.029480860884440, 0.738416812340510, 0.738416812340510, 0.232102326775050,
357 0.232102326775050, 0.029480860884440, 0.029480860884440};
358static const double G_TRI_Y19[] = {
359 0.333333333333333, 0.101286507323456, 0.797426985353087, 0.101286507323456,
360 0.470142064105115, 0.059715871789770, 0.470142064105115, 0.232102326775050,
361 0.535795346449899, 0.232102326775050, 0.029480860884440, 0.941038278231121,
362 0.029480860884440, 0.232102326775050, 0.029480860884440, 0.738416812340510,
363 0.029480860884440, 0.738416812340510, 0.232102326775050};
364static const double G_TRI_W19[] = {
365 9.71357962827961025E-002, 3.13347002271398278E-002,
366 3.13347002271398278E-002, 3.13347002271398278E-002,
367 7.78275410047754301E-002, 7.78275410047754301E-002,
368 7.78275410047754301E-002, 7.96477389272090969E-002,
369 7.96477389272090969E-002, 7.96477389272090969E-002,
370 2.55776756586981006E-002, 2.55776756586981006E-002,
371 2.55776756586981006E-002, 4.32835393772893970E-002,
372 4.32835393772893970E-002, 4.32835393772893970E-002,
373 4.32835393772893970E-002, 4.32835393772893970E-002,
374 4.32835393772893970E-002};
375
376static const double G_TRI_X28[] = {
377 0.333333333333333, 0.948021718143423, 0.025989140928288,
378 0.025989140928288, 0.811424994704155, 0.094287502647923,
379 0.094287502647923, 0.010726449965571, 0.494636775017215,
380 0.494636775017215, 0.585313234770972, 0.207343382614514,
381 0.207343382614514, 0.122184388599019, 0.438907805700491,
382 0.438907805700491, 0.677937654882590, 0.677937654882590,
383 0.044841677589131, 0.044841677589131, 0.277220667528279,
384 0.277220667528279, 0.858870281282636, 0.858870281282636,
385 0.0000000000000000, 0.0000000000000000, 0.141129718717364,
386 0.141129718717364};
387static const double G_TRI_Y28[] = {
388 0.333333333333333, 0.025989140928288, 0.948021718143423, 0.025989140928288,
389 0.094287502647923, 0.811424994704155, 0.094287502647923, 0.494636775017215,
390 0.010726449965571, 0.494636775017215, 0.207343382614514, 0.585313234770972,
391 0.207343382614514, 0.438907805700491, 0.122184388599019, 0.438907805700491,
392 0.044841677589131, 0.277220667528279, 0.677937654882590, 0.277220667528279,
393 0.677937654882590, 0.044841677589131, 0.000000000000000, 0.141129718717364,
394 0.858870281282636, 0.141129718717364, 0.858870281282636, 0.000000000000000};
395static const double G_TRI_W28[] = {
396 0.08797730116222190, 0.008744311553736190, 0.008744311553736190,
397 0.008744311553736190, 0.03808157199393533, 0.03808157199393533,
398 0.03808157199393533, 0.01885544805613125, 0.01885544805613125,
399 0.01885544805613125, 0.07215969754474100, 0.07215969754474100,
400 0.07215969754474100, 0.06932913870553720, 0.06932913870553720,
401 0.06932913870553720, 0.04105631542928860, 0.04105631542928860,
402 0.04105631542928860, 0.04105631542928860, 0.04105631542928860,
403 0.04105631542928860, 0.007362383783300573, 0.007362383783300573,
404 0.007362383783300573, 0.007362383783300573, 0.007362383783300573,
405 0.007362383783300573};
406
407static const double G_TRI_X37[] = {
408 0.333333333333333, 0.950275662924106, 0.024862168537947, 0.024862168537947,
409 0.171614914923835, 0.414192542538082, 0.414192542538082, 0.539412243677190,
410 0.230293878161405, 0.230293878161405, 0.772160036676533, 0.113919981661734,
411 0.113919981661734, 0.009085399949835, 0.495457300025082, 0.495457300025082,
412 0.062277290305887, 0.468861354847056, 0.468861354847056, 0.022076289653624,
413 0.022076289653624, 0.851306504174348, 0.851306504174348, 0.126617206172027,
414 0.126617206172027, 0.018620522802521, 0.018620522802521, 0.689441970728591,
415 0.689441970728591, 0.291937506468888, 0.291937506468888, 0.096506481292159,
416 0.096506481292159, 0.635867859433873, 0.635867859433873, 0.267625659273968,
417 0.267625659273968};
418static const double G_TRI_Y37[] = {
419 0.333333333333333, 0.024862168537947, 0.950275662924106, 0.024862168537947,
420 0.414192542538082, 0.171614914923835, 0.414192542538082, 0.230293878161405,
421 0.539412243677190, 0.230293878161405, 0.113919981661734, 0.772160036676533,
422 0.113919981661734, 0.495457300025082, 0.009085399949835, 0.495457300025082,
423 0.468861354847056, 0.062277290305887, 0.468861354847056, 0.851306504174348,
424 0.126617206172027, 0.022076289653624, 0.126617206172027, 0.022076289653624,
425 0.851306504174348, 0.689441970728591, 0.291937506468888, 0.018620522802521,
426 0.291937506468888, 0.018620522802521, 0.689441970728591, 0.635867859433873,
427 0.267625659273968, 0.096506481292159, 0.267625659273968, 0.096506481292159,
428 0.635867859433873};
429static const double G_TRI_W37[] = {
430 0.051739766065744, 0.008007799555565, 0.008007799555565, 0.008007799555565,
431 0.046868898981822, 0.046868898981822, 0.046868898981822, 0.046590940183976,
432 0.046590940183976, 0.046590940183976, 0.031016943313796, 0.031016943313796,
433 0.031016943313796, 0.010791612736631, 0.010791612736631, 0.010791612736631,
434 0.032195534242432, 0.032195534242432, 0.032195534242432, 0.015445834210702,
435 0.015445834210702, 0.015445834210702, 0.015445834210702, 0.015445834210702,
436 0.015445834210702, 0.017822989923179, 0.017822989923179, 0.017822989923179,
437 0.017822989923179, 0.017822989923179, 0.017822989923179, 0.037038683681385,
438 0.037038683681385, 0.037038683681385, 0.037038683681385, 0.037038683681385,
439 0.037038683681385};
440static const double G_TRI_X286[] = {0.04347826086956522,
441 0.1304347826086956,
442 0.2173913043478261,
443 0.3043478260869565,
444 0.391304347826087,
445 0.4782608695652174,
446 0.5652173913043478,
447 0.6521739130434783,
448 0.7391304347826086,
449 0.8260869565217391,
450 0.9130434782608695,
451 0.04347826086956522,
452 0.1304347826086956,
453 0.2173913043478261,
454 0.3043478260869565,
455 0.391304347826087,
456 0.4782608695652174,
457 0.5652173913043478,
458 0.6521739130434783,
459 0.7391304347826086,
460 0.8260869565217391,
461 0.04347826086956522,
462 0.1304347826086956,
463 0.2173913043478261,
464 0.3043478260869565,
465 0.391304347826087,
466 0.4782608695652174,
467 0.5652173913043478,
468 0.6521739130434783,
469 0.7391304347826086,
470 0.04347826086956522,
471 0.1304347826086956,
472 0.2173913043478261,
473 0.3043478260869565,
474 0.391304347826087,
475 0.4782608695652174,
476 0.5652173913043478,
477 0.6521739130434783,
478 0.04347826086956522,
479 0.1304347826086956,
480 0.2173913043478261,
481 0.3043478260869565,
482 0.391304347826087,
483 0.4782608695652174,
484 0.5652173913043478,
485 0.04347826086956522,
486 0.1304347826086956,
487 0.2173913043478261,
488 0.3043478260869565,
489 0.391304347826087,
490 0.4782608695652174,
491 0.04347826086956522,
492 0.1304347826086956,
493 0.2173913043478261,
494 0.3043478260869565,
495 0.391304347826087,
496 0.04347826086956522,
497 0.1304347826086956,
498 0.2173913043478261,
499 0.3043478260869565,
500 0.04347826086956522,
501 0.1304347826086956,
502 0.2173913043478261,
503 0.04347826086956522,
504 0.1304347826086956,
505 0.04347826086956522,
506 0.04761904761904762,
507 0.1428571428571428,
508 0.2380952380952381,
509 0.3333333333333333,
510 0.4285714285714285,
511 0.5238095238095238,
512 0.6190476190476191,
513 0.7142857142857143,
514 0.8095238095238095,
515 0.9047619047619048,
516 0.04761904761904762,
517 0.1428571428571428,
518 0.2380952380952381,
519 0.3333333333333333,
520 0.4285714285714285,
521 0.5238095238095238,
522 0.6190476190476191,
523 0.7142857142857143,
524 0.8095238095238095,
525 0.04761904761904762,
526 0.1428571428571428,
527 0.2380952380952381,
528 0.3333333333333333,
529 0.4285714285714285,
530 0.5238095238095238,
531 0.6190476190476191,
532 0.7142857142857143,
533 0.04761904761904762,
534 0.1428571428571428,
535 0.2380952380952381,
536 0.3333333333333333,
537 0.4285714285714285,
538 0.5238095238095238,
539 0.6190476190476191,
540 0.04761904761904762,
541 0.1428571428571428,
542 0.2380952380952381,
543 0.3333333333333333,
544 0.4285714285714285,
545 0.5238095238095238,
546 0.04761904761904762,
547 0.1428571428571428,
548 0.2380952380952381,
549 0.3333333333333333,
550 0.4285714285714285,
551 0.04761904761904762,
552 0.1428571428571428,
553 0.2380952380952381,
554 0.3333333333333333,
555 0.04761904761904762,
556 0.1428571428571428,
557 0.2380952380952381,
558 0.04761904761904762,
559 0.1428571428571428,
560 0.04761904761904762,
561 0.05263157894736842,
562 0.1578947368421053,
563 0.2631578947368421,
564 0.3684210526315789,
565 0.4736842105263158,
566 0.5789473684210527,
567 0.6842105263157895,
568 0.7894736842105263,
569 0.8947368421052632,
570 0.05263157894736842,
571 0.1578947368421053,
572 0.2631578947368421,
573 0.3684210526315789,
574 0.4736842105263158,
575 0.5789473684210527,
576 0.6842105263157895,
577 0.7894736842105263,
578 0.05263157894736842,
579 0.1578947368421053,
580 0.2631578947368421,
581 0.3684210526315789,
582 0.4736842105263158,
583 0.5789473684210527,
584 0.6842105263157895,
585 0.05263157894736842,
586 0.1578947368421053,
587 0.2631578947368421,
588 0.3684210526315789,
589 0.4736842105263158,
590 0.5789473684210527,
591 0.05263157894736842,
592 0.1578947368421053,
593 0.2631578947368421,
594 0.3684210526315789,
595 0.4736842105263158,
596 0.05263157894736842,
597 0.1578947368421053,
598 0.2631578947368421,
599 0.3684210526315789,
600 0.05263157894736842,
601 0.1578947368421053,
602 0.2631578947368421,
603 0.05263157894736842,
604 0.1578947368421053,
605 0.05263157894736842,
606 0.05882352941176471,
607 0.1764705882352941,
608 0.2941176470588235,
609 0.4117647058823529,
610 0.5294117647058824,
611 0.6470588235294118,
612 0.7647058823529411,
613 0.8823529411764706,
614 0.05882352941176471,
615 0.1764705882352941,
616 0.2941176470588235,
617 0.4117647058823529,
618 0.5294117647058824,
619 0.6470588235294118,
620 0.7647058823529411,
621 0.05882352941176471,
622 0.1764705882352941,
623 0.2941176470588235,
624 0.4117647058823529,
625 0.5294117647058824,
626 0.6470588235294118,
627 0.05882352941176471,
628 0.1764705882352941,
629 0.2941176470588235,
630 0.4117647058823529,
631 0.5294117647058824,
632 0.05882352941176471,
633 0.1764705882352941,
634 0.2941176470588235,
635 0.4117647058823529,
636 0.05882352941176471,
637 0.1764705882352941,
638 0.2941176470588235,
639 0.05882352941176471,
640 0.1764705882352941,
641 0.05882352941176471,
642 0.06666666666666667,
643 0.2,
644 0.3333333333333333,
645 0.4666666666666667,
646 0.6,
647 0.7333333333333333,
648 0.8666666666666667,
649 0.06666666666666667,
650 0.2,
651 0.3333333333333333,
652 0.4666666666666667,
653 0.6,
654 0.7333333333333333,
655 0.06666666666666667,
656 0.2,
657 0.3333333333333333,
658 0.4666666666666667,
659 0.6,
660 0.06666666666666667,
661 0.2,
662 0.3333333333333333,
663 0.4666666666666667,
664 0.06666666666666667,
665 0.2,
666 0.3333333333333333,
667 0.06666666666666667,
668 0.2,
669 0.06666666666666667,
670 0.07692307692307693,
671 0.2307692307692308,
672 0.3846153846153846,
673 0.5384615384615384,
674 0.6923076923076923,
675 0.8461538461538461,
676 0.07692307692307693,
677 0.2307692307692308,
678 0.3846153846153846,
679 0.5384615384615384,
680 0.6923076923076923,
681 0.07692307692307693,
682 0.2307692307692308,
683 0.3846153846153846,
684 0.5384615384615384,
685 0.07692307692307693,
686 0.2307692307692308,
687 0.3846153846153846,
688 0.07692307692307693,
689 0.2307692307692308,
690 0.07692307692307693,
691 0.09090909090909091,
692 0.2727272727272727,
693 0.4545454545454545,
694 0.6363636363636364,
695 0.8181818181818182,
696 0.09090909090909091,
697 0.2727272727272727,
698 0.4545454545454545,
699 0.6363636363636364,
700 0.09090909090909091,
701 0.2727272727272727,
702 0.4545454545454545,
703 0.09090909090909091,
704 0.2727272727272727,
705 0.09090909090909091,
706 0.1111111111111111,
707 0.3333333333333333,
708 0.5555555555555556,
709 0.7777777777777778,
710 0.1111111111111111,
711 0.3333333333333333,
712 0.5555555555555556,
713 0.1111111111111111,
714 0.3333333333333333,
715 0.1111111111111111,
716 0.1428571428571428,
717 0.4285714285714285,
718 0.7142857142857143,
719 0.1428571428571428,
720 0.4285714285714285,
721 0.1428571428571428,
722 0.2,
723 0.6,
724 0.2,
725 0.3333333333333333};
726static const double G_TRI_Y286[] = {0.04347826086956522,
727 0.04347826086956522,
728 0.04347826086956522,
729 0.04347826086956522,
730 0.04347826086956522,
731 0.04347826086956522,
732 0.04347826086956522,
733 0.04347826086956522,
734 0.04347826086956522,
735 0.04347826086956522,
736 0.04347826086956522,
737 0.1304347826086956,
738 0.1304347826086956,
739 0.1304347826086956,
740 0.1304347826086956,
741 0.1304347826086956,
742 0.1304347826086956,
743 0.1304347826086956,
744 0.1304347826086956,
745 0.1304347826086956,
746 0.1304347826086956,
747 0.2173913043478261,
748 0.2173913043478261,
749 0.2173913043478261,
750 0.2173913043478261,
751 0.2173913043478261,
752 0.2173913043478261,
753 0.2173913043478261,
754 0.2173913043478261,
755 0.2173913043478261,
756 0.3043478260869565,
757 0.3043478260869565,
758 0.3043478260869565,
759 0.3043478260869565,
760 0.3043478260869565,
761 0.3043478260869565,
762 0.3043478260869565,
763 0.3043478260869565,
764 0.391304347826087,
765 0.391304347826087,
766 0.391304347826087,
767 0.391304347826087,
768 0.391304347826087,
769 0.391304347826087,
770 0.391304347826087,
771 0.4782608695652174,
772 0.4782608695652174,
773 0.4782608695652174,
774 0.4782608695652174,
775 0.4782608695652174,
776 0.4782608695652174,
777 0.5652173913043478,
778 0.5652173913043478,
779 0.5652173913043478,
780 0.5652173913043478,
781 0.5652173913043478,
782 0.6521739130434783,
783 0.6521739130434783,
784 0.6521739130434783,
785 0.6521739130434783,
786 0.7391304347826086,
787 0.7391304347826086,
788 0.7391304347826086,
789 0.8260869565217391,
790 0.8260869565217391,
791 0.9130434782608695,
792 0.04761904761904762,
793 0.04761904761904762,
794 0.04761904761904762,
795 0.04761904761904762,
796 0.04761904761904762,
797 0.04761904761904762,
798 0.04761904761904762,
799 0.04761904761904762,
800 0.04761904761904762,
801 0.04761904761904762,
802 0.1428571428571428,
803 0.1428571428571428,
804 0.1428571428571428,
805 0.1428571428571428,
806 0.1428571428571428,
807 0.1428571428571428,
808 0.1428571428571428,
809 0.1428571428571428,
810 0.1428571428571428,
811 0.2380952380952381,
812 0.2380952380952381,
813 0.2380952380952381,
814 0.2380952380952381,
815 0.2380952380952381,
816 0.2380952380952381,
817 0.2380952380952381,
818 0.2380952380952381,
819 0.3333333333333333,
820 0.3333333333333333,
821 0.3333333333333333,
822 0.3333333333333333,
823 0.3333333333333333,
824 0.3333333333333333,
825 0.3333333333333333,
826 0.4285714285714285,
827 0.4285714285714285,
828 0.4285714285714285,
829 0.4285714285714285,
830 0.4285714285714285,
831 0.4285714285714285,
832 0.5238095238095238,
833 0.5238095238095238,
834 0.5238095238095238,
835 0.5238095238095238,
836 0.5238095238095238,
837 0.6190476190476191,
838 0.6190476190476191,
839 0.6190476190476191,
840 0.6190476190476191,
841 0.7142857142857143,
842 0.7142857142857143,
843 0.7142857142857143,
844 0.8095238095238095,
845 0.8095238095238095,
846 0.9047619047619048,
847 0.05263157894736842,
848 0.05263157894736842,
849 0.05263157894736842,
850 0.05263157894736842,
851 0.05263157894736842,
852 0.05263157894736842,
853 0.05263157894736842,
854 0.05263157894736842,
855 0.05263157894736842,
856 0.1578947368421053,
857 0.1578947368421053,
858 0.1578947368421053,
859 0.1578947368421053,
860 0.1578947368421053,
861 0.1578947368421053,
862 0.1578947368421053,
863 0.1578947368421053,
864 0.2631578947368421,
865 0.2631578947368421,
866 0.2631578947368421,
867 0.2631578947368421,
868 0.2631578947368421,
869 0.2631578947368421,
870 0.2631578947368421,
871 0.3684210526315789,
872 0.3684210526315789,
873 0.3684210526315789,
874 0.3684210526315789,
875 0.3684210526315789,
876 0.3684210526315789,
877 0.4736842105263158,
878 0.4736842105263158,
879 0.4736842105263158,
880 0.4736842105263158,
881 0.4736842105263158,
882 0.5789473684210527,
883 0.5789473684210527,
884 0.5789473684210527,
885 0.5789473684210527,
886 0.6842105263157895,
887 0.6842105263157895,
888 0.6842105263157895,
889 0.7894736842105263,
890 0.7894736842105263,
891 0.8947368421052632,
892 0.05882352941176471,
893 0.05882352941176471,
894 0.05882352941176471,
895 0.05882352941176471,
896 0.05882352941176471,
897 0.05882352941176471,
898 0.05882352941176471,
899 0.05882352941176471,
900 0.1764705882352941,
901 0.1764705882352941,
902 0.1764705882352941,
903 0.1764705882352941,
904 0.1764705882352941,
905 0.1764705882352941,
906 0.1764705882352941,
907 0.2941176470588235,
908 0.2941176470588235,
909 0.2941176470588235,
910 0.2941176470588235,
911 0.2941176470588235,
912 0.2941176470588235,
913 0.4117647058823529,
914 0.4117647058823529,
915 0.4117647058823529,
916 0.4117647058823529,
917 0.4117647058823529,
918 0.5294117647058824,
919 0.5294117647058824,
920 0.5294117647058824,
921 0.5294117647058824,
922 0.6470588235294118,
923 0.6470588235294118,
924 0.6470588235294118,
925 0.7647058823529411,
926 0.7647058823529411,
927 0.8823529411764706,
928 0.06666666666666667,
929 0.06666666666666667,
930 0.06666666666666667,
931 0.06666666666666667,
932 0.06666666666666667,
933 0.06666666666666667,
934 0.06666666666666667,
935 0.2,
936 0.2,
937 0.2,
938 0.2,
939 0.2,
940 0.2,
941 0.3333333333333333,
942 0.3333333333333333,
943 0.3333333333333333,
944 0.3333333333333333,
945 0.3333333333333333,
946 0.4666666666666667,
947 0.4666666666666667,
948 0.4666666666666667,
949 0.4666666666666667,
950 0.6,
951 0.6,
952 0.6,
953 0.7333333333333333,
954 0.7333333333333333,
955 0.8666666666666667,
956 0.07692307692307693,
957 0.07692307692307693,
958 0.07692307692307693,
959 0.07692307692307693,
960 0.07692307692307693,
961 0.07692307692307693,
962 0.2307692307692308,
963 0.2307692307692308,
964 0.2307692307692308,
965 0.2307692307692308,
966 0.2307692307692308,
967 0.3846153846153846,
968 0.3846153846153846,
969 0.3846153846153846,
970 0.3846153846153846,
971 0.5384615384615384,
972 0.5384615384615384,
973 0.5384615384615384,
974 0.6923076923076923,
975 0.6923076923076923,
976 0.8461538461538461,
977 0.09090909090909091,
978 0.09090909090909091,
979 0.09090909090909091,
980 0.09090909090909091,
981 0.09090909090909091,
982 0.2727272727272727,
983 0.2727272727272727,
984 0.2727272727272727,
985 0.2727272727272727,
986 0.4545454545454545,
987 0.4545454545454545,
988 0.4545454545454545,
989 0.6363636363636364,
990 0.6363636363636364,
991 0.8181818181818182,
992 0.1111111111111111,
993 0.1111111111111111,
994 0.1111111111111111,
995 0.1111111111111111,
996 0.3333333333333333,
997 0.3333333333333333,
998 0.3333333333333333,
999 0.5555555555555556,
1000 0.5555555555555556,
1001 0.7777777777777778,
1002 0.1428571428571428,
1003 0.1428571428571428,
1004 0.1428571428571428,
1005 0.4285714285714285,
1006 0.4285714285714285,
1007 0.7142857142857143,
1008 0.2,
1009 0.2,
1010 0.6,
1011 0.3333333333333333};
1012static const double G_TRI_W286[] = {
1013 2.912193380035668, 2.912193380035668, 2.912193380035668,
1014 2.912193380035668, 2.912193380035668, 2.912193380035668,
1015 2.912193380035668, 2.912193380035668, 2.912193380035668,
1016 2.912193380035668, 2.912193380035668, 2.912193380035668,
1017 2.912193380035668, 2.912193380035668, 2.912193380035668,
1018 2.912193380035668, 2.912193380035668, 2.912193380035668,
1019 2.912193380035668, 2.912193380035668, 2.912193380035668,
1020 2.912193380035668, 2.912193380035668, 2.912193380035668,
1021 2.912193380035668, 2.912193380035668, 2.912193380035668,
1022 2.912193380035668, 2.912193380035668, 2.912193380035668,
1023 2.912193380035668, 2.912193380035668, 2.912193380035668,
1024 2.912193380035668, 2.912193380035668, 2.912193380035668,
1025 2.912193380035668, 2.912193380035668, 2.912193380035668,
1026 2.912193380035668, 2.912193380035668, 2.912193380035668,
1027 2.912193380035668, 2.912193380035668, 2.912193380035668,
1028 2.912193380035668, 2.912193380035668, 2.912193380035668,
1029 2.912193380035668, 2.912193380035668, 2.912193380035668,
1030 2.912193380035668, 2.912193380035668, 2.912193380035668,
1031 2.912193380035668, 2.912193380035668, 2.912193380035668,
1032 2.912193380035668, 2.912193380035668, 2.912193380035668,
1033 2.912193380035668, 2.912193380035668, 2.912193380035668,
1034 2.912193380035668, 2.912193380035668, 2.912193380035668,
1035 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1036 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1037 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1038 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1039 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1040 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1041 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1042 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1043 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1044 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1045 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1046 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1047 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1048 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1049 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1050 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1051 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1052 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1053 -9.914451197589852, 13.33158527957992, 13.33158527957992,
1054 13.33158527957992, 13.33158527957992, 13.33158527957992,
1055 13.33158527957992, 13.33158527957992, 13.33158527957992,
1056 13.33158527957992, 13.33158527957992, 13.33158527957992,
1057 13.33158527957992, 13.33158527957992, 13.33158527957992,
1058 13.33158527957992, 13.33158527957992, 13.33158527957992,
1059 13.33158527957992, 13.33158527957992, 13.33158527957992,
1060 13.33158527957992, 13.33158527957992, 13.33158527957992,
1061 13.33158527957992, 13.33158527957992, 13.33158527957992,
1062 13.33158527957992, 13.33158527957992, 13.33158527957992,
1063 13.33158527957992, 13.33158527957992, 13.33158527957992,
1064 13.33158527957992, 13.33158527957992, 13.33158527957992,
1065 13.33158527957992, 13.33158527957992, 13.33158527957992,
1066 13.33158527957992, 13.33158527957992, 13.33158527957992,
1067 13.33158527957992, 13.33158527957992, 13.33158527957992,
1068 13.33158527957992, -9.027792408986382, -9.027792408986382,
1069 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1070 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1071 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1072 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1073 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1074 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1075 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1076 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1077 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1078 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1079 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1080 -9.027792408986382, 3.258672079964582, 3.258672079964582,
1081 3.258672079964582, 3.258672079964582, 3.258672079964582,
1082 3.258672079964582, 3.258672079964582, 3.258672079964582,
1083 3.258672079964582, 3.258672079964582, 3.258672079964582,
1084 3.258672079964582, 3.258672079964582, 3.258672079964582,
1085 3.258672079964582, 3.258672079964582, 3.258672079964582,
1086 3.258672079964582, 3.258672079964582, 3.258672079964582,
1087 3.258672079964582, 3.258672079964582, 3.258672079964582,
1088 3.258672079964582, 3.258672079964582, 3.258672079964582,
1089 3.258672079964582, 3.258672079964582, -0.6133639040302452,
1090 -0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
1091 -0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
1092 -0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
1093 -0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
1094 -0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
1095 -0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
1096 -0.6133639040302452, -0.6133639040302452, 0.05511571669513555,
1097 0.05511571669513555, 0.05511571669513555, 0.05511571669513555,
1098 0.05511571669513555, 0.05511571669513555, 0.05511571669513555,
1099 0.05511571669513555, 0.05511571669513555, 0.05511571669513555,
1100 0.05511571669513555, 0.05511571669513555, 0.05511571669513555,
1101 0.05511571669513555, 0.05511571669513555, -0.001979122382447095,
1102 -0.001979122382447095, -0.001979122382447095, -0.001979122382447095,
1103 -0.001979122382447095, -0.001979122382447095, -0.001979122382447095,
1104 -0.001979122382447095, -0.001979122382447095, -0.001979122382447095,
1105 2.02054621415273e-05, 2.02054621415273e-05, 2.02054621415273e-05,
1106 2.02054621415273e-05, 2.02054621415273e-05, 2.02054621415273e-05,
1107 -2.874940020535803e-08, -2.874940020535803e-08, -2.874940020535803e-08,
1108 8.829438425435718e-13};
1109
1110// TET
1111static const double G_TET_X1[] = {0.25};
1112static const double G_TET_Y1[] = {0.25};
1113static const double G_TET_Z1[] = {0.25};
1114static const double G_TET_W1[] = {1.};
1115static const double G_TET_X4[] = {0.1757281246520584, 0.2445310270213291,
1116 0.5556470949048655, 0.0240937534217468};
1117static const double G_TET_Y4[] = {0.5656137776620919, 0.0501800797762026,
1118 0.1487681308666864, 0.2354380116950194};
1119static const double G_TET_Z4[] = {0.2180665126782654, 0.5635595064952189,
1120 0.0350112499848832, 0.1833627308416330};
1121static const double G_TET_W4[] = {0.25, 0.25, 0.25, 0.25};
1122static const double G_TET_X5[] = {0.25000000000000000, 0.50000000000000000,
1123 0.16666666666666667, 0.16666666666666667,
1124 0.16666666666666667};
1125static const double G_TET_Y5[] = {0.25000000000000000, 0.16666666666666667,
1126 0.50000000000000000, 0.16666666666666667,
1127 0.16666666666666667};
1128static const double G_TET_Z5[] = {0.25000000000000000, 0.16666666666666667,
1129 0.16666666666666667, 0.50000000000000000,
1130 0.16666666666666667};
1131static const double G_TET_W5[] = {-0.80000000000000000, 0.45000000000000000,
1132 0.45000000000000000, 0.45000000000000000,
1133 0.45000000000000000};
1134static const double G_TET_X10[] = {0.5684305841968444, 0.1438564719343852,
1135 0.1438564719343852, 0.1438564719343852,
1136 0.0000000000000000, 0.5000000000000000,
1137 0.5000000000000000, 0.5000000000000000,
1138 0.0000000000000000, 0.0000000000000000};
1139static const double G_TET_Y10[] = {0.1438564719343852, 0.1438564719343852,
1140 0.1438564719343852, 0.5684305841968444,
1141 0.5000000000000000, 0.0000000000000000,
1142 0.5000000000000000, 0.0000000000000000,
1143 0.5000000000000000, 0.0000000000000000};
1144static const double G_TET_Z10[] = {0.1438564719343852, 0.1438564719343852,
1145 0.5684305841968444, 0.1438564719343852,
1146 0.5000000000000000, 0.5000000000000000,
1147 0.0000000000000000, 0.0000000000000000,
1148 0.0000000000000000, 0.5000000000000000};
1149static const double G_TET_W10[] = {0.2177650698804054, 0.2177650698804054,
1150 0.2177650698804054, 0.2177650698804054,
1151 0.0214899534130631, 0.0214899534130631,
1152 0.0214899534130631, 0.0214899534130631,
1153 0.0214899534130631, 0.0214899534130631};
1154
1155static const double G_TET_X45[] = {
1156 0.2500000000000000, 0.6175871903000830, 0.1274709365666390,
1157 0.1274709365666390, 0.1274709365666390, 0.9037635088221031,
1158 0.0320788303926323, 0.0320788303926323, 0.0320788303926323,
1159 0.4502229043567190, 0.0497770956432810, 0.0497770956432810,
1160 0.0497770956432810, 0.4502229043567190, 0.4502229043567190,
1161 0.3162695526014501, 0.1837304473985499, 0.1837304473985499,
1162 0.1837304473985499, 0.3162695526014501, 0.3162695526014501,
1163 0.0229177878448171, 0.2319010893971509, 0.2319010893971509,
1164 0.5132800333608811, 0.2319010893971509, 0.2319010893971509,
1165 0.2319010893971509, 0.0229177878448171, 0.5132800333608811,
1166 0.2319010893971509, 0.0229177878448171, 0.5132800333608811,
1167 0.7303134278075384, 0.0379700484718286, 0.0379700484718286,
1168 0.1937464752488044, 0.0379700484718286, 0.0379700484718286,
1169 0.0379700484718286, 0.7303134278075384, 0.1937464752488044,
1170 0.0379700484718286, 0.7303134278075384, 0.1937464752488044};
1171static const double G_TET_Y45[] = {
1172 0.2500000000000000, 0.1274709365666390, 0.1274709365666390,
1173 0.1274709365666390, 0.6175871903000830, 0.0320788303926323,
1174 0.0320788303926323, 0.0320788303926323, 0.9037635088221031,
1175 0.0497770956432810, 0.4502229043567190, 0.0497770956432810,
1176 0.4502229043567190, 0.0497770956432810, 0.4502229043567190,
1177 0.1837304473985499, 0.3162695526014501, 0.1837304473985499,
1178 0.3162695526014501, 0.1837304473985499, 0.3162695526014501,
1179 0.2319010893971509, 0.0229177878448171, 0.2319010893971509,
1180 0.2319010893971509, 0.5132800333608811, 0.2319010893971509,
1181 0.0229177878448171, 0.5132800333608811, 0.2319010893971509,
1182 0.5132800333608811, 0.2319010893971509, 0.0229177878448171,
1183 0.0379700484718286, 0.7303134278075384, 0.0379700484718286,
1184 0.0379700484718286, 0.1937464752488044, 0.0379700484718286,
1185 0.7303134278075384, 0.1937464752488044, 0.0379700484718286,
1186 0.1937464752488044, 0.0379700484718286, 0.7303134278075384};
1187static const double G_TET_Z45[] = {
1188 0.2500000000000000, 0.1274709365666390, 0.1274709365666390,
1189 0.6175871903000830, 0.1274709365666390, 0.0320788303926323,
1190 0.0320788303926323, 0.9037635088221031, 0.0320788303926323,
1191 0.0497770956432810, 0.0497770956432810, 0.4502229043567190,
1192 0.4502229043567190, 0.4502229043567190, 0.0497770956432810,
1193 0.1837304473985499, 0.1837304473985499, 0.3162695526014501,
1194 0.3162695526014501, 0.3162695526014501, 0.1837304473985499,
1195 0.2319010893971509, 0.2319010893971509, 0.0229177878448171,
1196 0.2319010893971509, 0.2319010893971509, 0.5132800333608811,
1197 0.5132800333608811, 0.2319010893971509, 0.0229177878448171,
1198 0.0229177878448171, 0.5132800333608811, 0.2319010893971509,
1199 0.0379700484718286, 0.0379700484718286, 0.7303134278075384,
1200 0.0379700484718286, 0.0379700484718286, 0.1937464752488044,
1201 0.1937464752488044, 0.0379700484718286, 0.7303134278075384,
1202 0.7303134278075384, 0.1937464752488044, 0.0379700484718286};
1203static const double G_TET_W45[] = {
1204 -0.2359620398477557, 0.0244878963560562, 0.0244878963560562,
1205 0.0244878963560562, 0.0244878963560562, 0.0039485206398261,
1206 0.0039485206398261, 0.0039485206398261, 0.0039485206398261,
1207 0.0263055529507371, 0.0263055529507371, 0.0263055529507371,
1208 0.0263055529507371, 0.0263055529507371, 0.0263055529507371,
1209 0.0829803830550589, 0.0829803830550589, 0.0829803830550589,
1210 0.0829803830550589, 0.0829803830550589, 0.0829803830550589,
1211 0.0254426245481023, 0.0254426245481023, 0.0254426245481023,
1212 0.0254426245481023, 0.0254426245481023, 0.0254426245481023,
1213 0.0254426245481023, 0.0254426245481023, 0.0254426245481023,
1214 0.0254426245481023, 0.0254426245481023, 0.0254426245481023,
1215 0.0134324384376852, 0.0134324384376852, 0.0134324384376852,
1216 0.0134324384376852, 0.0134324384376852, 0.0134324384376852,
1217 0.0134324384376852, 0.0134324384376852, 0.0134324384376852,
1218 0.0134324384376852, 0.0134324384376852, 0.0134324384376852};
1219static const double NC_TET_X84[] = {
1220 0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
1221 0.7000000000000000, 0.1000000000000000, 0.1000000000000000,
1222 0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
1223 0.1000000000000000, 0.6000000000000000, 0.6000000000000000,
1224 0.6000000000000000, 0.2000000000000000, 0.2000000000000000,
1225 0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
1226 0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
1227 0.1000000000000000, 0.5000000000000000, 0.5000000000000000,
1228 0.5000000000000000, 0.3000000000000000, 0.3000000000000000,
1229 0.3000000000000000, 0.2000000000000000, 0.2000000000000000,
1230 0.2000000000000000, 0.2000000000000000, 0.2000000000000000,
1231 0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
1232 0.1000000000000000, 0.5000000000000000, 0.5000000000000000,
1233 0.5000000000000000, 0.4000000000000000, 0.4000000000000000,
1234 0.4000000000000000, 0.1000000000000000, 0.1000000000000000,
1235 0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
1236 0.4000000000000000, 0.4000000000000000, 0.4000000000000000,
1237 0.4000000000000000, 0.3000000000000000, 0.3000000000000000,
1238 0.3000000000000000, 0.3000000000000000, 0.3000000000000000,
1239 0.3000000000000000, 0.2000000000000000, 0.2000000000000000,
1240 0.2000000000000000, 0.2000000000000000, 0.2000000000000000,
1241 0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
1242 0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
1243 0.1000000000000000, 0.2000000000000000, 0.2000000000000000,
1244 0.2000000000000000, 0.4000000000000000, 0.3000000000000000,
1245 0.3000000000000000, 0.3000000000000000, 0.1000000000000000,
1246 0.3000000000000000, 0.3000000000000000, 0.3000000000000000,
1247 0.2000000000000000, 0.2000000000000000, 0.2000000000000000};
1248static const double NC_TET_Y84[] = {
1249 0.1000000000000000, 0.1000000000000000, 0.7000000000000000,
1250 0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
1251 0.6000000000000000, 0.6000000000000000, 0.2000000000000000,
1252 0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
1253 0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
1254 0.6000000000000000, 0.1000000000000000, 0.1000000000000000,
1255 0.5000000000000000, 0.5000000000000000, 0.3000000000000000,
1256 0.3000000000000000, 0.1000000000000000, 0.1000000000000000,
1257 0.3000000000000000, 0.1000000000000000, 0.1000000000000000,
1258 0.5000000000000000, 0.2000000000000000, 0.2000000000000000,
1259 0.1000000000000000, 0.1000000000000000, 0.5000000000000000,
1260 0.5000000000000000, 0.2000000000000000, 0.2000000000000000,
1261 0.5000000000000000, 0.2000000000000000, 0.2000000000000000,
1262 0.1000000000000000, 0.4000000000000000, 0.1000000000000000,
1263 0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
1264 0.1000000000000000, 0.3000000000000000, 0.3000000000000000,
1265 0.2000000000000000, 0.2000000000000000, 0.1000000000000000,
1266 0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
1267 0.2000000000000000, 0.2000000000000000, 0.1000000000000000,
1268 0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
1269 0.3000000000000000, 0.3000000000000000, 0.1000000000000000,
1270 0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
1271 0.3000000000000000, 0.3000000000000000, 0.2000000000000000,
1272 0.2000000000000000, 0.2000000000000000, 0.2000000000000000,
1273 0.4000000000000000, 0.2000000000000000, 0.3000000000000000,
1274 0.3000000000000000, 0.1000000000000000, 0.3000000000000000,
1275 0.3000000000000000, 0.2000000000000000, 0.2000000000000000,
1276 0.3000000000000000, 0.3000000000000000, 0.2000000000000000};
1277static const double NC_TET_Z84[] = {
1278 0.1000000000000000, 0.7000000000000000, 0.1000000000000000,
1279 0.1000000000000000, 0.6000000000000000, 0.2000000000000000,
1280 0.1000000000000000, 0.2000000000000000, 0.1000000000000000,
1281 0.6000000000000000, 0.1000000000000000, 0.2000000000000000,
1282 0.1000000000000000, 0.1000000000000000, 0.6000000000000000,
1283 0.1000000000000000, 0.5000000000000000, 0.3000000000000000,
1284 0.1000000000000000, 0.3000000000000000, 0.1000000000000000,
1285 0.5000000000000000, 0.1000000000000000, 0.3000000000000000,
1286 0.1000000000000000, 0.1000000000000000, 0.5000000000000000,
1287 0.1000000000000000, 0.1000000000000000, 0.5000000000000000,
1288 0.2000000000000000, 0.5000000000000000, 0.2000000000000000,
1289 0.1000000000000000, 0.2000000000000000, 0.5000000000000000,
1290 0.2000000000000000, 0.2000000000000000, 0.1000000000000000,
1291 0.2000000000000000, 0.1000000000000000, 0.4000000000000000,
1292 0.1000000000000000, 0.4000000000000000, 0.1000000000000000,
1293 0.4000000000000000, 0.2000000000000000, 0.1000000000000000,
1294 0.3000000000000000, 0.1000000000000000, 0.3000000000000000,
1295 0.2000000000000000, 0.2000000000000000, 0.1000000000000000,
1296 0.4000000000000000, 0.1000000000000000, 0.4000000000000000,
1297 0.2000000000000000, 0.3000000000000000, 0.1000000000000000,
1298 0.4000000000000000, 0.1000000000000000, 0.4000000000000000,
1299 0.3000000000000000, 0.3000000000000000, 0.2000000000000000,
1300 0.4000000000000000, 0.2000000000000000, 0.4000000000000000,
1301 0.3000000000000000, 0.2000000000000000, 0.4000000000000000,
1302 0.2000000000000000, 0.2000000000000000, 0.3000000000000000,
1303 0.1000000000000000, 0.3000000000000000, 0.3000000000000000,
1304 0.2000000000000000, 0.3000000000000000, 0.2000000000000000,
1305 0.3000000000000000, 0.2000000000000000, 0.3000000000000000};
1306static const double NC_TET_W84[] = {
1307 0.2843915343915344, 0.2843915343915344, 0.2843915343915344,
1308 0.2843915343915344, -0.3882275132275133, -0.3882275132275133,
1309 -0.3882275132275133, -0.3882275132275133, -0.3882275132275133,
1310 -0.3882275132275133, -0.3882275132275133, -0.3882275132275133,
1311 -0.3882275132275133, -0.3882275132275133, -0.3882275132275133,
1312 -0.3882275132275133, 0.8776455026455027, 0.8776455026455027,
1313 0.8776455026455027, 0.8776455026455027, 0.8776455026455027,
1314 0.8776455026455027, 0.8776455026455027, 0.8776455026455027,
1315 0.8776455026455027, 0.8776455026455027, 0.8776455026455027,
1316 0.8776455026455027, 0.1236772486772487, 0.1236772486772487,
1317 0.1236772486772487, 0.1236772486772487, 0.1236772486772487,
1318 0.1236772486772487, 0.1236772486772487, 0.1236772486772487,
1319 0.1236772486772487, 0.1236772486772487, 0.1236772486772487,
1320 0.1236772486772487, -0.8584656084656085, -0.8584656084656085,
1321 -0.8584656084656085, -0.8584656084656085, -0.8584656084656085,
1322 -0.8584656084656085, -0.2632275132275133, -0.2632275132275133,
1323 -0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
1324 -0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
1325 -0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
1326 -0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
1327 -0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
1328 -0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
1329 -0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
1330 -0.2632275132275133, 0.0145502645502645, 0.0145502645502645,
1331 0.0145502645502645, 0.0145502645502645, 1.0165343915343916,
1332 1.0165343915343916, 1.0165343915343916, 1.0165343915343916,
1333 -0.0251322751322751, -0.0251322751322751, -0.0251322751322751,
1334 -0.0251322751322751, -0.0251322751322751, -0.0251322751322751};
1335
1336#ifdef __cplusplus
1337}
1338#endif
1339
1340#endif
MatrixDouble invJac
static const double eps
constexpr int order
double ShapeVolumeMBTETQ(const double *diffN, const double *coords, int G_DIM, double *G_TET_W)
Definition fem_tools.c:993
PetscErrorCode MakeComplexTensor(double *reA, double *imA, __CLPK_doublecomplex *xA)
Definition fem_tools.c:487
static const double G_TRI_Y28[]
Definition fem_tools.h:388
void ShapeDiffMBTRIinvJ(double *diffN, double *invJac, double *diffNinvJac)
calculate derivatives of shape functions in space
static const double G_TRI_W3[]
Definition fem_tools.h:317
PetscErrorCode ShapeDiffMBTET(double *diffN)
calculate derivatives of shape functions
Definition fem_tools.c:319
static const double G_TRI_W13[]
Definition fem_tools.h:347
static const double G_TET_X10[]
Definition fem_tools.h:1135
PetscErrorCode ShapeJacMBTET(double *diffN, const double *coords, double *jac)
calculate jacobian
Definition fem_tools.c:288
static const double G_TRI_W19[]
Definition fem_tools.h:365
static const double G_TRI_Y3[]
Definition fem_tools.h:316
PetscErrorCode GradientOfDeformation(double *diffN, double *dofs, double *F)
calculate gradient of deformation
Definition fem_tools.c:425
static const double G_TRI_W37[]
Definition fem_tools.h:430
void print_mat_sym_upper(double *M, int m, int n)
print upper part of the symmetric matrix
PetscErrorCode Grundmann_Moeller_integration_points_2D_TRI(int rule, double *G_TRI_X, double *G_TRI_Y, double *G_TRI_W)
Definition fem_tools.c:98
static const double G_TRI_Y1[]
Definition fem_tools.h:313
static const double G_TET_X1[]
Definition fem_tools.h:1112
static const double G_TRI_X28[]
Definition fem_tools.h:377
static const double NC_TET_Y84[]
Definition fem_tools.h:1249
static const double G_TRI_W4[]
Definition fem_tools.h:325
PetscErrorCode ShapeMBTET_inverse(double *N, double *diffN, const double *elem_coords, const double *glob_coords, double *loc_coords)
calculate local coordinates for given global coordinates
Definition fem_tools.c:335
static const double G_TRI_Y19[]
Definition fem_tools.h:359
PetscErrorCode ShapeDiffMBTRIQ(double *diffN, const double *X, const double *Y, const int G_DIM)
Definition fem_tools.c:795
static const double G_TET_W4[]
Definition fem_tools.h:1122
PetscErrorCode ShapeFaceDiffNormalMBTRI(double *diffN, const double *coords, double *diff_normal)
calculate derivative of normal in respect to nodal positions
Definition fem_tools.c:237
PetscErrorCode ShapeFaceBaseMBTRI(double *diffN, const double *coords, double *normal, double *s1, double *s2)
Definition fem_tools.c:204
static const double G_TET_W45[]
Definition fem_tools.h:1204
PetscErrorCode ShapeFaceNormalMBTRI_complex(double *diffN, __CLPK_doublecomplex *xcoords, __CLPK_doublecomplex *xnormal)
Definition fem_tools.c:452
void ShapeJacMBTRI(double *diffN, const double *coords, double *Jac)
calculate jacobioan
PetscErrorCode ShapeFaceNormalMBTRI(double *diffN, const double *coords, double *normal)
Definition fem_tools.c:229
static const double NC_TET_X84[]
Definition fem_tools.h:1220
static const double G_TRI_Y37[]
Definition fem_tools.h:419
PetscErrorCode ShapeDiffMBTETQ(double *diffN, const double x, const double y, const double z)
Definition fem_tools.c:873
static const double G_TET_W1[]
Definition fem_tools.h:1115
PetscErrorCode Grundmann_Moeller_integration_points_3D_TET(int rule, double *G_TET_X, double *G_TET_Y, double *G_TET_Z, double *G_TET_W)
Definition fem_tools.c:143
PetscErrorCode ShapeInvJacVolume(double *jac)
Definition fem_tools.c:39
static const double G_TRI_Y286[]
Definition fem_tools.h:727
static const double G_TET_Y1[]
Definition fem_tools.h:1113
PetscErrorCode ShapeDiffMBTETinvJ(double *diffN, double *invJac, double *diffNinvJac)
calculate shape functions derivatives in space
Definition fem_tools.c:415
static const double G_TRI_W28[]
Definition fem_tools.h:396
static const double G_TET_W10[]
Definition fem_tools.h:1150
static const double G_TET_Z45[]
Definition fem_tools.h:1188
PetscErrorCode ShapeDiffMBTRI(double *diffN)
calculate derivatives of shape functions
Definition fem_tools.c:194
static const double G_TRI_X19[]
Definition fem_tools.h:353
static const double G_TET_Z4[]
Definition fem_tools.h:1120
static const double G_TRI_X4[]
Definition fem_tools.h:319
PetscErrorCode ShapeMBTET(double *N, const double *G_X, const double *G_Y, const double *G_Z, int DIM)
calculate shape functions
Definition fem_tools.c:306
void print_mat(double *M, int m, int n)
print matric M
PetscErrorCode ShapeDiffMBEDGE(double *diffN)
Definition fem_tools.c:771
static const double G_TRI_W1[]
Definition fem_tools.h:314
static const double G_TRI_Y4[]
Definition fem_tools.h:322
PetscErrorCode ShapeMBTETQ_GAUSS(double *N, const double *X, const double *Y, const double *Z, const int G_DIM)
Definition fem_tools.c:908
static const double G_TET_X45[]
Definition fem_tools.h:1156
PetscErrorCode DeterminantComplexGradient(__CLPK_doublecomplex *xF, __CLPK_doublecomplex *det_xF)
Definition fem_tools.c:526
PetscErrorCode Spin(double *spinOmega, double *vecOmega)
calculate spin matrix from vector
Definition fem_tools.c:546
void ShapeDiffMBTETinvJ_complex(double *diffN, __CLPK_doublecomplex *invJac, __CLPK_doublecomplex *diffNinvJac, enum CBLAS_TRANSPOSE Trans)
Definition fem_tools.c:437
PetscErrorCode Grundmann_Moeller_integration_points_1D_EDGE(int rule, double *G_TRI_X, double *G_TRI_W)
Compute weights and integration points for edge using Grundmann_Moeller rule.
Definition fem_tools.c:55
static const double G_TET_Z1[]
Definition fem_tools.h:1114
static const double G_TET_Y4[]
Definition fem_tools.h:1118
static const double G_TET_X4[]
Definition fem_tools.h:1116
PetscErrorCode InvertComplexGradient(__CLPK_doublecomplex *xF)
Definition fem_tools.c:499
static const double NC_TET_Z84[]
Definition fem_tools.h:1278
PetscErrorCode ShapeMBTRIQ(double *N, const double *X, const double *Y, const int G_DIM)
Definition fem_tools.c:780
PetscErrorCode ShapeMBTETQ(double *N, const double x, const double y, const double z)
Definition fem_tools.c:858
static const double G_TET_Y45[]
Definition fem_tools.h:1172
static const double NC_TET_W84[]
Definition fem_tools.h:1307
static const double G_TET_Z10[]
Definition fem_tools.h:1145
PetscErrorCode ShapeMBEDGE(double *N, const double *G_X, int DIM)
Definition fem_tools.c:761
double ShapeVolumeMBTET(double *diffN, const double *coords)
calculate TET volume
Definition fem_tools.c:298
PetscErrorCode ShapeMBTETQ_inverse(double *N, double *diffN, const double *elem_coords, const double *glob_coords, double *loc_coords, const double eps)
Definition fem_tools.c:1007
PetscErrorCode make_complex_matrix(double *reA, double *imA, __CLPK_doublecomplex *xA)
Compose complex matrix (3x3) from two real matrices.
Definition fem_tools.c:557
static const double G_TET_Z5[]
Definition fem_tools.h:1129
PetscErrorCode ShapeDiffMBTETQ_GAUSS(double *diffN, const double *X, const double *Y, const double *Z, const int G_DIM)
Definition fem_tools.c:927
PetscErrorCode ShapeMBTETQ_detJac_at_Gauss_Points(double *detJac_at_Gauss_Points, const double *diffN, const double *coords, int G_DIM)
Definition fem_tools.c:979
static const double G_TRI_X13[]
Definition fem_tools.h:337
double ShapeDetJacVolume(double *jac)
determined of jacobian
Definition fem_tools.c:22
static const double G_TET_X5[]
Definition fem_tools.h:1123
static const double G_TET_W5[]
Definition fem_tools.h:1132
static const double G_TRI_X37[]
Definition fem_tools.h:408
PetscErrorCode Base_scale(__CLPK_doublecomplex *xnormal, __CLPK_doublecomplex *xs1, __CLPK_doublecomplex *xs2)
Definition fem_tools.c:741
static const double G_TRI_X286[]
Definition fem_tools.h:441
PetscErrorCode ShapeJacMBTETQ(const double *diffN, const double *coords, double *Jac)
Definition fem_tools.c:967
PetscErrorCode ShapeMBTRI_inverse(double *N, double *diffN, const double *elem_coords, const double *glob_coords, double *loc_coords)
calculate local coordinates of triangle element for given global coordinates in 2D (Assume e....
Definition fem_tools.c:380
static const double G_TET_Y5[]
Definition fem_tools.h:1126
static const double G_TRI_W286[]
Definition fem_tools.h:1013
static const double G_TRI_X7[]
Definition fem_tools.h:328
void print_mat_complex(__CLPK_doublecomplex *M, int m, int n)
priint complex matrix
PetscErrorCode ShapeMBTRI(double *N, const double *X, const double *Y, const int G_DIM)
calculate shape functions on triangle
Definition fem_tools.c:182
PetscErrorCode Normal_hierarchical(int order_approx, int *order_edge_approx, int order, int *order_edge, double *diffN, double *diffN_face, double *diffN_edge[], double *dofs, double *dofs_edge[], double *dofs_face, double *idofs, double *idofs_edge[], double *idofs_face, __CLPK_doublecomplex *xnormal, __CLPK_doublecomplex *s1, __CLPK_doublecomplex *s2, int gg)
Complex normal.
Definition fem_tools.c:569
static const double G_TRI_Y7[]
Definition fem_tools.h:331
static const double G_TRI_X3[]
Definition fem_tools.h:315
static const double G_TRI_Y13[]
Definition fem_tools.h:342
static const double G_TRI_X1[]
Definition fem_tools.h:312
static const double G_TRI_W7[]
Definition fem_tools.h:334
static const double G_TET_Y10[]
Definition fem_tools.h:1140
@ F
const double n
refractive index of diffusive medium
FTensor::Index< 'm', 3 > m
const int N
Definition speed_test.cpp:3

◆ diffN_MBEDGE0

#define diffN_MBEDGE0   (-1.)

derivative of edge shape function

Definition at line 107 of file fem_tools.h.

◆ diffN_MBEDGE1

#define diffN_MBEDGE1   (1.)

derivative of edge shape function

Definition at line 108 of file fem_tools.h.

◆ diffN_MBHEX0x

#define diffN_MBHEX0x (   y,
 
)    (diffN_MBQUAD0x(y) * (1 - z))

Definition at line 79 of file fem_tools.h.

◆ diffN_MBHEX0y

#define diffN_MBHEX0y (   x,
 
)    (diffN_MBQUAD0y(x) * (1 - z))

Definition at line 87 of file fem_tools.h.

◆ diffN_MBHEX0z

#define diffN_MBHEX0z (   x,
 
)    (-N_MBQUAD0(x, y))

Definition at line 95 of file fem_tools.h.

◆ diffN_MBHEX1x

#define diffN_MBHEX1x (   y,
 
)    (diffN_MBQUAD1x(y) * (1 - z))

Definition at line 80 of file fem_tools.h.

◆ diffN_MBHEX1y

#define diffN_MBHEX1y (   x,
 
)    (diffN_MBQUAD1y(x) * (1 - z))

Definition at line 88 of file fem_tools.h.

◆ diffN_MBHEX1z

#define diffN_MBHEX1z (   x,
 
)    (-N_MBQUAD1(x, y))

Definition at line 96 of file fem_tools.h.

◆ diffN_MBHEX2x

#define diffN_MBHEX2x (   y,
 
)    (diffN_MBQUAD2x(y) * (1 - z))

Definition at line 81 of file fem_tools.h.

◆ diffN_MBHEX2y

#define diffN_MBHEX2y (   x,
 
)    (diffN_MBQUAD2y(x) * (1 - z))

Definition at line 89 of file fem_tools.h.

◆ diffN_MBHEX2z

#define diffN_MBHEX2z (   x,
 
)    (-N_MBQUAD2(x, y))

Definition at line 97 of file fem_tools.h.

◆ diffN_MBHEX3x

#define diffN_MBHEX3x (   y,
 
)    (diffN_MBQUAD3x(y) * (1 - z))

Definition at line 82 of file fem_tools.h.

◆ diffN_MBHEX3y

#define diffN_MBHEX3y (   x,
 
)    (diffN_MBQUAD3y(x) * (1 - z))

Definition at line 90 of file fem_tools.h.

◆ diffN_MBHEX3z

#define diffN_MBHEX3z (   x,
 
)    (-N_MBQUAD3(x, y))

Definition at line 98 of file fem_tools.h.

◆ diffN_MBHEX4x

#define diffN_MBHEX4x (   y,
 
)    (diffN_MBQUAD0x(y) * (z))

Definition at line 83 of file fem_tools.h.

◆ diffN_MBHEX4y

#define diffN_MBHEX4y (   x,
 
)    (diffN_MBQUAD0y(x) * (z))

Definition at line 91 of file fem_tools.h.

◆ diffN_MBHEX4z

#define diffN_MBHEX4z (   x,
 
)    (N_MBQUAD0(x, y))

Definition at line 99 of file fem_tools.h.

◆ diffN_MBHEX5x

#define diffN_MBHEX5x (   y,
 
)    (diffN_MBQUAD1x(y) * (z))

Definition at line 84 of file fem_tools.h.

◆ diffN_MBHEX5y

#define diffN_MBHEX5y (   x,
 
)    (diffN_MBQUAD1y(x) * (z))

Definition at line 92 of file fem_tools.h.

◆ diffN_MBHEX5z

#define diffN_MBHEX5z (   x,
 
)    (N_MBQUAD1(x, y))

Definition at line 100 of file fem_tools.h.

◆ diffN_MBHEX6x

#define diffN_MBHEX6x (   y,
 
)    (diffN_MBQUAD2x(y) * (z))

Definition at line 85 of file fem_tools.h.

◆ diffN_MBHEX6y

#define diffN_MBHEX6y (   x,
 
)    (diffN_MBQUAD2y(x) * (z))

Definition at line 93 of file fem_tools.h.

◆ diffN_MBHEX6z

#define diffN_MBHEX6z (   x,
 
)    (N_MBQUAD2(x, y))

Definition at line 101 of file fem_tools.h.

◆ diffN_MBHEX7x

#define diffN_MBHEX7x (   y,
 
)    (diffN_MBQUAD3x(y) * (z))

Definition at line 86 of file fem_tools.h.

◆ diffN_MBHEX7y

#define diffN_MBHEX7y (   x,
 
)    (diffN_MBQUAD3y(x) * (z))

Definition at line 94 of file fem_tools.h.

◆ diffN_MBHEX7z

#define diffN_MBHEX7z (   x,
 
)    (N_MBQUAD3(x, y))

Definition at line 102 of file fem_tools.h.

◆ diffN_MBQUAD0x

#define diffN_MBQUAD0x (   y)    (-(1. - y))
Examples
edge_and_bubble_shape_functions_on_quad.cpp.

Definition at line 61 of file fem_tools.h.

◆ diffN_MBQUAD0y

#define diffN_MBQUAD0y (   x)    (-(1. - x))
Examples
edge_and_bubble_shape_functions_on_quad.cpp.

Definition at line 62 of file fem_tools.h.

◆ diffN_MBQUAD1x

#define diffN_MBQUAD1x (   y)    ((1. - y))
Examples
edge_and_bubble_shape_functions_on_quad.cpp.

Definition at line 63 of file fem_tools.h.

◆ diffN_MBQUAD1y

#define diffN_MBQUAD1y (   x)    (-x)
Examples
edge_and_bubble_shape_functions_on_quad.cpp.

Definition at line 64 of file fem_tools.h.

◆ diffN_MBQUAD2x

#define diffN_MBQUAD2x (   y)    (y)
Examples
edge_and_bubble_shape_functions_on_quad.cpp.

Definition at line 65 of file fem_tools.h.

◆ diffN_MBQUAD2y

#define diffN_MBQUAD2y (   x)    (x)
Examples
edge_and_bubble_shape_functions_on_quad.cpp.

Definition at line 66 of file fem_tools.h.

◆ diffN_MBQUAD3x

#define diffN_MBQUAD3x (   y)    (-y)
Examples
edge_and_bubble_shape_functions_on_quad.cpp.

Definition at line 67 of file fem_tools.h.

◆ diffN_MBQUAD3y

#define diffN_MBQUAD3y (   x)    ((1. - x))
Examples
edge_and_bubble_shape_functions_on_quad.cpp.

Definition at line 68 of file fem_tools.h.

◆ diffN_MBTET0x

#define diffN_MBTET0x   (-1.)

derivative of tetrahedral shape function

Definition at line 32 of file fem_tools.h.

◆ diffN_MBTET0y

#define diffN_MBTET0y   (-1.)

derivative of tetrahedral shape function

Definition at line 33 of file fem_tools.h.

◆ diffN_MBTET0z

#define diffN_MBTET0z   (-1.)

derivative of tetrahedral shape function

Definition at line 34 of file fem_tools.h.

◆ diffN_MBTET1x

#define diffN_MBTET1x   (1.)

derivative of tetrahedral shape function

Definition at line 35 of file fem_tools.h.

◆ diffN_MBTET1y

#define diffN_MBTET1y   (0.)

derivative of tetrahedral shape function

Definition at line 36 of file fem_tools.h.

◆ diffN_MBTET1z

#define diffN_MBTET1z   (0.)

derivative of tetrahedral shape function

Definition at line 37 of file fem_tools.h.

◆ diffN_MBTET2x

#define diffN_MBTET2x   (0.)

derivative of tetrahedral shape function

Definition at line 38 of file fem_tools.h.

◆ diffN_MBTET2y

#define diffN_MBTET2y   (1.)

derivative of tetrahedral shape function

Definition at line 39 of file fem_tools.h.

◆ diffN_MBTET2z

#define diffN_MBTET2z   (0.)

derivative of tetrahedral shape function

Definition at line 40 of file fem_tools.h.

◆ diffN_MBTET3x

#define diffN_MBTET3x   (0.)

derivative of tetrahedral shape function

Definition at line 41 of file fem_tools.h.

◆ diffN_MBTET3y

#define diffN_MBTET3y   (0.)

derivative of tetrahedral shape function

Definition at line 42 of file fem_tools.h.

◆ diffN_MBTET3z

#define diffN_MBTET3z   (1.)

derivative of tetrahedral shape function

Definition at line 43 of file fem_tools.h.

◆ diffN_MBTRI0x

#define diffN_MBTRI0x   (-1.)

derivative of triangle shape function

Definition at line 49 of file fem_tools.h.

◆ diffN_MBTRI0y

#define diffN_MBTRI0y   (-1.)

derivative of triangle shape function

Definition at line 50 of file fem_tools.h.

◆ diffN_MBTRI1x

#define diffN_MBTRI1x   (1.)

derivative of triangle shape function

Definition at line 51 of file fem_tools.h.

◆ diffN_MBTRI1y

#define diffN_MBTRI1y   (0.)

derivative of triangle shape function

Definition at line 52 of file fem_tools.h.

◆ diffN_MBTRI2x

#define diffN_MBTRI2x   (0.)

derivative of triangle shape function

Definition at line 53 of file fem_tools.h.

◆ diffN_MBTRI2y

#define diffN_MBTRI2y   (1.)

derivative of triangle shape function

Definition at line 54 of file fem_tools.h.

◆ diffN_MBTRIQ0x

#define diffN_MBTRIQ0x (   x,
 
)    (x + y - 3. * (1. - x - y))

Definition at line 117 of file fem_tools.h.

◆ diffN_MBTRIQ0y

#define diffN_MBTRIQ0y (   x,
 
)    (x + y - 3. * (1. - x - y))

Definition at line 118 of file fem_tools.h.

◆ diffN_MBTRIQ1x

#define diffN_MBTRIQ1x (   x,
 
)    (-1. + 4. * x)

Definition at line 119 of file fem_tools.h.

◆ diffN_MBTRIQ1y

#define diffN_MBTRIQ1y (   x,
 
)    (0.)

Definition at line 120 of file fem_tools.h.

◆ diffN_MBTRIQ2x

#define diffN_MBTRIQ2x (   x,
 
)    (0.)

Definition at line 121 of file fem_tools.h.

◆ diffN_MBTRIQ2y

#define diffN_MBTRIQ2y (   x,
 
)    (-1. + 4. * y)

Definition at line 122 of file fem_tools.h.

◆ diffN_MBTRIQ3x

#define diffN_MBTRIQ3x (   x,
 
)    (4. * ((1. - x - y) - x))

Definition at line 123 of file fem_tools.h.

◆ diffN_MBTRIQ3y

#define diffN_MBTRIQ3y (   x,
 
)    (-4. * x)

Definition at line 124 of file fem_tools.h.

◆ diffN_MBTRIQ4x

#define diffN_MBTRIQ4x (   x,
 
)    (4. * y)

Definition at line 125 of file fem_tools.h.

◆ diffN_MBTRIQ4y

#define diffN_MBTRIQ4y (   x,
 
)    (4. * x)

Definition at line 126 of file fem_tools.h.

◆ diffN_MBTRIQ5x

#define diffN_MBTRIQ5x (   x,
 
)    (-4. * y)

Definition at line 127 of file fem_tools.h.

◆ diffN_MBTRIQ5y

#define diffN_MBTRIQ5y (   x,
 
)    (4. * ((1. - x - y) - y))

Definition at line 128 of file fem_tools.h.

◆ LAMBDA

#define LAMBDA (   E,
  NU 
)    (E * NU / ((1. + NU) * (1. - 2. * NU)))
Examples
NeoHookean.hpp, and ep.cpp.

Definition at line 22 of file fem_tools.h.

◆ MU

#define MU (   E,
  NU 
)    (0.5 * E / (1. + NU))
Examples
NeoHookean.hpp, and ep.cpp.

Definition at line 23 of file fem_tools.h.

◆ N_MBEDGE0

#define N_MBEDGE0 (   x)    (1. - (x))

edge shape function

Examples
bernstein_bezier_generate_base.cpp.

Definition at line 105 of file fem_tools.h.

◆ N_MBEDGE1

#define N_MBEDGE1 (   x)    (x)

edge shape function

Examples
bernstein_bezier_generate_base.cpp.

Definition at line 106 of file fem_tools.h.

◆ N_MBHEX0

#define N_MBHEX0 (   x,
  y,
 
)    (N_MBQUAD0(x, y) * (1 - z))
Examples
plot_base.cpp.

Definition at line 71 of file fem_tools.h.

◆ N_MBHEX1

#define N_MBHEX1 (   x,
  y,
 
)    (N_MBQUAD1(x, y) * (1 - z))
Examples
plot_base.cpp.

Definition at line 72 of file fem_tools.h.

◆ N_MBHEX2

#define N_MBHEX2 (   x,
  y,
 
)    (N_MBQUAD2(x, y) * (1 - z))
Examples
plot_base.cpp.

Definition at line 73 of file fem_tools.h.

◆ N_MBHEX3

#define N_MBHEX3 (   x,
  y,
 
)    (N_MBQUAD3(x, y) * (1 - z))
Examples
plot_base.cpp.

Definition at line 74 of file fem_tools.h.

◆ N_MBHEX4

#define N_MBHEX4 (   x,
  y,
 
)    (N_MBQUAD0(x, y) * (z))
Examples
plot_base.cpp.

Definition at line 75 of file fem_tools.h.

◆ N_MBHEX5

#define N_MBHEX5 (   x,
  y,
 
)    (N_MBQUAD1(x, y) * (z))
Examples
plot_base.cpp.

Definition at line 76 of file fem_tools.h.

◆ N_MBHEX6

#define N_MBHEX6 (   x,
  y,
 
)    (N_MBQUAD2(x, y) * (z))
Examples
plot_base.cpp.

Definition at line 77 of file fem_tools.h.

◆ N_MBHEX7

#define N_MBHEX7 (   x,
  y,
 
)    (N_MBQUAD3(x, y) * (z))
Examples
plot_base.cpp.

Definition at line 78 of file fem_tools.h.

◆ N_MBQUAD0

#define N_MBQUAD0 (   x,
 
)    ((1. - x) * (1. - y))

quad shape function

Examples
edge_and_bubble_shape_functions_on_quad.cpp, and plot_base.cpp.

Definition at line 57 of file fem_tools.h.

◆ N_MBQUAD1

#define N_MBQUAD1 (   x,
 
)    ((x) * (1. - y))

quad shape function

Examples
edge_and_bubble_shape_functions_on_quad.cpp, and plot_base.cpp.

Definition at line 58 of file fem_tools.h.

◆ N_MBQUAD2

#define N_MBQUAD2 (   x,
 
)    ((x) * (y))

quad shape function

Examples
edge_and_bubble_shape_functions_on_quad.cpp, and plot_base.cpp.

Definition at line 59 of file fem_tools.h.

◆ N_MBQUAD3

#define N_MBQUAD3 (   x,
 
)    ((1. - x) * (y))

quad shape function

Examples
edge_and_bubble_shape_functions_on_quad.cpp, and plot_base.cpp.

Definition at line 60 of file fem_tools.h.

◆ N_MBTET0

#define N_MBTET0 (   x,
  y,
 
)    (1. - x - y - z)

tetrahedral shape function

Definition at line 28 of file fem_tools.h.

◆ N_MBTET1

#define N_MBTET1 (   x,
  y,
 
)    (x)

tetrahedral shape function

Definition at line 29 of file fem_tools.h.

◆ N_MBTET2

#define N_MBTET2 (   x,
  y,
 
)    (y)

tetrahedral shape function

Definition at line 30 of file fem_tools.h.

◆ N_MBTET3

#define N_MBTET3 (   x,
  y,
 
)    (z)

tetrahedral shape function

Definition at line 31 of file fem_tools.h.

◆ N_MBTRI0

#define N_MBTRI0 (   x,
 
)    (1. - x - y)

triangle shape function

Definition at line 46 of file fem_tools.h.

◆ N_MBTRI1

#define N_MBTRI1 (   x,
 
)    (x)

triangle shape function

Definition at line 47 of file fem_tools.h.

◆ N_MBTRI2

#define N_MBTRI2 (   x,
 
)    (y)

triangle shape function

Definition at line 48 of file fem_tools.h.

◆ N_MBTRIQ0

#define N_MBTRIQ0 (   x,
 
)    ((1. - x - y) * (2 * (1. - x - y) - 1.))

Definition at line 111 of file fem_tools.h.

◆ N_MBTRIQ1

#define N_MBTRIQ1 (   x,
 
)    (x * (2. * x - 1.))

Definition at line 112 of file fem_tools.h.

◆ N_MBTRIQ2

#define N_MBTRIQ2 (   x,
 
)    (y * (2. * y - 1.))

Definition at line 113 of file fem_tools.h.

◆ N_MBTRIQ3

#define N_MBTRIQ3 (   x,
 
)    (4. * (1. - x - y) * x)

Definition at line 114 of file fem_tools.h.

◆ N_MBTRIQ4

#define N_MBTRIQ4 (   x,
 
)    (4. * x * y)

Definition at line 115 of file fem_tools.h.

◆ N_MBTRIQ5

#define N_MBTRIQ5 (   x,
 
)    (4. * (1. - x - y) * y)

Definition at line 116 of file fem_tools.h.

Function Documentation

◆ Base_scale()

PetscErrorCode Base_scale ( __CLPK_doublecomplex xnormal,
__CLPK_doublecomplex xs1,
__CLPK_doublecomplex xs2 
)

Definition at line 741 of file fem_tools.c.

743 {
745 complex double xnrm2_normal = csqrt(cpow(xnormal[0].r + I * xnormal[0].i, 2) +
746 cpow(xnormal[1].r + I * xnormal[1].i, 2) +
747 cpow(xnormal[2].r + I * xnormal[2].i, 2));
748 int dd = 0;
749 for (; dd < 3; dd++) {
750 complex double s1 = (xs1[dd].r + I * xs1[dd].i) * xnrm2_normal;
751 complex double s2 = (xs2[dd].r + I * xs2[dd].i) * xnrm2_normal;
752 xs1[dd].r = creal(s1);
753 xs1[dd].i = cimag(s1);
754 xs2[dd].r = creal(s2);
755 xs2[dd].i = cimag(s2);
756 }
758}
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
FTensor::Index< 'i', SPACE_DIM > i
const Tensor2_symmetric_Expr< const ddTensor0< T, Dim, i, j >, typename promote< T, double >::V, Dim, i, j > dd(const Tensor0< T * > &a, const Index< i, Dim > index1, const Index< j, Dim > index2, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
Definition ddTensor0.hpp:33
constexpr IntegrationType I
__CLPK_doublereal i
Definition lapack_wrap.h:35
__CLPK_doublereal r
Definition lapack_wrap.h:35

◆ DeterminantComplexGradient()

PetscErrorCode DeterminantComplexGradient ( __CLPK_doublecomplex xF,
__CLPK_doublecomplex det_xF 
)

Definition at line 526 of file fem_tools.c.

527 {
529 __CLPK_integer IPIV[4];
530 if (lapack_zgetrf(3, 3, xF, 3, IPIV) != 0) {
531 SETERRQ(PETSC_COMM_SELF, 1, "lapack_zgetrf(3,3,xF,3,IPIV) != 0");
532 }
533 double complex det = 1;
534 int i = 0, j = 0;
535 for (; i < 3; i++) {
536 det *= xF[3 * i + i].r + I * xF[3 * i + i].i;
537 if (IPIV[i] != i + 1)
538 j++;
539 }
540 if ((j - (j / 2) * 2) != 0)
541 det = -det;
542 (*det_xF).r = creal(det);
543 (*det_xF).i = cimag(det);
545}
static __CLPK_integer lapack_zgetrf(__CLPK_integer m, __CLPK_integer n, __CLPK_doublecomplex *a, __CLPK_integer lda, __CLPK_integer *ipiv)
long int __CLPK_integer
Definition lapack_wrap.h:23
FTensor::Index< 'j', 3 > j

◆ GradientOfDeformation()

PetscErrorCode GradientOfDeformation ( double diffN,
double dofs,
double F 
)

calculate gradient of deformation

Definition at line 425 of file fem_tools.c.

425 {
427 int col, row = 0;
428 for (; row < 3; row++)
429 for (col = 0; col < 3; col++) {
430 F[3 * row + col] = cblas_ddot(4, &diffN[col], 3, &dofs[row], 3);
431 }
433}

◆ Grundmann_Moeller_integration_points_1D_EDGE()

PetscErrorCode Grundmann_Moeller_integration_points_1D_EDGE ( int  rule,
double G_TRI_X,
double G_TRI_W 
)

Compute weights and integration points for edge using Grundmann_Moeller rule.

Definition at line 55 of file fem_tools.c.

57 {
59
60 int dim_num = 1;
61 int point;
62 int point_num;
63 double *w;
64 double *x;
65
66 // GM_RULE_SET determines the weights and abscissas
67 // pof a Grundmann-Moeller quadrature rule for
68 // the DIM_NUM dimensional simplex,
69 // using a rule of in index RULE,
70 // which will have degree of exactness 2*RULE+1.
71
72 // printf ( " Here we use DIM_NUM = %d\n", dim_num );
73 // printf ( " RULE = %d\n", rule );
74 // printf ( " DEGREE = %d\n", 2 * rule + 1 );
75
76 point_num = gm_rule_size(rule, dim_num);
77
78 ierr = PetscMalloc(point_num * sizeof(double), &w);
79 CHKERRQ(ierr);
80 ierr = PetscMalloc(dim_num * point_num * sizeof(double), &x);
81 CHKERRQ(ierr);
82
83 gm_rule_set(rule, dim_num, point_num, w, x);
84
85 for (point = 0; point < point_num; point++) {
86 G_TRI_X[point] = x[0 + point * dim_num];
87 G_TRI_W[point] = w[point];
88 }
89
90 ierr = PetscFree(w);
91 CHKERRQ(ierr);
92 ierr = PetscFree(x);
93 CHKERRQ(ierr);
94
96}
static PetscErrorCode ierr
Definition fem_tools.c:20
void gm_rule_set(int rule, int dim_num, int point_num, double w[], double x[])
Definition gm_rule.c:152
int gm_rule_size(int rule, int dim_num)
Definition gm_rule.c:294

◆ Grundmann_Moeller_integration_points_2D_TRI()

PetscErrorCode Grundmann_Moeller_integration_points_2D_TRI ( int  rule,
double G_TRI_X,
double G_TRI_Y,
double G_TRI_W 
)

Compute weights and integration points for 2D Triangle using Grundmann_Moeller rule

Definition at line 98 of file fem_tools.c.

101 {
103
104 int dim_num = 2;
105 int point;
106 int point_num;
107 double *w;
108 double *x;
109
110 // GM_RULE_SET determines the weights and abscissas
111 // pof a Grundmann-Moeller quadrature rule for
112 // the DIM_NUM dimensional simplex,
113 // using a rule of in index RULE,
114 // which will have degree of exactness 2*RULE+1.
115
116 // printf ( " Here we use DIM_NUM = %d\n", dim_num );
117 // printf ( " RULE = %d\n", rule );
118 // printf ( " DEGREE = %d\n", 2 * rule + 1 );
119
120 point_num = gm_rule_size(rule, dim_num);
121
122 ierr = PetscMalloc(point_num * sizeof(double), &w);
123 CHKERRQ(ierr);
124 ierr = PetscMalloc(dim_num * point_num * sizeof(double), &x);
125 CHKERRQ(ierr);
126
127 gm_rule_set(rule, dim_num, point_num, w, x);
128
129 for (point = 0; point < point_num; point++) {
130 G_TRI_X[point] = x[0 + point * dim_num];
131 G_TRI_Y[point] = x[1 + point * dim_num];
132 G_TRI_W[point] = w[point];
133 }
134
135 ierr = PetscFree(w);
136 CHKERRQ(ierr);
137 ierr = PetscFree(x);
138 CHKERRQ(ierr);
139
141}

◆ Grundmann_Moeller_integration_points_3D_TET()

PetscErrorCode Grundmann_Moeller_integration_points_3D_TET ( int  rule,
double G_TET_X,
double G_TET_Y,
double G_TET_Z,
double G_TET_W 
)

Compute weights and integration points for 3D Tet using Grundmann_Moeller rule

Definition at line 143 of file fem_tools.c.

147 {
149
150 int dim_num = 3;
151 int point;
152 int point_num;
153 double *w;
154 double *x;
155
156 // printf ( " Here we use DIM_NUM = %d\n", dim_num );
157 // printf ( " RULE = %d\n", rule );
158 // printf ( " DEGREE = %d\n", 2 * rule + 1 );
159
160 point_num = gm_rule_size(rule, dim_num);
161
162 ierr = PetscMalloc(point_num * sizeof(double), &w);
163 CHKERRQ(ierr);
164 ierr = PetscMalloc(dim_num * point_num * sizeof(double), &x);
165 CHKERRQ(ierr);
166
167 gm_rule_set(rule, dim_num, point_num, w, x);
168 for (point = 0; point < point_num; point++) {
169 G_TET_X[point] = x[0 + point * dim_num];
170 G_TET_Y[point] = x[1 + point * dim_num];
171 G_TET_Z[point] = x[2 + point * dim_num];
172 G_TET_W[point] = w[point];
173 }
174
175 ierr = PetscFree(w);
176 CHKERRQ(ierr);
177 ierr = PetscFree(x);
178 CHKERRQ(ierr);
179
181}

◆ InvertComplexGradient()

PetscErrorCode InvertComplexGradient ( __CLPK_doublecomplex xF)

Definition at line 499 of file fem_tools.c.

499 {
501 __CLPK_integer IPIV[4];
502 __CLPK_doublecomplex WORK[4];
503 __CLPK_integer LWORK = 4;
504 __CLPK_integer info;
505 info = lapack_zgetrf(3, 3, xF, 3, IPIV);
506 if (info != 0)
507 SETERRQ(PETSC_COMM_SELF, 1, "info == 0");
508 info = lapack_zgetri(3, xF, 3, IPIV, WORK, LWORK);
509 if (info != 0)
510 SETERRQ(PETSC_COMM_SELF, 1, "info == 0");
512}
static __CLPK_integer lapack_zgetri(__CLPK_integer n, __CLPK_doublecomplex *a, __CLPK_integer lda, __CLPK_integer *ipiv, __CLPK_doublecomplex *work, __CLPK_integer lwork)

◆ make_complex_matrix()

PetscErrorCode make_complex_matrix ( double reA,
double imA,
__CLPK_doublecomplex xA 
)

Compose complex matrix (3x3) from two real matrices.

Definition at line 557 of file fem_tools.c.

558 {
560 int ii = 0, jj;
561 for (; ii < 3; ii++) {
562 for (jj = 0; jj < 3; jj++) {
563 xA[3 * ii + jj].r = reA[3 * ii + jj];
564 xA[3 * ii + jj].i = imA[3 * ii + jj];
565 }
566 }
568}

◆ MakeComplexTensor()

PetscErrorCode MakeComplexTensor ( double reA,
double imA,
__CLPK_doublecomplex xA 
)

Definition at line 487 of file fem_tools.c.

488 {
490 int ii = 0, jj;
491 for (; ii < 3; ii++) {
492 for (jj = 0; jj < 3; jj++) {
493 xA[3 * ii + jj].r = reA[3 * ii + jj];
494 xA[3 * ii + jj].i = imA[3 * ii + jj];
495 }
496 }
498}

◆ Normal_hierarchical()

PetscErrorCode Normal_hierarchical ( int  order_approx,
int *  order_edge_approx,
int  order,
int *  order_edge,
double diffN,
double diffN_face,
double diffN_edge[],
double dofs,
double dofs_edge[],
double dofs_face,
double idofs,
double idofs_edge[],
double idofs_face,
__CLPK_doublecomplex xnormal,
__CLPK_doublecomplex s1,
__CLPK_doublecomplex s2,
int  gg 
)

Complex normal.

Definition at line 569 of file fem_tools.c.

574 {
576 int nn, ee, dd;
577 // node
578 double complex diffX_x_node, diffX_y_node, diffX_z_node;
579 double complex diffY_x_node, diffY_y_node, diffY_z_node;
580 diffX_x_node = 0.;
581 diffX_y_node = 0.;
582 diffX_z_node = 0.;
583 diffY_x_node = 0.;
584 diffY_y_node = 0.;
585 diffY_z_node = 0.;
586 if (dofs != NULL || idofs != NULL) {
587 nn = 0;
588 for (; nn < 3; nn++) {
589 if (dofs != NULL) {
590 diffX_x_node += dofs[3 * nn + 0] * diffN[2 * nn + 0];
591 diffX_y_node += dofs[3 * nn + 1] * diffN[2 * nn + 0];
592 diffX_z_node += dofs[3 * nn + 2] * diffN[2 * nn + 0];
593 diffY_x_node += dofs[3 * nn + 0] * diffN[2 * nn + 1];
594 diffY_y_node += dofs[3 * nn + 1] * diffN[2 * nn + 1];
595 diffY_z_node += dofs[3 * nn + 2] * diffN[2 * nn + 1];
596 }
597 if (idofs != NULL) {
598 diffX_x_node += I * idofs[3 * nn + 0] * diffN[2 * nn + 0];
599 diffX_y_node += I * idofs[3 * nn + 1] * diffN[2 * nn + 0];
600 diffX_z_node += I * idofs[3 * nn + 2] * diffN[2 * nn + 0];
601 diffY_x_node += I * idofs[3 * nn + 0] * diffN[2 * nn + 1];
602 diffY_y_node += I * idofs[3 * nn + 1] * diffN[2 * nn + 1];
603 diffY_z_node += I * idofs[3 * nn + 2] * diffN[2 * nn + 1];
604 }
605 }
606 }
607 double complex diffX_x, diffX_y, diffX_z;
608 double complex diffY_x, diffY_y, diffY_z;
609 diffX_x = diffX_x_node;
610 diffX_y = diffX_y_node;
611 diffX_z = diffX_z_node;
612 diffY_x = diffY_x_node;
613 diffY_y = diffY_y_node;
614 diffY_z = diffY_z_node;
615 if (dofs_face != NULL || idofs_face != NULL) {
616 int nb_dofs_face = NBFACETRI_H1(order);
617 int nb_dofs_approx_face = NBFACETRI_H1(order_approx);
618 if (nb_dofs_face > 0) {
619 if (dofs_face != NULL) {
620 diffX_x += cblas_ddot(nb_dofs_face, &dofs_face[0], 3,
621 &diffN_face[gg * 2 * nb_dofs_approx_face + 0], 2);
622 diffX_y += cblas_ddot(nb_dofs_face, &dofs_face[1], 3,
623 &diffN_face[gg * 2 * nb_dofs_approx_face + 0], 2);
624 diffX_z += cblas_ddot(nb_dofs_face, &dofs_face[2], 3,
625 &diffN_face[gg * 2 * nb_dofs_approx_face + 0], 2);
626 diffY_x += cblas_ddot(nb_dofs_face, &dofs_face[0], 3,
627 &diffN_face[gg * 2 * nb_dofs_approx_face + 1], 2);
628 diffY_y += cblas_ddot(nb_dofs_face, &dofs_face[1], 3,
629 &diffN_face[gg * 2 * nb_dofs_approx_face + 1], 2);
630 diffY_z += cblas_ddot(nb_dofs_face, &dofs_face[2], 3,
631 &diffN_face[gg * 2 * nb_dofs_approx_face + 1], 2);
632 }
633 if (idofs_face != NULL) {
634 diffX_x +=
635 I * cblas_ddot(nb_dofs_face, &idofs_face[0], 3,
636 &diffN_face[gg * 2 * nb_dofs_approx_face + 0], 2);
637 diffX_y +=
638 I * cblas_ddot(nb_dofs_face, &idofs_face[1], 3,
639 &diffN_face[gg * 2 * nb_dofs_approx_face + 0], 2);
640 diffX_z +=
641 I * cblas_ddot(nb_dofs_face, &idofs_face[2], 3,
642 &diffN_face[gg * 2 * nb_dofs_approx_face + 0], 2);
643 diffY_x +=
644 I * cblas_ddot(nb_dofs_face, &idofs_face[0], 3,
645 &diffN_face[gg * 2 * nb_dofs_approx_face + 1], 2);
646 diffY_y +=
647 I * cblas_ddot(nb_dofs_face, &idofs_face[1], 3,
648 &diffN_face[gg * 2 * nb_dofs_approx_face + 1], 2);
649 diffY_z +=
650 I * cblas_ddot(nb_dofs_face, &idofs_face[2], 3,
651 &diffN_face[gg * 2 * nb_dofs_approx_face + 1], 2);
652 }
653 }
654 }
655 ee = 0;
656 if (dofs_edge != NULL || idofs_edge != NULL) {
657 for (; ee < 3; ee++) {
658 int nb_dofs_edge = NBEDGE_H1(order_edge[ee]);
659 int nb_dofs_approx_edge = NBEDGE_H1(order_edge_approx[ee]);
660 if (nb_dofs_edge > 0) {
661 if (dofs_edge != NULL) {
662 if (dofs_edge[ee] != NULL) {
663 diffX_x += cblas_ddot(
664 nb_dofs_edge, &(dofs_edge[ee])[0], 3,
665 &(diffN_edge[ee])[gg * 2 * nb_dofs_approx_edge + 0], 2);
666 diffX_y += cblas_ddot(
667 nb_dofs_edge, &(dofs_edge[ee])[1], 3,
668 &(diffN_edge[ee])[gg * 2 * nb_dofs_approx_edge + 0], 2);
669 diffX_z += cblas_ddot(
670 nb_dofs_edge, &(dofs_edge[ee])[2], 3,
671 &(diffN_edge[ee])[gg * 2 * nb_dofs_approx_edge + 0], 2);
672 diffY_x += cblas_ddot(
673 nb_dofs_edge, &(dofs_edge[ee])[0], 3,
674 &(diffN_edge[ee])[gg * 2 * nb_dofs_approx_edge + 1], 2);
675 diffY_y += cblas_ddot(
676 nb_dofs_edge, &(dofs_edge[ee])[1], 3,
677 &(diffN_edge[ee])[gg * 2 * nb_dofs_approx_edge + 1], 2);
678 diffY_z += cblas_ddot(
679 nb_dofs_edge, &(dofs_edge[ee])[2], 3,
680 &(diffN_edge[ee])[gg * 2 * nb_dofs_approx_edge + 1], 2);
681 }
682 }
683 if (idofs_edge != NULL) {
684 if (idofs_edge[ee] == NULL)
685 continue;
686 diffX_x +=
687 I * cblas_ddot(
688 nb_dofs_edge, &(idofs_edge[ee])[0], 3,
689 &(diffN_edge[ee])[gg * 2 * nb_dofs_approx_edge + 0], 2);
690 diffX_y +=
691 I * cblas_ddot(
692 nb_dofs_edge, &(idofs_edge[ee])[1], 3,
693 &(diffN_edge[ee])[gg * 2 * nb_dofs_approx_edge + 0], 2);
694 diffX_z +=
695 I * cblas_ddot(
696 nb_dofs_edge, &(idofs_edge[ee])[2], 3,
697 &(diffN_edge[ee])[gg * 2 * nb_dofs_approx_edge + 0], 2);
698 diffY_x +=
699 I * cblas_ddot(
700 nb_dofs_edge, &(idofs_edge[ee])[0], 3,
701 &(diffN_edge[ee])[gg * 2 * nb_dofs_approx_edge + 1], 2);
702 diffY_y +=
703 I * cblas_ddot(
704 nb_dofs_edge, &(idofs_edge[ee])[1], 3,
705 &(diffN_edge[ee])[gg * 2 * nb_dofs_approx_edge + 1], 2);
706 diffY_z +=
707 I * cblas_ddot(
708 nb_dofs_edge, &(idofs_edge[ee])[2], 3,
709 &(diffN_edge[ee])[gg * 2 * nb_dofs_approx_edge + 1], 2);
710 }
711 }
712 }
713 }
714 double complex normal[3];
715 normal[0] = diffX_y * diffY_z - diffX_z * diffY_y;
716 normal[1] = diffX_z * diffY_x - diffX_x * diffY_z;
717 normal[2] = diffX_x * diffY_y - diffX_y * diffY_x;
718 dd = 0;
719 for (; dd < 3; dd++) {
720 xnormal[dd].r = creal(normal[dd]);
721 xnormal[dd].i = cimag(normal[dd]);
722 }
723 if (xs1 != NULL) {
724 xs1[0].r = creal(diffX_x);
725 xs1[0].i = cimag(diffX_x);
726 xs1[1].r = creal(diffX_y);
727 xs1[1].i = cimag(diffX_y);
728 xs1[2].r = creal(diffX_z);
729 xs1[2].i = cimag(diffX_z);
730 }
731 if (xs2 != NULL) {
732 xs2[0].r = creal(diffY_x);
733 xs2[0].i = cimag(diffY_x);
734 xs2[1].r = creal(diffY_y);
735 xs2[1].i = cimag(diffY_y);
736 xs2[2].r = creal(diffY_z);
737 xs2[2].i = cimag(diffY_z);
738 }
740}
#define NBEDGE_H1(P)
Number of base function on edge for H1 space.
#define NBFACETRI_H1(P)
Number of base function on triangle for H1 space.

◆ print_mat()

void print_mat ( double M,
int  m,
int  n 
)

print matric M

Examples
matrix_function.cpp.

◆ print_mat_complex()

void print_mat_complex ( __CLPK_doublecomplex M,
int  m,
int  n 
)

priint complex matrix

◆ print_mat_sym_upper()

void print_mat_sym_upper ( double M,
int  m,
int  n 
)

print upper part of the symmetric matrix

◆ ShapeDetJacVolume()

double ShapeDetJacVolume ( double jac)

determined of jacobian

Definition at line 22 of file fem_tools.c.

22 {
23 double det_jac;
24 __CLPK_integer ipiv[4];
25 __CLPK_integer info = lapack_dgetrf(3, 3, jac, 3, ipiv);
26 if (info != 0)
27 return -1;
28 int i = 0, j = 0;
29 det_jac = 1.;
30 for (; i < 3; i++) {
31 det_jac *= jac[3 * i + i];
32 if (ipiv[i] != i + 1)
33 j++;
34 }
35 if ((j - (j / 2) * 2) != 0)
36 det_jac = -det_jac;
37 return det_jac;
38}
static __CLPK_integer lapack_dgetrf(__CLPK_integer m, __CLPK_integer n, __CLPK_doublereal *a, __CLPK_integer lda, __CLPK_integer *ipiv)

◆ ShapeDiffMBEDGE()

PetscErrorCode ShapeDiffMBEDGE ( double diffN)

Definition at line 771 of file fem_tools.c.

771 {
773 diffN[0] = diffN_MBEDGE0;
774 diffN[1] = diffN_MBEDGE1;
776}
#define diffN_MBEDGE0
derivative of edge shape function
Definition fem_tools.h:107
#define diffN_MBEDGE1
derivative of edge shape function
Definition fem_tools.h:108

◆ ShapeDiffMBTET()

PetscErrorCode ShapeDiffMBTET ( double diffN)

calculate derivatives of shape functions

Examples
EshelbianPlasticity.cpp, and forces_and_sources_testing_users_base.cpp.

Definition at line 319 of file fem_tools.c.

319 {
321 diffN[0] = diffN_MBTET0x;
322 diffN[1] = diffN_MBTET0y;
323 diffN[2] = diffN_MBTET0z;
324 diffN[3] = diffN_MBTET1x;
325 diffN[4] = diffN_MBTET1y;
326 diffN[5] = diffN_MBTET1z;
327 diffN[6] = diffN_MBTET2x;
328 diffN[7] = diffN_MBTET2y;
329 diffN[8] = diffN_MBTET2z;
330 diffN[9] = diffN_MBTET3x;
331 diffN[10] = diffN_MBTET3y;
332 diffN[11] = diffN_MBTET3z;
334}
#define diffN_MBTET0z
derivative of tetrahedral shape function
Definition fem_tools.h:34
#define diffN_MBTET2z
derivative of tetrahedral shape function
Definition fem_tools.h:40
#define diffN_MBTET3y
derivative of tetrahedral shape function
Definition fem_tools.h:42
#define diffN_MBTET0y
derivative of tetrahedral shape function
Definition fem_tools.h:33
#define diffN_MBTET1z
derivative of tetrahedral shape function
Definition fem_tools.h:37
#define diffN_MBTET3z
derivative of tetrahedral shape function
Definition fem_tools.h:43
#define diffN_MBTET1y
derivative of tetrahedral shape function
Definition fem_tools.h:36
#define diffN_MBTET2y
derivative of tetrahedral shape function
Definition fem_tools.h:39
#define diffN_MBTET2x
derivative of tetrahedral shape function
Definition fem_tools.h:38
#define diffN_MBTET3x
derivative of tetrahedral shape function
Definition fem_tools.h:41
#define diffN_MBTET1x
derivative of tetrahedral shape function
Definition fem_tools.h:35
#define diffN_MBTET0x
derivative of tetrahedral shape function
Definition fem_tools.h:32

◆ ShapeDiffMBTETinvJ()

PetscErrorCode ShapeDiffMBTETinvJ ( double diffN,
double invJac,
double diffNinvJac 
)

calculate shape functions derivatives in space

Definition at line 415 of file fem_tools.c.

416 {
418 int ii = 0;
419 for (; ii < 4; ii++) {
420 cblas_dgemv(CblasRowMajor, CblasTrans, 3, 3, 1., invJac, 3, &diffN[ii * 3],
421 1, 0., &diffNinvJac[ii * 3], 1);
422 }
424}

◆ ShapeDiffMBTETinvJ_complex()

void ShapeDiffMBTETinvJ_complex ( double diffN,
__CLPK_doublecomplex invJac,
__CLPK_doublecomplex diffNinvJac,
enum CBLAS_TRANSPOSE  Trans 
)

Definition at line 437 of file fem_tools.c.

439 {
440 __CLPK_doublecomplex tmp1 = {1., 0.}, tmp2 = {0., 0.};
441 int ii = 0, jj;
442 for (; ii < 4; ii++) {
443 __CLPK_doublecomplex tmp3[3];
444 for (jj = 0; jj < 3; jj++) {
445 tmp3[jj].r = diffN[ii * 3 + jj];
446 tmp3[jj].i = 0;
447 }
448 cblas_zgemv(CblasRowMajor, Trans, 3, 3, &tmp1, invJac, 3, tmp3, 1, &tmp2,
449 &diffNinvJac[ii * 3], 1);
450 }
451}

◆ ShapeDiffMBTETQ()

PetscErrorCode ShapeDiffMBTETQ ( double diffN,
const double  x,
const double  y,
const double  z 
)

Definition at line 873 of file fem_tools.c.

874 {
876 diffN[0] = diffN_MBTETQ0x(x, y, z);
877 diffN[1] = diffN_MBTETQ0y(x, y, z);
878 diffN[2] = diffN_MBTETQ0z(x, y, z);
879 diffN[3] = diffN_MBTETQ1x(x, y, z);
880 diffN[4] = diffN_MBTETQ1y(x, y, z);
881 diffN[5] = diffN_MBTETQ1z(x, y, z);
882 diffN[6] = diffN_MBTETQ2x(x, y, z);
883 diffN[7] = diffN_MBTETQ2y(x, y, z);
884 diffN[8] = diffN_MBTETQ2z(x, y, z);
885 diffN[9] = diffN_MBTETQ3x(x, y, z);
886 diffN[10] = diffN_MBTETQ3y(x, y, z);
887 diffN[11] = diffN_MBTETQ3z(x, y, z);
888 diffN[12] = diffN_MBTETQ4x(x, y, z);
889 diffN[13] = diffN_MBTETQ4y(x, y, z);
890 diffN[14] = diffN_MBTETQ4z(x, y, z);
891 diffN[15] = diffN_MBTETQ5x(x, y, z);
892 diffN[16] = diffN_MBTETQ5y(x, y, z);
893 diffN[17] = diffN_MBTETQ5z(x, y, z);
894 diffN[18] = diffN_MBTETQ6x(x, y, z);
895 diffN[19] = diffN_MBTETQ6y(x, y, z);
896 diffN[20] = diffN_MBTETQ6z(x, y, z);
897 diffN[21] = diffN_MBTETQ7x(x, y, z);
898 diffN[22] = diffN_MBTETQ7y(x, y, z);
899 diffN[23] = diffN_MBTETQ7z(x, y, z);
900 diffN[24] = diffN_MBTETQ8x(x, y, z);
901 diffN[25] = diffN_MBTETQ8y(x, y, z);
902 diffN[26] = diffN_MBTETQ8z(x, y, z);
903 diffN[27] = diffN_MBTETQ9x(x, y, z);
904 diffN[28] = diffN_MBTETQ9y(x, y, z);
905 diffN[29] = diffN_MBTETQ9z(x, y, z);
907}
#define diffN_MBTETQ5x(x, y, z)
Definition fem_tools.c:843
#define diffN_MBTETQ1y(x, y, z)
Definition fem_tools.c:832
#define diffN_MBTETQ1z(x, y, z)
Definition fem_tools.c:833
#define diffN_MBTETQ8z(x, y, z)
Definition fem_tools.c:854
#define diffN_MBTETQ7y(x, y, z)
Definition fem_tools.c:850
#define diffN_MBTETQ3y(x, y, z)
Definition fem_tools.c:838
#define diffN_MBTETQ0y(x, y, z)
Definition fem_tools.c:829
#define diffN_MBTETQ9y(x, y, z)
Definition fem_tools.c:856
#define diffN_MBTETQ9x(x, y, z)
Definition fem_tools.c:855
#define diffN_MBTETQ0x(x, y, z)
Definition fem_tools.c:828
#define diffN_MBTETQ6y(x, y, z)
Definition fem_tools.c:847
#define diffN_MBTETQ6x(x, y, z)
Definition fem_tools.c:846
#define diffN_MBTETQ2z(x, y, z)
Definition fem_tools.c:836
#define diffN_MBTETQ6z(x, y, z)
Definition fem_tools.c:848
#define diffN_MBTETQ4z(x, y, z)
Definition fem_tools.c:842
#define diffN_MBTETQ0z(x, y, z)
Definition fem_tools.c:830
#define diffN_MBTETQ3z(x, y, z)
Definition fem_tools.c:839
#define diffN_MBTETQ4x(x, y, z)
Definition fem_tools.c:840
#define diffN_MBTETQ2y(x, y, z)
Definition fem_tools.c:835
#define diffN_MBTETQ9z(x, y, z)
Definition fem_tools.c:857
#define diffN_MBTETQ5y(x, y, z)
Definition fem_tools.c:844
#define diffN_MBTETQ4y(x, y, z)
Definition fem_tools.c:841
#define diffN_MBTETQ3x(x, y, z)
Definition fem_tools.c:837
#define diffN_MBTETQ2x(x, y, z)
Definition fem_tools.c:834
#define diffN_MBTETQ7x(x, y, z)
Definition fem_tools.c:849
#define diffN_MBTETQ1x(x, y, z)
Definition fem_tools.c:831
#define diffN_MBTETQ8y(x, y, z)
Definition fem_tools.c:853
#define diffN_MBTETQ7z(x, y, z)
Definition fem_tools.c:851
#define diffN_MBTETQ5z(x, y, z)
Definition fem_tools.c:845
#define diffN_MBTETQ8x(x, y, z)
Definition fem_tools.c:852

◆ ShapeDiffMBTETQ_GAUSS()

PetscErrorCode ShapeDiffMBTETQ_GAUSS ( double diffN,
const double X,
const double Y,
const double Z,
const int  G_DIM 
)

Definition at line 927 of file fem_tools.c.

929 {
931 int ii = 0;
932 for (; ii < G_DIM; ii++) {
933 double x = X[ii], y = Y[ii], z = Z[ii];
934 diffN[30 * ii + 0] = diffN_MBTETQ0x(x, y, z);
935 diffN[30 * ii + 1] = diffN_MBTETQ0y(x, y, z);
936 diffN[30 * ii + 2] = diffN_MBTETQ0z(x, y, z);
937 diffN[30 * ii + 3] = diffN_MBTETQ1x(x, y, z);
938 diffN[30 * ii + 4] = diffN_MBTETQ1y(x, y, z);
939 diffN[30 * ii + 5] = diffN_MBTETQ1z(x, y, z);
940 diffN[30 * ii + 6] = diffN_MBTETQ2x(x, y, z);
941 diffN[30 * ii + 7] = diffN_MBTETQ2y(x, y, z);
942 diffN[30 * ii + 8] = diffN_MBTETQ2z(x, y, z);
943 diffN[30 * ii + 9] = diffN_MBTETQ3x(x, y, z);
944 diffN[30 * ii + 10] = diffN_MBTETQ3y(x, y, z);
945 diffN[30 * ii + 11] = diffN_MBTETQ3z(x, y, z);
946 diffN[30 * ii + 12] = diffN_MBTETQ4x(x, y, z);
947 diffN[30 * ii + 13] = diffN_MBTETQ4y(x, y, z);
948 diffN[30 * ii + 14] = diffN_MBTETQ4z(x, y, z);
949 diffN[30 * ii + 15] = diffN_MBTETQ5x(x, y, z);
950 diffN[30 * ii + 16] = diffN_MBTETQ5y(x, y, z);
951 diffN[30 * ii + 17] = diffN_MBTETQ5z(x, y, z);
952 diffN[30 * ii + 18] = diffN_MBTETQ6x(x, y, z);
953 diffN[30 * ii + 19] = diffN_MBTETQ6y(x, y, z);
954 diffN[30 * ii + 20] = diffN_MBTETQ6z(x, y, z);
955 diffN[30 * ii + 21] = diffN_MBTETQ7x(x, y, z);
956 diffN[30 * ii + 22] = diffN_MBTETQ7y(x, y, z);
957 diffN[30 * ii + 23] = diffN_MBTETQ7z(x, y, z);
958 diffN[30 * ii + 24] = diffN_MBTETQ8x(x, y, z);
959 diffN[30 * ii + 25] = diffN_MBTETQ8y(x, y, z);
960 diffN[30 * ii + 26] = diffN_MBTETQ8z(x, y, z);
961 diffN[30 * ii + 27] = diffN_MBTETQ9x(x, y, z);
962 diffN[30 * ii + 28] = diffN_MBTETQ9y(x, y, z);
963 diffN[30 * ii + 29] = diffN_MBTETQ9z(x, y, z);
964 }
966}

◆ ShapeDiffMBTRI()

PetscErrorCode ShapeDiffMBTRI ( double diffN)

calculate derivatives of shape functions

Definition at line 194 of file fem_tools.c.

194 {
196 diffN[0] = diffN_MBTRI0x;
197 diffN[1] = diffN_MBTRI0y;
198 diffN[2] = diffN_MBTRI1x;
199 diffN[3] = diffN_MBTRI1y;
200 diffN[4] = diffN_MBTRI2x;
201 diffN[5] = diffN_MBTRI2y;
203}
#define diffN_MBTRI2x
derivative of triangle shape function
Definition fem_tools.h:53
#define diffN_MBTRI0y
derivative of triangle shape function
Definition fem_tools.h:50
#define diffN_MBTRI1y
derivative of triangle shape function
Definition fem_tools.h:52
#define diffN_MBTRI0x
derivative of triangle shape function
Definition fem_tools.h:49
#define diffN_MBTRI2y
derivative of triangle shape function
Definition fem_tools.h:54
#define diffN_MBTRI1x
derivative of triangle shape function
Definition fem_tools.h:51

◆ ShapeDiffMBTRIinvJ()

void ShapeDiffMBTRIinvJ ( double diffN,
double invJac,
double diffNinvJac 
)

calculate derivatives of shape functions in space

◆ ShapeDiffMBTRIQ()

PetscErrorCode ShapeDiffMBTRIQ ( double diffN,
const double X,
const double Y,
const int  G_DIM 
)

Definition at line 795 of file fem_tools.c.

796 {
798 int ii = 0;
799 for (; ii < G_DIM; ii++) {
800 double x = X[ii], y = Y[ii];
801 diffN[12 * ii + 0] = diffN_MBTRIQ0x(x, y);
802 diffN[12 * ii + 1] = diffN_MBTRIQ0y(x, y);
803 diffN[12 * ii + 2] = diffN_MBTRIQ1x(x, y);
804 diffN[12 * ii + 3] = diffN_MBTRIQ1y(x, y);
805 diffN[12 * ii + 4] = diffN_MBTRIQ2x(x, y);
806 diffN[12 * ii + 5] = diffN_MBTRIQ2y(x, y);
807 diffN[12 * ii + 6] = diffN_MBTRIQ3x(x, y);
808 diffN[12 * ii + 7] = diffN_MBTRIQ3y(x, y);
809 diffN[12 * ii + 8] = diffN_MBTRIQ4x(x, y);
810 diffN[12 * ii + 9] = diffN_MBTRIQ4y(x, y);
811 diffN[12 * ii + 10] = diffN_MBTRIQ5x(x, y);
812 diffN[12 * ii + 11] = diffN_MBTRIQ5y(x, y);
813 }
815}
#define diffN_MBTRIQ0x(x, y)
Definition fem_tools.h:117
#define diffN_MBTRIQ1x(x, y)
Definition fem_tools.h:119
#define diffN_MBTRIQ5x(x, y)
Definition fem_tools.h:127
#define diffN_MBTRIQ2x(x, y)
Definition fem_tools.h:121
#define diffN_MBTRIQ2y(x, y)
Definition fem_tools.h:122
#define diffN_MBTRIQ1y(x, y)
Definition fem_tools.h:120
#define diffN_MBTRIQ4y(x, y)
Definition fem_tools.h:126
#define diffN_MBTRIQ5y(x, y)
Definition fem_tools.h:128
#define diffN_MBTRIQ3x(x, y)
Definition fem_tools.h:123
#define diffN_MBTRIQ3y(x, y)
Definition fem_tools.h:124
#define diffN_MBTRIQ4x(x, y)
Definition fem_tools.h:125
#define diffN_MBTRIQ0y(x, y)
Definition fem_tools.h:118

◆ ShapeFaceBaseMBTRI()

PetscErrorCode ShapeFaceBaseMBTRI ( double diffN,
const double coords,
double normal,
double s1,
double s2 
)

Definition at line 204 of file fem_tools.c.

205 {
207
208 double diffX_ksi[3];
209 double diffX_eta[3];
210 int ii = 0;
211 for (; ii < 3; ii++) {
212 diffX_ksi[ii] = cblas_ddot(3, &coords[ii], 3, &diffN[0], 2);
213 diffX_eta[ii] = cblas_ddot(3, &coords[ii], 3, &diffN[1], 2);
214 }
215 if (s1 != NULL) {
216 cblas_dcopy(3, diffX_ksi, 1, s1, 1);
217 }
218 if (s2 != NULL) {
219 cblas_dcopy(3, diffX_eta, 1, s2, 1);
220 }
221 double Spin_diffX_ksi[9];
222 ierr = Spin(Spin_diffX_ksi, diffX_ksi);
223 CHKERRQ(ierr);
224 cblas_dgemv(CblasRowMajor, CblasNoTrans, 3, 3, 1., Spin_diffX_ksi, 3,
225 diffX_eta, 1, 0., normal, 1);
227}
PetscErrorCode Spin(double *spinOmega, double *vecOmega)
calculate spin matrix from vector
Definition fem_tools.c:546

◆ ShapeFaceDiffNormalMBTRI()

PetscErrorCode ShapeFaceDiffNormalMBTRI ( double diffN,
const double coords,
double diff_normal 
)

calculate derivative of normal in respect to nodal positions

Definition at line 237 of file fem_tools.c.

238 {
240 // N = Spin(dX/dksi)*dX/deta = -Spin(dX/deta)*dX/dksi
241
242 double diffX_ksi[3];
243 double diffX_eta[3];
244 int ii = 0;
245 for (; ii < 3; ii++) {
246 diffX_ksi[ii] = cblas_ddot(3, &coords[ii], 3, &diffN[0], 2);
247 diffX_eta[ii] = cblas_ddot(3, &coords[ii], 3, &diffN[1], 2);
248 }
249 double Spin_diffX_ksi[9];
250 ierr = Spin(Spin_diffX_ksi, diffX_ksi);
251 CHKERRQ(ierr);
252 double Spin_diffX_eta[9];
253 ierr = Spin(Spin_diffX_eta, diffX_eta);
254 CHKERRQ(ierr);
255 double B_ksi[3 * 9];
256 bzero(B_ksi, 3 * 9 * sizeof(double));
257 double B_eta[3 * 9];
258 bzero(B_eta, 3 * 9 * sizeof(double));
259 // B_ksi[] = [
260 // diffN[2*0+0], 0, 0, diffN[2*1+0], 0, 0, diffN[2*2+0], 0,
261 // 0
262 // 0, diffN[2*0+0], 0, 0, diffN[2*1+0], 0, 0, diffN[2*2+0],
263 // 0
264 // 0, 0, diffM[2*0+0], 0, 0, diffN[2*1+0], 0, 0,
265 // diffN[2*2+0]
266 //]
267 // B_eta[] = [
268 // diffN[2*0+1], 0, 0, diffN[2*1+1], 0, 0, diffN[2*2+1], 0,
269 // 0
270 // 0, diffN[2*0+1], 0, 0, diffN[2*1+1], 0, 0, diffN[2*2+1],
271 // 0
272 // 0, 0, diffM[2*0+1], 0, 0, diffN[2*1+1], 0, 0,
273 // diffN[2*2+1]
274 //]
275 ii = 0;
276 for (; ii < 3; ii++) {
277 cblas_dcopy(3, &diffN[0], 2, &B_ksi[ii * 9 + ii], 3);
278 cblas_dcopy(3, &diffN[1], 2, &B_eta[ii * 9 + ii], 3);
279 }
280 cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 3, 9, 3, +1.,
281 Spin_diffX_ksi, 3, B_eta, 9, 0., diff_normal, 9);
282 cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 3, 9, 3, -1.,
283 Spin_diffX_eta, 3, B_ksi, 9, 1., diff_normal, 9);
285}

◆ ShapeFaceNormalMBTRI()

PetscErrorCode ShapeFaceNormalMBTRI ( double diffN,
const double coords,
double normal 
)

calculate face normal

Parameters
diffNderivatives of shape functions
coordsis position of the nodes
normalvector

Definition at line 229 of file fem_tools.c.

230 {
232 ierr = ShapeFaceBaseMBTRI(diffN, coords, normal, NULL, NULL);
233 CHKERRQ(ierr);
235}
PetscErrorCode ShapeFaceBaseMBTRI(double *diffN, const double *coords, double *normal, double *s1, double *s2)
Definition fem_tools.c:204

◆ ShapeFaceNormalMBTRI_complex()

PetscErrorCode ShapeFaceNormalMBTRI_complex ( double diffN,
__CLPK_doublecomplex xcoords,
__CLPK_doublecomplex xnormal 
)

Definition at line 452 of file fem_tools.c.

454 {
456 double complex diffX_x, diffX_y, diffX_z;
457 double complex diffY_x, diffY_y, diffY_z;
458 diffX_x = diffX_y = diffX_z = 0.;
459 diffY_x = diffY_y = diffY_z = 0.;
460 int ii;
461 for (ii = 0; ii < 3; ii++) {
462 diffX_x +=
463 (xcoords[3 * ii + 0].r + I * xcoords[3 * ii + 0].i) * diffN[2 * ii + 0];
464 diffX_y +=
465 (xcoords[3 * ii + 1].r + I * xcoords[3 * ii + 1].i) * diffN[2 * ii + 0];
466 diffX_z +=
467 (xcoords[3 * ii + 2].r + I * xcoords[3 * ii + 2].i) * diffN[2 * ii + 0];
468 diffY_x +=
469 (xcoords[3 * ii + 0].r + I * xcoords[3 * ii + 0].i) * diffN[2 * ii + 1];
470 diffY_y +=
471 (xcoords[3 * ii + 1].r + I * xcoords[3 * ii + 1].i) * diffN[2 * ii + 1];
472 diffY_z +=
473 (xcoords[3 * ii + 2].r + I * xcoords[3 * ii + 2].i) * diffN[2 * ii + 1];
474 }
475 double complex tmp;
476 tmp = diffX_y * diffY_z - diffX_z * diffY_y;
477 xnormal[0].r = creal(tmp);
478 xnormal[0].i = cimag(tmp);
479 tmp = diffX_z * diffY_x - diffX_x * diffY_z;
480 xnormal[1].r = creal(tmp);
481 xnormal[1].i = cimag(tmp);
482 tmp = diffX_x * diffY_y - diffX_y * diffY_x;
483 xnormal[2].r = creal(tmp);
484 xnormal[2].i = cimag(tmp);
486}

◆ ShapeInvJacVolume()

PetscErrorCode ShapeInvJacVolume ( double jac)

Definition at line 39 of file fem_tools.c.

39 {
41 __CLPK_integer ipiv[4];
42 __CLPK_doublereal work[3];
43 __CLPK_integer lwork = 3;
44 __CLPK_integer info;
45 info = lapack_dgetrf(3, 3, jac, 3, ipiv);
46 if (info != 0)
47 SETERRQ(PETSC_COMM_SELF, 1, "info = %d", info);
48 info = lapack_dgetri(3, jac, 3, ipiv, work, lwork);
49 if (info != 0)
50 SETERRQ(PETSC_COMM_SELF, 1, "info = %d", info);
52}
static __CLPK_integer lapack_dgetri(__CLPK_integer n, __CLPK_doublereal *a, __CLPK_integer lda, __CLPK_integer *ipiv, __CLPK_doublereal *work, __CLPK_integer lwork)

◆ ShapeJacMBTET()

PetscErrorCode ShapeJacMBTET ( double diffN,
const double coords,
double jac 
)

calculate jacobian

Definition at line 288 of file fem_tools.c.

288 {
290 int ii, jj, kk;
291 bzero(jac, sizeof(double) * 9);
292 for (ii = 0; ii < 4; ii++) // shape func.
293 for (jj = 0; jj < 3; jj++) // space
294 for (kk = 0; kk < 3; kk++) // derivative of shape func.
295 jac[jj * 3 + kk] += diffN[ii * 3 + kk] * coords[ii * 3 + jj];
297}

◆ ShapeJacMBTETQ()

PetscErrorCode ShapeJacMBTETQ ( const double diffN,
const double coords,
double Jac 
)

Definition at line 967 of file fem_tools.c.

968 {
970 int ii, jj, kk;
971 bzero(Jac, sizeof(double) * 9);
972 for (ii = 0; ii < 10; ii++) // shape func.
973 for (jj = 0; jj < 3; jj++) // space
974 for (kk = 0; kk < 3; kk++) // derivative of shape func.
975 Jac[jj * 3 + kk] += diffN[ii * 3 + kk] * coords[ii * 3 + jj];
977}

◆ ShapeJacMBTRI()

void ShapeJacMBTRI ( double diffN,
const double coords,
double Jac 
)

calculate jacobioan

◆ ShapeMBEDGE()

PetscErrorCode ShapeMBEDGE ( double N,
const double G_X,
int  DIM 
)

Definition at line 761 of file fem_tools.c.

761 {
763 int ii = 0;
764 for (; ii < DIM; ii++) {
765 double x = G_X[ii];
766 N[2 * ii + 0] = N_MBEDGE0(x);
767 N[2 * ii + 1] = N_MBEDGE1(x);
768 }
770}
#define N_MBEDGE0(x)
edge shape function
Definition fem_tools.h:105
#define N_MBEDGE1(x)
edge shape function
Definition fem_tools.h:106

◆ ShapeMBTET()

PetscErrorCode ShapeMBTET ( double N,
const double G_X,
const double G_Y,
const double G_Z,
int  DIM 
)

calculate shape functions

Examples
EshelbianPlasticity.cpp, and forces_and_sources_testing_users_base.cpp.

Definition at line 306 of file fem_tools.c.

307 {
309 int ii = 0;
310 for (; ii < DIM; ii++) {
311 double x = G_X[ii], y = G_Y[ii], z = G_Z[ii];
312 N[4 * ii + 0] = N_MBTET0(x, y, z);
313 N[4 * ii + 1] = N_MBTET1(x, y, z);
314 N[4 * ii + 2] = N_MBTET2(x, y, z);
315 N[4 * ii + 3] = N_MBTET3(x, y, z);
316 }
318}
#define N_MBTET0(x, y, z)
tetrahedral shape function
Definition fem_tools.h:28
#define N_MBTET1(x, y, z)
tetrahedral shape function
Definition fem_tools.h:29
#define N_MBTET2(x, y, z)
tetrahedral shape function
Definition fem_tools.h:30
#define N_MBTET3(x, y, z)
tetrahedral shape function
Definition fem_tools.h:31

◆ ShapeMBTET_inverse()

PetscErrorCode ShapeMBTET_inverse ( double N,
double diffN,
const double elem_coords,
const double glob_coords,
double loc_coords 
)

calculate local coordinates for given global coordinates

new version for multiple points need to be implemented

Definition at line 335 of file fem_tools.c.

338 {
340 double A[3 * 3];
341 int IPIV[3];
342 // COL MAJOR
343 // X
344 A[0 + 3 * 0] =
345 cblas_ddot(4, &diffN[0 * 3 + 0], 3, &elem_coords[0 * 3 + 0], 3);
346 A[0 + 3 * 1] =
347 cblas_ddot(4, &diffN[0 * 3 + 1], 3, &elem_coords[0 * 3 + 0], 3);
348 A[0 + 3 * 2] =
349 cblas_ddot(4, &diffN[0 * 3 + 2], 3, &elem_coords[0 * 3 + 0], 3);
350 loc_coords[0] =
351 glob_coords[0] - cblas_ddot(4, &N[0], 1, &elem_coords[0 * 3 + 0], 3);
352 // printf("A\n[ %3.2f %3.2f %3.2f ] %3.2f \n",A[0*3],A[1*3],A[2*3],R[0]);
353 // Y
354 A[1 + 3 * 0] =
355 cblas_ddot(4, &diffN[0 * 3 + 0], 3, &elem_coords[0 * 3 + 1], 3);
356 A[1 + 3 * 1] =
357 cblas_ddot(4, &diffN[0 * 3 + 1], 3, &elem_coords[0 * 3 + 1], 3);
358 A[1 + 3 * 2] =
359 cblas_ddot(4, &diffN[0 * 3 + 2], 3, &elem_coords[0 * 3 + 1], 3);
360 loc_coords[1] =
361 glob_coords[1] - cblas_ddot(4, &N[0], 1, &elem_coords[0 * 3 + 1], 3);
362 // printf("[ %3.2f %3.2f %3.2f ] %3.2f \n",A[1+3*0],A[1+3*1],A[1+3*2],R[1]);
363 // Z
364 A[2 + 3 * 0] =
365 cblas_ddot(4, &diffN[0 * 3 + 0], 3, &elem_coords[0 * 3 + 2], 3);
366 A[2 + 3 * 1] =
367 cblas_ddot(4, &diffN[0 * 3 + 1], 3, &elem_coords[0 * 3 + 2], 3);
368 A[2 + 3 * 2] =
369 cblas_ddot(4, &diffN[0 * 3 + 2], 3, &elem_coords[0 * 3 + 2], 3);
370 loc_coords[2] =
371 glob_coords[2] - cblas_ddot(4, &N[0], 1, &elem_coords[0 * 3 + 2], 3);
372 // printf("[ %3.2f %3.2f %3.2f ] %3.2f \n",A[2+3*0],A[2+3*1],A[2+3*2],R[1]);
373 int info =
374 lapack_dgesv(3, 1, &A[0], 3, (__CLPK_integer *)IPIV, loc_coords, 3);
375 if (info != 0)
376 SETERRQ(PETSC_COMM_SELF, 1, "info == %d", info);
378}
static __CLPK_integer lapack_dgesv(__CLPK_integer n, __CLPK_integer nrhs, __CLPK_doublereal *a, __CLPK_integer lda, __CLPK_integer *ipiv, __CLPK_doublereal *b, __CLPK_integer ldb)
constexpr AssemblyType A

◆ ShapeMBTETQ()

PetscErrorCode ShapeMBTETQ ( double N,
const double  x,
const double  y,
const double  z 
)

Definition at line 858 of file fem_tools.c.

859 {
861 N[0] = N_MBTETQ0(x, y, z);
862 N[1] = N_MBTETQ1(x, y, z);
863 N[2] = N_MBTETQ2(x, y, z);
864 N[3] = N_MBTETQ3(x, y, z);
865 N[4] = N_MBTETQ4(x, y, z);
866 N[5] = N_MBTETQ5(x, y, z);
867 N[6] = N_MBTETQ6(x, y, z);
868 N[7] = N_MBTETQ7(x, y, z);
869 N[8] = N_MBTETQ8(x, y, z);
870 N[9] = N_MBTETQ9(x, y, z);
872}
#define N_MBTETQ2(x, y, z)
Definition fem_tools.c:820
#define N_MBTETQ9(x, y, z)
Definition fem_tools.c:827
#define N_MBTETQ4(x, y, z)
Definition fem_tools.c:822
#define N_MBTETQ8(x, y, z)
Definition fem_tools.c:826
#define N_MBTETQ6(x, y, z)
Definition fem_tools.c:824
#define N_MBTETQ7(x, y, z)
Definition fem_tools.c:825
#define N_MBTETQ5(x, y, z)
Definition fem_tools.c:823
#define N_MBTETQ1(x, y, z)
Definition fem_tools.c:819
#define N_MBTETQ3(x, y, z)
Definition fem_tools.c:821
#define N_MBTETQ0(x, y, z)
Definition fem_tools.c:818

◆ ShapeMBTETQ_detJac_at_Gauss_Points()

PetscErrorCode ShapeMBTETQ_detJac_at_Gauss_Points ( double detJac_at_Gauss_Points,
const double diffN,
const double coords,
int  G_DIM 
)

Definition at line 979 of file fem_tools.c.

981 {
983
984 double Jac[9];
985 int ii = 0;
986 for (; ii < G_DIM; ii++) {
987 ierr = ShapeJacMBTETQ(&diffN[30 * ii], coords, Jac);
988 CHKERRQ(ierr);
989 detJac_at_Gauss_Points[ii] = ShapeDetJacVolume(Jac);
990 }
992}
double ShapeDetJacVolume(double *jac)
determined of jacobian
Definition fem_tools.c:22
PetscErrorCode ShapeJacMBTETQ(const double *diffN, const double *coords, double *Jac)
Definition fem_tools.c:967

◆ ShapeMBTETQ_GAUSS()

PetscErrorCode ShapeMBTETQ_GAUSS ( double N,
const double X,
const double Y,
const double Z,
const int  G_DIM 
)

Definition at line 908 of file fem_tools.c.

909 {
911 int ii = 0;
912 for (; ii < G_DIM; ii++) {
913 double x = X[ii], y = Y[ii], z = Z[ii];
914 N[10 * ii + 0] = N_MBTETQ0(x, y, z);
915 N[10 * ii + 1] = N_MBTETQ1(x, y, z);
916 N[10 * ii + 2] = N_MBTETQ2(x, y, z);
917 N[10 * ii + 3] = N_MBTETQ3(x, y, z);
918 N[10 * ii + 4] = N_MBTETQ4(x, y, z);
919 N[10 * ii + 5] = N_MBTETQ5(x, y, z);
920 N[10 * ii + 6] = N_MBTETQ6(x, y, z);
921 N[10 * ii + 7] = N_MBTETQ7(x, y, z);
922 N[10 * ii + 8] = N_MBTETQ8(x, y, z);
923 N[10 * ii + 9] = N_MBTETQ9(x, y, z);
924 }
926}

◆ ShapeMBTETQ_inverse()

PetscErrorCode ShapeMBTETQ_inverse ( double N,
double diffN,
const double elem_coords,
const double glob_coords,
double loc_coords,
const double  eps 
)

Definition at line 1007 of file fem_tools.c.

1010 {
1012 double A[3 * 3];
1013 double R[3];
1014 int IPIV[3];
1015 float NORM_dR = 1000.;
1016 float NORM_R0;
1017 ShapeMBTETQ(N, 0.1, 0.1, 0.1);
1018 ShapeDiffMBTETQ(diffN, 0.1, 0.1, 0.1);
1019 R[0] = glob_coords[0] - cblas_ddot(10, &N[0], 1, &elem_coords[0], 3);
1020 R[1] = glob_coords[1] - cblas_ddot(10, &N[0], 1, &elem_coords[1], 3);
1021 R[2] = glob_coords[2] - cblas_ddot(10, &N[0], 1, &elem_coords[2], 3);
1022 NORM_R0 = cblas_dnrm2(3, &R[0], 1);
1023 while ((NORM_dR / NORM_R0) > eps) {
1024 // COL MAJOR
1025 // X
1026 A[0 + 3 * 0] = cblas_ddot(10, &diffN[0 * 3 + 0], 3, &elem_coords[0], 3);
1027 A[0 + 3 * 1] = cblas_ddot(10, &diffN[0 * 3 + 1], 3, &elem_coords[0], 3);
1028 A[0 + 3 * 2] = cblas_ddot(10, &diffN[0 * 3 + 2], 3, &elem_coords[0], 3);
1029 R[0] = glob_coords[0] - cblas_ddot(10, &N[0], 1, &elem_coords[0], 3);
1030 // Y
1031 A[1 + 3 * 0] = cblas_ddot(10, &diffN[0 * 3 + 0], 3, &elem_coords[1], 3);
1032 A[1 + 3 * 1] = cblas_ddot(10, &diffN[0 * 3 + 1], 3, &elem_coords[1], 3);
1033 A[1 + 3 * 2] = cblas_ddot(10, &diffN[0 * 3 + 2], 3, &elem_coords[1], 3);
1034 R[1] = glob_coords[1] - cblas_ddot(10, &N[0], 1, &elem_coords[1], 3);
1035 // Z
1036 A[2 + 3 * 0] =
1037 cblas_ddot(10, &diffN[0 * 3 + 0], 3, &elem_coords[0 * 3 + 2], 3);
1038 A[2 + 3 * 1] =
1039 cblas_ddot(10, &diffN[0 * 3 + 1], 3, &elem_coords[0 * 3 + 2], 3);
1040 A[2 + 3 * 2] =
1041 cblas_ddot(10, &diffN[0 * 3 + 2], 3, &elem_coords[0 * 3 + 2], 3);
1042 R[2] = glob_coords[2] - cblas_ddot(10, &N[0], 1, &elem_coords[2], 3);
1043 int info = lapack_dgesv(3, 1, &A[0], 3, (__CLPK_integer *)IPIV, R, 3);
1044 assert(info == 0);
1045 NOT_USED(info);
1046 cblas_daxpy(3, 1., R, 1, loc_coords, 1);
1047 NORM_dR = cblas_dnrm2(3, &R[0], 1);
1048 ShapeMBTETQ(N, loc_coords[0], loc_coords[1], loc_coords[2]);
1049 ShapeDiffMBTETQ(diffN, loc_coords[0], loc_coords[1], loc_coords[2]);
1050 }
1052}
#define NOT_USED(x)
PetscErrorCode ShapeDiffMBTETQ(double *diffN, const double x, const double y, const double z)
Definition fem_tools.c:873
PetscErrorCode ShapeMBTETQ(double *N, const double x, const double y, const double z)
Definition fem_tools.c:858
@ R

◆ ShapeMBTRI()

PetscErrorCode ShapeMBTRI ( double N,
const double X,
const double Y,
const int  G_DIM 
)

calculate shape functions on triangle

Parameters
Nshape function array
Xarray of Gauss X coordinates
Yarray of Gauss Y coordinates
G_DIMnumber of Gauss points
Examples
EshelbianPlasticity.cpp.

Definition at line 182 of file fem_tools.c.

183 {
185 int ii = 0;
186 for (; ii < G_DIM; ii++) {
187 double x = X[ii], y = Y[ii];
188 N[3 * ii + 0] = N_MBTRI0(x, y);
189 N[3 * ii + 1] = N_MBTRI1(x, y);
190 N[3 * ii + 2] = N_MBTRI2(x, y);
191 }
193}
#define N_MBTRI1(x, y)
triangle shape function
Definition fem_tools.h:47
#define N_MBTRI0(x, y)
triangle shape function
Definition fem_tools.h:46
#define N_MBTRI2(x, y)
triangle shape function
Definition fem_tools.h:48

◆ ShapeMBTRI_inverse()

PetscErrorCode ShapeMBTRI_inverse ( double N,
double diffN,
const double elem_coords,
const double glob_coords,
double loc_coords 
)

calculate local coordinates of triangle element for given global coordinates in 2D (Assume e.g. z=0)

\[ \left[\begin{array}{cc} \frac{\partial N_{1}}{\partial\xi}x_{N_{1}}+\frac{\partial N_{2}}{\partial\xi}x_{N_{2}}+\frac{\partial N_{3}}{\partial\xi}x_{N_{3}} & \frac{\partial N_{1}}{\partial\eta}x_{N_{1}}+\frac{\partial N_{2}}{\partial\eta}x_{N_{2}}+\frac{\partial N_{3}}{\partial\eta}x_{N_{3}}\\ \frac{\partial N_{1}}{\partial\xi}y_{N_{1}}+\frac{\partial N_{2}}{\partial\xi}y_{N_{2}}+\frac{\partial N_{3}}{\partial\xi}y_{N_{3}} & \frac{\partial N_{1}}{\partial\eta}y_{N_{1}}+\frac{\partial N_{2}}{\partial\eta}y_{N_{2}}+\frac{\partial N_{3}}{\partial\eta}y_{N_{3}} \end{array}\right]\left\{ \begin{array}{c} \xi\\ \eta \end{array}\right\} =\left\{ \begin{array}{c} x_{gp}-\left(N_{1}x_{N_{1}}+N_{2}x_{N_{2}}+N_{3}x_{N_{3}}\right)\\ y_{gp}-\left(N_{1}y_{N_{1}}+N_{2}y_{N_{2}}+N_{3}y_{N_{3}}\right) \end{array}\right\} \]

/

Parameters
Nshape function array /
diffNarray of shape function derivative w.r.t to local coordinates /
elem_coordsglobal coordinates of element /
glob_coordsglobal coordinates of required point /
loc_coordslocal coordinates of required point

Definition at line 380 of file fem_tools.c.

383 {
385 double A[2 * 2];
386
387 // 1st and 2nd element of matrix A
388 A[0] = cblas_ddot(3, &diffN[0], 2, &elem_coords[0], 2); // dot product
389 A[1] = cblas_ddot(3, &diffN[1], 2, &elem_coords[0], 2);
390 loc_coords[0] = glob_coords[0] - cblas_ddot(3, &N[0], 1, &elem_coords[0], 2);
391
392 // 3rd and 4th element of matrix A
393 A[2] = cblas_ddot(3, &diffN[0], 2, &elem_coords[1], 2);
394 A[3] = cblas_ddot(3, &diffN[1], 2, &elem_coords[1], 2);
395 loc_coords[1] = glob_coords[1] - cblas_ddot(3, &N[0], 1, &elem_coords[1], 2);
396
397 // calculate directly the solution (as the size of matrix is only 2x2)
398 double invA[2 * 2], detA;
399 detA = A[0] * A[3] - A[1] * A[2];
400 detA = 1.0 / detA;
401 invA[0] = A[3] * detA;
402 invA[1] = -1.0 * A[1] * detA;
403 invA[2] = -1.0 * A[2] * detA;
404 invA[3] = A[0] * detA;
405
406 double loc_coords_new[2];
407 loc_coords_new[0] = invA[0] * loc_coords[0] + invA[1] * loc_coords[1];
408 loc_coords_new[1] = invA[2] * loc_coords[0] + invA[3] * loc_coords[1];
409
410 loc_coords[0] = loc_coords_new[0];
411 loc_coords[1] = loc_coords_new[1];
413}

◆ ShapeMBTRIQ()

PetscErrorCode ShapeMBTRIQ ( double N,
const double X,
const double Y,
const int  G_DIM 
)

Definition at line 780 of file fem_tools.c.

781 {
783 int ii = 0;
784 for (; ii < G_DIM; ii++) {
785 double x = X[ii], y = Y[ii];
786 N[6 * ii + 0] = N_MBTRIQ0(x, y);
787 N[6 * ii + 1] = N_MBTRIQ1(x, y);
788 N[6 * ii + 2] = N_MBTRIQ2(x, y);
789 N[6 * ii + 3] = N_MBTRIQ3(x, y);
790 N[6 * ii + 4] = N_MBTRIQ4(x, y);
791 N[6 * ii + 5] = N_MBTRIQ5(x, y);
792 }
794}
#define N_MBTRIQ2(x, y)
Definition fem_tools.h:113
#define N_MBTRIQ3(x, y)
Definition fem_tools.h:114
#define N_MBTRIQ0(x, y)
Definition fem_tools.h:111
#define N_MBTRIQ4(x, y)
Definition fem_tools.h:115
#define N_MBTRIQ5(x, y)
Definition fem_tools.h:116
#define N_MBTRIQ1(x, y)
Definition fem_tools.h:112

◆ ShapeVolumeMBTET()

double ShapeVolumeMBTET ( double diffN,
const double coords 
)

calculate TET volume

Definition at line 298 of file fem_tools.c.

298 {
299 double Jac[9];
300 ShapeJacMBTET(diffN, coords, Jac);
301 double detJac = ShapeDetJacVolume(Jac);
302 // printf("detJac = +%6.4e\n",detJac);
303 // print_mat(Jac,3,3);
304 return detJac * G_TET_W1[0] / 6.;
305}
PetscErrorCode ShapeJacMBTET(double *diffN, const double *coords, double *jac)
calculate jacobian
Definition fem_tools.c:288

◆ ShapeVolumeMBTETQ()

double ShapeVolumeMBTETQ ( const double diffN,
const double coords,
int  G_DIM,
double G_TET_W 
)

Definition at line 993 of file fem_tools.c.

994 {
995
996 int ii = 0;
997 double vol = 0;
998 double detJac_at_Gauss_Points[G_DIM];
999 ierr = ShapeMBTETQ_detJac_at_Gauss_Points(detJac_at_Gauss_Points, diffN,
1000 coords, G_DIM);
1001 CHKERRQ(ierr);
1002 for (; ii < G_DIM; ii++) {
1003 vol += G_TET_W[ii] * (detJac_at_Gauss_Points[ii]) / 6;
1004 }
1005 return vol;
1006}
PetscErrorCode ShapeMBTETQ_detJac_at_Gauss_Points(double *detJac_at_Gauss_Points, const double *diffN, const double *coords, int G_DIM)
Definition fem_tools.c:979

◆ Spin()

PetscErrorCode Spin ( double spinOmega,
double vecOmega 
)

calculate spin matrix from vector

Definition at line 546 of file fem_tools.c.

546 {
548 bzero(spinOmega, 9 * sizeof(double));
549 spinOmega[0 * 3 + 1] = -vecOmega[2];
550 spinOmega[0 * 3 + 2] = +vecOmega[1];
551 spinOmega[1 * 3 + 0] = +vecOmega[2];
552 spinOmega[1 * 3 + 2] = -vecOmega[0];
553 spinOmega[2 * 3 + 0] = -vecOmega[1];
554 spinOmega[2 * 3 + 1] = +vecOmega[0];
556}

Variable Documentation

◆ G_TET_W1

const double G_TET_W1[] = {1.}
static

Definition at line 1115 of file fem_tools.h.

1115{1.};

◆ G_TET_W10

const double G_TET_W10[]
static
Initial value:
= {0.2177650698804054, 0.2177650698804054,
0.2177650698804054, 0.2177650698804054,
0.0214899534130631, 0.0214899534130631,
0.0214899534130631, 0.0214899534130631,
0.0214899534130631, 0.0214899534130631}

Definition at line 1150 of file fem_tools.h.

1150 {0.2177650698804054, 0.2177650698804054,
1151 0.2177650698804054, 0.2177650698804054,
1152 0.0214899534130631, 0.0214899534130631,
1153 0.0214899534130631, 0.0214899534130631,
1154 0.0214899534130631, 0.0214899534130631};

◆ G_TET_W4

const double G_TET_W4[] = {0.25, 0.25, 0.25, 0.25}
static

Definition at line 1122 of file fem_tools.h.

1122{0.25, 0.25, 0.25, 0.25};

◆ G_TET_W45

const double G_TET_W45[]
static
Initial value:
= {
-0.2359620398477557, 0.0244878963560562, 0.0244878963560562,
0.0244878963560562, 0.0244878963560562, 0.0039485206398261,
0.0039485206398261, 0.0039485206398261, 0.0039485206398261,
0.0263055529507371, 0.0263055529507371, 0.0263055529507371,
0.0263055529507371, 0.0263055529507371, 0.0263055529507371,
0.0829803830550589, 0.0829803830550589, 0.0829803830550589,
0.0829803830550589, 0.0829803830550589, 0.0829803830550589,
0.0254426245481023, 0.0254426245481023, 0.0254426245481023,
0.0254426245481023, 0.0254426245481023, 0.0254426245481023,
0.0254426245481023, 0.0254426245481023, 0.0254426245481023,
0.0254426245481023, 0.0254426245481023, 0.0254426245481023,
0.0134324384376852, 0.0134324384376852, 0.0134324384376852,
0.0134324384376852, 0.0134324384376852, 0.0134324384376852,
0.0134324384376852, 0.0134324384376852, 0.0134324384376852,
0.0134324384376852, 0.0134324384376852, 0.0134324384376852}

Definition at line 1204 of file fem_tools.h.

1204 {
1205 -0.2359620398477557, 0.0244878963560562, 0.0244878963560562,
1206 0.0244878963560562, 0.0244878963560562, 0.0039485206398261,
1207 0.0039485206398261, 0.0039485206398261, 0.0039485206398261,
1208 0.0263055529507371, 0.0263055529507371, 0.0263055529507371,
1209 0.0263055529507371, 0.0263055529507371, 0.0263055529507371,
1210 0.0829803830550589, 0.0829803830550589, 0.0829803830550589,
1211 0.0829803830550589, 0.0829803830550589, 0.0829803830550589,
1212 0.0254426245481023, 0.0254426245481023, 0.0254426245481023,
1213 0.0254426245481023, 0.0254426245481023, 0.0254426245481023,
1214 0.0254426245481023, 0.0254426245481023, 0.0254426245481023,
1215 0.0254426245481023, 0.0254426245481023, 0.0254426245481023,
1216 0.0134324384376852, 0.0134324384376852, 0.0134324384376852,
1217 0.0134324384376852, 0.0134324384376852, 0.0134324384376852,
1218 0.0134324384376852, 0.0134324384376852, 0.0134324384376852,
1219 0.0134324384376852, 0.0134324384376852, 0.0134324384376852};

◆ G_TET_W5

const double G_TET_W5[]
static
Initial value:
= {-0.80000000000000000, 0.45000000000000000,
0.45000000000000000, 0.45000000000000000,
0.45000000000000000}

Definition at line 1132 of file fem_tools.h.

1132 {-0.80000000000000000, 0.45000000000000000,
1133 0.45000000000000000, 0.45000000000000000,
1134 0.45000000000000000};

◆ G_TET_X1

const double G_TET_X1[] = {0.25}
static

Definition at line 1112 of file fem_tools.h.

1112{0.25};

◆ G_TET_X10

const double G_TET_X10[]
static
Initial value:
= {0.5684305841968444, 0.1438564719343852,
0.1438564719343852, 0.1438564719343852,
0.0000000000000000, 0.5000000000000000,
0.5000000000000000, 0.5000000000000000,
0.0000000000000000, 0.0000000000000000}

Definition at line 1135 of file fem_tools.h.

1135 {0.5684305841968444, 0.1438564719343852,
1136 0.1438564719343852, 0.1438564719343852,
1137 0.0000000000000000, 0.5000000000000000,
1138 0.5000000000000000, 0.5000000000000000,
1139 0.0000000000000000, 0.0000000000000000};

◆ G_TET_X4

const double G_TET_X4[]
static
Initial value:
= {0.1757281246520584, 0.2445310270213291,
0.5556470949048655, 0.0240937534217468}

Definition at line 1116 of file fem_tools.h.

1116 {0.1757281246520584, 0.2445310270213291,
1117 0.5556470949048655, 0.0240937534217468};

◆ G_TET_X45

const double G_TET_X45[]
static
Initial value:
= {
0.2500000000000000, 0.6175871903000830, 0.1274709365666390,
0.1274709365666390, 0.1274709365666390, 0.9037635088221031,
0.0320788303926323, 0.0320788303926323, 0.0320788303926323,
0.4502229043567190, 0.0497770956432810, 0.0497770956432810,
0.0497770956432810, 0.4502229043567190, 0.4502229043567190,
0.3162695526014501, 0.1837304473985499, 0.1837304473985499,
0.1837304473985499, 0.3162695526014501, 0.3162695526014501,
0.0229177878448171, 0.2319010893971509, 0.2319010893971509,
0.5132800333608811, 0.2319010893971509, 0.2319010893971509,
0.2319010893971509, 0.0229177878448171, 0.5132800333608811,
0.2319010893971509, 0.0229177878448171, 0.5132800333608811,
0.7303134278075384, 0.0379700484718286, 0.0379700484718286,
0.1937464752488044, 0.0379700484718286, 0.0379700484718286,
0.0379700484718286, 0.7303134278075384, 0.1937464752488044,
0.0379700484718286, 0.7303134278075384, 0.1937464752488044}

Definition at line 1156 of file fem_tools.h.

1156 {
1157 0.2500000000000000, 0.6175871903000830, 0.1274709365666390,
1158 0.1274709365666390, 0.1274709365666390, 0.9037635088221031,
1159 0.0320788303926323, 0.0320788303926323, 0.0320788303926323,
1160 0.4502229043567190, 0.0497770956432810, 0.0497770956432810,
1161 0.0497770956432810, 0.4502229043567190, 0.4502229043567190,
1162 0.3162695526014501, 0.1837304473985499, 0.1837304473985499,
1163 0.1837304473985499, 0.3162695526014501, 0.3162695526014501,
1164 0.0229177878448171, 0.2319010893971509, 0.2319010893971509,
1165 0.5132800333608811, 0.2319010893971509, 0.2319010893971509,
1166 0.2319010893971509, 0.0229177878448171, 0.5132800333608811,
1167 0.2319010893971509, 0.0229177878448171, 0.5132800333608811,
1168 0.7303134278075384, 0.0379700484718286, 0.0379700484718286,
1169 0.1937464752488044, 0.0379700484718286, 0.0379700484718286,
1170 0.0379700484718286, 0.7303134278075384, 0.1937464752488044,
1171 0.0379700484718286, 0.7303134278075384, 0.1937464752488044};

◆ G_TET_X5

const double G_TET_X5[]
static
Initial value:
= {0.25000000000000000, 0.50000000000000000,
0.16666666666666667, 0.16666666666666667,
0.16666666666666667}

Definition at line 1123 of file fem_tools.h.

1123 {0.25000000000000000, 0.50000000000000000,
1124 0.16666666666666667, 0.16666666666666667,
1125 0.16666666666666667};

◆ G_TET_Y1

const double G_TET_Y1[] = {0.25}
static

Definition at line 1113 of file fem_tools.h.

1113{0.25};

◆ G_TET_Y10

const double G_TET_Y10[]
static
Initial value:
= {0.1438564719343852, 0.1438564719343852,
0.1438564719343852, 0.5684305841968444,
0.5000000000000000, 0.0000000000000000,
0.5000000000000000, 0.0000000000000000,
0.5000000000000000, 0.0000000000000000}

Definition at line 1140 of file fem_tools.h.

1140 {0.1438564719343852, 0.1438564719343852,
1141 0.1438564719343852, 0.5684305841968444,
1142 0.5000000000000000, 0.0000000000000000,
1143 0.5000000000000000, 0.0000000000000000,
1144 0.5000000000000000, 0.0000000000000000};

◆ G_TET_Y4

const double G_TET_Y4[]
static
Initial value:
= {0.5656137776620919, 0.0501800797762026,
0.1487681308666864, 0.2354380116950194}

Definition at line 1118 of file fem_tools.h.

1118 {0.5656137776620919, 0.0501800797762026,
1119 0.1487681308666864, 0.2354380116950194};

◆ G_TET_Y45

const double G_TET_Y45[]
static
Initial value:
= {
0.2500000000000000, 0.1274709365666390, 0.1274709365666390,
0.1274709365666390, 0.6175871903000830, 0.0320788303926323,
0.0320788303926323, 0.0320788303926323, 0.9037635088221031,
0.0497770956432810, 0.4502229043567190, 0.0497770956432810,
0.4502229043567190, 0.0497770956432810, 0.4502229043567190,
0.1837304473985499, 0.3162695526014501, 0.1837304473985499,
0.3162695526014501, 0.1837304473985499, 0.3162695526014501,
0.2319010893971509, 0.0229177878448171, 0.2319010893971509,
0.2319010893971509, 0.5132800333608811, 0.2319010893971509,
0.0229177878448171, 0.5132800333608811, 0.2319010893971509,
0.5132800333608811, 0.2319010893971509, 0.0229177878448171,
0.0379700484718286, 0.7303134278075384, 0.0379700484718286,
0.0379700484718286, 0.1937464752488044, 0.0379700484718286,
0.7303134278075384, 0.1937464752488044, 0.0379700484718286,
0.1937464752488044, 0.0379700484718286, 0.7303134278075384}

Definition at line 1172 of file fem_tools.h.

1172 {
1173 0.2500000000000000, 0.1274709365666390, 0.1274709365666390,
1174 0.1274709365666390, 0.6175871903000830, 0.0320788303926323,
1175 0.0320788303926323, 0.0320788303926323, 0.9037635088221031,
1176 0.0497770956432810, 0.4502229043567190, 0.0497770956432810,
1177 0.4502229043567190, 0.0497770956432810, 0.4502229043567190,
1178 0.1837304473985499, 0.3162695526014501, 0.1837304473985499,
1179 0.3162695526014501, 0.1837304473985499, 0.3162695526014501,
1180 0.2319010893971509, 0.0229177878448171, 0.2319010893971509,
1181 0.2319010893971509, 0.5132800333608811, 0.2319010893971509,
1182 0.0229177878448171, 0.5132800333608811, 0.2319010893971509,
1183 0.5132800333608811, 0.2319010893971509, 0.0229177878448171,
1184 0.0379700484718286, 0.7303134278075384, 0.0379700484718286,
1185 0.0379700484718286, 0.1937464752488044, 0.0379700484718286,
1186 0.7303134278075384, 0.1937464752488044, 0.0379700484718286,
1187 0.1937464752488044, 0.0379700484718286, 0.7303134278075384};

◆ G_TET_Y5

const double G_TET_Y5[]
static
Initial value:
= {0.25000000000000000, 0.16666666666666667,
0.50000000000000000, 0.16666666666666667,
0.16666666666666667}

Definition at line 1126 of file fem_tools.h.

1126 {0.25000000000000000, 0.16666666666666667,
1127 0.50000000000000000, 0.16666666666666667,
1128 0.16666666666666667};

◆ G_TET_Z1

const double G_TET_Z1[] = {0.25}
static

Definition at line 1114 of file fem_tools.h.

1114{0.25};

◆ G_TET_Z10

const double G_TET_Z10[]
static
Initial value:
= {0.1438564719343852, 0.1438564719343852,
0.5684305841968444, 0.1438564719343852,
0.5000000000000000, 0.5000000000000000,
0.0000000000000000, 0.0000000000000000,
0.0000000000000000, 0.5000000000000000}

Definition at line 1145 of file fem_tools.h.

1145 {0.1438564719343852, 0.1438564719343852,
1146 0.5684305841968444, 0.1438564719343852,
1147 0.5000000000000000, 0.5000000000000000,
1148 0.0000000000000000, 0.0000000000000000,
1149 0.0000000000000000, 0.5000000000000000};

◆ G_TET_Z4

const double G_TET_Z4[]
static
Initial value:
= {0.2180665126782654, 0.5635595064952189,
0.0350112499848832, 0.1833627308416330}

Definition at line 1120 of file fem_tools.h.

1120 {0.2180665126782654, 0.5635595064952189,
1121 0.0350112499848832, 0.1833627308416330};

◆ G_TET_Z45

const double G_TET_Z45[]
static
Initial value:
= {
0.2500000000000000, 0.1274709365666390, 0.1274709365666390,
0.6175871903000830, 0.1274709365666390, 0.0320788303926323,
0.0320788303926323, 0.9037635088221031, 0.0320788303926323,
0.0497770956432810, 0.0497770956432810, 0.4502229043567190,
0.4502229043567190, 0.4502229043567190, 0.0497770956432810,
0.1837304473985499, 0.1837304473985499, 0.3162695526014501,
0.3162695526014501, 0.3162695526014501, 0.1837304473985499,
0.2319010893971509, 0.2319010893971509, 0.0229177878448171,
0.2319010893971509, 0.2319010893971509, 0.5132800333608811,
0.5132800333608811, 0.2319010893971509, 0.0229177878448171,
0.0229177878448171, 0.5132800333608811, 0.2319010893971509,
0.0379700484718286, 0.0379700484718286, 0.7303134278075384,
0.0379700484718286, 0.0379700484718286, 0.1937464752488044,
0.1937464752488044, 0.0379700484718286, 0.7303134278075384,
0.7303134278075384, 0.1937464752488044, 0.0379700484718286}

Definition at line 1188 of file fem_tools.h.

1188 {
1189 0.2500000000000000, 0.1274709365666390, 0.1274709365666390,
1190 0.6175871903000830, 0.1274709365666390, 0.0320788303926323,
1191 0.0320788303926323, 0.9037635088221031, 0.0320788303926323,
1192 0.0497770956432810, 0.0497770956432810, 0.4502229043567190,
1193 0.4502229043567190, 0.4502229043567190, 0.0497770956432810,
1194 0.1837304473985499, 0.1837304473985499, 0.3162695526014501,
1195 0.3162695526014501, 0.3162695526014501, 0.1837304473985499,
1196 0.2319010893971509, 0.2319010893971509, 0.0229177878448171,
1197 0.2319010893971509, 0.2319010893971509, 0.5132800333608811,
1198 0.5132800333608811, 0.2319010893971509, 0.0229177878448171,
1199 0.0229177878448171, 0.5132800333608811, 0.2319010893971509,
1200 0.0379700484718286, 0.0379700484718286, 0.7303134278075384,
1201 0.0379700484718286, 0.0379700484718286, 0.1937464752488044,
1202 0.1937464752488044, 0.0379700484718286, 0.7303134278075384,
1203 0.7303134278075384, 0.1937464752488044, 0.0379700484718286};

◆ G_TET_Z5

const double G_TET_Z5[]
static
Initial value:
= {0.25000000000000000, 0.16666666666666667,
0.16666666666666667, 0.50000000000000000,
0.16666666666666667}

Definition at line 1129 of file fem_tools.h.

1129 {0.25000000000000000, 0.16666666666666667,
1130 0.16666666666666667, 0.50000000000000000,
1131 0.16666666666666667};

◆ G_TRI_W1

const double G_TRI_W1[] = {1.}
static

Definition at line 314 of file fem_tools.h.

314{1.};

◆ G_TRI_W13

const double G_TRI_W13[]
static
Initial value:
= {
-0.149570044467670, 0.175615257433204, 0.175615257433204, 0.175615257433204,
0.053347235608839, 0.053347235608839, 0.053347235608839, 0.077113760890257,
0.077113760890257, 0.077113760890257, 0.077113760890257, 0.077113760890257,
0.077113760890257}

Definition at line 347 of file fem_tools.h.

347 {
348 -0.149570044467670, 0.175615257433204, 0.175615257433204, 0.175615257433204,
349 0.053347235608839, 0.053347235608839, 0.053347235608839, 0.077113760890257,
350 0.077113760890257, 0.077113760890257, 0.077113760890257, 0.077113760890257,
351 0.077113760890257};

◆ G_TRI_W19

const double G_TRI_W19[]
static
Initial value:
= {
9.71357962827961025E-002, 3.13347002271398278E-002,
3.13347002271398278E-002, 3.13347002271398278E-002,
7.78275410047754301E-002, 7.78275410047754301E-002,
7.78275410047754301E-002, 7.96477389272090969E-002,
7.96477389272090969E-002, 7.96477389272090969E-002,
2.55776756586981006E-002, 2.55776756586981006E-002,
2.55776756586981006E-002, 4.32835393772893970E-002,
4.32835393772893970E-002, 4.32835393772893970E-002,
4.32835393772893970E-002, 4.32835393772893970E-002,
4.32835393772893970E-002}

Definition at line 365 of file fem_tools.h.

365 {
366 9.71357962827961025E-002, 3.13347002271398278E-002,
367 3.13347002271398278E-002, 3.13347002271398278E-002,
368 7.78275410047754301E-002, 7.78275410047754301E-002,
369 7.78275410047754301E-002, 7.96477389272090969E-002,
370 7.96477389272090969E-002, 7.96477389272090969E-002,
371 2.55776756586981006E-002, 2.55776756586981006E-002,
372 2.55776756586981006E-002, 4.32835393772893970E-002,
373 4.32835393772893970E-002, 4.32835393772893970E-002,
374 4.32835393772893970E-002, 4.32835393772893970E-002,
375 4.32835393772893970E-002};

◆ G_TRI_W28

const double G_TRI_W28[]
static
Initial value:
= {
0.08797730116222190, 0.008744311553736190, 0.008744311553736190,
0.008744311553736190, 0.03808157199393533, 0.03808157199393533,
0.03808157199393533, 0.01885544805613125, 0.01885544805613125,
0.01885544805613125, 0.07215969754474100, 0.07215969754474100,
0.07215969754474100, 0.06932913870553720, 0.06932913870553720,
0.06932913870553720, 0.04105631542928860, 0.04105631542928860,
0.04105631542928860, 0.04105631542928860, 0.04105631542928860,
0.04105631542928860, 0.007362383783300573, 0.007362383783300573,
0.007362383783300573, 0.007362383783300573, 0.007362383783300573,
0.007362383783300573}

Definition at line 396 of file fem_tools.h.

396 {
397 0.08797730116222190, 0.008744311553736190, 0.008744311553736190,
398 0.008744311553736190, 0.03808157199393533, 0.03808157199393533,
399 0.03808157199393533, 0.01885544805613125, 0.01885544805613125,
400 0.01885544805613125, 0.07215969754474100, 0.07215969754474100,
401 0.07215969754474100, 0.06932913870553720, 0.06932913870553720,
402 0.06932913870553720, 0.04105631542928860, 0.04105631542928860,
403 0.04105631542928860, 0.04105631542928860, 0.04105631542928860,
404 0.04105631542928860, 0.007362383783300573, 0.007362383783300573,
405 0.007362383783300573, 0.007362383783300573, 0.007362383783300573,
406 0.007362383783300573};

◆ G_TRI_W286

const double G_TRI_W286[]
static
Initial value:
= {
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
2.912193380035668, 2.912193380035668, 2.912193380035668,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, -9.914451197589852, -9.914451197589852,
-9.914451197589852, 13.33158527957992, 13.33158527957992,
13.33158527957992, 13.33158527957992, 13.33158527957992,
13.33158527957992, 13.33158527957992, 13.33158527957992,
13.33158527957992, 13.33158527957992, 13.33158527957992,
13.33158527957992, 13.33158527957992, 13.33158527957992,
13.33158527957992, 13.33158527957992, 13.33158527957992,
13.33158527957992, 13.33158527957992, 13.33158527957992,
13.33158527957992, 13.33158527957992, 13.33158527957992,
13.33158527957992, 13.33158527957992, 13.33158527957992,
13.33158527957992, 13.33158527957992, 13.33158527957992,
13.33158527957992, 13.33158527957992, 13.33158527957992,
13.33158527957992, 13.33158527957992, 13.33158527957992,
13.33158527957992, 13.33158527957992, 13.33158527957992,
13.33158527957992, 13.33158527957992, 13.33158527957992,
13.33158527957992, 13.33158527957992, 13.33158527957992,
13.33158527957992, -9.027792408986382, -9.027792408986382,
-9.027792408986382, -9.027792408986382, -9.027792408986382,
-9.027792408986382, -9.027792408986382, -9.027792408986382,
-9.027792408986382, -9.027792408986382, -9.027792408986382,
-9.027792408986382, -9.027792408986382, -9.027792408986382,
-9.027792408986382, -9.027792408986382, -9.027792408986382,
-9.027792408986382, -9.027792408986382, -9.027792408986382,
-9.027792408986382, -9.027792408986382, -9.027792408986382,
-9.027792408986382, -9.027792408986382, -9.027792408986382,
-9.027792408986382, -9.027792408986382, -9.027792408986382,
-9.027792408986382, -9.027792408986382, -9.027792408986382,
-9.027792408986382, -9.027792408986382, -9.027792408986382,
-9.027792408986382, 3.258672079964582, 3.258672079964582,
3.258672079964582, 3.258672079964582, 3.258672079964582,
3.258672079964582, 3.258672079964582, 3.258672079964582,
3.258672079964582, 3.258672079964582, 3.258672079964582,
3.258672079964582, 3.258672079964582, 3.258672079964582,
3.258672079964582, 3.258672079964582, 3.258672079964582,
3.258672079964582, 3.258672079964582, 3.258672079964582,
3.258672079964582, 3.258672079964582, 3.258672079964582,
3.258672079964582, 3.258672079964582, 3.258672079964582,
3.258672079964582, 3.258672079964582, -0.6133639040302452,
-0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
-0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
-0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
-0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
-0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
-0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
-0.6133639040302452, -0.6133639040302452, 0.05511571669513555,
0.05511571669513555, 0.05511571669513555, 0.05511571669513555,
0.05511571669513555, 0.05511571669513555, 0.05511571669513555,
0.05511571669513555, 0.05511571669513555, 0.05511571669513555,
0.05511571669513555, 0.05511571669513555, 0.05511571669513555,
0.05511571669513555, 0.05511571669513555, -0.001979122382447095,
-0.001979122382447095, -0.001979122382447095, -0.001979122382447095,
-0.001979122382447095, -0.001979122382447095, -0.001979122382447095,
-0.001979122382447095, -0.001979122382447095, -0.001979122382447095,
2.02054621415273e-05, 2.02054621415273e-05, 2.02054621415273e-05,
2.02054621415273e-05, 2.02054621415273e-05, 2.02054621415273e-05,
-2.874940020535803e-08, -2.874940020535803e-08, -2.874940020535803e-08,
8.829438425435718e-13}

Definition at line 1013 of file fem_tools.h.

1013 {
1014 2.912193380035668, 2.912193380035668, 2.912193380035668,
1015 2.912193380035668, 2.912193380035668, 2.912193380035668,
1016 2.912193380035668, 2.912193380035668, 2.912193380035668,
1017 2.912193380035668, 2.912193380035668, 2.912193380035668,
1018 2.912193380035668, 2.912193380035668, 2.912193380035668,
1019 2.912193380035668, 2.912193380035668, 2.912193380035668,
1020 2.912193380035668, 2.912193380035668, 2.912193380035668,
1021 2.912193380035668, 2.912193380035668, 2.912193380035668,
1022 2.912193380035668, 2.912193380035668, 2.912193380035668,
1023 2.912193380035668, 2.912193380035668, 2.912193380035668,
1024 2.912193380035668, 2.912193380035668, 2.912193380035668,
1025 2.912193380035668, 2.912193380035668, 2.912193380035668,
1026 2.912193380035668, 2.912193380035668, 2.912193380035668,
1027 2.912193380035668, 2.912193380035668, 2.912193380035668,
1028 2.912193380035668, 2.912193380035668, 2.912193380035668,
1029 2.912193380035668, 2.912193380035668, 2.912193380035668,
1030 2.912193380035668, 2.912193380035668, 2.912193380035668,
1031 2.912193380035668, 2.912193380035668, 2.912193380035668,
1032 2.912193380035668, 2.912193380035668, 2.912193380035668,
1033 2.912193380035668, 2.912193380035668, 2.912193380035668,
1034 2.912193380035668, 2.912193380035668, 2.912193380035668,
1035 2.912193380035668, 2.912193380035668, 2.912193380035668,
1036 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1037 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1038 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1039 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1040 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1041 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1042 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1043 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1044 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1045 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1046 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1047 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1048 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1049 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1050 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1051 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1052 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1053 -9.914451197589852, -9.914451197589852, -9.914451197589852,
1054 -9.914451197589852, 13.33158527957992, 13.33158527957992,
1055 13.33158527957992, 13.33158527957992, 13.33158527957992,
1056 13.33158527957992, 13.33158527957992, 13.33158527957992,
1057 13.33158527957992, 13.33158527957992, 13.33158527957992,
1058 13.33158527957992, 13.33158527957992, 13.33158527957992,
1059 13.33158527957992, 13.33158527957992, 13.33158527957992,
1060 13.33158527957992, 13.33158527957992, 13.33158527957992,
1061 13.33158527957992, 13.33158527957992, 13.33158527957992,
1062 13.33158527957992, 13.33158527957992, 13.33158527957992,
1063 13.33158527957992, 13.33158527957992, 13.33158527957992,
1064 13.33158527957992, 13.33158527957992, 13.33158527957992,
1065 13.33158527957992, 13.33158527957992, 13.33158527957992,
1066 13.33158527957992, 13.33158527957992, 13.33158527957992,
1067 13.33158527957992, 13.33158527957992, 13.33158527957992,
1068 13.33158527957992, 13.33158527957992, 13.33158527957992,
1069 13.33158527957992, -9.027792408986382, -9.027792408986382,
1070 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1071 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1072 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1073 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1074 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1075 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1076 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1077 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1078 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1079 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1080 -9.027792408986382, -9.027792408986382, -9.027792408986382,
1081 -9.027792408986382, 3.258672079964582, 3.258672079964582,
1082 3.258672079964582, 3.258672079964582, 3.258672079964582,
1083 3.258672079964582, 3.258672079964582, 3.258672079964582,
1084 3.258672079964582, 3.258672079964582, 3.258672079964582,
1085 3.258672079964582, 3.258672079964582, 3.258672079964582,
1086 3.258672079964582, 3.258672079964582, 3.258672079964582,
1087 3.258672079964582, 3.258672079964582, 3.258672079964582,
1088 3.258672079964582, 3.258672079964582, 3.258672079964582,
1089 3.258672079964582, 3.258672079964582, 3.258672079964582,
1090 3.258672079964582, 3.258672079964582, -0.6133639040302452,
1091 -0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
1092 -0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
1093 -0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
1094 -0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
1095 -0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
1096 -0.6133639040302452, -0.6133639040302452, -0.6133639040302452,
1097 -0.6133639040302452, -0.6133639040302452, 0.05511571669513555,
1098 0.05511571669513555, 0.05511571669513555, 0.05511571669513555,
1099 0.05511571669513555, 0.05511571669513555, 0.05511571669513555,
1100 0.05511571669513555, 0.05511571669513555, 0.05511571669513555,
1101 0.05511571669513555, 0.05511571669513555, 0.05511571669513555,
1102 0.05511571669513555, 0.05511571669513555, -0.001979122382447095,
1103 -0.001979122382447095, -0.001979122382447095, -0.001979122382447095,
1104 -0.001979122382447095, -0.001979122382447095, -0.001979122382447095,
1105 -0.001979122382447095, -0.001979122382447095, -0.001979122382447095,
1106 2.02054621415273e-05, 2.02054621415273e-05, 2.02054621415273e-05,
1107 2.02054621415273e-05, 2.02054621415273e-05, 2.02054621415273e-05,
1108 -2.874940020535803e-08, -2.874940020535803e-08, -2.874940020535803e-08,
1109 8.829438425435718e-13};

◆ G_TRI_W3

const double G_TRI_W3[]
static
Initial value:
= {
3.3333333333333331e-01, 3.3333333333333331e-01, 3.3333333333333331e-01}

Definition at line 317 of file fem_tools.h.

317 {
318 3.3333333333333331e-01, 3.3333333333333331e-01, 3.3333333333333331e-01};

◆ G_TRI_W37

const double G_TRI_W37[]
static
Initial value:
= {
0.051739766065744, 0.008007799555565, 0.008007799555565, 0.008007799555565,
0.046868898981822, 0.046868898981822, 0.046868898981822, 0.046590940183976,
0.046590940183976, 0.046590940183976, 0.031016943313796, 0.031016943313796,
0.031016943313796, 0.010791612736631, 0.010791612736631, 0.010791612736631,
0.032195534242432, 0.032195534242432, 0.032195534242432, 0.015445834210702,
0.015445834210702, 0.015445834210702, 0.015445834210702, 0.015445834210702,
0.015445834210702, 0.017822989923179, 0.017822989923179, 0.017822989923179,
0.017822989923179, 0.017822989923179, 0.017822989923179, 0.037038683681385,
0.037038683681385, 0.037038683681385, 0.037038683681385, 0.037038683681385,
0.037038683681385}

Definition at line 430 of file fem_tools.h.

430 {
431 0.051739766065744, 0.008007799555565, 0.008007799555565, 0.008007799555565,
432 0.046868898981822, 0.046868898981822, 0.046868898981822, 0.046590940183976,
433 0.046590940183976, 0.046590940183976, 0.031016943313796, 0.031016943313796,
434 0.031016943313796, 0.010791612736631, 0.010791612736631, 0.010791612736631,
435 0.032195534242432, 0.032195534242432, 0.032195534242432, 0.015445834210702,
436 0.015445834210702, 0.015445834210702, 0.015445834210702, 0.015445834210702,
437 0.015445834210702, 0.017822989923179, 0.017822989923179, 0.017822989923179,
438 0.017822989923179, 0.017822989923179, 0.017822989923179, 0.037038683681385,
439 0.037038683681385, 0.037038683681385, 0.037038683681385, 0.037038683681385,
440 0.037038683681385};

◆ G_TRI_W4

const double G_TRI_W4[]
static
Initial value:
= {
1.8195861825602258066e-01, 3.1804138174397683647e-01,
1.8195861825602258066e-01, 3.1804138174397683647e-01}

Definition at line 325 of file fem_tools.h.

325 {
326 1.8195861825602258066e-01, 3.1804138174397683647e-01,
327 1.8195861825602258066e-01, 3.1804138174397683647e-01};

◆ G_TRI_W7

const double G_TRI_W7[]
static
Initial value:
= {
0.375000000000000, 0.104166666666667, 0.104166666666667, 0.104166666666667,
0.104166666666667, 0.104166666666667, 0.104166666666667}

Definition at line 334 of file fem_tools.h.

334 {
335 0.375000000000000, 0.104166666666667, 0.104166666666667, 0.104166666666667,
336 0.104166666666667, 0.104166666666667, 0.104166666666667};

◆ G_TRI_X1

const double G_TRI_X1[] = {3.3333333333333331e-01}
static

Definition at line 312 of file fem_tools.h.

312{3.3333333333333331e-01};

◆ G_TRI_X13

const double G_TRI_X13[]
static
Initial value:
= {
0.333333333333333, 0.479308067841923, 0.260345966079038, 0.260345966079038,
0.869739794195568, 0.065130102902216, 0.065130102902216, 0.638444188569809,
0.638444188569809, 0.312865496004875, 0.312865496004875, 0.048690315425316,
0.048690315425316}

Definition at line 337 of file fem_tools.h.

337 {
338 0.333333333333333, 0.479308067841923, 0.260345966079038, 0.260345966079038,
339 0.869739794195568, 0.065130102902216, 0.065130102902216, 0.638444188569809,
340 0.638444188569809, 0.312865496004875, 0.312865496004875, 0.048690315425316,
341 0.048690315425316};

◆ G_TRI_X19

const double G_TRI_X19[]
static
Initial value:
= {
0.333333333333333, 0.797426985353087, 0.101286507323456, 0.101286507323456,
0.059715871789770, 0.470142064105115, 0.470142064105115, 0.535795346449899,
0.232102326775050, 0.232102326775050, 0.941038278231121, 0.029480860884440,
0.029480860884440, 0.738416812340510, 0.738416812340510, 0.232102326775050,
0.232102326775050, 0.029480860884440, 0.029480860884440}

Definition at line 353 of file fem_tools.h.

353 {
354 0.333333333333333, 0.797426985353087, 0.101286507323456, 0.101286507323456,
355 0.059715871789770, 0.470142064105115, 0.470142064105115, 0.535795346449899,
356 0.232102326775050, 0.232102326775050, 0.941038278231121, 0.029480860884440,
357 0.029480860884440, 0.738416812340510, 0.738416812340510, 0.232102326775050,
358 0.232102326775050, 0.029480860884440, 0.029480860884440};

◆ G_TRI_X28

const double G_TRI_X28[]
static
Initial value:
= {
0.333333333333333, 0.948021718143423, 0.025989140928288,
0.025989140928288, 0.811424994704155, 0.094287502647923,
0.094287502647923, 0.010726449965571, 0.494636775017215,
0.494636775017215, 0.585313234770972, 0.207343382614514,
0.207343382614514, 0.122184388599019, 0.438907805700491,
0.438907805700491, 0.677937654882590, 0.677937654882590,
0.044841677589131, 0.044841677589131, 0.277220667528279,
0.277220667528279, 0.858870281282636, 0.858870281282636,
0.0000000000000000, 0.0000000000000000, 0.141129718717364,
0.141129718717364}

Definition at line 377 of file fem_tools.h.

377 {
378 0.333333333333333, 0.948021718143423, 0.025989140928288,
379 0.025989140928288, 0.811424994704155, 0.094287502647923,
380 0.094287502647923, 0.010726449965571, 0.494636775017215,
381 0.494636775017215, 0.585313234770972, 0.207343382614514,
382 0.207343382614514, 0.122184388599019, 0.438907805700491,
383 0.438907805700491, 0.677937654882590, 0.677937654882590,
384 0.044841677589131, 0.044841677589131, 0.277220667528279,
385 0.277220667528279, 0.858870281282636, 0.858870281282636,
386 0.0000000000000000, 0.0000000000000000, 0.141129718717364,
387 0.141129718717364};

◆ G_TRI_X286

const double G_TRI_X286[]
static

Definition at line 441 of file fem_tools.h.

441 {0.04347826086956522,
442 0.1304347826086956,
443 0.2173913043478261,
444 0.3043478260869565,
445 0.391304347826087,
446 0.4782608695652174,
447 0.5652173913043478,
448 0.6521739130434783,
449 0.7391304347826086,
450 0.8260869565217391,
451 0.9130434782608695,
452 0.04347826086956522,
453 0.1304347826086956,
454 0.2173913043478261,
455 0.3043478260869565,
456 0.391304347826087,
457 0.4782608695652174,
458 0.5652173913043478,
459 0.6521739130434783,
460 0.7391304347826086,
461 0.8260869565217391,
462 0.04347826086956522,
463 0.1304347826086956,
464 0.2173913043478261,
465 0.3043478260869565,
466 0.391304347826087,
467 0.4782608695652174,
468 0.5652173913043478,
469 0.6521739130434783,
470 0.7391304347826086,
471 0.04347826086956522,
472 0.1304347826086956,
473 0.2173913043478261,
474 0.3043478260869565,
475 0.391304347826087,
476 0.4782608695652174,
477 0.5652173913043478,
478 0.6521739130434783,
479 0.04347826086956522,
480 0.1304347826086956,
481 0.2173913043478261,
482 0.3043478260869565,
483 0.391304347826087,
484 0.4782608695652174,
485 0.5652173913043478,
486 0.04347826086956522,
487 0.1304347826086956,
488 0.2173913043478261,
489 0.3043478260869565,
490 0.391304347826087,
491 0.4782608695652174,
492 0.04347826086956522,
493 0.1304347826086956,
494 0.2173913043478261,
495 0.3043478260869565,
496 0.391304347826087,
497 0.04347826086956522,
498 0.1304347826086956,
499 0.2173913043478261,
500 0.3043478260869565,
501 0.04347826086956522,
502 0.1304347826086956,
503 0.2173913043478261,
504 0.04347826086956522,
505 0.1304347826086956,
506 0.04347826086956522,
507 0.04761904761904762,
508 0.1428571428571428,
509 0.2380952380952381,
510 0.3333333333333333,
511 0.4285714285714285,
512 0.5238095238095238,
513 0.6190476190476191,
514 0.7142857142857143,
515 0.8095238095238095,
516 0.9047619047619048,
517 0.04761904761904762,
518 0.1428571428571428,
519 0.2380952380952381,
520 0.3333333333333333,
521 0.4285714285714285,
522 0.5238095238095238,
523 0.6190476190476191,
524 0.7142857142857143,
525 0.8095238095238095,
526 0.04761904761904762,
527 0.1428571428571428,
528 0.2380952380952381,
529 0.3333333333333333,
530 0.4285714285714285,
531 0.5238095238095238,
532 0.6190476190476191,
533 0.7142857142857143,
534 0.04761904761904762,
535 0.1428571428571428,
536 0.2380952380952381,
537 0.3333333333333333,
538 0.4285714285714285,
539 0.5238095238095238,
540 0.6190476190476191,
541 0.04761904761904762,
542 0.1428571428571428,
543 0.2380952380952381,
544 0.3333333333333333,
545 0.4285714285714285,
546 0.5238095238095238,
547 0.04761904761904762,
548 0.1428571428571428,
549 0.2380952380952381,
550 0.3333333333333333,
551 0.4285714285714285,
552 0.04761904761904762,
553 0.1428571428571428,
554 0.2380952380952381,
555 0.3333333333333333,
556 0.04761904761904762,
557 0.1428571428571428,
558 0.2380952380952381,
559 0.04761904761904762,
560 0.1428571428571428,
561 0.04761904761904762,
562 0.05263157894736842,
563 0.1578947368421053,
564 0.2631578947368421,
565 0.3684210526315789,
566 0.4736842105263158,
567 0.5789473684210527,
568 0.6842105263157895,
569 0.7894736842105263,
570 0.8947368421052632,
571 0.05263157894736842,
572 0.1578947368421053,
573 0.2631578947368421,
574 0.3684210526315789,
575 0.4736842105263158,
576 0.5789473684210527,
577 0.6842105263157895,
578 0.7894736842105263,
579 0.05263157894736842,
580 0.1578947368421053,
581 0.2631578947368421,
582 0.3684210526315789,
583 0.4736842105263158,
584 0.5789473684210527,
585 0.6842105263157895,
586 0.05263157894736842,
587 0.1578947368421053,
588 0.2631578947368421,
589 0.3684210526315789,
590 0.4736842105263158,
591 0.5789473684210527,
592 0.05263157894736842,
593 0.1578947368421053,
594 0.2631578947368421,
595 0.3684210526315789,
596 0.4736842105263158,
597 0.05263157894736842,
598 0.1578947368421053,
599 0.2631578947368421,
600 0.3684210526315789,
601 0.05263157894736842,
602 0.1578947368421053,
603 0.2631578947368421,
604 0.05263157894736842,
605 0.1578947368421053,
606 0.05263157894736842,
607 0.05882352941176471,
608 0.1764705882352941,
609 0.2941176470588235,
610 0.4117647058823529,
611 0.5294117647058824,
612 0.6470588235294118,
613 0.7647058823529411,
614 0.8823529411764706,
615 0.05882352941176471,
616 0.1764705882352941,
617 0.2941176470588235,
618 0.4117647058823529,
619 0.5294117647058824,
620 0.6470588235294118,
621 0.7647058823529411,
622 0.05882352941176471,
623 0.1764705882352941,
624 0.2941176470588235,
625 0.4117647058823529,
626 0.5294117647058824,
627 0.6470588235294118,
628 0.05882352941176471,
629 0.1764705882352941,
630 0.2941176470588235,
631 0.4117647058823529,
632 0.5294117647058824,
633 0.05882352941176471,
634 0.1764705882352941,
635 0.2941176470588235,
636 0.4117647058823529,
637 0.05882352941176471,
638 0.1764705882352941,
639 0.2941176470588235,
640 0.05882352941176471,
641 0.1764705882352941,
642 0.05882352941176471,
643 0.06666666666666667,
644 0.2,
645 0.3333333333333333,
646 0.4666666666666667,
647 0.6,
648 0.7333333333333333,
649 0.8666666666666667,
650 0.06666666666666667,
651 0.2,
652 0.3333333333333333,
653 0.4666666666666667,
654 0.6,
655 0.7333333333333333,
656 0.06666666666666667,
657 0.2,
658 0.3333333333333333,
659 0.4666666666666667,
660 0.6,
661 0.06666666666666667,
662 0.2,
663 0.3333333333333333,
664 0.4666666666666667,
665 0.06666666666666667,
666 0.2,
667 0.3333333333333333,
668 0.06666666666666667,
669 0.2,
670 0.06666666666666667,
671 0.07692307692307693,
672 0.2307692307692308,
673 0.3846153846153846,
674 0.5384615384615384,
675 0.6923076923076923,
676 0.8461538461538461,
677 0.07692307692307693,
678 0.2307692307692308,
679 0.3846153846153846,
680 0.5384615384615384,
681 0.6923076923076923,
682 0.07692307692307693,
683 0.2307692307692308,
684 0.3846153846153846,
685 0.5384615384615384,
686 0.07692307692307693,
687 0.2307692307692308,
688 0.3846153846153846,
689 0.07692307692307693,
690 0.2307692307692308,
691 0.07692307692307693,
692 0.09090909090909091,
693 0.2727272727272727,
694 0.4545454545454545,
695 0.6363636363636364,
696 0.8181818181818182,
697 0.09090909090909091,
698 0.2727272727272727,
699 0.4545454545454545,
700 0.6363636363636364,
701 0.09090909090909091,
702 0.2727272727272727,
703 0.4545454545454545,
704 0.09090909090909091,
705 0.2727272727272727,
706 0.09090909090909091,
707 0.1111111111111111,
708 0.3333333333333333,
709 0.5555555555555556,
710 0.7777777777777778,
711 0.1111111111111111,
712 0.3333333333333333,
713 0.5555555555555556,
714 0.1111111111111111,
715 0.3333333333333333,
716 0.1111111111111111,
717 0.1428571428571428,
718 0.4285714285714285,
719 0.7142857142857143,
720 0.1428571428571428,
721 0.4285714285714285,
722 0.1428571428571428,
723 0.2,
724 0.6,
725 0.2,
726 0.3333333333333333};

◆ G_TRI_X3

const double G_TRI_X3[] = {0.5, 0., 0.5}
static

Definition at line 315 of file fem_tools.h.

315{0.5, 0., 0.5};

◆ G_TRI_X37

const double G_TRI_X37[]
static
Initial value:
= {
0.333333333333333, 0.950275662924106, 0.024862168537947, 0.024862168537947,
0.171614914923835, 0.414192542538082, 0.414192542538082, 0.539412243677190,
0.230293878161405, 0.230293878161405, 0.772160036676533, 0.113919981661734,
0.113919981661734, 0.009085399949835, 0.495457300025082, 0.495457300025082,
0.062277290305887, 0.468861354847056, 0.468861354847056, 0.022076289653624,
0.022076289653624, 0.851306504174348, 0.851306504174348, 0.126617206172027,
0.126617206172027, 0.018620522802521, 0.018620522802521, 0.689441970728591,
0.689441970728591, 0.291937506468888, 0.291937506468888, 0.096506481292159,
0.096506481292159, 0.635867859433873, 0.635867859433873, 0.267625659273968,
0.267625659273968}

Definition at line 408 of file fem_tools.h.

408 {
409 0.333333333333333, 0.950275662924106, 0.024862168537947, 0.024862168537947,
410 0.171614914923835, 0.414192542538082, 0.414192542538082, 0.539412243677190,
411 0.230293878161405, 0.230293878161405, 0.772160036676533, 0.113919981661734,
412 0.113919981661734, 0.009085399949835, 0.495457300025082, 0.495457300025082,
413 0.062277290305887, 0.468861354847056, 0.468861354847056, 0.022076289653624,
414 0.022076289653624, 0.851306504174348, 0.851306504174348, 0.126617206172027,
415 0.126617206172027, 0.018620522802521, 0.018620522802521, 0.689441970728591,
416 0.689441970728591, 0.291937506468888, 0.291937506468888, 0.096506481292159,
417 0.096506481292159, 0.635867859433873, 0.635867859433873, 0.267625659273968,
418 0.267625659273968};

◆ G_TRI_X4

const double G_TRI_X4[]
static
Initial value:
= {
7.503111022260811058e-02, 1.785587282636164064e-01,
2.800199154990741235e-01, 6.663902460147014262e-01}

Definition at line 319 of file fem_tools.h.

319 {
320 7.503111022260811058e-02, 1.785587282636164064e-01,
321 2.800199154990741235e-01, 6.663902460147014262e-01};

◆ G_TRI_X7

const double G_TRI_X7[]
static
Initial value:
= {
0.333333333333333, 0.736712498968435, 0.736712498968435, 0.237932366472434,
0.237932366472434, 0.025355134551932, 0.025355134551932}

Definition at line 328 of file fem_tools.h.

328 {
329 0.333333333333333, 0.736712498968435, 0.736712498968435, 0.237932366472434,
330 0.237932366472434, 0.025355134551932, 0.025355134551932};

◆ G_TRI_Y1

const double G_TRI_Y1[] = {3.3333333333333331e-01}
static

Definition at line 313 of file fem_tools.h.

313{3.3333333333333331e-01};

◆ G_TRI_Y13

const double G_TRI_Y13[]
static
Initial value:
= {
0.333333333333333, 0.260345966079038, 0.479308067841923, 0.260345966079038,
0.065130102902216, 0.869739794195568, 0.065130102902216, 0.312865496004875,
0.048690315425316, 0.638444188569809, 0.048690315425316, 0.638444188569809,
0.312865496004875}

Definition at line 342 of file fem_tools.h.

342 {
343 0.333333333333333, 0.260345966079038, 0.479308067841923, 0.260345966079038,
344 0.065130102902216, 0.869739794195568, 0.065130102902216, 0.312865496004875,
345 0.048690315425316, 0.638444188569809, 0.048690315425316, 0.638444188569809,
346 0.312865496004875};

◆ G_TRI_Y19

const double G_TRI_Y19[]
static
Initial value:
= {
0.333333333333333, 0.101286507323456, 0.797426985353087, 0.101286507323456,
0.470142064105115, 0.059715871789770, 0.470142064105115, 0.232102326775050,
0.535795346449899, 0.232102326775050, 0.029480860884440, 0.941038278231121,
0.029480860884440, 0.232102326775050, 0.029480860884440, 0.738416812340510,
0.029480860884440, 0.738416812340510, 0.232102326775050}

Definition at line 359 of file fem_tools.h.

359 {
360 0.333333333333333, 0.101286507323456, 0.797426985353087, 0.101286507323456,
361 0.470142064105115, 0.059715871789770, 0.470142064105115, 0.232102326775050,
362 0.535795346449899, 0.232102326775050, 0.029480860884440, 0.941038278231121,
363 0.029480860884440, 0.232102326775050, 0.029480860884440, 0.738416812340510,
364 0.029480860884440, 0.738416812340510, 0.232102326775050};

◆ G_TRI_Y28

const double G_TRI_Y28[]
static
Initial value:
= {
0.333333333333333, 0.025989140928288, 0.948021718143423, 0.025989140928288,
0.094287502647923, 0.811424994704155, 0.094287502647923, 0.494636775017215,
0.010726449965571, 0.494636775017215, 0.207343382614514, 0.585313234770972,
0.207343382614514, 0.438907805700491, 0.122184388599019, 0.438907805700491,
0.044841677589131, 0.277220667528279, 0.677937654882590, 0.277220667528279,
0.677937654882590, 0.044841677589131, 0.000000000000000, 0.141129718717364,
0.858870281282636, 0.141129718717364, 0.858870281282636, 0.000000000000000}

Definition at line 388 of file fem_tools.h.

388 {
389 0.333333333333333, 0.025989140928288, 0.948021718143423, 0.025989140928288,
390 0.094287502647923, 0.811424994704155, 0.094287502647923, 0.494636775017215,
391 0.010726449965571, 0.494636775017215, 0.207343382614514, 0.585313234770972,
392 0.207343382614514, 0.438907805700491, 0.122184388599019, 0.438907805700491,
393 0.044841677589131, 0.277220667528279, 0.677937654882590, 0.277220667528279,
394 0.677937654882590, 0.044841677589131, 0.000000000000000, 0.141129718717364,
395 0.858870281282636, 0.141129718717364, 0.858870281282636, 0.000000000000000};

◆ G_TRI_Y286

const double G_TRI_Y286[]
static

Definition at line 727 of file fem_tools.h.

727 {0.04347826086956522,
728 0.04347826086956522,
729 0.04347826086956522,
730 0.04347826086956522,
731 0.04347826086956522,
732 0.04347826086956522,
733 0.04347826086956522,
734 0.04347826086956522,
735 0.04347826086956522,
736 0.04347826086956522,
737 0.04347826086956522,
738 0.1304347826086956,
739 0.1304347826086956,
740 0.1304347826086956,
741 0.1304347826086956,
742 0.1304347826086956,
743 0.1304347826086956,
744 0.1304347826086956,
745 0.1304347826086956,
746 0.1304347826086956,
747 0.1304347826086956,
748 0.2173913043478261,
749 0.2173913043478261,
750 0.2173913043478261,
751 0.2173913043478261,
752 0.2173913043478261,
753 0.2173913043478261,
754 0.2173913043478261,
755 0.2173913043478261,
756 0.2173913043478261,
757 0.3043478260869565,
758 0.3043478260869565,
759 0.3043478260869565,
760 0.3043478260869565,
761 0.3043478260869565,
762 0.3043478260869565,
763 0.3043478260869565,
764 0.3043478260869565,
765 0.391304347826087,
766 0.391304347826087,
767 0.391304347826087,
768 0.391304347826087,
769 0.391304347826087,
770 0.391304347826087,
771 0.391304347826087,
772 0.4782608695652174,
773 0.4782608695652174,
774 0.4782608695652174,
775 0.4782608695652174,
776 0.4782608695652174,
777 0.4782608695652174,
778 0.5652173913043478,
779 0.5652173913043478,
780 0.5652173913043478,
781 0.5652173913043478,
782 0.5652173913043478,
783 0.6521739130434783,
784 0.6521739130434783,
785 0.6521739130434783,
786 0.6521739130434783,
787 0.7391304347826086,
788 0.7391304347826086,
789 0.7391304347826086,
790 0.8260869565217391,
791 0.8260869565217391,
792 0.9130434782608695,
793 0.04761904761904762,
794 0.04761904761904762,
795 0.04761904761904762,
796 0.04761904761904762,
797 0.04761904761904762,
798 0.04761904761904762,
799 0.04761904761904762,
800 0.04761904761904762,
801 0.04761904761904762,
802 0.04761904761904762,
803 0.1428571428571428,
804 0.1428571428571428,
805 0.1428571428571428,
806 0.1428571428571428,
807 0.1428571428571428,
808 0.1428571428571428,
809 0.1428571428571428,
810 0.1428571428571428,
811 0.1428571428571428,
812 0.2380952380952381,
813 0.2380952380952381,
814 0.2380952380952381,
815 0.2380952380952381,
816 0.2380952380952381,
817 0.2380952380952381,
818 0.2380952380952381,
819 0.2380952380952381,
820 0.3333333333333333,
821 0.3333333333333333,
822 0.3333333333333333,
823 0.3333333333333333,
824 0.3333333333333333,
825 0.3333333333333333,
826 0.3333333333333333,
827 0.4285714285714285,
828 0.4285714285714285,
829 0.4285714285714285,
830 0.4285714285714285,
831 0.4285714285714285,
832 0.4285714285714285,
833 0.5238095238095238,
834 0.5238095238095238,
835 0.5238095238095238,
836 0.5238095238095238,
837 0.5238095238095238,
838 0.6190476190476191,
839 0.6190476190476191,
840 0.6190476190476191,
841 0.6190476190476191,
842 0.7142857142857143,
843 0.7142857142857143,
844 0.7142857142857143,
845 0.8095238095238095,
846 0.8095238095238095,
847 0.9047619047619048,
848 0.05263157894736842,
849 0.05263157894736842,
850 0.05263157894736842,
851 0.05263157894736842,
852 0.05263157894736842,
853 0.05263157894736842,
854 0.05263157894736842,
855 0.05263157894736842,
856 0.05263157894736842,
857 0.1578947368421053,
858 0.1578947368421053,
859 0.1578947368421053,
860 0.1578947368421053,
861 0.1578947368421053,
862 0.1578947368421053,
863 0.1578947368421053,
864 0.1578947368421053,
865 0.2631578947368421,
866 0.2631578947368421,
867 0.2631578947368421,
868 0.2631578947368421,
869 0.2631578947368421,
870 0.2631578947368421,
871 0.2631578947368421,
872 0.3684210526315789,
873 0.3684210526315789,
874 0.3684210526315789,
875 0.3684210526315789,
876 0.3684210526315789,
877 0.3684210526315789,
878 0.4736842105263158,
879 0.4736842105263158,
880 0.4736842105263158,
881 0.4736842105263158,
882 0.4736842105263158,
883 0.5789473684210527,
884 0.5789473684210527,
885 0.5789473684210527,
886 0.5789473684210527,
887 0.6842105263157895,
888 0.6842105263157895,
889 0.6842105263157895,
890 0.7894736842105263,
891 0.7894736842105263,
892 0.8947368421052632,
893 0.05882352941176471,
894 0.05882352941176471,
895 0.05882352941176471,
896 0.05882352941176471,
897 0.05882352941176471,
898 0.05882352941176471,
899 0.05882352941176471,
900 0.05882352941176471,
901 0.1764705882352941,
902 0.1764705882352941,
903 0.1764705882352941,
904 0.1764705882352941,
905 0.1764705882352941,
906 0.1764705882352941,
907 0.1764705882352941,
908 0.2941176470588235,
909 0.2941176470588235,
910 0.2941176470588235,
911 0.2941176470588235,
912 0.2941176470588235,
913 0.2941176470588235,
914 0.4117647058823529,
915 0.4117647058823529,
916 0.4117647058823529,
917 0.4117647058823529,
918 0.4117647058823529,
919 0.5294117647058824,
920 0.5294117647058824,
921 0.5294117647058824,
922 0.5294117647058824,
923 0.6470588235294118,
924 0.6470588235294118,
925 0.6470588235294118,
926 0.7647058823529411,
927 0.7647058823529411,
928 0.8823529411764706,
929 0.06666666666666667,
930 0.06666666666666667,
931 0.06666666666666667,
932 0.06666666666666667,
933 0.06666666666666667,
934 0.06666666666666667,
935 0.06666666666666667,
936 0.2,
937 0.2,
938 0.2,
939 0.2,
940 0.2,
941 0.2,
942 0.3333333333333333,
943 0.3333333333333333,
944 0.3333333333333333,
945 0.3333333333333333,
946 0.3333333333333333,
947 0.4666666666666667,
948 0.4666666666666667,
949 0.4666666666666667,
950 0.4666666666666667,
951 0.6,
952 0.6,
953 0.6,
954 0.7333333333333333,
955 0.7333333333333333,
956 0.8666666666666667,
957 0.07692307692307693,
958 0.07692307692307693,
959 0.07692307692307693,
960 0.07692307692307693,
961 0.07692307692307693,
962 0.07692307692307693,
963 0.2307692307692308,
964 0.2307692307692308,
965 0.2307692307692308,
966 0.2307692307692308,
967 0.2307692307692308,
968 0.3846153846153846,
969 0.3846153846153846,
970 0.3846153846153846,
971 0.3846153846153846,
972 0.5384615384615384,
973 0.5384615384615384,
974 0.5384615384615384,
975 0.6923076923076923,
976 0.6923076923076923,
977 0.8461538461538461,
978 0.09090909090909091,
979 0.09090909090909091,
980 0.09090909090909091,
981 0.09090909090909091,
982 0.09090909090909091,
983 0.2727272727272727,
984 0.2727272727272727,
985 0.2727272727272727,
986 0.2727272727272727,
987 0.4545454545454545,
988 0.4545454545454545,
989 0.4545454545454545,
990 0.6363636363636364,
991 0.6363636363636364,
992 0.8181818181818182,
993 0.1111111111111111,
994 0.1111111111111111,
995 0.1111111111111111,
996 0.1111111111111111,
997 0.3333333333333333,
998 0.3333333333333333,
999 0.3333333333333333,
1000 0.5555555555555556,
1001 0.5555555555555556,
1002 0.7777777777777778,
1003 0.1428571428571428,
1004 0.1428571428571428,
1005 0.1428571428571428,
1006 0.4285714285714285,
1007 0.4285714285714285,
1008 0.7142857142857143,
1009 0.2,
1010 0.2,
1011 0.6,
1012 0.3333333333333333};

◆ G_TRI_Y3

const double G_TRI_Y3[] = {0., 0.5, 0.5}
static

Definition at line 316 of file fem_tools.h.

316{0., 0.5, 0.5};

◆ G_TRI_Y37

const double G_TRI_Y37[]
static
Initial value:
= {
0.333333333333333, 0.024862168537947, 0.950275662924106, 0.024862168537947,
0.414192542538082, 0.171614914923835, 0.414192542538082, 0.230293878161405,
0.539412243677190, 0.230293878161405, 0.113919981661734, 0.772160036676533,
0.113919981661734, 0.495457300025082, 0.009085399949835, 0.495457300025082,
0.468861354847056, 0.062277290305887, 0.468861354847056, 0.851306504174348,
0.126617206172027, 0.022076289653624, 0.126617206172027, 0.022076289653624,
0.851306504174348, 0.689441970728591, 0.291937506468888, 0.018620522802521,
0.291937506468888, 0.018620522802521, 0.689441970728591, 0.635867859433873,
0.267625659273968, 0.096506481292159, 0.267625659273968, 0.096506481292159,
0.635867859433873}

Definition at line 419 of file fem_tools.h.

419 {
420 0.333333333333333, 0.024862168537947, 0.950275662924106, 0.024862168537947,
421 0.414192542538082, 0.171614914923835, 0.414192542538082, 0.230293878161405,
422 0.539412243677190, 0.230293878161405, 0.113919981661734, 0.772160036676533,
423 0.113919981661734, 0.495457300025082, 0.009085399949835, 0.495457300025082,
424 0.468861354847056, 0.062277290305887, 0.468861354847056, 0.851306504174348,
425 0.126617206172027, 0.022076289653624, 0.126617206172027, 0.022076289653624,
426 0.851306504174348, 0.689441970728591, 0.291937506468888, 0.018620522802521,
427 0.291937506468888, 0.018620522802521, 0.689441970728591, 0.635867859433873,
428 0.267625659273968, 0.096506481292159, 0.267625659273968, 0.096506481292159,
429 0.635867859433873};

◆ G_TRI_Y4

const double G_TRI_Y4[]
static
Initial value:
= {
2.800199154990741235e-01, 6.663902460147014262e-01,
7.503111022260811058e-02, 1.785587282636164064e-01}

Definition at line 322 of file fem_tools.h.

322 {
323 2.800199154990741235e-01, 6.663902460147014262e-01,
324 7.503111022260811058e-02, 1.785587282636164064e-01};

◆ G_TRI_Y7

const double G_TRI_Y7[]
static
Initial value:
= {
0.333333333333333, 0.237932366472434, 0.025355134551932, 0.736712498968435,
0.025355134551932, 0.736712498968435, 0.237932366472434}

Definition at line 331 of file fem_tools.h.

331 {
332 0.333333333333333, 0.237932366472434, 0.025355134551932, 0.736712498968435,
333 0.025355134551932, 0.736712498968435, 0.237932366472434};

◆ NC_TET_W84

const double NC_TET_W84[]
static
Initial value:
= {
0.2843915343915344, 0.2843915343915344, 0.2843915343915344,
0.2843915343915344, -0.3882275132275133, -0.3882275132275133,
-0.3882275132275133, -0.3882275132275133, -0.3882275132275133,
-0.3882275132275133, -0.3882275132275133, -0.3882275132275133,
-0.3882275132275133, -0.3882275132275133, -0.3882275132275133,
-0.3882275132275133, 0.8776455026455027, 0.8776455026455027,
0.8776455026455027, 0.8776455026455027, 0.8776455026455027,
0.8776455026455027, 0.8776455026455027, 0.8776455026455027,
0.8776455026455027, 0.8776455026455027, 0.8776455026455027,
0.8776455026455027, 0.1236772486772487, 0.1236772486772487,
0.1236772486772487, 0.1236772486772487, 0.1236772486772487,
0.1236772486772487, 0.1236772486772487, 0.1236772486772487,
0.1236772486772487, 0.1236772486772487, 0.1236772486772487,
0.1236772486772487, -0.8584656084656085, -0.8584656084656085,
-0.8584656084656085, -0.8584656084656085, -0.8584656084656085,
-0.8584656084656085, -0.2632275132275133, -0.2632275132275133,
-0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
-0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
-0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
-0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
-0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
-0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
-0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
-0.2632275132275133, 0.0145502645502645, 0.0145502645502645,
0.0145502645502645, 0.0145502645502645, 1.0165343915343916,
1.0165343915343916, 1.0165343915343916, 1.0165343915343916,
-0.0251322751322751, -0.0251322751322751, -0.0251322751322751,
-0.0251322751322751, -0.0251322751322751, -0.0251322751322751}

Definition at line 1307 of file fem_tools.h.

1307 {
1308 0.2843915343915344, 0.2843915343915344, 0.2843915343915344,
1309 0.2843915343915344, -0.3882275132275133, -0.3882275132275133,
1310 -0.3882275132275133, -0.3882275132275133, -0.3882275132275133,
1311 -0.3882275132275133, -0.3882275132275133, -0.3882275132275133,
1312 -0.3882275132275133, -0.3882275132275133, -0.3882275132275133,
1313 -0.3882275132275133, 0.8776455026455027, 0.8776455026455027,
1314 0.8776455026455027, 0.8776455026455027, 0.8776455026455027,
1315 0.8776455026455027, 0.8776455026455027, 0.8776455026455027,
1316 0.8776455026455027, 0.8776455026455027, 0.8776455026455027,
1317 0.8776455026455027, 0.1236772486772487, 0.1236772486772487,
1318 0.1236772486772487, 0.1236772486772487, 0.1236772486772487,
1319 0.1236772486772487, 0.1236772486772487, 0.1236772486772487,
1320 0.1236772486772487, 0.1236772486772487, 0.1236772486772487,
1321 0.1236772486772487, -0.8584656084656085, -0.8584656084656085,
1322 -0.8584656084656085, -0.8584656084656085, -0.8584656084656085,
1323 -0.8584656084656085, -0.2632275132275133, -0.2632275132275133,
1324 -0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
1325 -0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
1326 -0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
1327 -0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
1328 -0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
1329 -0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
1330 -0.2632275132275133, -0.2632275132275133, -0.2632275132275133,
1331 -0.2632275132275133, 0.0145502645502645, 0.0145502645502645,
1332 0.0145502645502645, 0.0145502645502645, 1.0165343915343916,
1333 1.0165343915343916, 1.0165343915343916, 1.0165343915343916,
1334 -0.0251322751322751, -0.0251322751322751, -0.0251322751322751,
1335 -0.0251322751322751, -0.0251322751322751, -0.0251322751322751};

◆ NC_TET_X84

const double NC_TET_X84[]
static
Initial value:
= {
0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
0.7000000000000000, 0.1000000000000000, 0.1000000000000000,
0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
0.1000000000000000, 0.6000000000000000, 0.6000000000000000,
0.6000000000000000, 0.2000000000000000, 0.2000000000000000,
0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
0.1000000000000000, 0.5000000000000000, 0.5000000000000000,
0.5000000000000000, 0.3000000000000000, 0.3000000000000000,
0.3000000000000000, 0.2000000000000000, 0.2000000000000000,
0.2000000000000000, 0.2000000000000000, 0.2000000000000000,
0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
0.1000000000000000, 0.5000000000000000, 0.5000000000000000,
0.5000000000000000, 0.4000000000000000, 0.4000000000000000,
0.4000000000000000, 0.1000000000000000, 0.1000000000000000,
0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
0.4000000000000000, 0.4000000000000000, 0.4000000000000000,
0.4000000000000000, 0.3000000000000000, 0.3000000000000000,
0.3000000000000000, 0.3000000000000000, 0.3000000000000000,
0.3000000000000000, 0.2000000000000000, 0.2000000000000000,
0.2000000000000000, 0.2000000000000000, 0.2000000000000000,
0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
0.1000000000000000, 0.2000000000000000, 0.2000000000000000,
0.2000000000000000, 0.4000000000000000, 0.3000000000000000,
0.3000000000000000, 0.3000000000000000, 0.1000000000000000,
0.3000000000000000, 0.3000000000000000, 0.3000000000000000,
0.2000000000000000, 0.2000000000000000, 0.2000000000000000}

Definition at line 1220 of file fem_tools.h.

1220 {
1221 0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
1222 0.7000000000000000, 0.1000000000000000, 0.1000000000000000,
1223 0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
1224 0.1000000000000000, 0.6000000000000000, 0.6000000000000000,
1225 0.6000000000000000, 0.2000000000000000, 0.2000000000000000,
1226 0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
1227 0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
1228 0.1000000000000000, 0.5000000000000000, 0.5000000000000000,
1229 0.5000000000000000, 0.3000000000000000, 0.3000000000000000,
1230 0.3000000000000000, 0.2000000000000000, 0.2000000000000000,
1231 0.2000000000000000, 0.2000000000000000, 0.2000000000000000,
1232 0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
1233 0.1000000000000000, 0.5000000000000000, 0.5000000000000000,
1234 0.5000000000000000, 0.4000000000000000, 0.4000000000000000,
1235 0.4000000000000000, 0.1000000000000000, 0.1000000000000000,
1236 0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
1237 0.4000000000000000, 0.4000000000000000, 0.4000000000000000,
1238 0.4000000000000000, 0.3000000000000000, 0.3000000000000000,
1239 0.3000000000000000, 0.3000000000000000, 0.3000000000000000,
1240 0.3000000000000000, 0.2000000000000000, 0.2000000000000000,
1241 0.2000000000000000, 0.2000000000000000, 0.2000000000000000,
1242 0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
1243 0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
1244 0.1000000000000000, 0.2000000000000000, 0.2000000000000000,
1245 0.2000000000000000, 0.4000000000000000, 0.3000000000000000,
1246 0.3000000000000000, 0.3000000000000000, 0.1000000000000000,
1247 0.3000000000000000, 0.3000000000000000, 0.3000000000000000,
1248 0.2000000000000000, 0.2000000000000000, 0.2000000000000000};

◆ NC_TET_Y84

const double NC_TET_Y84[]
static
Initial value:
= {
0.1000000000000000, 0.1000000000000000, 0.7000000000000000,
0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
0.6000000000000000, 0.6000000000000000, 0.2000000000000000,
0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
0.6000000000000000, 0.1000000000000000, 0.1000000000000000,
0.5000000000000000, 0.5000000000000000, 0.3000000000000000,
0.3000000000000000, 0.1000000000000000, 0.1000000000000000,
0.3000000000000000, 0.1000000000000000, 0.1000000000000000,
0.5000000000000000, 0.2000000000000000, 0.2000000000000000,
0.1000000000000000, 0.1000000000000000, 0.5000000000000000,
0.5000000000000000, 0.2000000000000000, 0.2000000000000000,
0.5000000000000000, 0.2000000000000000, 0.2000000000000000,
0.1000000000000000, 0.4000000000000000, 0.1000000000000000,
0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
0.1000000000000000, 0.3000000000000000, 0.3000000000000000,
0.2000000000000000, 0.2000000000000000, 0.1000000000000000,
0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
0.2000000000000000, 0.2000000000000000, 0.1000000000000000,
0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
0.3000000000000000, 0.3000000000000000, 0.1000000000000000,
0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
0.3000000000000000, 0.3000000000000000, 0.2000000000000000,
0.2000000000000000, 0.2000000000000000, 0.2000000000000000,
0.4000000000000000, 0.2000000000000000, 0.3000000000000000,
0.3000000000000000, 0.1000000000000000, 0.3000000000000000,
0.3000000000000000, 0.2000000000000000, 0.2000000000000000,
0.3000000000000000, 0.3000000000000000, 0.2000000000000000}

Definition at line 1249 of file fem_tools.h.

1249 {
1250 0.1000000000000000, 0.1000000000000000, 0.7000000000000000,
1251 0.1000000000000000, 0.1000000000000000, 0.1000000000000000,
1252 0.6000000000000000, 0.6000000000000000, 0.2000000000000000,
1253 0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
1254 0.2000000000000000, 0.1000000000000000, 0.1000000000000000,
1255 0.6000000000000000, 0.1000000000000000, 0.1000000000000000,
1256 0.5000000000000000, 0.5000000000000000, 0.3000000000000000,
1257 0.3000000000000000, 0.1000000000000000, 0.1000000000000000,
1258 0.3000000000000000, 0.1000000000000000, 0.1000000000000000,
1259 0.5000000000000000, 0.2000000000000000, 0.2000000000000000,
1260 0.1000000000000000, 0.1000000000000000, 0.5000000000000000,
1261 0.5000000000000000, 0.2000000000000000, 0.2000000000000000,
1262 0.5000000000000000, 0.2000000000000000, 0.2000000000000000,
1263 0.1000000000000000, 0.4000000000000000, 0.1000000000000000,
1264 0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
1265 0.1000000000000000, 0.3000000000000000, 0.3000000000000000,
1266 0.2000000000000000, 0.2000000000000000, 0.1000000000000000,
1267 0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
1268 0.2000000000000000, 0.2000000000000000, 0.1000000000000000,
1269 0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
1270 0.3000000000000000, 0.3000000000000000, 0.1000000000000000,
1271 0.1000000000000000, 0.4000000000000000, 0.4000000000000000,
1272 0.3000000000000000, 0.3000000000000000, 0.2000000000000000,
1273 0.2000000000000000, 0.2000000000000000, 0.2000000000000000,
1274 0.4000000000000000, 0.2000000000000000, 0.3000000000000000,
1275 0.3000000000000000, 0.1000000000000000, 0.3000000000000000,
1276 0.3000000000000000, 0.2000000000000000, 0.2000000000000000,
1277 0.3000000000000000, 0.3000000000000000, 0.2000000000000000};

◆ NC_TET_Z84

const double NC_TET_Z84[]
static
Initial value:
= {
0.1000000000000000, 0.7000000000000000, 0.1000000000000000,
0.1000000000000000, 0.6000000000000000, 0.2000000000000000,
0.1000000000000000, 0.2000000000000000, 0.1000000000000000,
0.6000000000000000, 0.1000000000000000, 0.2000000000000000,
0.1000000000000000, 0.1000000000000000, 0.6000000000000000,
0.1000000000000000, 0.5000000000000000, 0.3000000000000000,
0.1000000000000000, 0.3000000000000000, 0.1000000000000000,
0.5000000000000000, 0.1000000000000000, 0.3000000000000000,
0.1000000000000000, 0.1000000000000000, 0.5000000000000000,
0.1000000000000000, 0.1000000000000000, 0.5000000000000000,
0.2000000000000000, 0.5000000000000000, 0.2000000000000000,
0.1000000000000000, 0.2000000000000000, 0.5000000000000000,
0.2000000000000000, 0.2000000000000000, 0.1000000000000000,
0.2000000000000000, 0.1000000000000000, 0.4000000000000000,
0.1000000000000000, 0.4000000000000000, 0.1000000000000000,
0.4000000000000000, 0.2000000000000000, 0.1000000000000000,
0.3000000000000000, 0.1000000000000000, 0.3000000000000000,
0.2000000000000000, 0.2000000000000000, 0.1000000000000000,
0.4000000000000000, 0.1000000000000000, 0.4000000000000000,
0.2000000000000000, 0.3000000000000000, 0.1000000000000000,
0.4000000000000000, 0.1000000000000000, 0.4000000000000000,
0.3000000000000000, 0.3000000000000000, 0.2000000000000000,
0.4000000000000000, 0.2000000000000000, 0.4000000000000000,
0.3000000000000000, 0.2000000000000000, 0.4000000000000000,
0.2000000000000000, 0.2000000000000000, 0.3000000000000000,
0.1000000000000000, 0.3000000000000000, 0.3000000000000000,
0.2000000000000000, 0.3000000000000000, 0.2000000000000000,
0.3000000000000000, 0.2000000000000000, 0.3000000000000000}

Definition at line 1278 of file fem_tools.h.

1278 {
1279 0.1000000000000000, 0.7000000000000000, 0.1000000000000000,
1280 0.1000000000000000, 0.6000000000000000, 0.2000000000000000,
1281 0.1000000000000000, 0.2000000000000000, 0.1000000000000000,
1282 0.6000000000000000, 0.1000000000000000, 0.2000000000000000,
1283 0.1000000000000000, 0.1000000000000000, 0.6000000000000000,
1284 0.1000000000000000, 0.5000000000000000, 0.3000000000000000,
1285 0.1000000000000000, 0.3000000000000000, 0.1000000000000000,
1286 0.5000000000000000, 0.1000000000000000, 0.3000000000000000,
1287 0.1000000000000000, 0.1000000000000000, 0.5000000000000000,
1288 0.1000000000000000, 0.1000000000000000, 0.5000000000000000,
1289 0.2000000000000000, 0.5000000000000000, 0.2000000000000000,
1290 0.1000000000000000, 0.2000000000000000, 0.5000000000000000,
1291 0.2000000000000000, 0.2000000000000000, 0.1000000000000000,
1292 0.2000000000000000, 0.1000000000000000, 0.4000000000000000,
1293 0.1000000000000000, 0.4000000000000000, 0.1000000000000000,
1294 0.4000000000000000, 0.2000000000000000, 0.1000000000000000,
1295 0.3000000000000000, 0.1000000000000000, 0.3000000000000000,
1296 0.2000000000000000, 0.2000000000000000, 0.1000000000000000,
1297 0.4000000000000000, 0.1000000000000000, 0.4000000000000000,
1298 0.2000000000000000, 0.3000000000000000, 0.1000000000000000,
1299 0.4000000000000000, 0.1000000000000000, 0.4000000000000000,
1300 0.3000000000000000, 0.3000000000000000, 0.2000000000000000,
1301 0.4000000000000000, 0.2000000000000000, 0.4000000000000000,
1302 0.3000000000000000, 0.2000000000000000, 0.4000000000000000,
1303 0.2000000000000000, 0.2000000000000000, 0.3000000000000000,
1304 0.1000000000000000, 0.3000000000000000, 0.3000000000000000,
1305 0.2000000000000000, 0.3000000000000000, 0.2000000000000000,
1306 0.3000000000000000, 0.2000000000000000, 0.3000000000000000};