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_mapping_common.hpp>
11#include <kernel/space/dof_assignment_common.hpp>
12#include <kernel/space/argyris/dof_traits.hpp>
13#include <kernel/space/argyris/evaluator.hpp>
14#include <kernel/space/argyris/node_functional.hpp>
15
16namespace FEAT
17{
18 namespace Space
19 {
28 namespace Argyris
29 {
38 template<typename Trafo_>
39 class Element :
40 public ElementBase<Trafo_>
41 {
42 public:
46 typedef Trafo_ TrafoType;
48 typedef typename TrafoType::MeshType MeshType;
50 typedef typename TrafoType::ShapeType ShapeType;
51
52 static constexpr int num_vert_dofs = 6;
53 static constexpr int num_edge_dofs = 1;
54
56 static constexpr bool have_node_func = true;
57
59 static constexpr int local_degree = 5;
60
62 template<
63 typename TrafoEvaluator_,
64 typename DataType_ = typename TrafoEvaluator_::DataType>
66 {
67 private:
69 typedef typename TrafoEvaluator_::EvalPolicy EvalPolicy;
70
72 static constexpr int num_loc_dofs = 21;
73
76
77 public:
80 };
81
84
86 template<
87 int shape_dim_,
88 typename DataType_ = Real>
90 {
91 public:
94 };
95
97 template<
98 int shape_dim_,
99 typename DataType_ = Real>
101 {
102 public:
104 };
105
106 public:
113 explicit Element(TrafoType& trafo)
114 : BaseClass(trafo)
115 {
116 }
117
119 virtual ~Element()
120 {
121 }
122
125 {
126 return
127 // number of vertex dofs
128 Index(num_vert_dofs) * this->get_mesh().get_num_entities(0) +
129 // number of edge dofs
130 Index(num_edge_dofs) * this->get_mesh().get_num_entities(1);
131 }
132
134 static String name()
135 {
136 return "Argyris";
137 }
138 }; // class Element<...>
139 } // namespace Argyris
140 } // namespace Space
141} // namespace FEAT
Dof-Assignment class wrapper template.
Definition: element.hpp:90
DofAssignmentUniform< Element, shape_dim_, DataType_, Argyris::DofTraits, ShapeType > Type
Dof-Assignment type.
Definition: element.hpp:93
Space evaluator class wrapper template.
Definition: element.hpp:66
Argyris::Evaluator< Element, TrafoEvaluator_, Traits > Type
space evaluator type
Definition: element.hpp:79
TrafoEvaluator_::EvalPolicy EvalPolicy
evaluation policy
Definition: element.hpp:69
static constexpr int num_loc_dofs
number of local dofs
Definition: element.hpp:72
StandardScalarEvalTraits< EvalPolicy, num_loc_dofs, DataType_ > Traits
space evaluation traits
Definition: element.hpp:75
Node-Functional class wrapper template.
Definition: element.hpp:101
Argyris element class template.
Definition: element.hpp:41
DofMappingUniform< Element, Argyris::DofTraits, ShapeType > DofMappingType
Dof-Mapping class.
Definition: element.hpp:83
static constexpr int local_degree
Local Polynomial degree count.
Definition: element.hpp:59
Trafo_ TrafoType
transformation type
Definition: element.hpp:46
TrafoType::MeshType MeshType
mesh type
Definition: element.hpp:48
TrafoType::ShapeType ShapeType
shape type
Definition: element.hpp:50
Element(TrafoType &trafo)
Constructor.
Definition: element.hpp:113
static String name()
Returns the name of the element.
Definition: element.hpp:134
ElementBase< Trafo_ > BaseClass
base-class typedef
Definition: element.hpp:44
Index get_num_dofs() const
Returns the number of dofs.
Definition: element.hpp:124
static constexpr bool have_node_func
node functionals available
Definition: element.hpp:56
virtual ~Element()
virtual destructor
Definition: element.hpp:119
Argyris Element Evaluator class template declaration.
Definition: evaluator.hpp:28
Uniform Dof-Assignment class template.
Uniform Dof-Mapping class template.
Finite-Element base class.
MeshType & get_mesh()
Returns a reference to the underlying mesh.
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.