BELFEM
0.9.3
Berkeley Lab Finite Element Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
cl_EF_PENTA6TS.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,
4
* through 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_PENTA6TS_HPP
13
#define BELFEM_CL_EF_PENTA6TS_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
24
// the friend below takes a Calculator; today the declaration arrives
25
// through cl_FEM_Element.hpp's include chain, but this header must
26
// not depend on an include order it does not control
27
class
Calculator
;
28
29
namespace
maxwell
30
{
31
const
Matrix< real >
&
32
side_connector_edge_function
(
Calculator
* aCalc,
const
real
xi,
const
real
eta,
const
real
zeta );
33
}
34
35
class
EF_PENTA6TS
:
public
EdgeFunction
36
{
37
// edge directions
38
real
mS[ 6 ];
39
40
// derivatives
41
real
mNablaXi[ 3 ];
42
real
mNablaEta[ 3 ];
43
real
mNablaZeta[ 3 ];
44
45
// constant in-plane gradient tensor for G(), layout i + 3*j
46
// ( W = nXi (x) nEta - nEta (x) nXi; identical for all three
47
// edge pairs because nZeta = -nXi - nEta ); filled in link()
48
real
mGradW[ 9 ];
49
50
// normal
51
real
mN[ 3 ];
52
real
mDetGram ;
53
real
mThickness ;
54
real
mSurface ;
55
56
// coefficients for shape function
57
Matrix< real >
mF ;
58
Matrix< real >
mG ;
59
Matrix< real >
mH ;
60
61
// pseudo inverse
62
Matrix< real >
mPseudoInvJ ;
63
64
// gram matrix
65
Matrix< real >
mGram ;
66
Matrix< real >
mInvGram ;
67
68
// coefficient matrix
69
Matrix< real >
mCoeffs ;
70
71
// parameter matrix for curl
72
Cell< Matrix< real >
> mCurlPars ;
73
74
friend
75
const
Matrix< real >
&
maxwell::side_connector_edge_function
(
76
Calculator
* aCalc,
const
real
xi,
const
real
eta,
const
real
zeta );
77
78
//------------------------------------------------------------------------------
79
public
:
80
//------------------------------------------------------------------------------
81
85
EF_PENTA6TS
();
86
87
//------------------------------------------------------------------------------
88
92
~EF_PENTA6TS
()
override
= default ;
93
94
//------------------------------------------------------------------------------
95
96
void
97
precompute
(
const
Matrix< real >
& aXi )
override
;
98
99
//------------------------------------------------------------------------------
100
104
void
105
link
(
Element
* aElement )
override
;
106
107
//------------------------------------------------------------------------------
108
112
const
Matrix< real >
&
113
E
(
const
uint
aIndex )
override
;
114
115
//------------------------------------------------------------------------------
116
120
const
Matrix< real >
&
121
C
(
const
uint
aIndex = 0 )
override
;
122
123
//------------------------------------------------------------------------------
124
130
const
Matrix< real >
&
131
G
(
const
uint
aIndex = 0 )
override
;
132
133
//------------------------------------------------------------------------------
134
};
135
136
137
//------------------------------------------------------------------------------
138
}
/* end namespace fem */
139
}
/* end namespace belfem */
140
141
#endif
//BELFEM_CL_EF_PENTA6TS_HPP
cl_EF_EdgeFunction.hpp
cl_FEM_Element.hpp
belfem::Cell
A bounds-checked wrapper around std::vector.
Definition
cl_Cell.hpp:45
belfem::Matrix< real >
belfem::fem::Calculator
Definition
cl_FEM_Calculator.hpp:596
belfem::fem::EF_PENTA6TS::C
const Matrix< real > & C(const uint aIndex=0) override
curl operator for h-field
Definition
cl_EF_PENTA6TS.cpp:333
belfem::fem::EF_PENTA6TS::precompute
void precompute(const Matrix< real > &aXi) override
only needed for higher order elements
Definition
cl_EF_PENTA6TS.cpp:212
belfem::fem::EF_PENTA6TS::EF_PENTA6TS
EF_PENTA6TS()
constructor
Definition
cl_EF_PENTA6TS.cpp:26
belfem::fem::EF_PENTA6TS::~EF_PENTA6TS
~EF_PENTA6TS() override=default
trivial destructor
belfem::fem::EF_PENTA6TS::link
void link(Element *aElement) override
connect function with element
Definition
cl_EF_PENTA6TS.cpp:46
belfem::fem::EF_PENTA6TS::G
const Matrix< real > & G(const uint aIndex=0) override
gradient operator for h-field ( point-dependent, computed per integration point; layout contract in E...
Definition
cl_EF_PENTA6TS.cpp:352
belfem::fem::EF_PENTA6TS::E
const Matrix< real > & E(const uint aIndex) override
interpolation operator for h-field
Definition
cl_EF_PENTA6TS.cpp:284
belfem::fem::EdgeFunction::EdgeFunction
EdgeFunction()=default
trivial constructor
belfem::fem::Element
Definition
cl_FEM_Element.hpp:41
belfem::fem::maxwell
Definition
cl_EF_PENTA6TS.hpp:30
belfem::fem::maxwell::side_connector_edge_function
const Matrix< real > & side_connector_edge_function(Calculator *aCalc, const real xi, const real eta, const real zeta)
Definition
cl_FEM_Calculator.cpp:746
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
src
fem
interpolation
nedelec
cl_EF_PENTA6TS.hpp
Generated by
1.18.0