29 typedef basis_rep<T> base;
31 static void evaluate (
const point_basic<T>& hat_x, Eigen::Matrix<T,Eigen::Dynamic,1>& values);
32 static void grad_evaluate (
const point_basic<T>& hat_x, Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values);
33 static void hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>&);
38 typedef basis_rep<T> base;
40 static void evaluate (
const point_basic<T>& hat_x, Eigen::Matrix<T,Eigen::Dynamic,1>& values);
41 static void grad_evaluate (
const point_basic<T>& hat_x, Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values);
42 static void hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>&);
47 typedef basis_rep<T> base;
49 static void evaluate (
const point_basic<T>& hat_x, Eigen::Matrix<T,Eigen::Dynamic,1>& values);
50 static void grad_evaluate (
const point_basic<T>& hat_x, Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values);
51 static void hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>&);
56 typedef basis_rep<T> base;
58 static void evaluate (
const point_basic<T>& hat_x, Eigen::Matrix<T,Eigen::Dynamic,1>& values);
59 static void grad_evaluate (
const point_basic<T>& hat_x, Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values);
60 static void hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>&);
64basis_bubble_p<T>::evaluate (
66 Eigen::Matrix<T,Eigen::Dynamic,1>& values)
73basis_bubble_p<T>::grad_evaluate (
81basis_bubble_p<T>::hat_node (Eigen::Matrix<
point_basic<T>,Eigen::Dynamic,1>& x)
88basis_bubble_e<T>::evaluate (
90 Eigen::Matrix<T,Eigen::Dynamic,1>& values)
93 values[0] = -4.0*(hat_x[0]*hat_x[0])+4.0*hat_x[0];
97basis_bubble_e<T>::grad_evaluate (
102 values[0][0] = -8.0*hat_x[0]+4.0;
106basis_bubble_e<T>::hat_node (Eigen::Matrix<
point_basic<T>,Eigen::Dynamic,1>& x)
113basis_bubble_t<T>::evaluate (
115 Eigen::Matrix<T,Eigen::Dynamic,1>& values)
118 values[0] = -27.0*(hat_x[1]*hat_x[1])*hat_x[0]+-27.0*hat_x[1]*( (hat_x[0]*hat_x[0])-hat_x[0]);
122basis_bubble_t<T>::grad_evaluate (
127 values[0][0] = -27.0*( 2.0*hat_x[0]-1.0)*hat_x[1]+-27.0*(hat_x[1]*hat_x[1]);
128 values[0][1] = -27.0*(hat_x[0]*hat_x[0])+27.0*hat_x[0]+-54.0*hat_x[0]*hat_x[1];
132basis_bubble_t<T>::hat_node (Eigen::Matrix<
point_basic<T>,Eigen::Dynamic,1>& x)
139basis_bubble_T<T>::evaluate (
141 Eigen::Matrix<T,Eigen::Dynamic,1>& values)
144 values[0] = -256.0*( (hat_x[1]*hat_x[1])*hat_x[0]+( (hat_x[0]*hat_x[0])-hat_x[0])*hat_x[1])*hat_x[2]+-256.0*hat_x[1]*(hat_x[2]*hat_x[2])*hat_x[0];
148basis_bubble_T<T>::grad_evaluate (
153 values[0][0] = -256.0*hat_x[1]*(hat_x[2]*hat_x[2])+-256.0*( (hat_x[1]*hat_x[1])+( 2.0*hat_x[0]-1.0)*hat_x[1])*hat_x[2];
154 values[0][1] = -256.0*hat_x[2]*( (hat_x[0]*hat_x[0])+2.0*hat_x[1]*hat_x[0]-hat_x[0])+-256.0*(hat_x[2]*hat_x[2])*hat_x[0];
155 values[0][2] = -512.0*hat_x[1]*hat_x[2]*hat_x[0]+-256.0*hat_x[1]*( (hat_x[0]*hat_x[0])-hat_x[0])+-256.0*(hat_x[1]*hat_x[1])*hat_x[0];
159basis_bubble_T<T>::hat_node (Eigen::Matrix<
point_basic<T>,Eigen::Dynamic,1>& x)
162 x[0] =
point_basic<T>(2.5000000000000000e-01, 2.5000000000000000e-01, 2.5000000000000000e-01);
187 Eigen::Matrix<T,Eigen::Dynamic,1>& values)
const
191 return basis_bubble_p<T>::evaluate (hat_x, values);
194 return basis_bubble_e<T>::evaluate (hat_x, values);
197 return basis_bubble_t<T>::evaluate (hat_x, values);
200 return basis_bubble_T<T>::evaluate (hat_x, values);
203 error_macro (
"evaluate: unsupported `" << hat_K.
name() <<
"' element type");
216 return basis_bubble_p<T>::grad_evaluate (hat_x, values);
219 return basis_bubble_e<T>::grad_evaluate (hat_x, values);
222 return basis_bubble_t<T>::grad_evaluate (hat_x, values);
225 return basis_bubble_T<T>::grad_evaluate (hat_x, values);
228 error_macro (
"grad_evaluate: unsupported `" << hat_K.
name() <<
"' element type");
236 const Eigen::Matrix<T,Eigen::Dynamic,1>& f_xnod,
237 Eigen::Matrix<T,Eigen::Dynamic,1>& dof)
const
276 error_macro (
"hat_node: unsupported `" << hat_K.
name() <<
"' element type");
std::array< Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 >, reference_element::max_variant > _hat_node
base::size_type size_type
void _initialize_cstor_sizes() const
void _compute_dofs(reference_element hat_K, const Eigen::Matrix< T, Eigen::Dynamic, 1 > &f_xnod, Eigen::Matrix< T, Eigen::Dynamic, 1 > &dof) const
void evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< T, Eigen::Dynamic, 1 > &values) const
void grad_evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &values) const
void _initialize_data(reference_element hat_K) const
static void initialize_local_first(size_type k, bool is_continuous, std::array< std::array< size_type, reference_element::max_variant >, 4 > &ndof_on_subgeo_internal, std::array< std::array< size_type, reference_element::max_variant >, 4 > &ndof_on_subgeo, std::array< std::array< size_type, reference_element::max_variant >, 4 > &nnod_on_subgeo_internal, std::array< std::array< size_type, reference_element::max_variant >, 4 > &nnod_on_subgeo, std::array< std::array< size_type, 5 >, reference_element::max_variant > &first_idof_by_dimension_internal, std::array< std::array< size_type, 5 >, reference_element::max_variant > &first_idof_by_dimension, std::array< std::array< size_type, 5 >, reference_element::max_variant > &first_inod_by_dimension_internal, std::array< std::array< size_type, 5 >, reference_element::max_variant > &first_inod_by_dimension)
std::array< std::array< size_type,reference_element::max_variant >,4 > _nnod_on_subgeo
std::array< std::array< size_type,reference_element::max_variant >,4 > _ndof_on_subgeo_internal
std::array< std::array< size_type,5 >,reference_element::max_variant > _first_idof_by_dimension
std::array< std::array< size_type,5 >,reference_element::max_variant > _first_inod_by_dimension
std::array< std::array< size_type,5 >,reference_element::max_variant > _first_idof_by_dimension_internal
reference_element::size_type size_type
piola_fem< T > _piola_fem
std::array< std::array< size_type,reference_element::max_variant >,4 > _ndof_on_subgeo
std::array< std::array< size_type,5 >,reference_element::max_variant > _first_inod_by_dimension_internal
std::array< std::array< size_type,reference_element::max_variant >,4 > _nnod_on_subgeo_internal
see the reference_element page for the full documentation
static const variant_type e
static const variant_type p
variant_type variant() const
static const variant_type T
static const variant_type t
#define error_macro(message)
This file is part of Rheolef.