Rheolef  7.1
an efficient C++ finite element environment
basis_raw_monomial.h
Go to the documentation of this file.
1 #ifndef _RHEOLEF_BASIS_RAW_MONOMIAL_H
2 #define _RHEOLEF_BASIS_RAW_MONOMIAL_H
3 //
24 // Monomial initial (raw) basis for fem construction
25 //
26 // author: Pierre.Saramito@imag.fr
27 //
28 // date: 11 september 2017
29 //
30 // Note: monomial basis is not the best choice for Pk FEM basis building
31 // It is provided for test purpose only
32 // For practical usage, choose dubiner initial basis instead.
33 //
34 #include "rheolef/basis_raw.h"
35 #include "rheolef/ad3.h"
36 namespace rheolef {
37 
38 template<class T>
40 public:
41 
42 // typedefs:
43 
45  typedef typename base::size_type size_type;
46  typedef T value_type;
47 
48 // allocators:
49 
50  basis_raw_monomial (std::string name);
52 
53 // accessors:
54 
55  std::string family_name() const { return "M"; }
56  size_type ndof (reference_element hat_K) const;
57  bool is_hierarchical() const { return true; }
58 
59 // evaluation of all basis functions at hat_x:
60 
61  void evaluate (
62  reference_element hat_K,
63  const point_basic<T>& hat_x,
64  Eigen::Matrix<T,Eigen::Dynamic,1>& value) const;
65 
66  // evaluate the gradient:
67  void grad_evaluate (
68  reference_element hat_K,
69  const point_basic<T>& hat_x,
70  Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& value) const;
71 
72 protected:
73 // internals:
74 
75  void _initialize (reference_element hat_K) const;
76 
77 // data:
78 
79  mutable std::array<
80  std::vector<point_basic<size_type> >,
82  mutable std::array<
83  Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>,
85  mutable std::array<
86  Eigen::Matrix<point_basic<ad3_basic<T> >,Eigen::Dynamic,1>,
88 };
89 
90 } // namespace rheolef
91 #endif // _RHEOLEF_BASIS_RAW_MONOMIAL_H
rheolef::basis_raw_rep::size_type
reference_element::size_type size_type
Definition: basis_raw.h:38
rheolef::basis_raw_monomial::~basis_raw_monomial
~basis_raw_monomial()
Definition: basis_raw_monomial.cc:31
rheolef::basis_raw_monomial::ndof
size_type ndof(reference_element hat_K) const
Definition: basis_raw_monomial.cc:55
rheolef::basis_raw_monomial::evaluate
void evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< T, Eigen::Dynamic, 1 > &value) const
Definition: basis_raw_monomial.cc:78
rheolef::basis_raw_monomial::grad_evaluate
void grad_evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &value) const
Definition: basis_raw_monomial.cc:99
rheolef::point_basic
Definition: point.h:87
rheolef::value
rheolef::std value
rheolef::basis_raw_monomial
Definition: basis_raw_monomial.h:39
rheolef::reference_element
see the reference_element page for the full documentation
Definition: reference_element.h:66
rheolef::basis_raw_monomial::size_type
base::size_type size_type
Definition: basis_raw_monomial.h:45
rheolef::basis_raw_monomial::family_name
std::string family_name() const
Definition: basis_raw_monomial.h:55
rheolef::basis_raw_monomial::_hat_x_pow
std::array< Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 >, reference_element::max_variant > _hat_x_pow
Definition: basis_raw_monomial.h:84
rheolef::basis_raw_monomial::base
basis_raw_rep< T > base
Definition: basis_raw_monomial.h:44
rheolef
This file is part of Rheolef.
Definition: compiler_eigen.h:37
rheolef::basis_raw_monomial::_power_index
std::array< std::vector< point_basic< size_type > >, reference_element::max_variant > _power_index
Definition: basis_raw_monomial.h:81
rheolef::basis_raw_rep
Definition: basis_raw.h:36
rheolef::basis_raw_monomial::_hat_x_ad_pow
std::array< Eigen::Matrix< point_basic< ad3_basic< T > >, Eigen::Dynamic, 1 >, reference_element::max_variant > _hat_x_ad_pow
Definition: basis_raw_monomial.h:87
rheolef::reference_element::max_variant
static const variant_type max_variant
Definition: reference_element.h:82
rheolef::basis_raw_monomial::_initialize
void _initialize(reference_element hat_K) const
Definition: basis_raw_monomial.cc:61
size_type
field::size_type size_type
Definition: branch.cc:425
rheolef::basis_raw_monomial::value_type
T value_type
Definition: basis_raw_monomial.h:46
rheolef::basis_raw_monomial::basis_raw_monomial
basis_raw_monomial(std::string name)
Definition: basis_raw_monomial.cc:35
rheolef::basis_raw_monomial::is_hierarchical
bool is_hierarchical() const
Definition: basis_raw_monomial.h:57
rheolef::basis_raw_rep::name
std::string name() const
Definition: basis_raw.h:49
T
Expr1::float_type T
Definition: field_expr.h:261