Rheolef  7.1
an efficient C++ finite element environment
basis_raw_bernstein.h
Go to the documentation of this file.
1 #ifndef _RHEOLEF_BASIS_RAW_BERNSTEIN_H
2 #define _RHEOLEF_BASIS_RAW_BERNSTEIN_H
3 //
24 // Bernstein initial (raw) basis for fem construction
25 //
26 // author: Pierre.Saramito@imag.fr
27 //
28 // date: 11 september 2017
29 //
30 #include "rheolef/basis_raw.h"
31 #include "rheolef/ad3.h"
32 namespace rheolef {
33 
34 template<class T>
36 public:
37 
38 // typedefs:
39 
41  typedef typename base::size_type size_type;
42  typedef T value_type;
43 
44 // allocators:
45 
46  basis_raw_bernstein (std::string name);
48 
49 // accessors:
50 
51  std::string family_name() const { return "B"; }
52  size_type ndof (reference_element hat_K) const;
53  bool is_hierarchical() const { return false; }
54 
55 // evaluation of all basis functions at hat_x:
56 
57  void evaluate (
58  reference_element hat_K,
59  const point_basic<T>& hat_x,
60  Eigen::Matrix<T,Eigen::Dynamic,1>& value) const;
61 
62  // evaluate the gradient:
63  void grad_evaluate (
64  reference_element hat_K,
65  const point_basic<T>& hat_x,
66  Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& value) const;
67 
68 protected:
69 // internals:
70 
71  void _initialize (reference_element hat_K) const;
72 
73 // data:
74 
75  mutable std::vector<T> _factorial;
76  mutable std::array<std::vector<point_basic<size_type> >,
78  mutable std::array<std::vector<std::array<T,6> >,
80  mutable std::array<std::vector<std::array<ad3_basic<T>,6> >,
82 };
83 
84 } // namespace rheolef
85 #endif // _RHEOLEF_BASIS_RAW_BERNSTEIN_H
rheolef::basis_raw_bernstein::size_type
base::size_type size_type
Definition: basis_raw_bernstein.h:41
rheolef::basis_raw_bernstein::_initialize
void _initialize(reference_element hat_K) const
Definition: basis_raw_bernstein.cc:61
rheolef::basis_raw_rep::size_type
reference_element::size_type size_type
Definition: basis_raw.h:38
rheolef::point_basic
Definition: point.h:87
rheolef::basis_raw_bernstein::_factorial
std::vector< T > _factorial
Definition: basis_raw_bernstein.h:75
rheolef::basis_raw_bernstein::~basis_raw_bernstein
~basis_raw_bernstein()
Definition: basis_raw_bernstein.cc:32
rheolef::basis_raw_bernstein::base
basis_raw_rep< T > base
Definition: basis_raw_bernstein.h:40
rheolef::value
rheolef::std value
rheolef::basis_raw_bernstein::_power_index
std::array< std::vector< point_basic< size_type > >, reference_element::max_variant > _power_index
Definition: basis_raw_bernstein.h:77
rheolef::basis_raw_bernstein::_lambda_ad_pow
std::array< std::vector< std::array< ad3_basic< T >, 6 > >, reference_element::max_variant > _lambda_ad_pow
Definition: basis_raw_bernstein.h:81
rheolef::basis_raw_bernstein::is_hierarchical
bool is_hierarchical() const
Definition: basis_raw_bernstein.h:53
rheolef::reference_element
see the reference_element page for the full documentation
Definition: reference_element.h:66
rheolef::basis_raw_bernstein::value_type
T value_type
Definition: basis_raw_bernstein.h:42
rheolef::basis_raw_bernstein::family_name
std::string family_name() const
Definition: basis_raw_bernstein.h:51
rheolef::basis_raw_bernstein::evaluate
void evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< T, Eigen::Dynamic, 1 > &value) const
Definition: basis_raw_bernstein.cc:84
rheolef::basis_raw_bernstein::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_bernstein.cc:103
rheolef
This file is part of Rheolef.
Definition: compiler_eigen.h:37
rheolef::basis_raw_rep
Definition: basis_raw.h:36
rheolef::reference_element::max_variant
static const variant_type max_variant
Definition: reference_element.h:82
rheolef::basis_raw_bernstein::_lambda_pow
std::array< std::vector< std::array< T, 6 > >, reference_element::max_variant > _lambda_pow
Definition: basis_raw_bernstein.h:79
rheolef::basis_raw_bernstein::basis_raw_bernstein
basis_raw_bernstein(std::string name)
Definition: basis_raw_bernstein.cc:36
rheolef::basis_raw_bernstein::ndof
size_type ndof(reference_element hat_K) const
Definition: basis_raw_bernstein.cc:55
size_type
field::size_type size_type
Definition: branch.cc:425
rheolef::basis_raw_bernstein
Definition: basis_raw_bernstein.h:35
rheolef::basis_raw_rep::name
std::string name() const
Definition: basis_raw.h:49
T
Expr1::float_type T
Definition: field_expr.h:261