IPPL API Reference
Independent Parallel Particle Layer C++ API
Loading...
Searching...
No Matches
Element.h
1
//
2
3
#ifndef IPPL_ELEMENT_H
4
#define IPPL_ELEMENT_H
5
6
#include "
Types/Vector.h
"
7
8
namespace
ippl
{
9
16
template
<
typename
T,
unsigned
Dim,
unsigned
NumVertices>
17
class
Element
{
18
public
:
19
static
constexpr
unsigned
dim = Dim;
20
static
constexpr
unsigned
numVertices = NumVertices;
21
22
// A point in the local or global coordinate system
23
typedef
Vector<T, Dim>
point_t
;
24
25
// A list of all vertices
26
typedef
Vector<point_t, NumVertices>
vertex_points_t
;
27
28
// Cannot define common functions to all Element child classes
29
// due to problem with accessing the Element functions through
30
// the Finite Element Space class from device code
31
// (defaults to base class virtual function which causes errors)
32
//
33
// The common functions would be globalToLocal, localToGlobal,
34
// getDeterminantOfTransformationJacobian, getInverseTransposeTransformationJacobian,
35
// and isPointInRefElement.
36
//
37
// Virtual functions would be getLocalVertices, getTransformationJacobian,
38
// and getInverseTransformationJacobian.
39
};
40
46
template
<
typename
T,
unsigned
NumVertices>
47
using
Element1D
=
Element<T, 1, NumVertices>
;
48
54
template
<
typename
T,
unsigned
NumVertices>
55
using
Element2D
=
Element<T, 2, NumVertices>
;
56
62
template
<
typename
T,
unsigned
NumVertices>
63
using
Element3D
=
Element<T, 3, NumVertices>
;
64
65
}
// namespace ippl
66
67
#endif
Vector.h
ippl::Element
Base class for all elements.
Definition
Element.h:17
ippl::Vector
Definition
Vector.h:23
ippl
Definition
Archive.h:20
ippl-src
src
FEM
Elements
Element.h
Generated by
1.9.8