v0.14.0
Tensor3_constructor.hpp
Go to the documentation of this file.
1 /* A helper class that allows simple initialization of the Tensor3,
2  but only if it has the correct number of elements. */
3 
4 #pragma once
5 
6 namespace FTensor
7 {
8  template <class T, int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
10 
11  template <class T> class Tensor3_constructor<T, 2, 2, 2>
12  {
13  public:
14  Tensor3_constructor(T data[2][2][2], T d000, T d001, T d010, T d011,
15  T d100, T d101, T d110, T d111)
16  {
17  data[0][0][0] = d000;
18  data[0][0][1] = d001;
19  data[0][1][0] = d010;
20  data[0][1][1] = d011;
21  data[1][0][0] = d100;
22  data[1][0][1] = d101;
23  data[1][1][0] = d110;
24  data[1][1][1] = d111;
25  }
26  };
27 
28  template <class T> class Tensor3_constructor<T, 3, 3, 3>
29  {
30  public:
31  Tensor3_constructor(T data[3][3][3], T d000, T d001, T d002, T d010,
32  T d011, T d012, T d020, T d021, T d022, T d100, T d101,
33  T d102, T d110, T d111, T d112, T d120, T d121, T d122,
34  T d200, T d201, T d202, T d210, T d211, T d212, T d220,
35  T d221, T d222)
36  {
37  data[0][0][0] = d000;
38  data[0][0][1] = d001;
39  data[0][0][2] = d002;
40 
41  data[0][1][0] = d010;
42  data[0][1][1] = d011;
43  data[0][1][2] = d012;
44 
45  data[0][2][0] = d020;
46  data[0][2][1] = d021;
47  data[0][2][2] = d022;
48 
49  data[1][0][0] = d100;
50  data[1][0][1] = d101;
51  data[1][0][2] = d102;
52 
53  data[1][1][0] = d110;
54  data[1][1][1] = d111;
55  data[1][1][2] = d112;
56 
57  data[1][2][0] = d120;
58  data[1][2][1] = d121;
59  data[1][2][2] = d122;
60 
61  data[2][0][0] = d200;
62  data[2][0][1] = d201;
63  data[2][0][2] = d202;
64 
65  data[2][1][0] = d210;
66  data[2][1][1] = d211;
67  data[2][1][2] = d212;
68 
69  data[2][2][0] = d220;
70  data[2][2][1] = d221;
71  data[2][2][2] = d222;
72  }
73  };
74 
75  template <class T> class Tensor3_constructor<T, 4, 4, 4>
76  {
77  public:
79  T data[4][4][4], T d000, T d001, T d002, T d003, T d010, T d011, T d012,
80  T d013, T d020, T d021, T d022, T d023, T d030, T d031, T d032, T d033,
81 
82  T d100, T d101, T d102, T d103, T d110, T d111, T d112, T d113, T d120,
83  T d121, T d122, T d123, T d130, T d131, T d132, T d133,
84 
85  T d200, T d201, T d202, T d203, T d210, T d211, T d212, T d213, T d220,
86  T d221, T d222, T d223, T d230, T d231, T d232, T d233,
87 
88  T d300, T d301, T d302, T d303, T d310, T d311, T d312, T d313, T d320,
89  T d321, T d322, T d323, T d330, T d331, T d332, T d333)
90  {
91  data[0][0][0] = d000;
92  data[0][0][1] = d001;
93  data[0][0][2] = d002;
94  data[0][0][3] = d003;
95 
96  data[0][1][0] = d010;
97  data[0][1][1] = d011;
98  data[0][1][2] = d012;
99  data[0][1][3] = d013;
100 
101  data[0][2][0] = d020;
102  data[0][2][1] = d021;
103  data[0][2][2] = d022;
104  data[0][2][3] = d023;
105 
106  data[0][3][0] = d030;
107  data[0][3][1] = d031;
108  data[0][3][2] = d032;
109  data[0][3][3] = d033;
110 
111  data[1][0][0] = d100;
112  data[1][0][1] = d101;
113  data[1][0][2] = d102;
114  data[1][0][3] = d103;
115 
116  data[1][1][0] = d110;
117  data[1][1][1] = d111;
118  data[1][1][2] = d112;
119  data[1][1][3] = d113;
120 
121  data[1][2][0] = d120;
122  data[1][2][1] = d121;
123  data[1][2][2] = d122;
124  data[1][2][3] = d123;
125 
126  data[1][3][0] = d130;
127  data[1][3][1] = d131;
128  data[1][3][2] = d132;
129  data[1][3][3] = d133;
130 
131  data[2][0][0] = d200;
132  data[2][0][1] = d201;
133  data[2][0][2] = d202;
134  data[2][0][3] = d203;
135 
136  data[2][1][0] = d210;
137  data[2][1][1] = d211;
138  data[2][1][2] = d212;
139  data[2][1][3] = d213;
140 
141  data[2][2][0] = d220;
142  data[2][2][1] = d221;
143  data[2][2][2] = d222;
144  data[2][2][3] = d223;
145 
146  data[2][3][0] = d230;
147  data[2][3][1] = d231;
148  data[2][3][2] = d232;
149  data[2][3][3] = d233;
150 
151  data[3][0][0] = d300;
152  data[3][0][1] = d301;
153  data[3][0][2] = d302;
154  data[3][0][3] = d303;
155 
156  data[3][1][0] = d310;
157  data[3][1][1] = d311;
158  data[3][1][2] = d312;
159  data[3][1][3] = d313;
160 
161  data[3][2][0] = d320;
162  data[3][2][1] = d321;
163  data[3][2][2] = d322;
164  data[3][2][3] = d323;
165 
166  data[3][3][0] = d330;
167  data[3][3][1] = d331;
168  data[3][3][2] = d332;
169  data[3][3][3] = d333;
170  }
171  };
172 }
FTensor
JSON compatible output.
Definition: Christof_constructor.hpp:6
FTensor::Tensor3_constructor< T, 3, 3, 3 >::Tensor3_constructor
Tensor3_constructor(T data[3][3][3], T d000, T d001, T d002, T d010, T d011, T d012, T d020, T d021, T d022, T d100, T d101, T d102, T d110, T d111, T d112, T d120, T d121, T d122, T d200, T d201, T d202, T d210, T d211, T d212, T d220, T d221, T d222)
Definition: Tensor3_constructor.hpp:31
FTensor::Tensor3_constructor< T, 4, 4, 4 >::Tensor3_constructor
Tensor3_constructor(T data[4][4][4], T d000, T d001, T d002, T d003, T d010, T d011, T d012, T d013, T d020, T d021, T d022, T d023, T d030, T d031, T d032, T d033, T d100, T d101, T d102, T d103, T d110, T d111, T d112, T d113, T d120, T d121, T d122, T d123, T d130, T d131, T d132, T d133, T d200, T d201, T d202, T d203, T d210, T d211, T d212, T d213, T d220, T d221, T d222, T d223, T d230, T d231, T d232, T d233, T d300, T d301, T d302, T d303, T d310, T d311, T d312, T d313, T d320, T d321, T d322, T d323, T d330, T d331, T d332, T d333)
Definition: Tensor3_constructor.hpp:78
FTensor::Tensor3_constructor
Definition: Tensor3_constructor.hpp:9
FTensor::Tensor3_constructor< T, 2, 2, 2 >::Tensor3_constructor
Tensor3_constructor(T data[2][2][2], T d000, T d001, T d010, T d011, T d100, T d101, T d110, T d111)
Definition: Tensor3_constructor.hpp:14