29 typedef basis_rep<T> base;
30 typedef typename base::size_type
size_type;
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;
39 typedef typename base::size_type
size_type;
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;
48 typedef typename base::size_type
size_type;
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;
57 typedef typename base::size_type
size_type;
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 (
65 const point_basic<T>& hat_x,
66 Eigen::Matrix<T,Eigen::Dynamic,1>& values)
73basis_bubble_p<T>::grad_evaluate (
74 const point_basic<T>& hat_x,
75 Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values)
81basis_bubble_p<T>::hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& x)
84 x[0] = point_basic<T>();
88basis_bubble_e<T>::evaluate (
89 const point_basic<T>& hat_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 (
98 const point_basic<T>& hat_x,
99 Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values)
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)
109 x[0] = point_basic<T>(5.0000000000000000e-01);
113basis_bubble_t<T>::evaluate (
114 const point_basic<T>& hat_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 (
123 const point_basic<T>& hat_x,
124 Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values)
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)
135 x[0] = point_basic<T>((1.0/3.0), (1.0/3.0));
139basis_bubble_T<T>::evaluate (
140 const point_basic<T>& hat_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 (
149 const point_basic<T>& hat_x,
150 Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values)
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);
169 base::_name =
"bubble";
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
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");
field::size_type size_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
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