BELFEM
0.9.3
Berkeley Lab Finite Element Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
cl_EF_LINE3.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_LINE3_HPP
13
#define BELFEM_CL_EF_LINE3_HPP
14
15
#include "
nedelec/cl_EF_EdgeFunction.hpp
"
16
#include "
cl_FEM_Element.hpp
"
17
#include "
fn_polyval.hpp
"
18
#include "
fn_dot.hpp
"
19
#include "
fn_norm.hpp
"
20
21
namespace
belfem
22
{
23
namespace
fem
24
{
25
class
Element
;
26
30
class
EF_LINE3
:
public
EdgeFunction
31
{
32
// coordinates of edge
33
Vector< real >
mX ;
34
Vector< real >
mY ;
35
36
// coordinates of edge dofs
37
Vector< real >
mXi;
38
39
// scaling parameters
40
Cell< Vector< real >
> mNxi ;
41
Cell< Matrix< real >
> mE ;
42
43
// coefficients for edge function on dof 0
44
Vector< real >
mC0 ;
45
46
// coefficients for edge function on dof 1
47
Vector< real >
mC1 ;
48
49
// shape function of volume element
50
InterpolationFunction
* mVolumeLagrange = nullptr ;
51
Cell< Matrix< real >
> mVolumeNxi ;
52
53
//------------------------------------------------------------------------------
54
public
:
55
//------------------------------------------------------------------------------
56
60
EF_LINE3
();
61
62
//------------------------------------------------------------------------------
63
67
~EF_LINE3
()
override
;
68
69
//------------------------------------------------------------------------------
70
74
void
75
precompute
(
const
Matrix< real >
& aXi )
override
;
76
77
//------------------------------------------------------------------------------
78
83
void
84
link
(
Element
* aElement )
override
;
85
86
//------------------------------------------------------------------------------
87
91
const
Matrix< real >
&
92
E
(
const
uint
aIndex )
override
;
93
//------------------------------------------------------------------------------
94
98
const
Matrix< real >
&
99
C
(
const
uint
aIndex = 0 )
override
;
100
101
//------------------------------------------------------------------------------
102
108
const
Matrix< real >
&
109
G
(
const
uint
aIndex = 0 )
override
;
110
111
//------------------------------------------------------------------------------
112
private
:
113
//------------------------------------------------------------------------------
114
115
real
116
compute_det_J(
const
uint
aIndex );
117
118
//------------------------------------------------------------------------------
119
};
120
121
//------------------------------------------------------------------------------
122
123
inline
const
Matrix< real >
&
124
EF_LINE3::E
(
const
uint
aIndex )
125
{
126
mAbsDetJ
= this->compute_det_J( aIndex );
127
return
mE( aIndex );
128
}
129
130
//--------------------------------------------------------------------------
131
}
132
}
133
#endif
//BELFEM_CL_EF_LINE3_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::Vector< real >
belfem::fem::EF_LINE3::G
const Matrix< real > & G(const uint aIndex=0) override
gradient operator for h-field ( hard-fail stub, real implementation pending Step C; layout contract i...
Definition
cl_EF_LINE3.cpp:194
belfem::fem::EF_LINE3::link
void link(Element *aElement) override
connect function with element ( here, we don't care about the switches )
Definition
cl_EF_LINE3.cpp:153
belfem::fem::EF_LINE3::precompute
void precompute(const Matrix< real > &aXi) override
Definition
cl_EF_LINE3.cpp:48
belfem::fem::EF_LINE3::C
const Matrix< real > & C(const uint aIndex=0) override
curl operator for h-field
Definition
cl_EF_LINE3.cpp:185
belfem::fem::EF_LINE3::EF_LINE3
EF_LINE3()
constructor
Definition
cl_EF_LINE3.cpp:23
belfem::fem::EF_LINE3::E
const Matrix< real > & E(const uint aIndex) override
interpolation operator for h-field
Definition
cl_EF_LINE3.hpp:124
belfem::fem::EdgeFunction::mAbsDetJ
real mAbsDetJ
the absolute value determinant of the Geometry Jacobian
Definition
cl_EF_EdgeFunction.hpp:54
belfem::fem::EdgeFunction::EdgeFunction
EdgeFunction()=default
trivial constructor
belfem::fem::Element
Definition
cl_FEM_Element.hpp:41
belfem::fem::InterpolationFunction
the shape function base class
Definition
cl_IF_InterpolationFunction.hpp:31
fn_dot.hpp
Inner products of vectors and matrices.
fn_norm.hpp
Euclidean length of a vector.
fn_polyval.hpp
Evaluates a polynomial.
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_LINE3.hpp
Generated by
1.18.0