v0.16.3
Loading...
Searching...
No Matches
Public Member Functions | Private Types | Static Private Member Functions | Private Attributes | List of all members
FTensor::Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 > Class Template Reference

#include "src/ftensor/src/FTensor/Tensor4/Tensor4_pointer.hpp"

Collaboration diagram for FTensor::Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 >:
[legend]

Public Member Functions

 Tensor4 (T *d)
 
 Tensor4 ()=delete
 
T & operator() (const int N1, const int N2, const int N3, const int N4)
 
T operator() (const int N1, const int N2, const int N3, const int N4) const
 
T * ptr (const int N1, const int N2, const int N3, const int N4) const
 
template<char i, char j, char k, char l, int Dim0, int Dim1, int Dim2, int Dim3>
Tensor4_Expr< Self, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > operator() (const Index< i, Dim0 >, const Index< j, Dim1 >, const Index< k, Dim2 >, const Index< l, Dim3 >)
 
template<char i, char j, char k, char l, int Dim0, int Dim1, int Dim2, int Dim3>
Tensor4_Expr< const Self, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > operator() (const Index< i, Dim0 >, const Index< j, Dim1 >, const Index< k, Dim2 >, const Index< l, Dim3 >) const
 
const Tensor4 & operator++ () const
 

Private Types

using Self = Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 >
 

Static Private Member Functions

static constexpr int getFlatIndex (const int N1, const int N2, const int N3, const int N4)
 

Private Attributes

T *restrict data
 

Detailed Description

template<class T, int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int G>
class FTensor::Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 >

Definition at line 306 of file Tensor4_pointer.hpp.

Member Typedef Documentation

◆ Self

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int G>
using FTensor::Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 >::Self = Tensor4<CursorPtr<T *, G>, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3>
private

Definition at line 309 of file Tensor4_pointer.hpp.

Constructor & Destructor Documentation

◆ Tensor4() [1/2]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int G>
FTensor::Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 >::Tensor4 ( T *  d)
inlineexplicit

Definition at line 321 of file Tensor4_pointer.hpp.

321: data(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

◆ Tensor4() [2/2]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int G>
FTensor::Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 >::Tensor4 ( )
delete

Member Function Documentation

◆ getFlatIndex()

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int G>
static constexpr int FTensor::Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 >::getFlatIndex ( const int  N1,
const int  N2,
const int  N3,
const int  N4 
)
inlinestaticconstexprprivate

Definition at line 315 of file Tensor4_pointer.hpp.

316 {
317 return (((N1 * Tensor_Dim1 + N2) * Tensor_Dim2 + N3) * Tensor_Dim3 + N4);
318 }

◆ operator()() [1/4]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int G>
template<char i, char j, char k, char l, int Dim0, int Dim1, int Dim2, int Dim3>
Tensor4_Expr< Self, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > FTensor::Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 >::operator() ( const Index< i, Dim0 >  ,
const Index< j, Dim1 >  ,
const Index< k, Dim2 >  ,
const Index< l, Dim3 >   
)
inline

Definition at line 373 of file Tensor4_pointer.hpp.

374 {
375 return Tensor4_Expr<Self, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l>(*this);
376 }

◆ operator()() [2/4]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int G>
template<char i, char j, char k, char l, int Dim0, int Dim1, int Dim2, int Dim3>
Tensor4_Expr< const Self, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > FTensor::Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 >::operator() ( const Index< i, Dim0 >  ,
const Index< j, Dim1 >  ,
const Index< k, Dim2 >  ,
const Index< l, Dim3 >   
) const
inline

Definition at line 381 of file Tensor4_pointer.hpp.

382 {
383 return Tensor4_Expr<const Self, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l>(
384 *this);
385 }

◆ operator()() [3/4]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int G>
T & FTensor::Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 >::operator() ( const int  N1,
const int  N2,
const int  N3,
const int  N4 
)
inline

Definition at line 325 of file Tensor4_pointer.hpp.

325 {
326#ifdef FTENSOR_DEBUG
327 if (N1 >= Tensor_Dim0 || N1 < 0 || N2 >= Tensor_Dim1 || N2 < 0 ||
328 N3 >= Tensor_Dim2 || N3 < 0 || N4 >= Tensor_Dim3 || N4 < 0) {
329 std::stringstream s;
330 s << "Bad index in Tensor4<CursorPtr<T*," << G << ">,"
331 << Tensor_Dim0 << "," << Tensor_Dim1 << "," << Tensor_Dim2 << ","
332 << Tensor_Dim3 << ">.operator(" << N1 << "," << N2 << "," << N3
333 << "," << N4 << ")" << std::endl;
334 throw std::out_of_range(s.str());
335 }
336#endif
337 return *(data + getFlatIndex(N1, N2, N3, N4));
338 }
static constexpr int getFlatIndex(const int N1, const int N2, const int N3, const int N4)
constexpr IntegrationType G
Definition level_set.cpp:33

◆ operator()() [4/4]

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int G>
T FTensor::Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 >::operator() ( const int  N1,
const int  N2,
const int  N3,
const int  N4 
) const
inline

Definition at line 340 of file Tensor4_pointer.hpp.

340 {
341#ifdef FTENSOR_DEBUG
342 if (N1 >= Tensor_Dim0 || N1 < 0 || N2 >= Tensor_Dim1 || N2 < 0 ||
343 N3 >= Tensor_Dim2 || N3 < 0 || N4 >= Tensor_Dim3 || N4 < 0) {
344 std::stringstream s;
345 s << "Bad index in Tensor4<CursorPtr<T*," << G << ">,"
346 << Tensor_Dim0 << "," << Tensor_Dim1 << "," << Tensor_Dim2 << ","
347 << Tensor_Dim3 << ">.operator(" << N1 << "," << N2 << "," << N3
348 << "," << N4 << ") const" << std::endl;
349 throw std::out_of_range(s.str());
350 }
351#endif
352 return *(data + getFlatIndex(N1, N2, N3, N4));
353 }

◆ operator++()

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int G>
const Tensor4 & FTensor::Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 >::operator++ ( ) const
inline

Definition at line 387 of file Tensor4_pointer.hpp.

387 {
388 data += G;
389 return *this;
390 }

◆ ptr()

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int G>
T * FTensor::Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 >::ptr ( const int  N1,
const int  N2,
const int  N3,
const int  N4 
) const
inline

Definition at line 355 of file Tensor4_pointer.hpp.

355 {
356#ifdef FTENSOR_DEBUG
357 if (N1 >= Tensor_Dim0 || N1 < 0 || N2 >= Tensor_Dim1 || N2 < 0 ||
358 N3 >= Tensor_Dim2 || N3 < 0 || N4 >= Tensor_Dim3 || N4 < 0) {
359 std::stringstream s;
360 s << "Bad index in Tensor4<CursorPtr<T*," << G << ">,"
361 << Tensor_Dim0 << "," << Tensor_Dim1 << "," << Tensor_Dim2 << ","
362 << Tensor_Dim3 << ">.ptr(" << N1 << "," << N2 << "," << N3 << ","
363 << N4 << ")" << std::endl;
364 throw std::out_of_range(s.str());
365 }
366#endif
367 return data + getFlatIndex(N1, N2, N3, N4);
368 }

Member Data Documentation

◆ data

template<class T , int Tensor_Dim0, int Tensor_Dim1, int Tensor_Dim2, int Tensor_Dim3, int G>
T* restrict FTensor::Tensor4< CursorPtr< T *, G >, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2, Tensor_Dim3 >::data
mutableprivate

Definition at line 313 of file Tensor4_pointer.hpp.


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