OGS
ShapeHex8-impl.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4namespace NumLib
5{
6template <class T_X, class T_N>
7void ShapeHex8::computeShapeFunction(const T_X& r, T_N& N)
8{
9 N[0] = (1.0 - r[0]) * (1.0 - r[1]) * (1.0 - r[2]) * 0.125;
10 N[1] = (1.0 + r[0]) * (1.0 - r[1]) * (1.0 - r[2]) * 0.125;
11 N[2] = (1.0 + r[0]) * (1.0 + r[1]) * (1.0 - r[2]) * 0.125;
12 N[3] = (1.0 - r[0]) * (1.0 + r[1]) * (1.0 - r[2]) * 0.125;
13 N[4] = (1.0 - r[0]) * (1.0 - r[1]) * (1.0 + r[2]) * 0.125;
14 N[5] = (1.0 + r[0]) * (1.0 - r[1]) * (1.0 + r[2]) * 0.125;
15 N[6] = (1.0 + r[0]) * (1.0 + r[1]) * (1.0 + r[2]) * 0.125;
16 N[7] = (1.0 - r[0]) * (1.0 + r[1]) * (1.0 + r[2]) * 0.125;
17}
18
19template <class T_X, class T_N>
20void ShapeHex8::computeGradShapeFunction(const T_X& r, T_N& dN)
21{
22 // dN/dx
23 dN[0] = -(1.0 - r[1]) * (1.0 - r[2]) * 0.125;
24 dN[1] = -dN[0];
25 dN[2] = +(1.0 + r[1]) * (1.0 - r[2]) * 0.125;
26 dN[3] = -dN[2];
27 dN[4] = -(1.0 - r[1]) * (1.0 + r[2]) * 0.125;
28 dN[5] = -dN[4];
29 dN[6] = +(1.0 + r[1]) * (1.0 + r[2]) * 0.125;
30 dN[7] = -dN[6];
31
32 // dN/dy
33 dN[8] = -(1.0 - r[0]) * (1.0 - r[2]) * 0.125;
34 dN[9] = -(1.0 + r[0]) * (1.0 - r[2]) * 0.125;
35 dN[10] = -dN[9];
36 dN[11] = -dN[8];
37 dN[12] = -(1.0 - r[0]) * (1.0 + r[2]) * 0.125;
38 dN[13] = -(1.0 + r[0]) * (1.0 + r[2]) * 0.125;
39 dN[14] = -dN[13];
40 dN[15] = -dN[12];
41
42 // dN/dz
43 dN[16] = -(1.0 - r[0]) * (1.0 - r[1]) * 0.125;
44 dN[17] = -(1.0 + r[0]) * (1.0 - r[1]) * 0.125;
45 dN[18] = -(1.0 + r[0]) * (1.0 + r[1]) * 0.125;
46 dN[19] = -(1.0 - r[0]) * (1.0 + r[1]) * 0.125;
47 dN[20] = -dN[16];
48 dN[21] = -dN[17];
49 dN[22] = -dN[18];
50 dN[23] = -dN[19];
51}
52
53} // namespace NumLib
static void computeGradShapeFunction(const T_X &r, T_N &dN)
static void computeShapeFunction(const T_X &r, T_N &N)