v0.16.0
Loading...
Searching...
No Matches
Public Member Functions | Private Types | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 > Class Template Reference

#include "src/ftensor/src/FTensor/Dg/Dg_pointer.hpp"

Collaboration diagram for FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >:
[legend]

Public Member Functions

 Dg (T *d)
 
 Dg ()=delete
 
T & operator() (const int N1, const int N2, const int N3)
 
operator() (const int N1, const int N2, const int N3) const
 
T * ptr (const int N1, const int N2, const int N3) const
 
template<char i, char j, char k, int Dim01, int Dim2>
Dg_Expr< Self, T, Dim01, Dim2, i, j, koperator() (const Index< i, Dim01 >, const Index< j, Dim01 >, const Index< k, Dim2 >)
 
template<char i, char j, char k, int Dim01, int Dim2>
Dg_Expr< const Self, T, Dim01, Dim2, i, j, koperator() (const Index< i, Dim01 >, const Index< j, Dim01 >, const Index< k, Dim2 >) const
 
template<char i, char j, int Dim>
Tensor1_Expr< const Tensor3_contracted_12< Self, T, Dim >, T, Dim, ioperator() (const Index< i, Dim >, const Index< j, Dim >, const Index< j, Dim >) const
 
template<char i, char j, int Dim>
Tensor1_Expr< const Tensor3_contracted_02< Self, T, Dim >, T, Dim, ioperator() (const Index< j, Dim >, const Index< i, Dim >, const Index< j, Dim >) const
 
template<char i, char j, int Dim01, int Dim2>
Tensor1_Expr< const Tensor3_contracted_01< Self, T, Dim01 >, T, Dim2, ioperator() (const Index< j, Dim01 >, const Index< j, Dim01 >, const Index< i, Dim2 >) const
 
template<char i, char j, int N, int Dim1, int Dim2>
Tensor2_Expr< Dg_number_rhs_0< Self, T, N >, T, Dim1, Dim2, i, joperator() (const Number< N >, const Index< i, Dim1 >, const Index< j, Dim2 >)
 
template<char i, char j, int N, int Dim1, int Dim2>
const Tensor2_Expr< const Dg_number_0< const Self, T, N >, T, Dim1, Dim2, i, joperator() (const Number< N >, const Index< i, Dim1 >, const Index< j, Dim2 >) const
 
template<char i, char j, int N, int Dim0, int Dim2>
Tensor2_Expr< Dg_number_rhs_0< Self, T, N >, T, Dim0, Dim2, i, joperator() (const Index< i, Dim0 >, const Number< N >, const Index< j, Dim2 >)
 
template<char i, char j, int N, int Dim0, int Dim2>
const Tensor2_Expr< const Dg_number_0< const Self, T, N >, T, Dim0, Dim2, i, joperator() (const Index< i, Dim0 >, const Number< N >, const Index< j, Dim2 >) const
 
template<char i, char j, int N, int Dim>
Tensor2_symmetric_Expr< Dg_number_rhs_2< Self, T, N >, T, Dim, i, joperator() (const Index< i, Dim >, const Index< j, Dim >, const Number< N >)
 
template<char i, char j, int N, int Dim>
const Tensor2_symmetric_Expr< const Dg_number_2< const Self, T, N >, T, Dim, i, joperator() (const Index< i, Dim >, const Index< j, Dim >, const Number< N >) const
 
template<char i, int N1, int N2, int Dim>
Tensor1_Expr< Dg_number_rhs_12< Self, T, N1, N2 >, T, Dim, ioperator() (const Index< i, Dim >, const Number< N1 >, const Number< N2 >)
 
template<char i, int N1, int N2, int Dim>
const Tensor1_Expr< const Dg_number_12< const Self, T, N1, N2 >, T, Dim, ioperator() (const Index< i, Dim >, const Number< N1 >, const Number< N2 >) const
 
template<char i, int N1, int N2, int Dim>
Tensor1_Expr< Dg_number_rhs_12< Self, T, N1, N2 >, T, Dim, ioperator() (const Number< N1 >, const Index< i, Dim >, const Number< N2 >)
 
template<char i, int N1, int N2, int Dim>
const Tensor1_Expr< const Dg_number_12< const Self, T, N1, N2 >, T, Dim, ioperator() (const Number< N1 >, const Index< i, Dim >, const Number< N2 >) const
 
template<char i, int N1, int N2, int Dim>
Tensor1_Expr< Dg_number_rhs_01< Self, T, N1, N2 >, T, Dim, ioperator() (const Number< N1 >, const Number< N2 >, const Index< i, Dim >)
 
