1 #ifndef _RHEO_BASIS_ON_POINTSET_EVALUATE_H
2 #define _RHEO_BASIS_ON_POINTSET_EVALUATE_H
25 #include "rheolef/basis.h"
26 namespace rheolef {
namespace details {
30 template<
class Basis,
class T,
class Value>
35 Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>& vdm)
37 size_t loc_ndof =
b.ndof(hat_K);
38 size_t loc_nnod = hat_x.size();
39 vdm.resize (loc_nnod, loc_ndof);
40 Eigen::Matrix<Value,Eigen::Dynamic,1> vdm_row;
41 vdm_row.resize (loc_ndof);
42 for (
size_t loc_inod = 0; loc_inod < loc_nnod; ++loc_inod) {
43 b.evaluate (hat_K, hat_x[loc_inod], vdm_row);
44 vdm.row (loc_inod) = vdm_row.transpose();
47 template<
class Basis,
class T,
class Value>
52 Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>& vdm_grad)
54 size_t loc_ndof =
b.ndof(hat_K);
55 size_t loc_nnod = hat_x.size();
56 vdm_grad.resize (loc_nnod, loc_ndof);
57 Eigen::Matrix<Value,Eigen::Dynamic,1> vdm_grad_row;
58 vdm_grad_row.resize (loc_ndof);
59 for (
size_t loc_inod = 0; loc_inod < loc_nnod; ++loc_inod) {
60 b.grad_evaluate (hat_K, hat_x[loc_inod], vdm_grad_row);
61 vdm_grad.row (loc_inod) = vdm_grad_row.transpose();
64 template<
class Basis,
class T,
class Value>
70 Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>& vdm)
74 size_t loc_ndof =
b.ndof(tilde_K);
75 size_t loc_nnod = hat_x.size();
76 vdm.resize (loc_nnod, loc_ndof);
77 Eigen::Matrix<Value,Eigen::Dynamic,1> vdm_row;
78 vdm_row.resize (loc_ndof);
79 for (
size_t loc_inod = 0; loc_inod < loc_nnod; ++loc_inod) {
80 b.evaluate_on_side (tilde_K, sid, hat_x[loc_inod], vdm_row);
81 vdm.row (loc_inod) = vdm_row.transpose();
86 #endif // _RHEO_BASIS_ON_POINTSET_EVALUATE_H