OGS
NumLib::ShapePyra13 Class Reference

Detailed Description

Shape function for a 13-nodes pyramid element in natural coordinates

Definition at line 15 of file ShapePyra13.h.

#include <ShapePyra13.h>

Public Types

using MeshElement = MeshLib::Pyramid13

Static Public Member Functions

template<class T_X, class T_N>
static void computeShapeFunction (const T_X &x, T_N &N)
template<class T_X, class T_N>
static void computeGradShapeFunction (const T_X &x, T_N &dN)

Static Public Attributes

static constexpr std::array reference_element_centre = {0.0, 0.0, -0.5}
static const unsigned DIM = MeshElement::dimension
static const unsigned NPOINTS = MeshElement::n_all_nodes
static constexpr int ORDER = 2

Member Typedef Documentation

◆ MeshElement

Member Function Documentation

◆ computeGradShapeFunction()

template<class T_X, class T_N>
void NumLib::ShapePyra13::computeGradShapeFunction ( const T_X & x,
T_N & dN )
static

Evaluate derivatives of the shape function at the given point

Parameters
[in]xnatural coordinates (r,s,t)
[out]dNa matrix of the derivatives

Definition at line 37 of file ShapePyra13-impl.h.

38{
39 const double r = x[0];
40 const double s = x[1];
41 const double t = x[2];
42 //---dN/dr
43 dN[0] = 0.0625 * (1.0 - s) * (1.0 - t) *
44 (1.0 + 6.0 * r + s + 4.0 * r * s + t + 2.0 * r * t - s * t +
45 4.0 * r * s * t);
46 dN[1] = -0.0625 * (1.0 - s) * (1.0 - t) *
47 (1.0 - 6.0 * r + s - 4.0 * r * s + t - 2.0 * r * t - s * t -
48 4.0 * r * s * t);
49 dN[2] = -0.0625 * (1.0 + s) * (1.0 - t) *
50 (1.0 - 6.0 * r - s + 4.0 * r * s + t - 2.0 * r * t + s * t +
51 4.0 * r * s * t);
52 dN[3] = 0.0625 * (1.0 + s) * (1.0 - t) *
53 (1.0 + 6.0 * r - s - 4.0 * r * s + t + 2.0 * r * t + s * t -
54 4.0 * r * s * t);
55 dN[4] = 0.0;
56 dN[5] = -0.25 * r * (1.0 - s) * (1.0 - t) * (2.0 + s + s * t);
57 dN[6] = 0.125 * (1.0 - s * s) * (1.0 - t) * (1.0 - 2.0 * r - t - 2 * r * t);
58 dN[7] = -0.25 * r * (1.0 + s) * (1.0 - t) * (2.0 - s - s * t);
59 dN[8] =
60 -0.125 * (1.0 - s * s) * (1.0 - t) * (1.0 + 2.0 * r - t + 2 * r * t);
61 dN[9] = -0.25 * (1.0 - s) * (1.0 - t * t);
62 dN[10] = 0.25 * (1.0 - s) * (1.0 - t * t);
63 dN[11] = 0.25 * (1.0 + s) * (1.0 - t * t);
64 dN[12] = -0.25 * (1.0 + s) * (1.0 - t * t);
65
66 //---dN/ds
67 dN[13] = 0.0625 * (1.0 - r) * (1.0 - t) *
68 (1.0 + r + 6.0 * s + 4.0 * r * s + t - r * t + 2.0 * s * t +
69 4.0 * r * s * t);
70 dN[14] = 0.0625 * (1.0 + r) * (1.0 - t) *
71 (1.0 - r + 6.0 * s - 4.0 * r * s + t + r * t + 2.0 * s * t -
72 4.0 * r * s * t);
73 dN[15] = -0.0625 * (1.0 + r) * (1.0 - t) *
74 (1.0 - r - 6.0 * s + 4.0 * r * s + t + r * t - 2.0 * s * t +
75 4.0 * r * s * t);
76 dN[16] = -0.0625 * (1.0 - r) * (1.0 - t) *
77 (1.0 + r - 6.0 * s - 4.0 * r * s + t - r * t - 2.0 * s * t -
78 4.0 * r * s * t);
79 dN[17] = 0.0;
80 dN[18] =
81 -0.125 * (1.0 - r * r) * (1.0 - t) * (1.0 + 2.0 * s - t + 2.0 * s * t);
82 dN[19] = -0.25 * (1.0 + r) * s * (1.0 - t) * (2.0 - r - r * t);
83 dN[20] =
84 0.125 * (1.0 - r * r) * (1.0 - t) * (1.0 - 2.0 * s - t - 2.0 * s * t);
85 dN[21] = -0.25 * (1.0 - r) * s * (1.0 - t) * (2.0 + r + r * t);
86 dN[22] = -0.25 * (1.0 - r) * (1.0 - t * t);
87 dN[23] = -0.25 * (1.0 + r) * (1.0 - t * t);
88 dN[24] = 0.25 * (1.0 + r) * (1.0 - t * t);
89 dN[25] = 0.25 * (1.0 - r) * (1.0 - t * t);
90
91 //---dN/dt
92 dN[26] = 0.125 * (1.0 - r) * (1.0 - s) *
93 (1.0 + r + s + 2.0 * t + r * t + s * t + 2.0 * r * s * t);
94 dN[27] = 0.125 * (1.0 + r) * (1.0 - s) *
95 (1.0 - r + s + 2.0 * t - r * t + s * t - 2.0 * r * s * t);
96 dN[28] = 0.125 * (1.0 + r) * (1.0 + s) *
97 (1.0 - r - s + 2.0 * t - r * t - s * t + 2.0 * r * s * t);
98 dN[29] = 0.125 * (1.0 - r) * (1.0 + s) *
99 (1.0 + r - s + 2.0 * t + r * t - s * t - 2.0 * r * s * t);
100 dN[30] = 0.5 + t;
101 dN[31] = -0.25 * (1.0 - r * r) * (1.0 - s) * (1.0 + s * t);
102 dN[32] = -0.25 * (1.0 + r) * (1.0 - s * s) * (1.0 - r * t);
103 dN[33] = -0.25 * (1.0 - r * r) * (1.0 + s) * (1.0 - s * t);
104 dN[34] = -0.25 * (1.0 - r) * (1.0 - s * s) * (1.0 + r * t);
105 dN[35] = -0.5 * (1.0 - r) * (1.0 - s) * t;
106 dN[36] = -0.5 * (1.0 + r) * (1.0 - s) * t;
107 dN[37] = -0.5 * (1.0 + r) * (1.0 + s) * t;
108 dN[38] = -0.5 * (1.0 - r) * (1.0 + s) * t;
109}

