BELFEM 0.9.3
Berkeley Lab Finite Element Framework
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
16#include "cl_FEM_Element.hpp"
17
18namespace 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
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
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
76 Calculator * aCalc, const real xi, const real eta, const real zeta );
77
78//------------------------------------------------------------------------------
79 public:
80//------------------------------------------------------------------------------
81
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
A bounds-checked wrapper around std::vector.
Definition cl_Cell.hpp:45
Definition cl_FEM_Calculator.hpp:596
const Matrix< real > & C(const uint aIndex=0) override
curl operator for h-field
Definition cl_EF_PENTA6TS.cpp:333
void precompute(const Matrix< real > &aXi) override
only needed for higher order elements
Definition cl_EF_PENTA6TS.cpp:212
EF_PENTA6TS()
constructor
Definition cl_EF_PENTA6TS.cpp:26
~EF_PENTA6TS() override=default
trivial destructor
void link(Element *aElement) override
connect function with element
Definition cl_EF_PENTA6TS.cpp:46
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
const Matrix< real > & E(const uint aIndex) override
interpolation operator for h-field
Definition cl_EF_PENTA6TS.cpp:284
EdgeFunction()=default
trivial constructor
Definition cl_FEM_Element.hpp:41
Definition cl_EF_PENTA6TS.hpp:30
const Matrix< real > & side_connector_edge_function(Calculator *aCalc, const real xi, const real eta, const real zeta)
Definition cl_FEM_Calculator.cpp:746
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