FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
element.hpp
1// FEAT3: Finite Element Analysis Toolbox, Version 3
2// Copyright (C) 2010 by Stefan Turek & the FEAT group
3// FEAT3 is released under the GNU General Public License version 3,
4// see the file 'copyright.txt' in the top level directory for details.
5
6#pragma once
7
8// includes, FEAT
9#include <kernel/space/element_base.hpp>
10#include <kernel/space/dof_assignment_base.hpp>
11#include <kernel/space/dof_mapping_common.hpp>
12#include <kernel/space/hermite3/dof_traits.hpp>
13#include <kernel/space/hermite3/evaluator.hpp>
14#include <kernel/space/hermite3/node_functional.hpp>
15
16namespace FEAT
17{
18 namespace Space
19 {
26 namespace Hermite3
27 {
39 template<typename Trafo_>
40 class Element :
41 public ElementBase<Trafo_>
42 {
43 public:
47 typedef Trafo_ TrafoType;
49 typedef typename TrafoType::MeshType MeshType;
51 typedef typename TrafoType::ShapeType ShapeType;
52
57
59 static constexpr bool have_node_func = true;
60
62 static constexpr int local_degree = 3;
63
65 template<
66 typename TrafoEvaluator_,
67 typename DataType_ = typename TrafoEvaluator_::DataType>
69 {
70 private:
72 typedef typename TrafoEvaluator_::EvalPolicy EvalPolicy;
73
76
79
80 public:
83 };
84
87
89 template<
90 int shape_dim_,
91 typename DataType_ = Real>
93 {
94 public:
97 };
98
100 template<
101 int shape_dim_,
102 typename DataType_ = Real>
104 {
105 public:
107 };
108
109 public:
116 explicit Element(TrafoType& trafo)
117 : BaseClass(trafo)
118 {
119 }
120
122 virtual ~Element()
123 {
124 }
125
128 {
129 return
130 // number of vertex dofs
131 Index(num_vert_dofs) * this->get_mesh().get_num_entities(0) +
132 // number of cell dofs
133 Index(num_cell_dofs) * this->get_mesh().get_num_entities(ShapeType::dimension);
134 }
135
137 static String name()
138 {
139 return "Hermite3";
140 }
141 }; // class Element<...>
142 } // namespace Hermite3
143 } // namespace Space
144} // namespace FEAT
Uniform Dof-Assignment class template.
Uniform Dof-Mapping class template.
Finite-Element base class.
MeshType & get_mesh()
Returns a reference to the underlying mesh.
Dof-Assignment class wrapper template.
Definition: element.hpp:93
DofAssignmentUniform< Element, shape_dim_, DataType_, DofTraits, ShapeType > Type
Dof-Assignment type.
Definition: element.hpp:96
Space evaluator class wrapper template.
Definition: element.hpp:69
StandardScalarEvalTraits< EvalPolicy, num_loc_dofs, DataType_ > Traits
space evaluation traits
Definition: element.hpp:78
Hermite3::Evaluator< Element, TrafoEvaluator_, Traits > Type
space evaluator type
Definition: element.hpp:82
static constexpr int num_loc_dofs
number of local dofs
Definition: element.hpp:75
TrafoEvaluator_::EvalPolicy EvalPolicy
evaluation policy
Definition: element.hpp:72
Node-Functional class wrapper template.
Definition: element.hpp:104
Hermite-3 element class template.
Definition: element.hpp:42
ElementBase< Trafo_ > BaseClass
base-class typedef
Definition: element.hpp:45
Index get_num_dofs() const
Returns the number of dofs.
Definition: element.hpp:127
TrafoType::MeshType MeshType
mesh type
Definition: element.hpp:49
static constexpr bool have_node_func
node functionals available
Definition: element.hpp:59
static constexpr int num_cell_dofs
number of dofs per cell
Definition: element.hpp:56
virtual ~Element()
virtual destructor
Definition: element.hpp:122
Element(TrafoType &trafo)
Constructor.
Definition: element.hpp:116
static String name()
Returns the name of the element.
Definition: element.hpp:137
DofMappingUniform< Element, DofTraits, ShapeType > DofMappingType
Dof-Mapping class.
Definition: element.hpp:86
static constexpr int local_degree
Local Polynomial degree count.
Definition: element.hpp:62
static constexpr int num_vert_dofs
number of dofs per vertex
Definition: element.hpp:54
Trafo_ TrafoType
transformation type
Definition: element.hpp:47
TrafoType::ShapeType ShapeType
shape type
Definition: element.hpp:51
Hermite-3 Element Evaluator class template declaration.
Definition: evaluator.hpp:116
Standard scalar evaluator traits class template.
Definition: base.hpp:44
String class implementation.
Definition: string.hpp:46
FEAT namespace.
Definition: adjactor.hpp:12
double Real
Real data type.
std::uint64_t Index
Index data type.
Face traits tag struct template.
Definition: shape.hpp:106
Hermite-3 Dof-Traits class template.
Definition: dof_traits.hpp:24