template<char i, int N1, int N2, int Dim>
const Tensor1_Expr< const Dg_number_01< const Self, T, N1, N2 >, T, Dim, ioperator() (const Number< N1 >, const Number< N2 >, const Index< i, Dim >) const
 
template<char i, char j, int Dim1, int Dim2>
const Tensor2_Expr< const Dg_numeral_0< const Self, T >, T, Dim1, Dim2, i, joperator() (const int N, const Index< i, Dim1 >, const Index< j, Dim2 >) const
 
template<char i, char j, int Dim0, int Dim2>
const Tensor2_Expr< const Dg_numeral_0< const Self, T >, T, Dim0, Dim2, i, joperator() (const Index< i, Dim0 >, const int N, const Index< j, Dim2 >) const
 
template<char i, char j, int Dim>
const Tensor2_symmetric_Expr< const Dg_numeral_2< const Self, T >, T, Dim, i, joperator() (const Index< i, Dim >, const Index< j, Dim >, const int N) const
 
template<char i, int Dim>
const Tensor1_Expr< const Dg_numeral_12< const Self, T >, T, Dim, ioperator() (const Index< i, Dim >, const int N1, const int N2) const
 
template<char i, int Dim>
const Tensor1_Expr< const Dg_numeral_12< const Self, T >, T, Dim, ioperator() (const int N1, const Index< i, Dim >, const int N2) const
 
template<char i, int Dim>
const Tensor1_Expr< const Dg_numeral_01< const Self, T >, T, Dim, ioperator() (const int N1, const int N2, const Index< i, Dim >) const
 
const Dgoperator++ () const
 

Private Types

using Self = Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >
 

Static Private Member Functions

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

Private Attributes

T *restrict data
 

Static Private Attributes

static constexpr int SymmSize01
 

Detailed Description

template<class T, int Tensor_Dim01, int Tensor_Dim2, int G>
class FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >

Definition at line 461 of file Dg_pointer.hpp.

Member Typedef Documentation

◆ Self

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
using FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::Self = Dg<CursorPtr<T *, G>, Tensor_Dim01, Tensor_Dim2>
private

Definition at line 463 of file Dg_pointer.hpp.

Constructor & Destructor Documentation

◆ Dg() [1/2]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::Dg ( T *  d)
inlineexplicit

Definition at line 481 of file Dg_pointer.hpp.

481: 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

◆ Dg() [2/2]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::Dg ( )
delete

Member Function Documentation

◆ getFlatIndex()

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
static constexpr int FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::getFlatIndex ( const int  N1,
const int  N2,
const int  N3 
)
inlinestaticconstexprprivate

Definition at line 475 of file Dg_pointer.hpp.

476 {
477 return getSymmFlatIndex01(N1, N2) * Tensor_Dim2 + N3;
478 }
static constexpr int getSymmFlatIndex01(const int N1, const int N2)

◆ getSymmFlatIndex01()

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
static constexpr int FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::getSymmFlatIndex01 ( const int  N1,
const int  N2 
)
inlinestaticconstexprprivate

Definition at line 470 of file Dg_pointer.hpp.

470 {
471 return N1 > N2 ? N1 + (N2 * (2 * Tensor_Dim01 - N2 - 1)) / 2
472 : N2 + (N1 * (2 * Tensor_Dim01 - N1 - 1)) / 2;
473 }

◆ operator()() [1/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, char j, int Dim>
Tensor1_Expr< const Tensor3_contracted_12< Self, T, Dim >, T, Dim, i > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Index< i, Dim >  ,
const Index< j, Dim >  ,
const Index< j, Dim >   
) const
inline

Definition at line 543 of file Dg_pointer.hpp.

544 {
545 using TensorExpr = Tensor3_contracted_12<Self, T, Dim>;
546 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this));
547 }

◆ operator()() [2/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, char j, int Dim>
const Tensor2_symmetric_Expr< const Dg_numeral_2< const Self, T >, T, Dim, i, j > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Index< i, Dim >  ,
const Index< j, Dim >  ,
const int  N 
) const
inline

Definition at line 675 of file Dg_pointer.hpp.

675 {
676 using TensorExpr = Dg_numeral_2<const Self, T>;
677 return Tensor2_symmetric_Expr<TensorExpr, T, Dim, i, j>(
678 TensorExpr(*this, N));
679 }
const int N
Definition speed_test.cpp:3

◆ operator()() [3/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, char j, int N, int Dim>
Tensor2_symmetric_Expr< Dg_number_rhs_2< Self, T, N >, T, Dim, i, j > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Index< i, Dim >  ,
const Index< j, Dim >  ,
const Number< N  
)
inline

