BELFEM
0.9.0
Berkeley Lab Finite Element Framework
Toggle main menu visibility
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
15
#include "
nedelec/cl_EF_EdgeFunction.hpp
"
16
#include "
cl_FEM_Element.hpp
"
17
18
namespace
belfem
19
{
20
namespace
fem
21
{
22
class
Element
;
23
36
class
EF_HEX8TB
:
public
EdgeFunction
37
{
38
Cell< Vector< real >
> mF ;
39
Cell< Matrix< real >
> mFxi ;
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
50
Vector< real >
mP ;
51
53
Vector< real >
mQ ;
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
cl_EF_EdgeFunction.hpp
cl_FEM_Element.hpp
belfem::Cell
Cell is a wrapper around the standard vector.
Definition
cl_Cell.hpp:42
belfem::Matrix< real >
belfem::Vector< real >
belfem::fem::EF_HEX8TB::EF_HEX8TB
EF_HEX8TB()
constructor
Definition
cl_EF_HEX8TB.cpp:23
belfem::fem::EF_HEX8TB::precompute
void precompute(const Matrix< real > &aXi) override
only needed for higher order elements
Definition
cl_EF_HEX8TB.cpp:164
belfem::fem::EF_HEX8TB::~EF_HEX8TB
~EF_HEX8TB() override=default
destructor
belfem::fem::EF_HEX8TB::G
const Matrix< real > & G(const uint aIndex) override
gradient operator for h-field, layout contract in EdgeFunction::mGrad.
Definition
cl_EF_HEX8TB.cpp:270
belfem::fem::EF_HEX8TB::E
const Matrix< real > & E(const uint aIndex) override
Definition
cl_EF_HEX8TB.cpp:212
belfem::fem::EF_HEX8TB::link
void link(Element *aElement) override
connect function with element
Definition
cl_EF_HEX8TB.cpp:56
belfem::fem::EF_HEX8TB::update_nabla
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
belfem::fem::EF_HEX8TB::C
const Matrix< real > & C(const uint aIndex) override
Definition
cl_EF_HEX8TB.cpp:240
belfem::fem::EdgeFunction::EdgeFunction
EdgeFunction()=default
trivial constructor
belfem::fem::Element
Definition
cl_FEM_Element.hpp:41
belfem::fem
Definition
cl_IFB_LINE3.hpp:21
belfem
USER GUIDES:
Definition
cl_Capacitor.cpp:16
belfem::uint
unsigned int uint
Definition
typedefs.hpp:30
belfem::real
double real
Definition
typedefs.hpp:36
BELFEM_QUIET_NAN
#define BELFEM_QUIET_NAN
Definition
typedefs.hpp:87
src
fem
interpolation
nedelec
cl_EF_HEX8TB.hpp
Generated by
1.18.0