v0.7.2
FTensor.hpp
Go to the documentation of this file.
1 /* Include file for the Fast Tensor classes (FTensor). Everything is
2  in namespace FTensor. */
3 
4 #pragma once
5 
6 #include <cmath>
7 #include <complex>
8 #ifdef FTENSOR_DEBUG
9 #include <iostream>
10 #include <stdexcept>
11 #include <sstream>
12 #endif
13 #include "FTensor/Layout.hpp"
14 
15 #ifdef WITH_ADOL_C
16 #include <adolc/adolc.h>
17 #include <adolc/adtl.h>
18 #endif
19 
20 namespace FTensor
21 {
22  template <class T> class Tensor0;
23 
24  template <class T,const int I> class PackPtr {
25 
26  };
27 
28  template <class T, int Dim> class Tensor1;
29  template<class A, class T, int Dim, char i> class Tensor1_Expr;
30 
31  template <class T, int Dim1, int Dim2, Layout layout=column_major>
32  class Tensor2;
33  template<class A, class T, int Dim1, int Dim2, char i, char j>
34  class Tensor2_Expr;
35  template<class A, class T, int N>
37  template<class A, class T, int N>
39 
40  template <class T, int Dim> class Tensor2_symmetric;
41  template<class A, class T, int Dim, char i, char j>
43 
44  template <class T, int Dim> class Tensor2_antisymmetric;
45  template<class A, class T, int Dim, char i, char j>
47 
48 
49  template <class T, int Dim0, int Dim1, int Dim2> class Tensor3;
50  template <class A, class T, int Dim0, int Dim1, int Dim2,
51  char i, char j, char k> class Tensor3_Expr;
52  template<class A, class T, int N> class Tensor3_number_rhs_0;
53  template<class A, class T, int N> class Tensor3_number_rhs_2;
54  template<class A, class T, int N> class Tensor3_number_rhs_2;
55  template<class A, class T, int N1, int N2> class Tensor3_number_rhs_01;
56  template<class A, class T, int N1, int N2> class Tensor3_number_rhs_02;
57  template<class A, class T, int N1, int N2> class Tensor3_number_rhs_12;
58 
59  template <class T, int Dim01, int Dim2> class Dg;
60  template <class A, class T, int Dim01, int Dim2, char i, char j, char k>
61  class Dg_Expr;
62  template<class A, class T, int N> class Dg_number_rhs_0;
63  template<class A, class T, int N> class Dg_number_rhs_2;
64  template<class A, class T, int N1, int N2> class Dg_number_rhs_01;
65  template<class A, class T, int N1, int N2> class Dg_number_rhs_12;
66 
67  template <class T, int Dim0, int Dim12> class Christof;
68  template <class A, class T, int Dim0, int Dim12, char i, char j, char k>
70 
71  template <class T, int Dim0, int Dim12> class Tensor3_antisymmetric;
72  template <class A, class T, int Dim0, int Dim12, char i, char j, char k>
74 
75  template<class T,int Dim0,int Dim1,int Dim2,int Dim3> class Tensor4;
76  template <class A, class T, int Dim0, int Dim1, int Dim2, int Dim3,
77  char i, char j, char k, char l>
78  class Tensor4_Expr;
79 
80  template <class T, int Dim> class Riemann;
81  template <class A, class T, int Dim, char i, char j, char k, char l>
82  class Riemann_Expr;
83 
84  template <class T, int Dim01, int Dim23> class Ddg;
85  template <class A, class T, int Dim01, int Dim23,
86  char i, char j, char k, char l> class Ddg_Expr;
87  template<class A, class T, int N0, int N1>
88  class Ddg_number_rhs_01;
89  template<class A, class T, int N0>
90  class Ddg_number_rhs_0;
91 
92  template<class T>
94 }
95 #if __cplusplus < 201103L
96 #include "FTensor/enable_if.hpp"
97 #else
98 #include <type_traits>
99 #endif
100 
101 #include "FTensor/Index.hpp"
102 #include "FTensor/Number.hpp"
103 #include "FTensor/promote.hpp"
104 
105 #include "FTensor/cross.hpp"
106 #include "FTensor/levi_civita.hpp"
107 #include "FTensor/LeviCivita.hpp"
108 
109 #include "FTensor/Tensor0.hpp"
110 #include "FTensor/Tensor1.hpp"
111 #include "FTensor/Tensor2.hpp"
115 #include "FTensor/Tensor3.hpp"
116 #include "FTensor/Dg.hpp"
117 #include "FTensor/Christof.hpp"
120 #include "FTensor/Tensor4.hpp"
121 #include "FTensor/Ddg.hpp"
122 #include "FTensor/Riemann.hpp"
123 
JSON compatible output.