Definition at line 599 of file Dg_pointer.hpp.

599 {
600 using TensorExpr = Dg_number_rhs_2<Self, T, N>;
601 return Tensor2_symmetric_Expr<TensorExpr, T, Dim, i, j>(*this);
602 }

◆ operator()() [4/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, char j, int N, int Dim>
const Tensor2_symmetric_Expr< const Dg_number_2< const Self, T, N >, T, Dim, i, j > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Index< i, Dim >  ,
const Index< j, Dim >  ,
const Number< N  
) const
inline

Definition at line 607 of file Dg_pointer.hpp.

608 {
609 using TensorExpr = Dg_number_2<const Self, T, N>;
610 return Tensor2_symmetric_Expr<TensorExpr, T, Dim, i, j>(
611 TensorExpr(*this));
612 }

◆ operator()() [5/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, int Dim>
const Tensor1_Expr< const Dg_numeral_12< const Self, T >, T, Dim, i > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Index< i, Dim >  ,
const int  N1,
const int  N2 
) const
inline

Definition at line 683 of file Dg_pointer.hpp.

683 {
684 using TensorExpr = Dg_numeral_12<const Self, T>;
685 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this, N1, N2));
686 }

◆ operator()() [6/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, int N1, int N2, int Dim>
Tensor1_Expr< Dg_number_rhs_12< Self, T, N1, N2 >, T, Dim, i > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Index< i, Dim >  ,
const Number< N1 >  ,
const Number< N2 >   
)
inline

Definition at line 616 of file Dg_pointer.hpp.

616 {
617 using TensorExpr = Dg_number_rhs_12<Self, T, N1, N2>;
619 }

◆ operator()() [7/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, int N1, int N2, int Dim>
const Tensor1_Expr< const Dg_number_12< const Self, T, N1, N2 >, T, Dim, i > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Index< i, Dim >  ,
const Number< N1 >  ,
const Number< N2 >   
) const
inline

Definition at line 623 of file Dg_pointer.hpp.

623 {
624 using TensorExpr = Dg_number_12<const Self, T, N1, N2>;
625 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this));
626 }

◆ operator()() [8/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, char j, int Dim0, int Dim2>
const Tensor2_Expr< const Dg_numeral_0< const Self, T >, T, Dim0, Dim2, i, j > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Index< i, Dim0 >  ,
const int  N,
const Index< j, Dim2 >   
) const
inline

Definition at line 666 of file Dg_pointer.hpp.

666 {
667 using TensorExpr = Dg_numeral_0<const Self, T>;
668 return Tensor2_Expr<TensorExpr, T, Dim0, Dim2, i, j>(
669 TensorExpr(*this, N));
670 }

◆ operator()() [9/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, char j, int N, int Dim0, int Dim2>
Tensor2_Expr< Dg_number_rhs_0< Self, T, N >, T, Dim0, Dim2, i, j > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Index< i, Dim0 >  ,
const Number< N ,
const Index< j, Dim2 >   
)
inline

Definition at line 583 of file Dg_pointer.hpp.

583 {
584 using TensorExpr = Dg_number_rhs_0<Self, T, N>;
585 return Tensor2_Expr<TensorExpr, T, Dim0, Dim2, i, j>(*this);
586 }

◆ operator()() [10/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, char j, int N, int Dim0, int Dim2>
const Tensor2_Expr< const Dg_number_0< const Self, T, N >, T, Dim0, Dim2, i, j > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Index< i, Dim0 >  ,
const Number< N ,
const Index< j, Dim2 >   
) const
inline

Definition at line 591 of file Dg_pointer.hpp.

592 {
593 using TensorExpr = Dg_number_0<const Self, T, N>;
594 return Tensor2_Expr<TensorExpr, T, Dim0, Dim2, i, j>(TensorExpr(*this));
595 }

◆ operator()() [11/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, char j, char k, int Dim01, int Dim2>
Dg_Expr< Self, T, Dim01, Dim2, i, j, k > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Index< i, Dim01 >  ,
const Index< j, Dim01 >  ,
const Index< k, Dim2 >   
)
inline

Definition at line 529 of file Dg_pointer.hpp.

530 {
531 return Dg_Expr<Self, T, Dim01, Dim2, i, j, k>(*this);
532 }

◆ operator()() [12/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, char j, char k, int Dim01, int Dim2>
Dg_Expr< const Self, T, Dim01, Dim2, i, j, k > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Index< i, Dim01 >  ,
const Index< j, Dim01 >  ,
const Index< k, Dim2 >   
) const
inline

