1 #ifndef _RHEOLEF_MEMORIZED_VALUE_H
2 #define _RHEOLEF_MEMORIZED_VALUE_H
39 #include "rheolef/compiler_eigen.h"
41 namespace rheolef {
namespace details {
50 #define _RHEOLEF_class_specialization(VALUE,MEMBER) \
52 struct memorized_vector<T,VALUE> { \
53 template <class Object> \
54 Eigen::Matrix<VALUE,Eigen::Dynamic,1>& \
55 get (const Object& obj, const reference_element& hat_K) const { \
56 return obj.MEMBER [hat_K.variant()]; \
65 #undef _RHEOLEF_class_specialization
72 #define _RHEOLEF_class_specialization(VALUE,MEMBER) \
74 struct memorized_matrix<T,VALUE> { \
75 template <class Object> \
76 Eigen::Matrix<VALUE,Eigen::Dynamic,Eigen::Dynamic>& \
77 get (const Object& obj, const reference_element& hat_K) const { \
78 return obj.MEMBER [hat_K.variant()]; \
87 #undef _RHEOLEF_class_specialization
94 #define _RHEOLEF_class_specialization(VALUE,MEMBER) \
96 struct memorized_side_value<T,VALUE> { \
97 template <class Object> \
98 Eigen::Matrix<VALUE,Eigen::Dynamic,Eigen::Dynamic>& \
101 const reference_element& hat_K, \
102 const side_information_type& sid) const { \
103 size_t ori_idx = (sid.orient == 1) ? 0 : 1; \
104 return obj.MEMBER [hat_K.variant()] [sid.loc_isid] [ori_idx] [sid.shift]; \
113 #undef _RHEOLEF_class_specialization
116 #endif // _RHEOLEF_MEMORIZED_VALUE_H