BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
cl_EF_HEX8TB.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_HEX8TB_HPP
13#define BELFEM_CL_EF_HEX8TB_HPP
14
16#include "cl_FEM_Element.hpp"
17
18namespace belfem
19{
20 namespace fem
21 {
22 class Element;
23
36 class EF_HEX8TB : public EdgeFunction
37 {
40
41 // edge directions
42 real mS[ 4 ];
43
44 // help vectors
45 Vector< real > mU ; // midpoint of face {0,3,4,7} at xi = -1, then tangent t
46 Vector< real > mV ; // midpoint of face {1,2,6,5} at xi = +1, then normal n
47 Vector< real > mW ; // scratch, then binormal b
48
51
54
55 real mThickness = BELFEM_QUIET_NAN ;
56 real mWidth = BELFEM_QUIET_NAN ;
57 real mLength = BELFEM_QUIET_NAN ;
58 real mCrossSection = BELFEM_QUIET_NAN ;
59
60 real mVolume = BELFEM_QUIET_NAN ;
61
62//------------------------------------------------------------------------------
63 public:
64//------------------------------------------------------------------------------
65
69 EF_HEX8TB();
70
74 ~EF_HEX8TB() override = default ;
75
76//------------------------------------------------------------------------------
77
81 void
82 link( Element *aElement ) override;
83
84//------------------------------------------------------------------------------
85
86 void
87 precompute( const Matrix< real > & aXi ) override ;
88
89//------------------------------------------------------------------------------
90
91 const Matrix <real> &
92 E( const uint aIndex ) override ;
93
94//------------------------------------------------------------------------------
95
96 const Matrix <real> &
97 C( const uint aIndex ) override ;
98
99//------------------------------------------------------------------------------
100
111 const Matrix< real > &
112 G( const uint aIndex ) override ;
113
114//------------------------------------------------------------------------------
115
121 void
122 update_nabla( const uint aIndex ) override ;
123
124//------------------------------------------------------------------------------
125 };
126
127//------------------------------------------------------------------------------
128
129 inline void
130 EF_HEX8TB::update_nabla( const uint /* aIndex */ )
131 {
132 // nothing to do: mJ, mInvJ, mDetJ are element constants,
133 // computed once in link()
134 }
135
136//------------------------------------------------------------------------------
137 }
138}
139
140#endif //BELFEM_CL_EF_HEX8TB_HPP
Cell is a wrapper around the standard vector.
Definition cl_Cell.hpp:42
EF_HEX8TB()
constructor
Definition cl_EF_HEX8TB.cpp:23
void precompute(const Matrix< real > &aXi) override
only needed for higher order elements
Definition cl_EF_HEX8TB.cpp:164
~EF_HEX8TB() override=default
destructor
const Matrix< real > & G(const uint aIndex) override
gradient operator for h-field, layout contract in EdgeFunction::mGrad.
Definition cl_EF_HEX8TB.cpp:270
const Matrix< real > & E(const uint aIndex) override
Definition cl_EF_HEX8TB.cpp:212
void link(Element *aElement) override
connect function with element
Definition cl_EF_HEX8TB.cpp:56
void update_nabla(const uint aIndex) override
the Jacobian is constant per element and set in link(); this override only exists because the Calcula...
Definition cl_EF_HEX8TB.hpp:130
const Matrix< real > & C(const uint aIndex) override
Definition cl_EF_HEX8TB.cpp:240
EdgeFunction()=default
trivial constructor
Definition cl_FEM_Element.hpp:41
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_QUIET_NAN
Definition typedefs.hpp:87