StatMech
Loading...
Searching...
No Matches
OperatorSpaceBase< Derived > Class Template Reference

#include <OperatorSpace.hpp>

Inheritance diagram for OperatorSpaceBase< Derived >:
Inheritance graph
Collaboration diagram for OperatorSpaceBase< Derived >:
Collaboration graph

Public Types

typedef Eigen::NumTraits< ScalarType >::Real Real
 

Public Member Functions

__host__ __device__ OperatorSpaceBase (BaseSpace const &baseSpace)
 Construct a OperatorSpaceBase object by copying a BaseSpace object.
 
__host__ __device__ OperatorSpaceBase (BaseSpace &&baseSpace)
 Construct a OperatorSpaceBase object by moving a BaseSpace object.
 
__host__ __device__ OperatorSpaceBase ()=default
 Default constructor.
 
__host__ __device__ OperatorSpaceBase (OperatorSpaceBase const &other)=default
 Copy constructor.
 
__host__ __device__ OperatorSpaceBase (OperatorSpaceBase &&other)=default
 Move constructor.
 
__host__ __device__ ~OperatorSpaceBase ()=default
 Destructor.
 
Operator overloads
__host__ __device__ OperatorSpaceBaseoperator= (OperatorSpaceBase const &other)=default
 Copy assignment operator.
 
__host__ __device__ OperatorSpaceBaseoperator= (OperatorSpaceBase &&other)=default
 Move assignment operator.
 
__host__ __device__ int dim () const
 
__host__ __device__ BaseSpace const & baseSpace () const
 
__host__ __device__ int baseDim () const
 
template<typename RealType >
__host__ __device__ void action (int &resBasisNum, Complex_t< RealType > &coeff, int opNum, int basisNum) const
 
template<typename RealType , class EigenDerived >
__host__ __device__ void action (int &resBasisNum, Complex_t< RealType > &coeff, int opNum, int basisNum, Eigen::DenseBase< EigenDerived > &config) const
 
__host__ __device__ std::pair< int, Complex_t< Real > > action (int opNum, int basisNum) const
 
__host__ void basisOp (Eigen::SparseMatrix< ScalarType > &res, int opNum) const
 
__host__ Eigen::SparseMatrix< ScalarTypebasisOp (int opNum) const
 

Private Types

using BaseSpace = typename HilbertSpaceTraits< Derived >::BaseSpace
 
using ScalarType = typename HilbertSpaceTraits< Derived >::Scalar
 

Private Attributes

BaseSpace m_baseSpace
 

Member Typedef Documentation

◆ BaseSpace

template<class Derived >
using OperatorSpaceBase< Derived >::BaseSpace = typename HilbertSpaceTraits<Derived>::BaseSpace
private

◆ Real

template<class Derived >
typedef Eigen::NumTraits<ScalarType>::Real OperatorSpaceBase< Derived >::Real

◆ ScalarType

template<class Derived >
using OperatorSpaceBase< Derived >::ScalarType = typename HilbertSpaceTraits<Derived>::Scalar
private

Constructor & Destructor Documentation

◆ OperatorSpaceBase() [1/5]

template<class Derived >
__host__ __device__ OperatorSpaceBase< Derived >::OperatorSpaceBase ( BaseSpace const &  baseSpace)
inline

Construct a OperatorSpaceBase object by copying a BaseSpace object.

Parameters
baseSpace
27 debug_constructor_printf(1(Custom Copy));
28 }
BaseSpace m_baseSpace
Definition OperatorSpace.hpp:16
__host__ __device__ BaseSpace const & baseSpace() const
Definition OperatorSpace.hpp:79

◆ OperatorSpaceBase() [2/5]

template<class Derived >
__host__ __device__ OperatorSpaceBase< Derived >::OperatorSpaceBase ( BaseSpace &&  baseSpace)
inline

Construct a OperatorSpaceBase object by moving a BaseSpace object.

Parameters
baseSpace
35 : m_baseSpace{std::move(baseSpace)} {
36 debug_constructor_printf(2(Custom Move));
37 }

◆ OperatorSpaceBase() [3/5]

template<class Derived >
__host__ __device__ OperatorSpaceBase< Derived >::OperatorSpaceBase ( )
default

Default constructor.

◆ OperatorSpaceBase() [4/5]

template<class Derived >
__host__ __device__ OperatorSpaceBase< Derived >::OperatorSpaceBase ( OperatorSpaceBase< Derived > const &  other)
default

Copy constructor.

◆ OperatorSpaceBase() [5/5]

