27 class basis_bubble_p {
29 typedef basis_rep<T> base;
33 static void hat_node (Eigen::Matrix<
point_basic<T>,Eigen::Dynamic,1>&);
36 class basis_bubble_e {
38 typedef basis_rep<T> base;
42 static void hat_node (Eigen::Matrix<
point_basic<T>,Eigen::Dynamic,1>&);
45 class basis_bubble_t {
47 typedef basis_rep<T> base;
51 static void hat_node (Eigen::Matrix<
point_basic<T>,Eigen::Dynamic,1>&);
54 class basis_bubble_T {
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)
73 basis_bubble_p<T>::grad_evaluate (
81 basis_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]+-4.0*(hat_x[0]*hat_x[0]);
97 basis_bubble_e<T>::grad_evaluate (
102 values[0][0] = -8.0*hat_x[0]+4.0;
106 basis_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[0]*hat_x[0])-hat_x[0])+-27.0*(hat_x[1]*hat_x[1])*hat_x[0];
122 basis_bubble_t<T>::grad_evaluate (
127 values[0][0] = -27.0*(hat_x[1]*hat_x[1])+-27.0*( 2.0*hat_x[0]-1.0)*hat_x[1];
128 values[0][1] = -54.0*hat_x[0]*hat_x[1]+27.0*hat_x[0]+-27.0*(hat_x[0]*hat_x[0]);
132 basis_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[0]*hat_x[1]*(hat_x[2]*hat_x[2])+-256.0*hat_x[2]*( hat_x[0]*(hat_x[1]*hat_x[1])-hat_x[1]*( hat_x[0]-(hat_x[0]*hat_x[0])));
148 basis_bubble_T<T>::grad_evaluate (
153 values[0][0] = -256.0*hat_x[1]*(hat_x[2]*hat_x[2])+-256.0*hat_x[2]*( (hat_x[1]*hat_x[1])+hat_x[1]*( 2.0*hat_x[0]-1.0));
154 values[0][1] = -256.0*hat_x[2]*( 2.0*hat_x[1]*hat_x[0]+(hat_x[0]*hat_x[0])-hat_x[0])+-256.0*(hat_x[2]*hat_x[2])*hat_x[0];
155 values[0][2] = -256.0*(hat_x[1]*hat_x[1])*hat_x[0]+-256.0*hat_x[1]*( (hat_x[0]*hat_x[0])-hat_x[0])+-512.0*hat_x[1]*hat_x[2]*hat_x[0];
159 basis_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,
249 base::_nnod_on_subgeo,
250 base::_first_idof_by_dimension,
251 base::_first_inod_by_dimension);
260 return basis_bubble_p<T>::hat_node (_hat_node[hat_K.
variant()]);
263 return basis_bubble_e<T>::hat_node (_hat_node[hat_K.
variant()]);
266 return basis_bubble_t<T>::hat_node (_hat_node[hat_K.
variant()]);
269 return basis_bubble_T<T>::hat_node (_hat_node[hat_K.
variant()]);
272 error_macro (
"hat_node: unsupported `" << hat_K.
name() <<
"' element type");