basis_raw_dubiner.h
Go to the documentation of this file.
#ifndef _RHEOLEF_BASIS_RAW_DUBINER_H
#define _RHEOLEF_BASIS_RAW_DUBINER_H
//
// Duniner initial (raw) basis for fem construction
//
// author: Pierre.Saramito@imag.fr
//
// date: 11 september 2017
//
#include "rheolef/basis_raw.h"
#include "rheolef/ad3.h"
namespace rheolef {
template<class T>
class basis_raw_dubiner: public basis_raw_rep<T> {
public:
// typedefs:
typedef basis_raw_rep<T> base;
typedef typename base::size_type size_type;
typedef T value_type;
// allocators:
basis_raw_dubiner (std::string name);
~basis_raw_dubiner();
// accessors:
std::string family_name() const { return "D"; }
size_type ndof (reference_element hat_K) const;
bool is_hierarchical() const { return true; }
// evaluation of all basis functions at hat_x:
void evaluate (
reference_element hat_K,
const point_basic<T>& hat_x,
Eigen::Matrix<T,Eigen::Dynamic,1>& value) const;
// evaluate the gradient:
void grad_evaluate (
reference_element hat_K,
const point_basic<T>& hat_x,
Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& value) const;
protected:
// internals:
void _initialize (reference_element hat_K) const;
// data:
mutable std::array<std::vector<size_type>,
reference_element::max_variant> _inod2ideg;
mutable std::array<std::vector<ad3_basic<T> >,
reference_element::max_variant> _value_ad;
};
} // namespace rheolef
#endif // _RHEOLEF_BASIS_RAW_DUBINER_H
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_dubiner
Definition: basis_raw_dubiner.h:35
rheolef::basis_raw_dubiner::basis_raw_dubiner
basis_raw_dubiner(std::string name)
Definition: basis_raw_dubiner.cc:36
rheolef::basis_raw_dubiner::_value_ad
std::array< std::vector< ad3_basic< T > >, reference_element::max_variant > _value_ad
Definition: basis_raw_dubiner.h:79
rheolef::basis_raw_dubiner::size_type
base::size_type size_type
Definition: basis_raw_dubiner.h:41
rheolef::value
rheolef::std value
rheolef::basis_raw_dubiner::_inod2ideg
std::array< std::vector< size_type >, reference_element::max_variant > _inod2ideg
Definition: basis_raw_dubiner.h:76
rheolef::basis_raw_dubiner::base
basis_raw_rep< T > base
Definition: basis_raw_dubiner.h:40
rheolef::basis_raw_dubiner::ndof
size_type ndof(reference_element hat_K) const
Definition: basis_raw_dubiner.cc:53
rheolef::basis_raw_dubiner::_initialize
void _initialize(reference_element hat_K) const
Definition: basis_raw_dubiner.cc:59
rheolef::reference_element
see the reference_element page for the full documentation
Definition: reference_element.h:66
rheolef::basis_raw_dubiner::value_type
T value_type
Definition: basis_raw_dubiner.h:42
rheolef::basis_raw_dubiner::evaluate
void evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< T, Eigen::Dynamic, 1 > &value) const
Definition: basis_raw_dubiner.cc:67
rheolef::basis_raw_dubiner::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_dubiner.cc:77
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_dubiner::family_name
std::string family_name() const
Definition: basis_raw_dubiner.h:51
size_type
field::size_type size_type
Definition: branch.cc:425
rheolef::basis_raw_dubiner::is_hierarchical
bool is_hierarchical() const
Definition: basis_raw_dubiner.h:53
rheolef::basis_raw_dubiner::~basis_raw_dubiner
~basis_raw_dubiner()
Definition: basis_raw_dubiner.cc:32
rheolef::basis_raw_rep::name
std::string name() const
Definition: basis_raw.h:49
T
Expr1::float_type T
Definition: field_expr.h:218