29 typedef basis_rep<T> base;
33 static void hat_node (Eigen::Matrix<
point_basic<T>,Eigen::Dynamic,1>&);
38 typedef basis_rep<T> base;
42 static void hat_node (Eigen::Matrix<
point_basic<T>,Eigen::Dynamic,1>&);
47 typedef basis_rep<T> base;
51 static void hat_node (Eigen::Matrix<
point_basic<T>,Eigen::Dynamic,1>&);
56 typedef basis_rep<T> base;
60 static void hat_node (Eigen::Matrix<
point_basic<T>,Eigen::Dynamic,1>&);
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)
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)
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)
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
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
248 base::_ndof_on_subgeo_internal,
249 base::_ndof_on_subgeo,
250 base::_nnod_on_subgeo_internal,
251 base::_nnod_on_subgeo,
252 base::_first_idof_by_dimension_internal,
253 base::_first_idof_by_dimension,
254 base::_first_inod_by_dimension_internal,
255 base::_first_inod_by_dimension);
264 return basis_bubble_p<T>::hat_node (_hat_node[hat_K.
variant()]);
267 return basis_bubble_e<T>::hat_node (_hat_node[hat_K.
variant()]);
270 return basis_bubble_t<T>::hat_node (_hat_node[hat_K.
variant()]);
273 return basis_bubble_T<T>::hat_node (_hat_node[hat_K.
variant()]);
276 error_macro (
"hat_node: unsupported `" << hat_K.
name() <<
"' element type");
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)
see the basis_option page for the full documentation
reference_element::size_type size_type
piola_fem< T > _piola_fem
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.
void evaluate(const geo_basic< float_type, M > &omega_K, const geo_element &K, Eigen::Matrix< Result, Eigen::Dynamic, 1 > &value) const