Definition at line 536 of file Dg_pointer.hpp.

537 {
538 return Dg_Expr<const Self, T, Dim01, Dim2, i, j, k>(*this);
539 }

◆ operator()() [13/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, char j, int Dim>
Tensor1_Expr< const Tensor3_contracted_02< Self, T, Dim >, T, Dim, i > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Index< j, Dim >  ,
const Index< i, Dim >  ,
const Index< j, Dim >   
) const
inline

Definition at line 551 of file Dg_pointer.hpp.

552 {
553 using TensorExpr = Tensor3_contracted_02<Self, T, Dim>;
554 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this));
555 }

◆ operator()() [14/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, char j, int Dim01, int Dim2>
Tensor1_Expr< const Tensor3_contracted_01< Self, T, Dim01 >, T, Dim2, i > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Index< j, Dim01 >  ,
const Index< j, Dim01 >  ,
const Index< i, Dim2 >   
) const
inline

Definition at line 559 of file Dg_pointer.hpp.

560 {
561 using TensorExpr = Tensor3_contracted_01<Self, T, Dim01>;
562 return Tensor1_Expr<TensorExpr, T, Dim2, i>(TensorExpr(*this));
563 }

◆ operator()() [15/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, char j, int Dim1, int Dim2>
const Tensor2_Expr< const Dg_numeral_0< const Self, T >, T, Dim1, Dim2, i, j > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const int  N,
const Index< i, Dim1 >  ,
const Index< j, Dim2 >   
) const
inline

Definition at line 658 of file Dg_pointer.hpp.

658 {
659 using TensorExpr = Dg_numeral_0<const Self, T>;
660 return Tensor2_Expr<TensorExpr, T, Dim1, Dim2, i, j>(
661 TensorExpr(*this, N));
662 }

◆ operator()() [16/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, int Dim>
const Tensor1_Expr< const Dg_numeral_12< const Self, T >, T, Dim, i > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const int  N1,
const Index< i, Dim >  ,
const int  N2 
) const
inline

Definition at line 690 of file Dg_pointer.hpp.

690 {
691 using TensorExpr = Dg_numeral_12<const Self, T>;
692 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this, N1, N2));
693 }

◆ operator()() [17/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, int Dim>
const Tensor1_Expr< const Dg_numeral_01< const Self, T >, T, Dim, i > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const int  N1,
const int  N2,
const Index< i, Dim >   
) const
inline

Definition at line 697 of file Dg_pointer.hpp.

697 {
698 using TensorExpr = Dg_numeral_01<const Self, T>;
699 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this, N1, N2));
700 }

◆ operator()() [18/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
T & FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const int  N1,
const int  N2,
const int  N3 
)
inline

Definition at line 485 of file Dg_pointer.hpp.

485 {
486#ifdef FTENSOR_DEBUG
487 if (N1 >= Tensor_Dim01 || N1 < 0 || N2 >= Tensor_Dim01 || N2 < 0 ||
488 N3 >= Tensor_Dim2 || N3 < 0) {
489 std::stringstream s;
490 s << "Bad index in Dg<CursorPtr<T*," << G << ">," << Tensor_Dim01
491 << "," << Tensor_Dim2 << ">.operator(" << N1 << "," << N2 << ","
492 << N3 << ")" << std::endl;
493 throw std::out_of_range(s.str());
494 }
495#endif
496 return *(data + getFlatIndex(N1, N2, N3));
497 }
static constexpr int getFlatIndex(const int N1, const int N2, const int N3)
constexpr IntegrationType G
Definition level_set.cpp:33

◆ operator()() [19/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
T FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const int  N1,
const int  N2,
const int  N3 
) const
inline

Definition at line 499 of file Dg_pointer.hpp.

499 {
500#ifdef FTENSOR_DEBUG
501 if (N1 >= Tensor_Dim01 || N1 < 0 || N2 >= Tensor_Dim01 || N2 < 0 ||
502 N3 >= Tensor_Dim2 || N3 < 0) {
503 std::stringstream s;
504 s << "Bad index in Dg<CursorPtr<T*," << G << ">," << Tensor_Dim01
505 << "," << Tensor_Dim2 << ">.operator(" << N1 << "," << N2 << ","
506 << N3 << ") const" << std::endl;
507 throw std::out_of_range(s.str());
508 }
509#endif
510 return *(data + getFlatIndex(N1, N2, N3));
511 }

