v0.8.4
Tensor4_constructor.hpp
Go to the documentation of this file.
1 /* A helper class that allows simple initialization of the Tensor4,
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,
9  int Tensor_Dim3>
11 
12  template <class T> class Tensor4_constructor<T, 2, 2, 2, 2>
13  {
14  public:
15  Tensor4_constructor(T data[2][2][2][2], T d0000, T d0001, T d0010, T d0011,
16  T d0100, T d0101, T d0110, T d0111, T d1000, T d1001,
17  T d1010, T d1011, T d1100, T d1101, T d1110, T d1111)
18  {
19  data[0][0][0][0] = d0000;
20  data[0][0][0][1] = d0001;
21  data[0][0][1][0] = d0010;
22  data[0][0][1][1] = d0011;
23  data[0][1][0][0] = d0100;
24  data[0][1][0][1] = d0101;
25  data[0][1][1][0] = d0110;
26  data[0][1][1][1] = d0111;
27  data[1][0][0][0] = d1000;
28  data[1][0][0][1] = d1001;
29  data[1][0][1][0] = d1010;
30  data[1][0][1][1] = d1011;
31  data[1][1][0][0] = d1100;
32  data[1][1][0][1] = d1101;
33  data[1][1][1][0] = d1110;
34  data[1][1][1][1] = d1111;
35  }
36  };
37 
38  template <class T> class Tensor4_constructor<T, 3, 3, 3, 3>
39  {
40  public:
41  Tensor4_constructor(T data[3][3][3][3], T d0000, T d0001, T d0002, T d0010,
42  T d0011, T d0012, T d0020, T d0021, T d0022, T d0100,
43  T d0101, T d0102, T d0110, T d0111, T d0112, T d0120,
44  T d0121, T d0122, T d0200, T d0201, T d0202, T d0210,
45  T d0211, T d0212, T d0220, T d0221, T d0222, T d1000,
46  T d1001, T d1002, T d1010, T d1011, T d1012, T d1020,
47  T d1021, T d1022, T d1100, T d1101, T d1102, T d1110,
48  T d1111, T d1112, T d1120, T d1121, T d1122, T d1200,
49  T d1201, T d1202, T d1210, T d1211, T d1212, T d1220,
50  T d1221, T d1222, T d2000, T d2001, T d2002, T d2010,
51  T d2011, T d2012, T d2020, T d2021, T d2022, T d2100,
52  T d2101, T d2102, T d2110, T d2111, T d2112, T d2120,
53  T d2121, T d2122, T d2200, T d2201, T d2202, T d2210,
54  T d2211, T d2212, T d2220, T d2221, T d2222)
55  {
56  data[0][0][0][0] = d0000;
57  data[0][0][0][1] = d0001;
58  data[0][0][0][2] = d0002;
59  data[0][0][1][0] = d0010;
60  data[0][0][1][1] = d0011;
61  data[0][0][1][2] = d0012;
62  data[0][0][2][0] = d0020;
63  data[0][0][2][1] = d0021;
64  data[0][0][2][2] = d0022;
65  data[0][1][0][0] = d0100;
66  data[0][1][0][1] = d0101;
67  data[0][1][0][2] = d0102;
68  data[0][1][1][0] = d0110;
69  data[0][1][1][1] = d0111;
70  data[0][1][1][2] = d0112;
71  data[0][1][2][0] = d0120;
72  data[0][1][2][1] = d0121;
73  data[0][1][2][2] = d0122;
74  data[0][2][0][0] = d0200;
75  data[0][2][0][1] = d0201;
76  data[0][2][0][2] = d0202;
77  data[0][2][1][0] = d0210;
78  data[0][2][1][1] = d0211;
79  data[0][2][1][2] = d0212;
80  data[0][2][2][0] = d0220;
81  data[0][2][2][1] = d0221;
82  data[0][2][2][2] = d0222;
83  data[1][0][0][0] = d1000;
84  data[1][0][0][1] = d1001;
85  data[1][0][0][2] = d1002;
86  data[1][0][1][0] = d1010;
87  data[1][0][1][1] = d1011;
88  data[1][0][1][2] = d1012;
89  data[1][0][2][0] = d1020;
90  data[1][0][2][1] = d1021;
91  data[1][0][2][2] = d1022;
92  data[1][1][0][0] = d1100;
93  data[1][1][0][1] = d1101;
94  data[1][1][0][2] = d1102;
95  data[1][1][1][0] = d1110;
96  data[1][1][1][1] = d1111;
97  data[1][1][1][2] = d1112;
98  data[1][1][2][0] = d1120;
99  data[1][1][2][1] = d1121;
100  data[1][1][2][2] = d1122;
101  data[1][2][0][0] = d1200;
102  data[1][2][0][1] = d1201;
103  data[1][2][0][2] = d1202;
104  data[1][2][1][0] = d1210;
105  data[1][2][1][1] = d1211;
106  data[1][2][1][2] = d1212;
107  data[1][2][2][0] = d1220;
108  data[1][2][2][1] = d1221;
109  data[1][2][2][2] = d1222;
110  data[2][0][0][0] = d2000;
111  data[2][0][0][1] = d2001;
112  data[2][0][0][2] = d2002;
113  data[2][0][1][0] = d2010;
114  data[2][0][1][1] = d2011;
115  data[2][0][1][2] = d2012;
116  data[2][0][2][0] = d2020;
117  data[2][0][2][1] = d2021;
118  data[2][0][2][2] = d2022;
119  data[2][1][0][0] = d2100;
120  data[2][1][0][1] = d2101;
121  data[2][1][0][2] = d2102;
122  data[2][1][1][0] = d2110;
123  data[2][1][1][1] = d2111;
124  data[2][1][1][2] = d2112;
125  data[2][1][2][0] = d2120;
126  data[2][1][2][1] = d2121;
127  data[2][1][2][2] = d2122;
128  data[2][2][0][0] = d2200;
129  data[2][2][0][1] = d2201;
130  data[2][2][0][2] = d2202;
131  data[2][2][1][0] = d2210;
132  data[2][2][1][1] = d2211;
133  data[2][2][1][2] = d2212;
134  data[2][2][2][0] = d2220;
135  data[2][2][2][1] = d2221;
136  data[2][2][2][2] = d2222;
137  }
138  };
139 }
Fully Antisymmetric Levi-Civita Tensor.
Tensor4_constructor(T data[2][2][2][2], T d0000, T d0001, T d0010, T d0011, T d0100, T d0101, T d0110, T d0111, T d1000, T d1001, T d1010, T d1011, T d1100, T d1101, T d1110, T d1111)
Tensor4_constructor(T data[3][3][3][3], T d0000, T d0001, T d0002, T d0010, T d0011, T d0012, T d0020, T d0021, T d0022, T d0100, T d0101, T d0102, T d0110, T d0111, T d0112, T d0120, T d0121, T d0122, T d0200, T d0201, T d0202, T d0210, T d0211, T d0212, T d0220, T d0221, T d0222, T d1000, T d1001, T d1002, T d1010, T d1011, T d1012, T d1020, T d1021, T d1022, T d1100, T d1101, T d1102, T d1110, T d1111, T d1112, T d1120, T d1121, T d1122, T d1200, T d1201, T d1202, T d1210, T d1211, T d1212, T d1220, T d1221, T d1222, T d2000, T d2001, T d2002, T d2010, T d2011, T d2012, T d2020, T d2021, T d2022, T d2100, T d2101, T d2102, T d2110, T d2111, T d2112, T d2120, T d2121, T d2122, T d2200, T d2201, T d2202, T d2210, T d2211, T d2212, T d2220, T d2221, T d2222)