v0.14.0
Dg_constructor.hpp
Go to the documentation of this file.
1 /* A helper class that allows simple initialization of the Dg,
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_Dim01, int Tensor_Dim2> class Dg_constructor;
9 
10  template <class T> class Dg_constructor<T, 2, 2>
11  {
12  public:
13  Dg_constructor(T data[3][2], T d000, T d001, T d010, T d011, T d110,
14  T d111)
15  {
16  data[0][0] = d000;
17  data[0][1] = d001;
18  data[1][0] = d010;
19  data[1][1] = d011;
20  data[2][0] = d110;
21  data[2][1] = d111;
22  }
23  };
24 
25  template <class T> class Dg_constructor<T, 3, 3>
26  {
27  public:
28  Dg_constructor(T data[6][3], T d000, T d001, T d002, T d010, T d011,
29  T d012, T d020, T d021, T d022, T d110, T d111, T d112,
30  T d120, T d121, T d122, T d220, T d221, T d222)
31  {
32  data[0][0] = d000;
33  data[1][0] = d010;
34  data[2][0] = d020;
35  data[3][0] = d110;
36  data[4][0] = d120;
37  data[5][0] = d220;
38 
39  data[0][1] = d001;
40  data[1][1] = d011;
41  data[2][1] = d021;
42  data[3][1] = d111;
43  data[4][1] = d121;
44  data[5][1] = d221;
45 
46  data[0][2] = d002;
47  data[1][2] = d012;
48  data[2][2] = d022;
49  data[3][2] = d112;
50  data[4][2] = d122;
51  data[5][2] = d222;
52  }
53  };
54 
55  template <class T> class Dg_constructor<T, 4, 4>
56  {
57  public:
58  Dg_constructor(T data[10][4], T d000, T d001, T d002, T d003, T d010,
59  T d011, T d012, T d013, T d020, T d021, T d022, T d023,
60  T d030, T d031, T d032, T d033, T d110, T d111, T d112,
61  T d113, T d120, T d121, T d122, T d123, T d130, T d131,
62  T d132, T d133, T d220, T d221, T d222, T d223, T d230,
63  T d231, T d232, T d233, T d330, T d331, T d332, T d333)
64  {
65  data[0][0] = d000;
66  data[1][0] = d010;
67  data[2][0] = d020;
68  data[3][0] = d030;
69  data[4][0] = d110;
70  data[5][0] = d120;
71  data[6][0] = d130;
72  data[7][0] = d220;
73  data[8][0] = d230;
74  data[9][0] = d330;
75 
76  data[0][1] = d001;
77  data[1][1] = d011;
78  data[2][1] = d021;
79  data[3][1] = d031;
80  data[4][1] = d111;
81  data[5][1] = d121;
82  data[6][1] = d131;
83  data[7][1] = d221;
84  data[8][1] = d231;
85  data[9][1] = d331;
86 
87  data[0][2] = d002;
88  data[1][2] = d012;
89  data[2][2] = d022;
90  data[3][2] = d032;
91  data[4][2] = d112;
92  data[5][2] = d122;
93  data[6][2] = d132;
94  data[7][2] = d222;
95  data[8][2] = d232;
96  data[9][2] = d332;
97 
98  data[0][3] = d003;
99  data[1][3] = d013;
100  data[2][3] = d023;
101  data[3][3] = d033;
102  data[4][3] = d113;
103  data[5][3] = d123;
104  data[6][3] = d133;
105  data[7][3] = d223;
106  data[8][3] = d233;
107  data[9][3] = d333;
108  }
109  };
110 
111  template <class T> class Dg_constructor<T, 4, 3>
112  {
113  public:
114  Dg_constructor(T data[10][3], T d000, T d001, T d002, T d010, T d011,
115  T d012, T d020, T d021, T d022, T d030, T d031, T d032,
116  T d110, T d111, T d112, T d120, T d121, T d122, T d130,
117  T d131, T d132, T d220, T d221, T d222, T d230, T d231,
118  T d232, T d330, T d331, T d332)
119  {
120  data[0][0] = d000;
121  data[1][0] = d010;
122  data[2][0] = d020;
123  data[3][0] = d030;
124  data[4][0] = d110;
125  data[5][0] = d120;
126  data[6][0] = d130;
127  data[7][0] = d220;
128  data[8][0] = d230;
129  data[9][0] = d330;
130 
131  data[0][1] = d001;
132  data[1][1] = d011;
133  data[2][1] = d021;
134  data[3][1] = d031;
135  data[4][1] = d111;
136  data[5][1] = d121;
137  data[6][1] = d131;
138  data[7][1] = d221;
139  data[8][1] = d231;
140  data[9][1] = d331;
141 
142  data[0][2] = d002;
143  data[1][2] = d012;
144  data[2][2] = d022;
145  data[3][2] = d032;
146  data[4][2] = d112;
147  data[5][2] = d122;
148  data[6][2] = d132;
149  data[7][2] = d222;
150  data[8][2] = d232;
151  data[9][2] = d332;
152  }
153  };
154 }
FTensor
JSON compatible output.
Definition: Christof_constructor.hpp:6
FTensor::Dg_constructor
Definition: Dg_constructor.hpp:8
FTensor::Dg_constructor< T, 4, 4 >::Dg_constructor
Dg_constructor(T data[10][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 d110, T d111, T d112, T d113, T d120, T d121, T d122, T d123, T d130, T d131, T d132, T d133, T d220, T d221, T d222, T d223, T d230, T d231, T d232, T d233, T d330, T d331, T d332, T d333)
Definition: Dg_constructor.hpp:58
FTensor::Dg_constructor< T, 2, 2 >::Dg_constructor
Dg_constructor(T data[3][2], T d000, T d001, T d010, T d011, T d110, T d111)
Definition: Dg_constructor.hpp:13
FTensor::Dg_constructor< T, 3, 3 >::Dg_constructor
Dg_constructor(T data[6][3], T d000, T d001, T d002, T d010, T d011, T d012, T d020, T d021, T d022, T d110, T d111, T d112, T d120, T d121, T d122, T d220, T d221, T d222)
Definition: Dg_constructor.hpp:28
FTensor::Dg_constructor< T, 4, 3 >::Dg_constructor
Dg_constructor(T data[10][3], T d000, T d001, T d002, T d010, T d011, T d012, T d020, T d021, T d022, T d030, T d031, T d032, T d110, T d111, T d112, T d120, T d121, T d122, T d130, T d131, T d132, T d220, T d221, T d222, T d230, T d231, T d232, T d330, T d331, T d332)
Definition: Dg_constructor.hpp:114