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/lagrange1/dof_traits.hpp>
13#include <kernel/space/lagrange1/evaluator.hpp>
14#include <kernel/space/lagrange1/node_functional.hpp>
15
16namespace FEAT
17{
18 namespace Space
19 {
26 namespace Lagrange1
27 {
36 template<typename Trafo_>
37 class Element :
38 public ElementBase<Trafo_>
39 {
40 public:
44 typedef Trafo_ TrafoType;
46 typedef typename TrafoType::MeshType MeshType;
48 typedef typename TrafoType::ShapeType ShapeType;
49
51 static constexpr bool have_node_func = true;
52
54 static constexpr int local_degree = 1;
55
57 template<
58 typename TrafoEvaluator_,
59 typename DataType_ = typename TrafoEvaluator_::DataType>
61 {
62 private:
64 typedef typename TrafoEvaluator_::EvalPolicy EvalPolicy;
65
68
71
72 public:
75 };
76
79
81 template<
82 int shape_dim_,
83 typename DataType_ = Real>
85 {
86 public:
89 };
90
92 template<
93 int shape_dim_,
94 typename DataType_ = Real>
96 {
97 public:
100 };
101
102 public:
109 explicit Element(TrafoType& trafo)
110 : BaseClass(trafo)
111 {
112 }
113
115 virtual ~Element()
116 {
117 }
118
121 {
122 // number of DOFs = number of vertices in the mesh
123 return this->get_mesh().get_num_entities(0);
124 }
125
127 static String name()
128 {
129 return "Lagrange1";
130 }
131 }; // class Element
132 } // namespace Lagrange1
133 } // namespace Space
134} // namespace FEAT
Uniform Dof-Assignment class template.
Single-Entity 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:85
DofAssignmentUniform< Element, shape_dim_, DataType_, DofTraits, ShapeType > Type
Dof-Assignment type.
Definition: element.hpp:88
Space evaluator class wrapper template.
Definition: element.hpp:61
Lagrange1::Evaluator< Element, TrafoEvaluator_, Traits > Type
space evaluator type
Definition: element.hpp:74
static constexpr int num_loc_dofs
number of local dofs := number of vertices per cell
Definition: element.hpp:67
TrafoEvaluator_::EvalPolicy EvalPolicy
evaluation policy
Definition: element.hpp:64
StandardScalarEvalTraits< EvalPolicy, num_loc_dofs, DataType_ > Traits
space evaluation traits
Definition: element.hpp:70
Node-Functional class wrapper template.
Definition: element.hpp:96
Lagrange1::NodeFunctional< Element, shape_dim_, DataType_ > Type
node functional type
Definition: element.hpp:99
Standard Lagrange-1 Finite-Element space class template.
Definition: element.hpp:39
static constexpr bool have_node_func
node functionals available
Definition: element.hpp:51
static String name()
Returns the name of the element.
Definition: element.hpp:127
ElementBase< Trafo_ > BaseClass
base-class typedef
Definition: element.hpp:42
TrafoType::ShapeType ShapeType
shape type
Definition: element.hpp:48
static constexpr int local_degree
Local Polynomial degree count.
Definition: element.hpp:54
DofMappingSingleEntity< Element, ShapeType::dimension > DofMappingType
Dof-Mapping class.
Definition: element.hpp:78
Trafo_ TrafoType
transformation type
Definition: element.hpp:44
Index get_num_dofs() const
Returns the number of dofs.
Definition: element.hpp:120
virtual ~Element()
virtual destructor
Definition: element.hpp:115
Element(TrafoType &trafo)
Constructor.
Definition: element.hpp:109
TrafoType::MeshType MeshType
mesh type
Definition: element.hpp:46
Lagrange-1 Element Evaluator class template declaration.
Definition: evaluator.hpp:35
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