SEP Solver Library  1.0
 All Classes Namespaces Files Functions Variables Typedefs Macros
DataInCoreFloat.h
Go to the documentation of this file.
1 #ifndef DATAINCOREFLOAT_H
2 #define DATAINCOREFLOAT_H 1
3 #include "dataContainer.h"
4 #include <boost/multi_array.hpp>
5 //#include <omp.h>
6 #include "myomp.h"
7 
8 typedef boost::multi_array<float, 1> float_1d;
9 typedef boost::multi_array<float, 2> float_2d;
10 typedef boost::multi_array<float, 3> float_3d;
11 typedef boost::multi_array<float, 4> float_4d;
12 typedef boost::multi_array<float, 5> float_5d;
13 typedef boost::multi_array<float, 6> float_6d;
14 typedef boost::multi_array<float, 7> float_7d;
15 
16 namespace SEP{
17 
19  public:
20  dataInCoreFloat() {}; // Default constructor
21  void setup_omp();
22  std::vector<long long> *get_b_omp(){return &b_omp;}
23  std::vector<long long> *get_n_omp(){return &n_omp;}
24  float *getFloatPtr(){return vals;}
25  void set_n123(long long n){ n123=n;}
26  int get_nth(){return nth;}
27  void random(dataContainer *x) const;
28  virtual void my_type() = 0; // needed for this to be abstract class
29  virtual ~dataInCoreFloat(){
30  cleanInCoreFloat();
31  }
32  public:
33  float *vals;
34 
35 
36  private:
37  std::vector<long long> b_omp,n_omp;
38  void cleanInCoreFloat();
39  long long n123;
40  int nth;
41  int vector_beg;
42 };
43 
45  public:
46  data1DFloat(long long n){
47  base_1d(n);
48  strcpy(name,"1dfloat\n");
49  }
50  virtual void *returnData(){return (void*)array;}
51  virtual ~data1DFloat(){clean_1d();}
52 
53  virtual void my_type(){ std::cerr<<"I am dataInCoreFloat1D "<<std::endl;}
54 
55  private:
56  void base_1d(long long n);
57  void clean_1d();
58  float_1d *array;
59 };
61  public:
62  data2DFloat(long long n1, long long n2){
63  base_2d(n1,n2);
64  }
65  data2DFloat(std::vector<long long>n){
66  base_2d(n[0],n[1]);
67  }
68  data2DFloat(long long *n){
69  base_2d(n[0],n[1]);
70  }
71  virtual void *returnData(){return (void*)array;}
72  virtual void my_type(){ std::cerr<<"I am dataInCoreFloat2D "<<std::endl;}
73  virtual ~data2DFloat(){ delete array;}
74  private:
75  void base_2d(long long n1,long long n2);
76  float_2d *array;
77 };
79  public:
80  data3DFloat(long long n1, long long n2, long long n3){
81  base_3d(n1,n2,n3);
82  }
83  data3DFloat(std::vector<long long>n){
84  base_3d(n[0],n[1],n[2]);
85  }
86  data3DFloat(long long *n){
87  base_3d(n[0],n[1],n[2]);
88  }
89  virtual void *returnData(){return (void*)array;}
90  virtual void my_type(){ std::cerr<<"I am dataInCoreFloat3D "<<std::endl;}
91  virtual ~data3DFloat(){ delete array;}
92  private:
93  void base_3d(long long n1,long long n2, long long n3);
94  float_3d *array;
95 };
97  public:
98  data4DFloat(long long n1, long long n2, long long n3, long long n4){
99  base_4d(n1,n2,n3,n4);
100  }
101  data4DFloat(std::vector<long long>n){
102  base_4d(n[0],n[1],n[2],n[3]);
103  }
104  data4DFloat(long long *n){
105  base_4d(n[0],n[1],n[2],n[3]);
106  }
107  virtual void *returnData(){return (void*)array;}
108  virtual void my_type(){ std::cerr<<"I am dataInCoreFloat4D "<<std::endl;}
109  virtual ~data4DFloat(){ delete array;}
110  private:
111  void base_4d(long long n1,long long n2, long long n3, long long n4);
112  float_4d *array;
113 };
115  public:
116  data5DFloat(long long n1, long long n2, long long n3, long long n4, long long n5){
117  base_5d(n1,n2,n3,n4,n5);
118  }
119  data5DFloat(std::vector<long long>n){
120  base_5d(n[0],n[1],n[2],n[3],n[4]);
121  }
122  data5DFloat(long long *n){
123  base_5d(n[0],n[1],n[2],n[3],n[4]);
124  }
125  virtual void *returnData(){return (void*)array;}
126  virtual void my_type(){ std::cerr<<"I am dataInCoreFloat5D "<<std::endl;}
127  virtual ~data5DFloat(){ delete array;}
128  private:
129  void base_5d(long long n1,long long n2, long long n3, long long n4, long long n5);
130  float_5d *array;
131 };
133  public:
134  data6DFloat(long long n1, long long n2, long long n3, long long n4, long long n5, long long n6){
135  base_6d(n1,n2,n3,n4,n5,n6);
136  }
137  data6DFloat(std::vector<long long>n){
138  base_6d(n[0],n[1],n[2],n[3],n[4],n[5]);
139  }
140  data6DFloat(long long *n){
141  base_6d(n[0],n[1],n[2],n[3],n[4],n[5]);
142  }
143  virtual void *returnData(){return (void*)array;}
144  virtual void my_type(){ std::cerr<<"I am dataInCoreFloat6D "<<std::endl;}
145  virtual ~data6DFloat(){ delete array;}
146  private:
147  void base_6d(long long n1,long long n2, long long n3, long long n4, long long n5, long long n6);
148  float_6d *array;
149 };
151  public:
152  data7DFloat(long long n1, long long n2, long long n3, long long n4, long long n5, long long n6, long long n7){
153  base_7d(n1,n2,n3,n4,n5,n6,n7);
154  }
155  data7DFloat(std::vector<long long>n){
156  base_7d(n[0],n[1],n[2],n[3],n[4],n[5],n[6]);
157  }
158 
159  data7DFloat(long long *n){
160  base_7d(n[0],n[1],n[2],n[3],n[4],n[5],n[6]);
161  }
162  virtual void *returnData(){return (void*)array;}
163  virtual void my_type(){ std::cerr<<"I am dataInCoreFloat7D "<<std::endl;}
164  virtual ~data7DFloat(){ delete array;}
165  private:
166  void base_7d(long long n1,long long n2, long long n3, long long n4, long long n5, long long n6, long long n7);
167  float_7d *array;
168 };
169 
170 }
171 #endif