BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
cl_EF_HEX8TS.hpp
Go to the documentation of this file.
1/*
2 * BELFEM -- The Berkeley Lab Finite Element Framework
3 * Copyright (c) 2026, The Regents of the University of California, through
4 * Lawrence Berkeley National Laboratory (subject to receipt of any required
5 * approvals from the U.S. Dept. of Energy). All rights reserved.
6 *
7 * Developers: Christian Messe, Gregory Giard
8 *
9 * See the top-level LICENSE file for the complete license and disclaimer.
10 */
11
12#ifndef BELFEM_CL_EF_HEX8TS_HPP
13#define BELFEM_CL_EF_HEX8TS_HPP
14
15
17#include "cl_FEM_Element.hpp"
18
19namespace belfem
20{
21 namespace fem
22 {
23 class Element;
24
25 class EF_HEX8TS : public EdgeFunction
26 {
27 Matrix< real > mX ; // node coordinates
28 InterpolationFunction * mQuad4 = nullptr;
29
32
33 Cell< Matrix< real > > mHex8Nxi ;
34 Cell< Matrix< real > > mQuad4Nxi ;
35
36 Matrix< real > mEx ;
37 Matrix< real > mEy ;
38 Matrix< real > mEz ;
39
40 Matrix< real > mNx ;
42 Matrix< real > mInvG ;
43 Matrix< real > mJ2 ;
44
45 // edge directions
46 real mS[ 8 ];
47
48 // help vectors
52
53 real mSurface = BELFEM_QUIET_NAN ;
54 real mThickness = BELFEM_QUIET_NAN ;
55 real mVolume = BELFEM_QUIET_NAN ;
56
57 uint mLastIndex = BELFEM_UINT_MAX ;
58
59//------------------------------------------------------------------------------
60 public:
61//------------------------------------------------------------------------------
62
66 EF_HEX8TS();
67
71 ~EF_HEX8TS() override;
72
73//------------------------------------------------------------------------------
74
78 void
79 link( Element *aElement ) override;
80
81//------------------------------------------------------------------------------
82
83 void
84 precompute( const Matrix< real > & aXi ) override ;
85
86//------------------------------------------------------------------------------
87
88 const Matrix <real> &
89 E( const uint aIndex ) override ;
90
91//------------------------------------------------------------------------------
92
93 const Matrix <real> &
94 C( const uint aIndex ) override ;
95
96//------------------------------------------------------------------------------
97
117 const Matrix< real > &
118 G( const uint aIndex ) override ;
119
120//------------------------------------------------------------------------------
121 private:
122//------------------------------------------------------------------------------
123
124 void
125 update_nabla( const uint aIndex ) override ;
126
127//------------------------------------------------------------------------------
128 };
129 }
130}
131
132#endif //BELFEM_CL_EF_HEX8TS_HPP
Cell is a wrapper around the standard vector.
Definition cl_Cell.hpp:42
EF_HEX8TS()
constructor
Definition cl_EF_HEX8TS.cpp:30
const Matrix< real > & C(const uint aIndex) override
Definition cl_EF_HEX8TS.cpp:227
const Matrix< real > & E(const uint aIndex) override
Definition cl_EF_HEX8TS.cpp:183
void link(Element *aElement) override
connect function with element
Definition cl_EF_HEX8TS.cpp:77
const Matrix< real > & G(const uint aIndex) override
gradient operator for h-field, layout contract in EdgeFunction::mGrad.
Definition cl_EF_HEX8TS.cpp:392
void precompute(const Matrix< real > &aXi) override
only needed for higher order elements
Definition cl_EF_HEX8TS.cpp:113
EdgeFunction()=default
trivial constructor
Definition cl_FEM_Element.hpp:41
the shape function base class
Definition cl_IF_InterpolationFunction.hpp:24
Definition cl_IFB_LINE3.hpp:21
USER GUIDES:
Definition cl_Capacitor.cpp:16
unsigned int uint
Definition typedefs.hpp:30
double real
Definition typedefs.hpp:36
#define BELFEM_UINT_MAX
Definition typedefs.hpp:80
#define BELFEM_QUIET_NAN
Definition typedefs.hpp:87