24#include "rheolef/rheostream.h"
106 "unisolvence failed for " <<
base::name() <<
"(" << hat_K.
name() <<
") basis");
115 Eigen::Matrix<T,Eigen::Dynamic,1>& value)
const
135 std::array<std::vector<ad3_basic<T> >,
141 size_t loc_ndof = value_ad.size();
142 value.resize(loc_ndof);
143 for (
size_t loc_idof = 0; loc_idof < loc_ndof; loc_idof++) {
144 value[loc_idof] = value_ad[loc_idof].grad();
152 const Eigen::Matrix<T,Eigen::Dynamic,1>& f_xnod,
153 Eigen::Matrix<T,Eigen::Dynamic,1>& dof)
const
158 dof = base::_inv_vdm[hat_K.
variant()]*f_xnod;
164#define _RHEOLEF_instanciation(T) \
165template class basis_fem_Pk_sherwin<T>;
#define _RHEOLEF_instanciation(T, M, A)
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::vector< ad3_basic< T > > _work1_ad
Eigen::Matrix< T, Eigen::Dynamic, 1 > _work2
basis_fem_Pk_sherwin(size_type degree, const basis_option &sopt)
std::array< std::vector< ad3_basic< T > >, reference_element::max_variant > _value_ad
reference_element::size_type size_type
Eigen::Matrix< T, Eigen::Dynamic, 1 > _work0
std::vector< ad3_basic< T > > _work0_ad
std::vector< ad3_basic< T > > _work2_ad
void _initialize_cstor_sizes() const
void evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< T, Eigen::Dynamic, 1 > &value) const
void grad_evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &value) 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
std::string family_name() const
Eigen::Matrix< T, Eigen::Dynamic, 1 > _work1
void _initialize_data(reference_element hat_K) const
bool is_continuous() const
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
piola_fem< T > _piola_fem
void _initialize_data_guard(reference_element hat_K) const
std::array< std::array< size_type,reference_element::max_variant >,4 > _ndof_on_subgeo
static std::string standard_naming(std::string family_name, size_t degree, const basis_option &sopt)
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 max_variant
variant_type variant() const
double Float
see the Float page for the full documentation
#define error_macro(message)
#define fatal_macro(message)
#define warning_macro(message)
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
void basis_on_pointset_evaluate(const Basis &b, const reference_element &hat_K, const Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &hat_x, Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > &vdm)
This file is part of Rheolef.
void pointset_lagrange_warburton(reference_element hat_K, size_t degree, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &hat_xnod, bool map_on_reference_element=true)
void invert(tiny_matrix< T > &a, tiny_matrix< T > &inv_a)
void pointset_lagrange_equispaced(reference_element hat_K, size_t order_in, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &hat_xnod, size_t internal=0)