v0.9.0
Christof_constructor.hpp
Go to the documentation of this file.
1 /* A helper class that allows simple initialization of the Christof,
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_Dim12>
10 
11  template <class T> class Christof_constructor<T, 2, 2>
12  {
13  public:
14  Christof_constructor(T data[2][3], T d000, T d100, T d001, T d101, T d011,
15  T d111)
16  {
17  data[0][0] = d000;
18  data[1][0] = d100;
19  data[0][1] = d001;
20  data[1][1] = d101;
21  data[0][2] = d011;
22  data[1][2] = d111;
23  }
24  };
25 
26  template <class T> class Christof_constructor<T, 3, 3>
27  {
28  public:
29  Christof_constructor(T data[3][6], T d000, T d100, T d200, T d001, T d101,
30  T d201, T d002, T d102, T d202, T d011, T d111,
31  T d211, T d012, T d112, T d212, T d022, T d122,
32  T d222)
33  {
34  data[0][0] = d000;
35  data[0][1] = d001;
36  data[0][2] = d002;
37  data[0][3] = d011;
38  data[0][4] = d012;
39  data[0][5] = d022;
40 
41  data[1][0] = d100;
42  data[1][1] = d101;
43  data[1][2] = d102;
44  data[1][3] = d111;
45  data[1][4] = d112;
46  data[1][5] = d122;
47 
48  data[2][0] = d200;
49  data[2][1] = d201;
50  data[2][2] = d202;
51  data[2][3] = d211;
52  data[2][4] = d212;
53  data[2][5] = d222;
54  }
55  };
56 
57  template <class T> class Christof_constructor<T, 4, 4>
58  {
59  public:
60  Christof_constructor(T data[4][10], T d000, T d100, T d200, T d300, T d001,
61  T d101, T d201, T d301, T d002, T d102, T d202,
62  T d302, T d003, T d103, T d203, T d303, T d011,
63  T d111, T d211, T d311, T d012, T d112, T d212,
64  T d312, T d013, T d113, T d213, T d313, T d022,
65  T d122, T d222, T d322, T d023, T d123, T d223,
66  T d323, T d033, T d133, T d233, T d333)
67  {
68  data[0][0] = d000;
69  data[0][1] = d001;
70  data[0][2] = d002;
71  data[0][3] = d003;
72  data[0][4] = d011;
73  data[0][5] = d012;
74  data[0][6] = d013;
75  data[0][7] = d022;
76  data[0][8] = d023;
77  data[0][9] = d033;
78 
79  data[1][0] = d100;
80  data[1][1] = d101;
81  data[1][2] = d102;
82  data[1][3] = d103;
83  data[1][4] = d111;
84  data[1][5] = d112;
85  data[1][6] = d113;
86  data[1][7] = d122;
87  data[1][8] = d123;
88  data[1][9] = d133;
89 
90  data[2][0] = d200;
91  data[2][1] = d201;
92  data[2][2] = d202;
93  data[2][3] = d203;
94  data[2][4] = d211;
95  data[2][5] = d212;
96  data[2][6] = d213;
97  data[2][7] = d222;
98  data[2][8] = d223;
99  data[2][9] = d233;
100 
101  data[3][0] = d300;
102  data[3][1] = d301;
103  data[3][2] = d302;
104  data[3][3] = d303;
105  data[3][4] = d311;
106  data[3][5] = d312;
107  data[3][6] = d313;
108  data[3][7] = d322;
109  data[3][8] = d323;
110  data[3][9] = d333;
111  }
112  };
113 
114  template <class T> class Christof_constructor<T, 3, 4>
115  {
116  public:
117  Christof_constructor(T data[3][10], T d000, T d100, T d200, T d001, T d101,
118  T d201, T d002, T d102, T d202, T d003, T d103,
119  T d203, T d011, T d111, T d211, T d012, T d112,
120  T d212, T d013, T d113, T d213, T d022, T d122,
121  T d222, T d023, T d123, T d223, T d033, T d133,
122  T d233)
123  {
124  data[0][0] = d000;
125  data[0][1] = d001;
126  data[0][2] = d002;
127  data[0][3] = d003;
128  data[0][4] = d011;
129  data[0][5] = d012;
130  data[0][6] = d013;
131  data[0][7] = d022;
132  data[0][8] = d023;
133  data[0][9] = d033;
134 
135  data[1][0] = d100;
136  data[1][1] = d101;
137  data[1][2] = d102;
138  data[1][3] = d103;
139  data[1][4] = d111;
140  data[1][5] = d112;
141  data[1][6] = d113;
142  data[1][7] = d122;
143  data[1][8] = d123;
144  data[1][9] = d133;
145 
146  data[2][0] = d200;
147  data[2][1] = d201;
148  data[2][2] = d202;
149  data[2][3] = d203;
150  data[2][4] = d211;
151  data[2][5] = d212;
152  data[2][6] = d213;
153  data[2][7] = d222;
154  data[2][8] = d223;
155  data[2][9] = d233;
156  }
157  };
158 }
Christof_constructor(T data[4][10], T d000, T d100, T d200, T d300, T d001, T d101, T d201, T d301, T d002, T d102, T d202, T d302, T d003, T d103, T d203, T d303, T d011, T d111, T d211, T d311, T d012, T d112, T d212, T d312, T d013, T d113, T d213, T d313, T d022, T d122, T d222, T d322, T d023, T d123, T d223, T d323, T d033, T d133, T d233, T d333)
Fully Antisymmetric Levi-Civita Tensor.
Christof_constructor(T data[3][10], T d000, T d100, T d200, T d001, T d101, T d201, T d002, T d102, T d202, T d003, T d103, T d203, T d011, T d111, T d211, T d012, T d112, T d212, T d013, T d113, T d213, T d022, T d122, T d222, T d023, T d123, T d223, T d033, T d133, T d233)
Christof_constructor(T data[2][3], T d000, T d100, T d001, T d101, T d011, T d111)
Christof_constructor(T data[3][6], T d000, T d100, T d200, T d001, T d101, T d201, T d002, T d102, T d202, T d011, T d111, T d211, T d012, T d112, T d212, T d022, T d122, T d222)