PABLO  0.1
PArallel Balanced Linear Octree
 All Classes Functions Variables Pages
User_Data_LB.tpp
1 /*
2  * User_Data_LB.tpp
3  *
4  * Created on: 27/mar/2014
5  * Author: Marco Cisternino
6  */
7 
8 template<class D>
9 inline size_t User_Data_LB<D>::fixedSize() const {
10  return 0;
11 }
12 
13 template<class D>
14 inline size_t User_Data_LB<D>::size(const uint32_t e) const {
15  return sizeof(double);
16 }
17 
18 template<class D>
19 inline void User_Data_LB<D>::move(const uint32_t from, const uint32_t to) {
20  data[to] = data[from];
21 }
22 
23 template<class D>
24 template<class Buffer>
25 inline void User_Data_LB<D>::gather(Buffer& buff, const uint32_t e) {
26  buff.write(data[e]);
27 }
28 
29 template<class D>
30 template<class Buffer>
31 inline void User_Data_LB<D>::scatter(Buffer& buff, const uint32_t e) {
32  buff.read(data[e]);
33 }
34 
35 template<class D>
36 inline void User_Data_LB<D>::assign(uint32_t stride, uint32_t length) {
37  Data dataCopy = data;
38  typename Data::iterator first = dataCopy.begin() + stride;
39  typename Data::iterator last = first + length;
40  data.assign(first,last);
41 #if defined(__INTEL_COMPILER)
42 #else
43  data.shrink_to_fit();
44 #endif
45  first = dataCopy.end();
46  last = dataCopy.end();
47 };
48 
49 template<class D>
50 inline void User_Data_LB<D>::resize(uint32_t newSize) {
51  data.resize(newSize);
52 }
53 
54 template<class D>
55 inline void User_Data_LB<D>::resizeGhost(uint32_t newSize) {
56  ghostdata.resize(newSize);
57 }
58 
59 template<class D>
60 inline void User_Data_LB<D>::shrink() {
61 #if defined(__INTEL_COMPILER)
62 #else
63  data.shrink_to_fit();
64 #endif
65 }
66 
67 template<class D>
68 inline User_Data_LB<D>::User_Data_LB(Data& data_, Data& ghostdata_) : data(data_), ghostdata(ghostdata_){}
69 
70 template<class D>