1#ifndef _RHEO_BASIS_RAW_H
2#define _RHEO_BASIS_RAW_H
23#include "rheolef/reference_element.h"
24#include "rheolef/point.h"
25#include "rheolef/tensor.h"
26#include "rheolef/smart_pointer.h"
27#include "rheolef/space_constant.h"
28#include "rheolef/compiler_eigen.h"
29#include "rheolef/rheostream.h"
59 Eigen::Matrix<T,Eigen::Dynamic,1>& value)
const = 0;
81 mutable std::array<bool,
92 if (_have_initialize [hat_K.
variant()])
return;
93 _have_initialize [hat_K.
variant()] =
true;
101 _have_initialize.fill (
false);
127 std::string
name()
const;
132 const std::string&
valued()
const;
137 Eigen::Matrix<T,Eigen::Dynamic,1>& value)
const;
172 return base::data()._clear();
179 return base::data().family_name();
186 return base::data().degree();
193 return base::data().name();
200 return base::data().ndof (hat_K);
207 return base::data().is_hierarchical();
214 return base::data().valued_tag();
221 return base::data().valued();
229 Eigen::Matrix<T,Eigen::Dynamic,1>& value)
const
231 return base::data().evaluate (hat_K, hat_x, value);
241 base::data().grad_evaluate (hat_K, hat_x, value);
248 base::data().put (os, hat_K);
valued_type valued_tag() const
rep::value_type value_type
size_type ndof(reference_element hat_K) const
void evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< T, Eigen::Dynamic, 1 > &value) const
rep::valued_type valued_type
smart_pointer< rep > base
void grad_evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &value) const
void put(std::ostream &os, reference_element hat_K) const
bool is_hierarchical() const
const std::string & valued() const
std::string family_name() const
basis_raw_basic(std::string name="")
void reset(std::string &name)
std::array< bool, reference_element::max_variant > _have_initialize
virtual size_type ndof(reference_element hat_K) const =0
virtual std::string family_name() const =0
virtual valued_type valued_tag() const
virtual size_type degree() const
reference_element::size_type size_type
space_constant::valued_type valued_type
static basis_raw_rep * make_ptr(std::string name)
virtual void grad_evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &value) const =0
virtual void evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< T, Eigen::Dynamic, 1 > &value) const =0
virtual bool is_hierarchical() const
void put(std::ostream &os, reference_element hat_K) const
const std::string & valued() const
void reset(std::string &name)
void _initialize_guard(reference_element hat_K) const
virtual void _initialize(reference_element hat_K) const =0
see the reference_element page for the full documentation
static const variant_type max_variant
variant_type variant() const
std::vector< int >::size_type size_type
see the smart_pointer page for the full documentation
basis_raw_basic< Float > basis_raw
const std::string & valued_name(valued_type valued_tag)
This file is part of Rheolef.