21#include "rheolef/piola_on_pointset.h"
22#include "rheolef/piola_util.h"
36 _bops.set (quad, piola_basis);
48 _bops.set (nodal_basis, piola_basis);
72 Eigen::Matrix<T,Eigen::Dynamic,1>& weight =
_weight [hat_K.
variant()];
74 const Eigen::Matrix<T,Eigen::Dynamic,Eigen::Dynamic>&
76 const Eigen::Matrix<point_basic<T>,Eigen::Dynamic,Eigen::Dynamic>&
77 grad_phij_xi =
_bops.template grad_evaluate<point_basic<T>> (hat_K);
85 piola .resize (loc_nnod);
86 for (
size_type loc_inod = 0; loc_inod < loc_nnod; ++loc_inod) {
95 for (
size_type loc_jdof = 0; loc_jdof < loc_ndof; ++loc_jdof) {
98 for (
size_type loc_inod = 0; loc_inod < loc_nnod; ++loc_inod) {
100 for (
size_type alpha = 0; alpha <
d; alpha++) {
101 piola[loc_inod].
F[alpha] += s_phij_xi (loc_inod,loc_jdof)*xjnod[alpha];
107 if (map_d > 0 && map_d + 1 ==
d) {
113 for (
size_type loc_inod = 0; loc_inod < loc_nnod; ++loc_inod) {
118 if (!
_bops.has_quadrature())
return;
119 weight.resize (loc_nnod);
122 for (
size_type loc_inod = 0; loc_inod < loc_nnod; ++loc_inod) {
123 T weight_q = quad (hat_K, loc_inod).w;
124 weight[loc_inod] =
piola[loc_inod].
detDF*weight_q;
126 weight[loc_inod] *=
piola[loc_inod].
F [i_comp_axi];
134#define _RHEOLEF_instanciation(T) \
135template class piola_on_pointset_rep<T>; \
137#define _RHEOLEF_instanciation_update(T,M) \
138template void piola_on_pointset_rep<T>::_update ( \
139 const geo_basic<T,M>& omega_K, \
140 const geo_element& K) const; \
144#ifdef _RHEOLEF_HAVE_MPI
#define _RHEOLEF_instanciation(T, M, A)
see the Float page for the full documentation
generic mesh with rerefence counting
see the geo_element page for the full documentation
see the integrate_option page for the full documentation
basis_on_pointset< T > _bops
std::array< Eigen::Matrix< T, Eigen::Dynamic, 1 >,reference_element::max_variant > _weight
reference_element::size_type size_type
void initialize(const basis_basic< T > &piola_basis, const quadrature< T > &quad, const integrate_option &iopt)
void _update(const geo_basic< T, M > &omega, const geo_element &K) const
std::array< size_type,reference_element::max_variant > _last_visited_dis_ie
std::array< std::string,reference_element::max_variant > _last_visited_geo
std::array< Eigen::Matrix< piola< T >, Eigen::Dynamic, 1 >,reference_element::max_variant > _piola
std::vector< size_type > _dis_inod_K
see the reference_element page for the full documentation
size_type dimension() const
variant_type variant() const
This file is part of Rheolef.
tensor_basic< T > pseudo_inverse_jacobian_piola_transformation(const tensor_basic< T > &DF, size_t d, size_t map_d)
void map_projector(const tensor_basic< T > &DF, size_t d, size_t map_d, tensor_basic< T > &P)
void evaluate(const geo_basic< float_type, M > &omega_K, const geo_element &K, Eigen::Matrix< Result, Eigen::Dynamic, 1 > &value) const
T det_jacobian_piola_transformation(const tensor_basic< T > &DF, size_t d, size_t map_d)
void cumul_otimes(tensor_basic< T > &t, const point_basic< T > &a, const point_basic< T > &b, size_t na, size_t nb)
#define _RHEOLEF_instanciation_update(T, M)
coordinate_type sys_coord