BELFEM 0.9.3
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
cl_EF_QUAD4TS.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_QUAD4TS_HPP
13#define BELFEM_CL_EF_QUAD4TS_HPP
14
16#include "cl_FEM_Element.hpp"
17
18namespace belfem
19{
20 namespace fem
21 {
22 class Element;
23
24 class EF_QUAD4TS : public EdgeFunction
25 {
26 // edge directions
27 real mS[ 2 ];
28
29 // derivatives for line element
30 real mNablaXi[ 2 ];
31 real mNablaEta[ 2 ];
32
33 // normal to the line (in 2D space)
34 real mN[ 2 ];
35 real mDetGram ;
36 real mThickness ;
37 real mLength ;
38
39 // coefficients for shape function
42
43 // pseudo inverse (1D jacobian for line)
44 Matrix< real > mPseudoInvJ ;
45
46 // gram matrix (1x1 for line)
47 Matrix< real > mGram ;
48
49 // coefficient matrix
50 Matrix< real > mCoeffs ;
51
52 // parameter matrix for curl
53 Cell< Matrix< real > > mCurlPars ;
54
55//------------------------------------------------------------------------------
56 public:
57//------------------------------------------------------------------------------
58
62 EF_QUAD4TS();
63
64//------------------------------------------------------------------------------
65
69 ~EF_QUAD4TS() override = default;
70
71//------------------------------------------------------------------------------
72
73 void
74 precompute( const Matrix< real > & aXi ) override ;
75
76//------------------------------------------------------------------------------
77
81 void
82 link( Element * aElement ) override ;
83
84//------------------------------------------------------------------------------
85
89 const Matrix< real > &
90 E( const uint aIndex ) override ;
91
92//------------------------------------------------------------------------------
93
97 const Matrix< real > &
98 C( const uint aIndex = 0 ) override ;
99
100//------------------------------------------------------------------------------
101
107 const Matrix< real > &
108 G( const uint aIndex = 0 ) override ;
109
110//------------------------------------------------------------------------------
111 };
112
113//------------------------------------------------------------------------------
114
115 inline const Matrix< real > &
116 EF_QUAD4TS::G( const uint aIndex )
117 {
118 return mGrad ;
119 }
120
121//------------------------------------------------------------------------------
122 } /* end namespace fem */
123} /* end namespace belfem */
124
125#endif //BELFEM_CL_EF_QUAD4TS_HPP
A bounds-checked wrapper around std::vector.
Definition cl_Cell.hpp:45
void precompute(const Matrix< real > &aXi) override
only needed for higher order elements
Definition cl_EF_QUAD4TS.cpp:144
const Matrix< real > & G(const uint aIndex=0) override
gradient operator for h-field ( constant for this element, filled in link(); layout contract in EdgeF...
Definition cl_EF_QUAD4TS.hpp:116
~EF_QUAD4TS() override=default
trivial destructor
const Matrix< real > & E(const uint aIndex) override
interpolation operator for h-field
Definition cl_EF_QUAD4TS.cpp:174
EF_QUAD4TS()
constructor
Definition cl_EF_QUAD4TS.cpp:24
void link(Element *aElement) override
connect function with element
Definition cl_EF_QUAD4TS.cpp:42
const Matrix< real > & C(const uint aIndex=0) override
curl operator for h-field
Definition cl_EF_QUAD4TS.cpp:196
Matrix< real > mGrad
Definition cl_EF_EdgeFunction.hpp:97
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