9template <
class T,
int Tensor_Dim>
class Tensor1<
T *, Tensor_Dim> {
17 mutable T *restrict data[Tensor_Dim];
40 template <
class... U>
Tensor1(U *...
d) : data(
d...), inc(1) {}
44 Tensor1(std::array<U *, Tensor_Dim> &
a,
const int i = 1) : inc(
i) {
45 std::copy(
a.begin(),
a.end(), data);
55 if(
N >= Tensor_Dim ||
N < 0)
58 s <<
"Bad index in Tensor1<T*," << Tensor_Dim <<
">.operator(" <<
N
60 throw std::out_of_range(s.str());
68 if(
N >= Tensor_Dim ||
N < 0)
71 s <<
"Bad index in Tensor1<T*," << Tensor_Dim <<
">.operator(" <<
N
72 <<
") const" << std::endl;
73 throw std::out_of_range(s.str());
81 if(
N >= Tensor_Dim ||
N < 0)
84 s <<
"Bad index in Tensor1<T*," << Tensor_Dim <<
">.ptr(" <<
N <<
")"
86 throw std::out_of_range(s.str());
94 if (
N >= Tensor_Dim ||
N < 0) {
96 s <<
"Bad index in Tensor1<T*," << Tensor_Dim <<
">.ptr(" <<
N <<
")"
98 throw std::out_of_range(s.str());
109 template <
char i,
int Dim>
116 template <
char i,
int Dim>
128 for(
int i = 0;
i < Tensor_Dim; ++
i)
145 template <
class T,
int Tensor_Dim,
int I>
163 for(
int i = 0;
i < Tensor_Dim; ++
i)
Tensor1(std::array< U *, Tensor_Dim > &a)
const Tensor1 & operator++() const
Tensor1(T *d0, T *d1, T *d2, T *d3, T *d4, T *d5, const int i=1)
Tensor1(T *d0, T *d1, const int i=1)
Tensor1(T *d0, const int i=1)
T & operator()(const int N)
Tensor1(std::array< U *, Tensor_Dim > &a, const int i=1)
T * ptr(const int N) const
Tensor1(T *d0, T *d1, T *d2, T *d3, const int i=1)
Tensor1(T *d0, T *d1, T *d2, const int i=1)
Tensor1_Expr< Tensor1< T *, Tensor_Dim >, T, Dim, i > operator()(const Index< i, Dim > &index)
T operator()(const int N) const
Tensor1(const Tensor1< PackPtr< T *, I >, Tensor_Dim > &)=delete
Preventing casting on derived class.
const Tensor1 & operator++() const
Tensor1_Expr< const Tensor1< T *, Tensor_Dim >, T, Dim, i > operator()(const Index< i, Dim > &index) const
FTensor::Index< 'i', SPACE_DIM > i
Tensors class implemented by Walter Landry.
const Tensor1_Expr< const dTensor0< T, Dim, i >, typename promote< T, double >::V, Dim, i > d(const Tensor0< T * > &a, const Index< i, Dim > index, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
constexpr IntegrationType I
static constexpr std::array< double, 3 > d4
static constexpr std::array< double, 3 > d3