template<class Derived >
__host__ __device__ OperatorSpaceBase< Derived >::OperatorSpaceBase ( OperatorSpaceBase< Derived > &&  other)
default

Move constructor.

◆ ~OperatorSpaceBase()

template<class Derived >
__host__ __device__ OperatorSpaceBase< Derived >::~OperatorSpaceBase ( )
default

Destructor.

Member Function Documentation

◆ action() [1/3]

template<class Derived >
template<typename RealType >
__host__ __device__ void OperatorSpaceBase< Derived >::action ( int &  resBasisNum,
Complex_t< RealType > &  coeff,
int  opNum,
int  basisNum 
) const
inline
84 {
85 static_cast<Derived const*>(this)->action_impl(resBasisNum, coeff, opNum, basisNum);
86 };

◆ action() [2/3]

template<class Derived >
template<typename RealType , class EigenDerived >
__host__ __device__ void OperatorSpaceBase< Derived >::action ( int &  resBasisNum,
Complex_t< RealType > &  coeff,
int  opNum,
int  basisNum,
Eigen::DenseBase< EigenDerived > &  config 
) const
inline
91 {
92 static_cast<Derived const*>(this)->action_impl(resBasisNum, coeff, opNum, basisNum,
93 config);
94 };

◆ action() [3/3]

template<class Derived >
__host__ __device__ std::pair< int, Complex_t< Real > > OperatorSpaceBase< Derived >::action ( int  opNum,
int  basisNum 
) const
inline
96 {
97 // debug_print(__PRETTY_FUNCTION__);
98 int resBasisNum;
99 Complex_t<Real> coeff;
100 this->action(resBasisNum, coeff, opNum, basisNum);
101 return std::make_pair(resBasisNum, coeff);
102 }
Definition mytypes.hpp:147
__host__ __device__ void action(int &resBasisNum, Complex_t< RealType > &coeff, int opNum, int basisNum) const
Definition OperatorSpace.hpp:83

◆ baseDim()

template<class Derived >
__host__ __device__ int OperatorSpaceBase< Derived >::baseDim ( ) const
inline
80{ return m_baseSpace.dim(); }

◆ baseSpace()

template<class Derived >
__host__ __device__ BaseSpace const & OperatorSpaceBase< Derived >::baseSpace ( ) const
inline
79{ return m_baseSpace; }

◆ basisOp() [1/2]

template<class Derived >
__host__ void OperatorSpaceBase< Derived >::basisOp ( Eigen::SparseMatrix< ScalarType > &  res,
int  opNum 
) const
inline
104 {
105 res.resize(this->baseDim(), this->baseDim());
106#pragma omp parallel for
107 for(int basisNum = 0; basisNum < this->baseDim(); basisNum++) {
108 auto [resBasisNum, coeff] = this->action(opNum, basisNum);
109 res.coeffRef(resBasisNum, basisNum) = coeff;
110 };
111 }
__host__ __device__ int baseDim() const
Definition OperatorSpace.hpp:80

◆ basisOp() [2/2]

template<class Derived >
__host__ Eigen::SparseMatrix< ScalarType > OperatorSpaceBase< Derived >::basisOp ( int  opNum) const
inline
113 {
114 Eigen::SparseMatrix<ScalarType> res(this->baseDim(), this->baseDim());
115 for(int basisNum = 0; basisNum < this->baseDim(); basisNum++) {
116 // debug_print("\t basisNum=" << basisNum);
117 auto [resBasisNum, coeff] = this->action(opNum, basisNum);
118 res.insert(resBasisNum, basisNum) = coeff;
119 }
120 return res;
121 }

◆ dim()

template<class Derived >
__host__ __device__ int OperatorSpaceBase< Derived >::dim ( ) const
inline
75 {
76 return static_cast<Derived const*>(this)->dim_impl();
77 }

◆ operator=() [1/2]

template<class Derived >
__host__ __device__ OperatorSpaceBase & OperatorSpaceBase< Derived >::operator= ( OperatorSpaceBase< Derived > &&  other)
default

Move assignment operator.

Parameters
other

◆ operator=() [2/2]

template<class Derived >
__host__ __device__ OperatorSpaceBase & OperatorSpaceBase< Derived >::operator= ( OperatorSpaceBase< Derived > const &  other)
default

Copy assignment operator.

Parameters
other

Member Data Documentation

◆ m_baseSpace

template<class Derived >
BaseSpace OperatorSpaceBase< Derived >::m_baseSpace
private

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