v0.14.0
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 > Class Template Reference

#include <src/ftensor/src/FTensor/Tensor3/Tensor3_value.hpp>

Inheritance diagram for FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >:
[legend]
Collaboration diagram for FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >:
[legend]

Public Member Functions

template<class... U>
 Tensor3 (U... d)
 
 Tensor3 ()
 
Toperator() (const int N1, const int N2, const int N3)
 
T operator() (const int N1, const int N2, const int N3) const
 
template<char i, char j, char k, int Dim0, int Dim1, int Dim2>
std::enable_if<(Tensor_Dim0 >=Dim0 &&Tensor_Dim1 >=Dim1 &&Tensor_Dim2 >=Dim2), Tensor3_Expr< Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k > >::type operator() (const Index< i, Dim0 >, const Index< j, Dim1 >, const Index< k, Dim2 >)
 
template<char i, char j, char k, int Dim0, int Dim1, int Dim2>
std::enable_if<(Tensor_Dim0 >=Dim0 &&Tensor_Dim1 >=Dim1 &&Tensor_Dim2 >=Dim2), Tensor3_Expr< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k > >::type operator() (const Index< i, Dim0 >, const Index< j, Dim1 >, const Index< k, Dim2 >) const
 
template<char i, char j, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >=Dim &&Tensor_Dim2 >=Dim), Tensor1_Expr< Tensor3_contracted_12< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim >, T, Dim, i > >::type operator() (const Index< i, Dim >, const Index< j, Dim >, const Index< j, Dim >) const
 
template<char i, char j, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >=Dim &&Tensor_Dim2 >=Dim), Tensor1_Expr< Tensor3_contracted_02< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim >, T, Dim, i > >::type operator() (const Index< j, Dim >, const Index< i, Dim >, const Index< j, Dim >) const
 
template<char i, char j, int Dim, int Dim2>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >=Dim &&Tensor_Dim2 >=Dim2), Tensor1_Expr< Tensor3_contracted_01< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim >, T, Dim2, i > >::type operator() (const Index< j, Dim >, const Index< j, Dim >, const Index< i, Dim2 >) const
 
template<char i, char j, int N, int Dim1, int Dim2>
std::enable_if<(Tensor_Dim0 >N &&Tensor_Dim1 >=Dim1 &&Tensor_Dim2 >=Dim2), Tensor2_Expr< Tensor3_number_rhs_0< Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N >, T, Dim1, Dim2, i, j > >::type operator() (const Number< N >, const Index< i, Dim1 >, const Index< j, Dim2 >)
 
template<char i, char j, int N, int Dim1, int Dim2>
std::enable_if<(Tensor_Dim0 >N &&Tensor_Dim1 >=Dim1 &&Tensor_Dim2 >=Dim2), Tensor2_Expr< Tensor3_number_0< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N >, T, Dim1, Dim2, i, j > >::type operator() (const Number< N >, const Index< i, Dim1 >, const Index< j, Dim2 >) const
 
template<char i, char j, int N, int Dim0, int Dim2>
std::enable_if<(Tensor_Dim0 >=Dim0 &&Tensor_Dim1 >N &&Tensor_Dim2 >=Dim2), Tensor2_Expr< Tensor3_number_rhs_0< Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N >, T, Dim0, Dim2, i, j > >::type operator() (const Index< i, Dim0 >, const Number< N >, const Index< j, Dim2 >)
 
template<char i, char j, int N, int Dim0, int Dim2>
std::enable_if<(Tensor_Dim0 >=Dim0 &&Tensor_Dim1 >N &&Tensor_Dim2 >=Dim2), Tensor2_Expr< Tensor3_number_0< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N >, T, Dim0, Dim2, i, j > >::type operator() (const Index< i, Dim0 >, const Number< N >, const Index< j, Dim2 >) const
 
template<char i, char j, int N, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >=Dim &&Tensor_Dim2 >N), Tensor2_symmetric_Expr< Tensor3_number_rhs_2< Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N >, T, Dim, i, j > >::type operator() (const Index< i, Dim >, const Index< j, Dim >, const Number< N >)
 
template<char i, char j, int N, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >=Dim &&Tensor_Dim2 >N), Tensor2_symmetric_Expr< Tensor3_number_2< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N >, T, Dim, i, j > >::type operator() (const Index< i, Dim >, const Index< j, Dim >, const Number< N >) const
 
template<char i, int N1, int N2, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >N1 &&Tensor_Dim2 >N2), Tensor1_Expr< Tensor3_number_rhs_12< Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N1, N2 >, T, Dim, i > >::type operator() (const Index< i, Dim > index, const Number< N1 >, const Number< N2 >)
 
template<char i, int N1, int N2, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >N1 &&Tensor_Dim2 >N2), Tensor1_Expr< Tensor3_number_12< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N1, N2 >, T, Dim, i > >::type operator() (const Index< i, Dim > index, const Number< N1 >, const Number< N2 >) const
 
template<char i, int N0, int N2, int Dim>
std::enable_if<(Tensor_Dim0 >N0 &&Tensor_Dim1 >=Dim &&Tensor_Dim2 >N2), Tensor1_Expr< Tensor3_number_rhs_12< Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N0, N2 >, T, Dim, i > >::type operator() (const Number< N0 >, const Index< i, Dim > index, const Number< N2 >)
 
template<char i, int N0, int N2, int Dim>
std::enable_if<(Tensor_Dim0 >N0 &&Tensor_Dim1 >=Dim &&Tensor_Dim2 >N2), Tensor1_Expr< Tensor3_number_12< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N0, N2 >, T, Dim, i > >::type operator() (const Number< N0 >, const Index< i, Dim > index, const Number< N2 >) const
 
template<char i, int N0, int N1, int Dim>
std::enable_if<(Tensor_Dim0 >N0 &&Tensor_Dim1 >N1 &&Tensor_Dim2 >=Dim), Tensor1_Expr< Tensor3_number_rhs_01< Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N0, N1 >, T, Dim, i > >::type operator() (const Number< N0 >, const Number< N1 >, const Index< i, Dim > index)
 
template<char i, int N0, int N1, int Dim>
std::enable_if<(Tensor_Dim0 >N0 &&Tensor_Dim1 >N1 &&Tensor_Dim2 >=Dim), Tensor1_Expr< Tensor3_number_01< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N0, N1 >, T, Dim, i > >::type operator() (const Number< N0 >, const Number< N1 >, const Index< i, Dim > index) const
 
template<char i, char j, int Dim1, int Dim2>
std::enable_if<(Tensor_Dim1 >=Dim1 &&Tensor_Dim2 >=Dim2), Tensor2_Expr< Tensor3_numeral_0< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T >, T, Dim1, Dim2, i, j > >::type operator() (const int N, const Index< i, Dim1 >, const Index< j, Dim2 >) const
 
template<char i, char j, int Dim0, int Dim2>
std::enable_if<(Tensor_Dim0 >=Dim0 &&Tensor_Dim2 >=Dim2), Tensor2_Expr< Tensor3_numeral_0< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T >, T, Dim0, Dim2, i, j > >::type operator() (const Index< i, Dim0 >, const int N, const Index< j, Dim2 >) const
 
template<char i, char j, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >=Dim), Tensor2_symmetric_Expr< Tensor3_numeral_2< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T >, T, Dim, i, j > >::type operator() (const Index< i, Dim >, const Index< j, Dim >, const int N) const
 
template<char i, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim), Tensor1_Expr< Tensor3_numeral_12< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T >, T, Dim, i > >::type operator() (const Index< i, Dim > index, const int N1, const int N2) const
 
template<char i, int Dim>
std::enable_if<(Tensor_Dim1 >=Dim), Tensor1_Expr< Tensor3_numeral_12< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T >, T, Dim, i > >::type operator() (const int N1, const Index< i, Dim > index, const int N2) const
 
template<char i, int Dim>
std::enable_if<(Tensor_Dim2 >=Dim), Tensor1_Expr< Tensor3_numeral_01< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T >, T, Dim, i > >::type operator() (const int N1, const int N2, const Index< i, Dim > index) const
 

Private Attributes

T data [Tensor_Dim0][Tensor_Dim1][Tensor_Dim2]
 

Detailed Description

template<class T, int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
class FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >
Examples
EshelbianOperators.cpp, HookeElement.cpp, HookeElement.hpp, PlasticOpsLargeStrains.hpp, PlasticOpsSmallStrains.hpp, and hcurl_check_approx_in_2d.cpp.

Definition at line 12 of file Tensor3_value.hpp.

Constructor & Destructor Documentation

◆ Tensor3() [1/2]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<class... U>
FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::Tensor3 ( U...  d)
inline

Definition at line 17 of file Tensor3_value.hpp.

17 : data{d...}
18 {
19 static_assert(sizeof...(d) == sizeof(data) / sizeof(T),
20 "Incorrect number of Arguments. Constructor should "
21 "initialize the entire Tensor");
22 }
T data[Tensor_Dim0][Tensor_Dim1][Tensor_Dim2]
const double T
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)
Definition: dTensor0.hpp:27

◆ Tensor3() [2/2]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::Tensor3 ( )
inline

Definition at line 24 of file Tensor3_value.hpp.

24{}

Member Function Documentation

◆ operator()() [1/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim), Tensor1_Expr< Tensor3_numeral_12< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T >, T, Dim, i > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Index< i, Dim >  index,
const int  N1,
const int  N2 
) const
inline

Definition at line 407 of file Tensor3_value.hpp.

408 {
409 using TensorExpr = Tensor3_numeral_12<
410 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T>;
411 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this, N1, N2));
412 }
static Number< 2 > N2
static Number< 1 > N1

◆ operator()() [2/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, int N1, int N2, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >N1 &&Tensor_Dim2 >N2), Tensor1_Expr< Tensor3_number_rhs_12< Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N1, N2 >, T, Dim, i > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Index< i, Dim >  index,
const Number< N1 ,
const Number< N2  
)
inline

Definition at line 256 of file Tensor3_value.hpp.

257 {
258 using TensorExpr = Tensor3_number_rhs_12<
259 Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, N1, N2>;
261 }

◆ operator()() [3/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, int N1, int N2, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >N1 &&Tensor_Dim2 >N2), Tensor1_Expr< Tensor3_number_12< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N1, N2 >, T, Dim, i > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Index< i, Dim >  index,
const Number< N1 ,
const Number< N2  
) const
inline

Definition at line 270 of file Tensor3_value.hpp.

272 {
273 using TensorExpr = Tensor3_number_12<
274 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, N1, N2>;
275 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this));
276 }

◆ operator()() [4/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, char j, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >=Dim &&Tensor_Dim2 >=Dim), Tensor1_Expr< Tensor3_contracted_12< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim >, T, Dim, i > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Index< i, Dim >  ,
const Index< j, Dim >  ,
const Index< j, Dim >   
) const
inline

Definition at line 103 of file Tensor3_value.hpp.

105 {
106 using TensorExpr = Tensor3_contracted_12<
107 Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, Dim>;
108 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this));
109 }

◆ operator()() [5/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, char j, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >=Dim), Tensor2_symmetric_Expr< Tensor3_numeral_2< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T >, T, Dim, i, j > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Index< i, Dim >  ,
const Index< j, Dim >  ,
const int  N 
) const
inline

Definition at line 388 of file Tensor3_value.hpp.

389 {
390 using TensorExpr = Tensor3_numeral_2<
391 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T>;
392 return Tensor2_symmetric_Expr<TensorExpr, T, Dim, i, j>(
393 TensorExpr(*this, N));
394 }
const int N
Definition: speed_test.cpp:3

◆ operator()() [6/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, char j, int N, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >=Dim &&Tensor_Dim2 >N), Tensor2_symmetric_Expr< Tensor3_number_rhs_2< Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N >, T, Dim, i, j > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Index< i, Dim >  ,
const Index< j, Dim >  ,
const Number< N  
)
inline

Definition at line 220 of file Tensor3_value.hpp.

221 {
222 using TensorExpr = Tensor3_number_rhs_2<
223 Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, N>;
224 return Tensor2_symmetric_Expr<TensorExpr, T, Dim, i, j>(*this);
225 }

◆ operator()() [7/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, char j, int N, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >=Dim &&Tensor_Dim2 >N), Tensor2_symmetric_Expr< Tensor3_number_2< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N >, T, Dim, i, j > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Index< i, Dim >  ,
const Index< j, Dim >  ,
const Number< N  
) const
inline

Definition at line 234 of file Tensor3_value.hpp.

235 {
236 using TensorExpr = Tensor3_number_2<
237 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, N>;
238 return Tensor2_symmetric_Expr<TensorExpr, T, Dim, i, j>(
239 TensorExpr(*this));
240 }

◆ operator()() [8/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, char j, char k, int Dim0, int Dim1, int Dim2>
std::enable_if<(Tensor_Dim0 >=Dim0 &&Tensor_Dim1 >=Dim1 &&Tensor_Dim2 >=Dim2), Tensor3_Expr< Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Index< i, Dim0 >  ,
const Index< j, Dim1 >  ,
const Index< k, Dim2 >   
)
inline

Definition at line 69 of file Tensor3_value.hpp.

71 {
72 return Tensor3_Expr<Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T,
73 Dim0, Dim1, Dim2, i, j, k>(*this);
74 }
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k

◆ operator()() [9/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, char j, char k, int Dim0, int Dim1, int Dim2>
std::enable_if<(Tensor_Dim0 >=Dim0 &&Tensor_Dim1 >=Dim1 &&Tensor_Dim2 >=Dim2), Tensor3_Expr< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Index< i, Dim0 >  ,
const Index< j, Dim1 >  ,
const Index< k, Dim2 >   
) const
inline

Definition at line 81 of file Tensor3_value.hpp.

83 {
84 return Tensor3_Expr<
85 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, Dim0, Dim1,
86 Dim2, i, j, k>(*this);
87 }

◆ operator()() [10/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, char j, int Dim0, int Dim2>
std::enable_if<(Tensor_Dim0 >=Dim0 &&Tensor_Dim2 >=Dim2), Tensor2_Expr< Tensor3_numeral_0< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T >, T, Dim0, Dim2, i, j > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Index< i, Dim0 >  ,
const int  N,
const Index< j, Dim2 >   
) const
inline

Definition at line 371 of file Tensor3_value.hpp.

372 {
373 using TensorExpr = Tensor3_numeral_0<
374 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T>;
375 return Tensor2_Expr<TensorExpr, T, Dim0, Dim2, i, j>(
376 TensorExpr(*this, N));
377 }

◆ operator()() [11/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, char j, int N, int Dim0, int Dim2>
std::enable_if<(Tensor_Dim0 >=Dim0 &&Tensor_Dim1 >N &&Tensor_Dim2 >=Dim2), Tensor2_Expr< Tensor3_number_rhs_0< Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N >, T, Dim0, Dim2, i, j > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Index< i, Dim0 >  ,
const Number< N ,
const Index< j, Dim2 >   
)
inline

Definition at line 189 of file Tensor3_value.hpp.

190 {
191 using TensorExpr = Tensor3_number_rhs_0<
192 Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, N>;
193 return Tensor2_Expr<TensorExpr, T, Dim0, Dim2, i, j>(*this);
194 }

◆ operator()() [12/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, char j, int N, int Dim0, int Dim2>
std::enable_if<(Tensor_Dim0 >=Dim0 &&Tensor_Dim1 >N &&Tensor_Dim2 >=Dim2), Tensor2_Expr< Tensor3_number_0< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N >, T, Dim0, Dim2, i, j > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Index< i, Dim0 >  ,
const Number< N ,
const Index< j, Dim2 >   
) const
inline

Definition at line 203 of file Tensor3_value.hpp.

205 {
206 using TensorExpr = Tensor3_number_0<
207 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, N>;
208 return Tensor2_Expr<TensorExpr, T, Dim0, Dim2, i, j>(TensorExpr(*this));
209 }

◆ operator()() [13/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, char j, int Dim>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >=Dim &&Tensor_Dim2 >=Dim), Tensor1_Expr< Tensor3_contracted_02< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim >, T, Dim, i > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Index< j, Dim >  ,
const Index< i, Dim >  ,
const Index< j, Dim >   
) const
inline

Definition at line 120 of file Tensor3_value.hpp.

122 {
123 using TensorExpr = Tensor3_contracted_02<
124 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, Dim>;
125 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this));
126 }

◆ operator()() [14/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, char j, int Dim, int Dim2>
std::enable_if<(Tensor_Dim0 >=Dim &&Tensor_Dim1 >=Dim &&Tensor_Dim2 >=Dim2), Tensor1_Expr< Tensor3_contracted_01< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim >, T, Dim2, i > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Index< j, Dim >  ,
const Index< j, Dim >  ,
const Index< i, Dim2 >   
) const
inline

Definition at line 137 of file Tensor3_value.hpp.

139 {
140 using TensorExpr = Tensor3_contracted_01<
141 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, Dim2>;
142 return Tensor1_Expr<TensorExpr, T, Dim2, i>(TensorExpr(*this));
143 }

◆ operator()() [15/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, char j, int Dim1, int Dim2>
std::enable_if<(Tensor_Dim1 >=Dim1 &&Tensor_Dim2 >=Dim2), Tensor2_Expr< Tensor3_numeral_0< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T >, T, Dim1, Dim2, i, j > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const int  N,
const Index< i, Dim1 >  ,
const Index< j, Dim2 >   
) const
inline

Definition at line 355 of file Tensor3_value.hpp.

356 {
357 using TensorExpr = Tensor3_numeral_0<
358 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T>;
359 return Tensor2_Expr<TensorExpr, T, Dim1, Dim2, i, j>(
360 TensorExpr(*this, N));
361 }

◆ operator()() [16/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, int Dim>
std::enable_if<(Tensor_Dim1 >=Dim), Tensor1_Expr< Tensor3_numeral_12< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T >, T, Dim, i > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const int  N1,
const Index< i, Dim >  index,
const int  N2 
) const
inline

Definition at line 424 of file Tensor3_value.hpp.

425 {
426 using TensorExpr = Tensor3_numeral_12<
427 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T>;
428 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this, N1, N2));
429 }

◆ operator()() [17/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, int Dim>
std::enable_if<(Tensor_Dim2 >=Dim), Tensor1_Expr< Tensor3_numeral_01< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T >, T, Dim, i > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const int  N1,
const int  N2,
const Index< i, Dim >  index 
) const
inline

Definition at line 439 of file Tensor3_value.hpp.

440 {
441 using TensorExpr = Tensor3_numeral_01<
442 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T>;
443 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this, N1, N2));
444 }

◆ operator()() [18/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
T & FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const int  N1,
const int  N2,
const int  N3 
)
inline

Definition at line 29 of file Tensor3_value.hpp.

30 {
31#ifdef FTENSOR_DEBUG
32 if(N1 >= Tensor_Dim0 || N1 < 0 || N2 >= Tensor_Dim1 || N2 < 0
33 || N3 >= Tensor_Dim2 || N3 < 0)
34 {
35 std::stringstream s;
36 s << "Bad index in Tensor3<T," << Tensor_Dim0 << "," << Tensor_Dim1
37 << "," << Tensor_Dim2 << ">.operator(" << N1 << "," << N2 << ","
38 << N3 << ")" << std::endl;
39 throw std::out_of_range(s.str());
40 }
41#endif
42 return data[N1][N2][N3];
43 }

◆ operator()() [19/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
T FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const int  N1,
const int  N2,
const int  N3 
) const
inline

Definition at line 45 of file Tensor3_value.hpp.

46 {
47#ifdef FTENSOR_DEBUG
48 if(N1 >= Tensor_Dim0 || N1 < 0 || N2 >= Tensor_Dim1 || N2 < 0
49 || N3 >= Tensor_Dim2 || N3 < 0)
50 {
51 std::stringstream s;
52 s << "Bad index in Tensor3<T," << Tensor_Dim0 << "," << Tensor_Dim1
53 << "," << Tensor_Dim2 << ">.operator(" << N1 << "," << N2 << ","
54 << N3 << ") const" << std::endl;
55 throw std::out_of_range(s.str());
56 }
57#endif
58 return data[N1][N2][N3];
59 }

◆ operator()() [20/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, char j, int N, int Dim1, int Dim2>
std::enable_if<(Tensor_Dim0 >N &&Tensor_Dim1 >=Dim1 &&Tensor_Dim2 >=Dim2), Tensor2_Expr< Tensor3_number_rhs_0< Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N >, T, Dim1, Dim2, i, j > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Number< N ,
const Index< i, Dim1 >  ,
const Index< j, Dim2 >   
)
inline

Definition at line 159 of file Tensor3_value.hpp.

160 {
161 using TensorExpr = Tensor3_number_rhs_0<
162 Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, N>;
163 return Tensor2_Expr<TensorExpr, T, Dim1, Dim2, i, j>(*this);
164 }

◆ operator()() [21/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, char j, int N, int Dim1, int Dim2>
std::enable_if<(Tensor_Dim0 >N &&Tensor_Dim1 >=Dim1 &&Tensor_Dim2 >=Dim2), Tensor2_Expr< Tensor3_number_0< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N >, T, Dim1, Dim2, i, j > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Number< N ,
const Index< i, Dim1 >  ,
const Index< j, Dim2 >   
) const
inline

Definition at line 173 of file Tensor3_value.hpp.

175 {
176 using TensorExpr = Tensor3_number_0<
177 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, N>;
178 return Tensor2_Expr<TensorExpr, T, Dim1, Dim2, i, j>(TensorExpr(*this));
179 }

◆ operator()() [22/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, int N0, int N2, int Dim>
std::enable_if<(Tensor_Dim0 >N0 &&Tensor_Dim1 >=Dim &&Tensor_Dim2 >N2), Tensor1_Expr< Tensor3_number_rhs_12< Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N0, N2 >, T, Dim, i > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Number< N0 ,
const Index< i, Dim >  index,
const Number< N2  
)
inline

Definition at line 289 of file Tensor3_value.hpp.

290 {
291 using TensorExpr = Tensor3_number_rhs_12<
292 Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, N0, N2>;
294 }
static Number< 0 > N0

◆ operator()() [23/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, int N0, int N2, int Dim>
std::enable_if<(Tensor_Dim0 >N0 &&Tensor_Dim1 >=Dim &&Tensor_Dim2 >N2), Tensor1_Expr< Tensor3_number_12< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N0, N2 >, T, Dim, i > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Number< N0 ,
const Index< i, Dim >  index,
const Number< N2  
) const
inline

Definition at line 303 of file Tensor3_value.hpp.

305 {
306 using TensorExpr = Tensor3_number_12<
307 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, N0, N2>;
308 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this));
309 }

◆ operator()() [24/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, int N0, int N1, int Dim>
std::enable_if<(Tensor_Dim0 >N0 &&Tensor_Dim1 >N1 &&Tensor_Dim2 >=Dim), Tensor1_Expr< Tensor3_number_rhs_01< Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N0, N1 >, T, Dim, i > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Number< N0 ,
const Number< N1 ,
const Index< i, Dim >  index 
)
inline

Definition at line 320 of file Tensor3_value.hpp.

321 {
322 using TensorExpr = Tensor3_number_rhs_01<
323 Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, N0, N1>;
325 }

◆ operator()() [25/25]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
template<char i, int N0, int N1, int Dim>
std::enable_if<(Tensor_Dim0 >N0 &&Tensor_Dim1 >N1 &&Tensor_Dim2 >=Dim), Tensor1_Expr< Tensor3_number_01< constTensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, N0, N1 >, T, Dim, i > >::type FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::operator() ( const Number< N0 ,
const Number< N1 ,
const Index< i, Dim >  index 
) const
inline

Definition at line 334 of file Tensor3_value.hpp.

336 {
337 using TensorExpr = Tensor3_number_01<
338 const Tensor3<T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2>, T, N0, N1>;
339 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this));
340 }

Member Data Documentation

◆ data

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2>
T FTensor::Tensor3< T, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >::data[Tensor_Dim0][Tensor_Dim1][Tensor_Dim2]
private

Definition at line 14 of file Tensor3_value.hpp.


The documentation for this class was generated from the following files: