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>&);
48 Eigen::Matrix<T,Eigen::Dynamic,1>& values)
51 values[0] = hat_x[1]+5.0000000000000000e-01;
52 values[1] = hat_x[0]-hat_x[1];
53 values[2] = -hat_x[0]+5.0000000000000000e-01;
57 basis_P1qd_q<T>::grad_evaluate (
65 values[1][1] = -1.0000000000000000e+00;
66 values[2][0] = -1.0000000000000000e+00;
71 basis_P1qd_q<T>::hat_node (Eigen::Matrix<
point_basic<T>,Eigen::Dynamic,1>& x)
74 x[0] =
point_basic<T>(5.0000000000000000e-01, 5.0000000000000000e-01);
75 x[1] =
point_basic<T>(5.0000000000000000e-01, -5.0000000000000000e-01);
76 x[2] =
point_basic<T>(-5.0000000000000000e-01, -5.0000000000000000e-01);
82 Eigen::Matrix<T,Eigen::Dynamic,1>& values)
85 values[0] = hat_x[2]+5.0000000000000000e-01;
86 values[1] = hat_x[1]-hat_x[2];
87 values[2] = hat_x[0]-hat_x[1];
88 values[3] = -hat_x[0]+5.0000000000000000e-01;
92 basis_P1qd_H<T>::grad_evaluate (
102 values[1][2] = -1.0000000000000000e+00;
104 values[2][1] = -1.0000000000000000e+00;
106 values[3][0] = -1.0000000000000000e+00;
112 basis_P1qd_H<T>::hat_node (Eigen::Matrix<
point_basic<T>,Eigen::Dynamic,1>& x)
115 x[0] =
point_basic<T>(5.0000000000000000e-01, 5.0000000000000000e-01, 5.0000000000000000e-01);
116 x[1] =
point_basic<T>(5.0000000000000000e-01, 5.0000000000000000e-01, -5.0000000000000000e-01);
117 x[2] =
point_basic<T>(5.0000000000000000e-01, -5.0000000000000000e-01, -5.0000000000000000e-01);
118 x[3] =
point_basic<T>(-5.0000000000000000e-01, -5.0000000000000000e-01, -5.0000000000000000e-01);
144 Eigen::Matrix<T,Eigen::Dynamic,1>& values)
const
154 error_macro (
"evaluate: unsupported `" << hat_K.
name() <<
"' element type");
167 return basis_P1qd_q<T>::grad_evaluate (hat_x, values);
170 return basis_P1qd_H<T>::grad_evaluate (hat_x, values);
173 error_macro (
"grad_evaluate: unsupported `" << hat_K.
name() <<
"' element type");
181 const Eigen::Matrix<T,Eigen::Dynamic,1>& f_xnod,
182 Eigen::Matrix<T,Eigen::Dynamic,1>& dof)
const
199 return basis_P1qd_q<T>::hat_node (_hat_node[hat_K.
variant()]);
202 return basis_P1qd_H<T>::hat_node (_hat_node[hat_K.
variant()]);
205 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
see the basis_option page for the full documentation
void set_continuous(bool c=true)
piola_fem< T > _piola_fem
see the reference_element page for the full documentation
static const variant_type H
static const variant_type q
variant_type variant() const
#define error_macro(message)
#define fatal_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