◆ computeShapeFunction()

template<class T_X, class T_N>
void NumLib::ShapePyra13::computeShapeFunction ( const T_X & x,
T_N & N )
static

Evaluate the shape function at the given point

Parameters
[in]xnatural coordinates (r,s,t)
[out]Na vector of calculated shape functions

Definition at line 7 of file ShapePyra13-impl.h.

8{
9 const double r = x[0];
10 const double s = x[1];
11 const double t = x[2];
12
13 N[0] = -0.0625 * (1.0 - r) * (1.0 - s) * (1.0 - t) *
14 (4.0 + 3.0 * r + 3.0 * s + 2.0 * r * s + 2.0 * t + r * t + s * t +
15 2.0 * r * s * t);
16 N[1] = -0.0625 * (1.0 + r) * (1.0 - s) * (1.0 - t) *
17 (4.0 - 3.0 * r + 3.0 * s - 2.0 * r * s + 2.0 * t - r * t + s * t -
18 2.0 * r * s * t);
19 N[2] = -0.0625 * (1.0 + r) * (1.0 + s) * (1.0 - t) *
20 (4.0 - 3.0 * r - 3.0 * s + 2.0 * r * s + 2.0 * t - r * t - s * t +
21 2.0 * r * s * t);
22 N[3] = -0.0625 * (1.0 - r) * (1.0 + s) * (1.0 - t) *
23 (4.0 + 3.0 * r - 3.0 * s - 2.0 * r * s + 2.0 * t + r * t - s * t -
24 2.0 * r * s * t);
25 N[4] = 0.5 * t * (1.0 + t);
26 N[5] = 0.125 * (1.0 - r * r) * (1.0 - s) * (1.0 - t) * (2.0 + s + s * t);
27 N[6] = 0.125 * (1.0 + r) * (1.0 - s * s) * (1.0 - t) * (2.0 - r - r * t);
28 N[7] = 0.125 * (1.0 - r * r) * (1.0 + s) * (1.0 - t) * (2.0 - s - s * t);
29 N[8] = 0.125 * (1.0 - r) * (1.0 - s * s) * (1.0 - t) * (2.0 + r + r * t);
30 N[9] = 0.25 * (1.0 - r) * (1.0 - s) * (1.0 - t * t);
31 N[10] = 0.25 * (1.0 + r) * (1.0 - s) * (1.0 - t * t);
32 N[11] = 0.25 * (1.0 + r) * (1.0 + s) * (1.0 - t * t);
33 N[12] = 0.25 * (1.0 - r) * (1.0 + s) * (1.0 - t * t);
34}

References NumLib::N.

Member Data Documentation

◆ DIM

const unsigned NumLib::ShapePyra13::DIM = MeshElement::dimension
static

Definition at line 39 of file ShapePyra13.h.

◆ NPOINTS

const unsigned NumLib::ShapePyra13::NPOINTS = MeshElement::n_all_nodes
static

Definition at line 40 of file ShapePyra13.h.

◆ ORDER

int NumLib::ShapePyra13::ORDER = 2
staticconstexpr

Definition at line 41 of file ShapePyra13.h.

◆ reference_element_centre

std::array NumLib::ShapePyra13::reference_element_centre = {0.0, 0.0, -0.5}
staticconstexpr

Definition at line 36 of file ShapePyra13.h.

36{0.0, 0.0, -0.5};

The documentation for this class was generated from the following files: