v0.14.0
Public Member Functions | Private Attributes | List of all members
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > Class Template Reference

#include <src/ftensor/src/FTensor/Tensor4/Tensor4_Expr.hpp>

Collaboration diagram for FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >:
[legend]

Public Member Functions

 Tensor4_Expr (Tensor4< A, Dim0, Dim1, Dim2, Dim3 > &a)
 
T & operator() (const int N1, const int N2, const int N3, const int N4)
 
operator() (const int N1, const int N2, const int N3, const int N4) const
 
template<class B , class U , int Dim1_0, int Dim1_1, int Dim1_2, int Dim1_3, char i_1, char j_1, char k_1, char l_1>
auto & equals (const Tensor4_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, Dim1_3, i_1, j_1, k_1, l_1 > &rhs)
 
template<class B , class U , int Dim1_0, int Dim1_1, int Dim1_2, int Dim1_3, char i_1, char j_1, char k_1, char l_1>
auto & operator= (const Tensor4_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, Dim1_3, i_1, j_1, k_1, l_1 > &rhs)
 
auto & operator= (const Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > &rhs)
 
template<class B , class U , int Dim01, int Dim23, char i_1, char j_1, char k_1, char l_1>
auto & equals (const Ddg_Expr< B, U, Dim01, Dim23, i_1, j_1, k_1, l_1 > &rhs)
 
template<class B , class U , int Dim01, int Dim23, char i_1, char j_1, char k_1, char l_1>
auto & operator= (const Ddg_Expr< B, U, Dim01, Dim23, i_1, j_1, k_1, l_1 > &rhs)
 
template<class B , class U , int Dim1_0, int Dim1_1, int Dim1_2, int Dim1_3, char i_1, char j_1, char k_1, char l_1>
auto & operator+= (const Tensor4_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, Dim1_3, i_1, j_1, k_1, l_1 > &rhs)
 
template<class B , class U , int Dim1_0, int Dim1_1, int Dim1_2, int Dim1_3, char i_1, char j_1, char k_1, char l_1>
auto & operator-= (const Tensor4_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, Dim1_3, i_1, j_1, k_1, l_1 > &rhs)
 
template<class B , class U , int Dim01, int Dim23, char i_1, char j_1, char k_1, char l_1>
auto & operator+= (const Ddg_Expr< B, U, Dim01, Dim23, i_1, j_1, k_1, l_1 > &rhs)
 
template<class B , class U , int Dim01, int Dim23, char i_1, char j_1, char k_1, char l_1>
auto & operator-= (const Ddg_Expr< B, U, Dim01, Dim23, i_1, j_1, k_1, l_1 > &rhs)
 
template<class U >
auto & operator= (const U &d)
 
template<class U >
auto & operator*= (const U &d)
 
template<class U >
auto & operator/= (const U &d)
 

Private Attributes

Tensor4< A, Dim0, Dim1, Dim2, Dim3 > & iter
 

Detailed Description

template<class A, class T, int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
class FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >

Definition at line 39 of file Tensor4_Expr.hpp.

Constructor & Destructor Documentation

◆ Tensor4_Expr()

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::Tensor4_Expr ( Tensor4< A, Dim0, Dim1, Dim2, Dim3 > &  a)
inline

Definition at line 45 of file Tensor4_Expr.hpp.

45 : iter(a) {}

Member Function Documentation

◆ equals() [1/2]

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
template<class B , class U , int Dim01, int Dim23, char i_1, char j_1, char k_1, char l_1>
auto& FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::equals ( const Ddg_Expr< B, U, Dim01, Dim23, i_1, j_1, k_1, l_1 > &  rhs)
inline

Definition at line 92 of file Tensor4_Expr.hpp.

92  {
93  for(int ii = 0; ii != Dim01; ++ii)
94  for(int jj = 0; jj != Dim01; ++jj)
95  for(int kk = 0; kk != Dim23; ++kk)
96  for (int ll = 0; ll != Dim23; ++ll) {
97  iter(ii, jj, kk, ll) = permute(*this, rhs, ii, jj, kk, ll);
98  }
99  return *this;
100  }

