21 #include "rheolef/piola_on_pointset.h"
22 #include "rheolef/piola_util.h"
36 _bops.set (quad, piola_basis);
38 _last_visited_geo.fill (
"");
39 _last_visited_dis_ie.fill (std::numeric_limits<size_type>::max());
48 _bops.set (nodal_basis, piola_basis);
50 _last_visited_geo.fill (
"");
51 _last_visited_dis_ie.fill (std::numeric_limits<size_type>::max());
63 if (_last_visited_geo [hat_K.
variant()] == omega_K.name() &&
67 _last_visited_geo [hat_K.
variant()] = omega_K.name();
71 Eigen::Matrix<piola<T>,Eigen::Dynamic,1>&
piola = _piola [hat_K.
variant()];
72 Eigen::Matrix<T,Eigen::Dynamic,1>& weight = _weight [hat_K.
variant()];
74 const Eigen::Matrix<T,Eigen::Dynamic,Eigen::Dynamic>&
75 s_phij_xi = _bops.template evaluate<T> (hat_K);
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) {
94 omega_K.dis_inod (K, _dis_inod_K);
95 for (
size_type loc_jdof = 0; loc_jdof < loc_ndof; ++loc_jdof) {
97 const point_basic<T>& xjnod = omega_K.dis_node (_dis_inod_K[loc_jdof]);
98 for (
size_type loc_inod = 0; loc_inod < loc_nnod; ++loc_inod) {
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) \
135 template class piola_on_pointset_rep<T>; \
137 #define _RHEOLEF_instanciation_update(T,M) \
138 template 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
146 #endif // _RHEOLEF_HAVE_MPI