◆ operator()() [20/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, char j, int N, int Dim1, int Dim2>
Tensor2_Expr< Dg_number_rhs_0< Self, T, N >, T, Dim1, Dim2, i, j > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Number< N ,
const Index< i, Dim1 >  ,
const Index< j, Dim2 >   
)
inline

Definition at line 567 of file Dg_pointer.hpp.

567 {
568 using TensorExpr = Dg_number_rhs_0<Self, T, N>;
569 return Tensor2_Expr<TensorExpr, T, Dim1, Dim2, i, j>(*this);
570 }

◆ operator()() [21/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, char j, int N, int Dim1, int Dim2>
const Tensor2_Expr< const Dg_number_0< const Self, T, N >, T, Dim1, Dim2, i, j > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Number< N ,
const Index< i, Dim1 >  ,
const Index< j, Dim2 >   
) const
inline

Definition at line 575 of file Dg_pointer.hpp.

576 {
577 using TensorExpr = Dg_number_0<const Self, T, N>;
578 return Tensor2_Expr<TensorExpr, T, Dim1, Dim2, i, j>(TensorExpr(*this));
579 }

◆ operator()() [22/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, int N1, int N2, int Dim>
Tensor1_Expr< Dg_number_rhs_12< Self, T, N1, N2 >, T, Dim, i > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Number< N1 >  ,
const Index< i, Dim >  ,
const Number< N2 >   
)
inline

Definition at line 630 of file Dg_pointer.hpp.

630 {
631 using TensorExpr = Dg_number_rhs_12<Self, T, N1, N2>;
633 }

◆ operator()() [23/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, int N1, int N2, int Dim>
const Tensor1_Expr< const Dg_number_12< const Self, T, N1, N2 >, T, Dim, i > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Number< N1 >  ,
const Index< i, Dim >  ,
const Number< N2 >   
) const
inline

Definition at line 637 of file Dg_pointer.hpp.

637 {
638 using TensorExpr = Dg_number_12<const Self, T, N1, N2>;
639 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this));
640 }

◆ operator()() [24/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, int N1, int N2, int Dim>
Tensor1_Expr< Dg_number_rhs_01< Self, T, N1, N2 >, T, Dim, i > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Number< N1 >  ,
const Number< N2 >  ,
const Index< i, Dim >   
)
inline

Definition at line 644 of file Dg_pointer.hpp.

644 {
645 using TensorExpr = Dg_number_rhs_01<Self, T, N1, N2>;
647 }

◆ operator()() [25/25]

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
template<char i, int N1, int N2, int Dim>
const Tensor1_Expr< const Dg_number_01< const Self, T, N1, N2 >, T, Dim, i > FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator() ( const Number< N1 >  ,
const Number< N2 >  ,
const Index< i, Dim >   
) const
inline

Definition at line 651 of file Dg_pointer.hpp.

651 {
652 using TensorExpr = Dg_number_01<const Self, T, N1, N2>;
653 return Tensor1_Expr<TensorExpr, T, Dim, i>(TensorExpr(*this));
654 }

◆ operator++()

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
const Dg & FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::operator++ ( ) const
inline

Definition at line 702 of file Dg_pointer.hpp.

702 {
703 data += G;
704 return *this;
705 }

◆ ptr()

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
T * FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::ptr ( const int  N1,
const int  N2,
const int  N3 
) const
inline

Definition at line 513 of file Dg_pointer.hpp.

513 {
514#ifdef FTENSOR_DEBUG
515 if (N1 >= Tensor_Dim01 || N1 < 0 || N2 >= Tensor_Dim01 || N2 < 0 ||
516 N3 >= Tensor_Dim2 || N3 < 0) {
517 std::stringstream s;
518 s << "Bad index in Dg<CursorPtr<T*," << G << ">," << Tensor_Dim01
519 << "," << Tensor_Dim2 << ">.ptr(" << N1 << "," << N2 << "," << N3
520 << ")" << std::endl;
521 throw std::out_of_range(s.str());
522 }
523#endif
524 return data + getFlatIndex(N1, N2, N3);
525 }

Member Data Documentation

◆ data

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
T* restrict FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::data
mutableprivate

Definition at line 468 of file Dg_pointer.hpp.

◆ SymmSize01

template<class T , int Tensor_Dim01, int Tensor_Dim2, int G>
constexpr int FTensor::Dg< CursorPtr< T *, G >, Tensor_Dim01, Tensor_Dim2 >::SymmSize01
staticconstexprprivate
Initial value:
=
(Tensor_Dim01 * (Tensor_Dim01 + 1)) / 2

Definition at line 465 of file Dg_pointer.hpp.


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