◆ equals() [2/2]

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
template<class B , class U , int Dim1_0, int Dim1_1, int Dim1_2, int Dim1_3, char i_1, char j_1, char k_1, char l_1>
auto& FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::equals ( const Tensor4_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, Dim1_3, i_1, j_1, k_1, l_1 > &  rhs)
inline

Definition at line 61 of file Tensor4_Expr.hpp.

63  {
64  for(int ii = 0; ii < Dim0; ++ii)
65  for(int jj = 0; jj < Dim1; ++jj)
66  for(int kk = 0; kk < Dim2; ++kk)
67  for(int ll = 0; ll < Dim3; ++ll)
68  {
69  iter(ii, jj, kk, ll) = permute(*this, rhs, ii, jj, kk, ll);
70  }
71  return *this;
72  }

◆ operator()() [1/2]

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
T& FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator() ( const int  N1,
const int  N2,
const int  N3,
const int  N4 
)
inline

Definition at line 46 of file Tensor4_Expr.hpp.

47  {
48  return iter(N1, N2, N3, N4);
49  }

◆ operator()() [2/2]

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
T FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator() ( const int  N1,
const int  N2,
const int  N3,
const int  N4 
) const
inline

Definition at line 50 of file Tensor4_Expr.hpp.

51  {
52  return iter(N1, N2, N3, N4);
53  }

◆ operator*=()

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
template<class U >
auto& FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator*= ( const U &  d)
inline

Definition at line 174 of file Tensor4_Expr.hpp.

174  {
175  for (int ii = 0; ii != Dim0; ++ii)
176  for (int jj = 0; jj != Dim1; ++jj)
177  for (int kk = 0; kk != Dim2; ++kk)
178  for (int ll = 0; ll != Dim3; ++ll)
179  iter(ii, jj, kk, ll) *= d;
180  return *this;
181  }

◆ operator+=() [1/2]

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
template<class B , class U , int Dim01, int Dim23, char i_1, char j_1, char k_1, char l_1>
auto& FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator+= ( const Ddg_Expr< B, U, Dim01, Dim23, i_1, j_1, k_1, l_1 > &  rhs)
inline

Definition at line 142 of file Tensor4_Expr.hpp.

142  {
143  for (int ii = 0; ii != Dim01; ++ii)
144  for (int jj = 0; jj != Dim01; ++jj)
145  for (int kk = 0; kk != Dim23; ++kk)
146  for (int ll = 0; ll != Dim23; ++ll) {
147  iter(ii, jj, kk, ll) += rhs(ii, jj, kk, ll);
148  }
149  return *this;
150  }

◆ operator+=() [2/2]

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
template<class B , class U , int Dim1_0, int Dim1_1, int Dim1_2, int Dim1_3, char i_1, char j_1, char k_1, char l_1>
auto& FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator+= ( const Tensor4_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, Dim1_3, i_1, j_1, k_1, l_1 > &  rhs)
inline

Definition at line 111 of file Tensor4_Expr.hpp.

113  {
114  for(int ii = 0; ii < Dim0; ++ii)
115  for(int jj = 0; jj < Dim1; ++jj)
116  for(int kk = 0; kk < Dim2; ++kk)
117  for(int ll = 0; ll < Dim3; ++ll)
118  {
119  iter(ii, jj, kk, ll) += permute(*this, rhs, ii, jj, kk, ll);
120  }
121  return *this;
122  }

◆ operator-=() [1/2]

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
template<class B , class U , int Dim01, int Dim23, char i_1, char j_1, char k_1, char l_1>
auto& FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator-= ( const Ddg_Expr< B, U, Dim01, Dim23, i_1, j_1, k_1, l_1 > &  rhs)
inline

Definition at line 155 of file Tensor4_Expr.hpp.

155  {
156  for (int ii = 0; ii != Dim01; ++ii)
157  for (int jj = 0; jj != Dim01; ++jj)
158  for (int kk = 0; kk != Dim23; ++kk)
159  for (int ll = 0; ll != Dim23; ++ll) {
160  iter(ii, jj, kk, ll) -= rhs(ii, jj, kk, ll);
161  }
162  return *this;
163  }

◆ operator-=() [2/2]

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
template<class B , class U , int Dim1_0, int Dim1_1, int Dim1_2, int Dim1_3, char i_1, char j_1, char k_1, char l_1>
auto& FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator-= ( const Tensor4_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, Dim1_3, i_1, j_1, k_1, l_1 > &  rhs)
inline

Definition at line 126 of file Tensor4_Expr.hpp.

128  {
129  for(int ii = 0; ii < Dim0; ++ii)
130  for(int jj = 0; jj < Dim1; ++jj)
131  for(int kk = 0; kk < Dim2; ++kk)
132  for(int ll = 0; ll < Dim3; ++ll)
133  {
134  iter(ii, jj, kk, ll) += permute(*this, rhs, ii, jj, kk, ll);
135  }
136  return *this;
137  }

◆ operator/=()

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
template<class U >
auto& FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator/= ( const U &  d)
inline

Definition at line 183 of file Tensor4_Expr.hpp.

183  {
184  for (int ii = 0; ii != Dim0; ++ii)
185  for (int jj = 0; jj != Dim1; ++jj)
186  for (int kk = 0; kk != Dim2; ++kk)
187  for (int ll = 0; ll != Dim3; ++ll)
188  iter(ii, jj, kk, ll) /= d;
189  return *this;
190  }

◆ operator=() [1/4]

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
template<class B , class U , int Dim01, int Dim23, char i_1, char j_1, char k_1, char l_1>
auto& FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator= ( const Ddg_Expr< B, U, Dim01, Dim23, i_1, j_1, k_1, l_1 > &  rhs)
inline

Definition at line 105 of file Tensor4_Expr.hpp.

105  {
106  return equals(rhs);
107  }

◆ operator=() [2/4]

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
template<class B , class U , int Dim1_0, int Dim1_1, int Dim1_2, int Dim1_3, char i_1, char j_1, char k_1, char l_1>
auto& FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator= ( const Tensor4_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, Dim1_3, i_1, j_1, k_1, l_1 > &  rhs)
inline

Definition at line 76 of file Tensor4_Expr.hpp.

78  {
79  return equals(rhs);
80  }

◆ operator=() [3/4]

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
auto& FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator= ( const Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > &  rhs)
inline

Definition at line 83 of file Tensor4_Expr.hpp.

85  {
86  return equals(rhs);
87  }

◆ operator=() [4/4]

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
template<class U >
auto& FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator= ( const U &  d)
inline

Definition at line 165 of file Tensor4_Expr.hpp.

165  {
166  for (int ii = 0; ii != Dim0; ++ii)
167  for (int jj = 0; jj != Dim1; ++jj)
168  for (int kk = 0; kk != Dim2; ++kk)
169  for (int ll = 0; ll != Dim3; ++ll)
170  iter(ii, jj, kk, ll) = d;
171  return *this;
172  }

Member Data Documentation

◆ iter

template<class A , class T , int Dim0, int Dim1, int Dim2, int Dim3, char i, char j, char k, char l>
Tensor4<A, Dim0, Dim1, Dim2, Dim3>& FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::iter
private

Definition at line 42 of file Tensor4_Expr.hpp.


The documentation for this class was generated from the following file:
FTensor::d
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
FTensor::permute
U permute(const Tensor2_Expr< A, T, Dim0_0, Dim0_1, i0, j0 > &, const Tensor2_Expr< B, U, Dim1_0, Dim1_1, i1, j1 > &rhs, const int N0, const int N1)
Definition: permute.hpp:11
a
constexpr double a
Definition: approx_sphere.cpp:30
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::equals
auto & equals(const Tensor4_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, Dim1_3, i_1, j_1, k_1, l_1 > &rhs)
Definition: Tensor4_Expr.hpp:61
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::iter
Tensor4< A, Dim0, Dim1, Dim2, Dim3 > & iter
Definition: Tensor4_Expr.hpp:42