Rheolef  7.2
an efficient C++ finite element environment
memorized_disarray.h
Go to the documentation of this file.
1 #ifndef _RHEOLEF_MEMORIZED_DISARRAY_H
2 #define _RHEOLEF_MEMORIZED_DISARRAY_H
23 //
24 // utility:
25 // internal data area accessor: return
26 // _scalar_val
27 // _vector_val
28 // _tensor_val
29 // depending upon Value template parameter
30 // => allows generic programmation vs Value
31 //
32 // implementation note:
33 // template specialized accessor: use class-specialization
34 // since specialization is neither available for func and class-member
35 //
36 // ----------------------------------------------------------------------------
37 #include "rheolef/compiler_eigen.h"
38 
39 namespace rheolef { namespace details {
40 
41 // ----------------------------------------------------------------------------
42 // disarray-valued data
43 // ----------------------------------------------------------------------------
44 template <class T, class Value> struct memorized_disarray {};
45 
46 #define _RHEOLEF_class_specialization(VALUE,MEMBER) \
47 template <class T> \
48 struct memorized_disarray<T,VALUE> { \
49  template <class Object> \
50  disarray<VALUE,typename Object::memory_type>& \
51  get (const Object& obj) const { \
52  return obj.MEMBER; \
53  } \
54 }; \
55 
58 _RHEOLEF_class_specialization(tensor_basic<T>,_tensor_val)
60 _RHEOLEF_class_specialization(tensor4_basic<T>,_tensor4_val)
61 #undef _RHEOLEF_class_specialization
62 
63 }} // namespace rheolef::details
64 #endif // _RHEOLEF_MEMORIZED_DISARRAY_H
tensor_basic< T > tensor3_basic< T >
Definition: piola_fem.h:137
point_basic< T >
Definition: piola_fem.h:135
Expr1::float_type T
Definition: field_expr.h:230
_RHEOLEF_class_specialization(T, _scalar_val) _RHEOLEF_class_specialization(point_basic< T >
This file is part of Rheolef.