pomerol  2.1
Public Member Functions

#include <MonomialOperator.hpp>

Inheritance diagram for Pomerol::QuarticOperator:
Inheritance graph
[legend]
Collaboration diagram for Pomerol::QuarticOperator:
Collaboration graph
[legend]

Public Member Functions

template<typename... IndexTypes>
 QuarticOperator (IndexClassification< IndexTypes... > const &IndexInfo, HilbertSpace< IndexTypes... > const &HS, StatesClassification const &S, Hamiltonian const &H, ParticleIndex Index1, ParticleIndex Index2, ParticleIndex Index3, ParticleIndex Index4, std::tuple< bool, bool, bool, bool > const &Dagger=std::tuple< bool, bool, bool, bool >(true, true, false, false))
 
ParticleIndex getIndex1 () const
 Return the single-particle index \(i\). More...
 
ParticleIndex getIndex2 () const
 Return the single-particle index \(j\). More...
 
ParticleIndex getIndex3 () const
 Return the single-particle index \(k\). More...
 
ParticleIndex getIndex4 () const
 Return the single-particle index \(l\). More...
 
ParticleIndex getCX1Index () const
 Return the single-particle index \(i\) under the assumption that O_i is a creation operator. More...
 
ParticleIndex getCX2Index () const
 Return the single-particle index \(j\) under the assumption that O_j is a creation operator. More...
 
ParticleIndex getC1Index () const
 Return the single-particle index \(k\) under the assumption that O_k is an annihilation operator. More...
 
ParticleIndex getC2ndex () const
 Return the single-particle index \(l\) under the assumption that O_l is an annihilation operator. More...
 
std::tuple< bool, bool, bool, bool > const & getDagger () const
 Return the creation/annihilation type of each of the four operators. More...
 
- Public Member Functions inherited from Pomerol::MonomialOperator
template<typename ScalarType , typename... IndexTypes>
 MonomialOperator (libcommute::expression< ScalarType, IndexTypes... > const &MO, HilbertSpace< IndexTypes... > const &HS, StatesClassification const &S, Hamiltonian const &H)
 
bool isComplex () const
 Is the monomial operator a complex-valued matrix? More...
 
MonomialOperatorPartgetPartFromLeftIndex (BlockNumber LeftIndex)
 
MonomialOperatorPart const & getPartFromLeftIndex (BlockNumber LeftIndex) const
 
MonomialOperatorPartgetPartFromRightIndex (BlockNumber RightIndex)
 
MonomialOperatorPart const & getPartFromRightIndex (BlockNumber RightIndex) const
 
BlockNumber getLeftIndex (BlockNumber RightIndex) const
 
BlockNumber getRightIndex (BlockNumber LeftIndex) const
 
BlocksBimap const & getBlockMapping () const
 
template<typename... IndexTypes>
void prepare (HilbertSpace< IndexTypes... > const &HS)
 
void compute (RealType Tolerance=1e-8, MPI_Comm const &comm=MPI_COMM_WORLD)
 
- Public Member Functions inherited from Pomerol::ComputableObject
 ComputableObject ()=default
 
StatusEnum getStatus () const
 Return the current computation status. More...
 
void setStatus (StatusEnum Status_in)
 

Additional Inherited Members

- Public Types inherited from Pomerol::MonomialOperator
using BlocksBimap = boost::bimaps::bimap< boost::bimaps::set_of< BlockNumber >, boost::bimaps::set_of< BlockNumber > >
 A bi-map container for connections between invariant subspaces established by a monomial operator. More...
 
using BlockMapping = BlocksBimap::value_type
 A single subspace-to-subspace connection established by a monomial operator. More...
 
- Public Types inherited from Pomerol::ComputableObject
enum  StatusEnum { Constructed , Prepared , Computed }
 Computation status of the object. More...
 
- Protected Member Functions inherited from Pomerol::MonomialOperator
template<bool Complex>
LOperatorTypeRC< Complex > const & getMOp () const
 
- Protected Attributes inherited from Pomerol::MonomialOperator
bool MOpComplex
 Whether the MOp object is complex-valued. More...
 
std::shared_ptr< void > MOp
 A type-erased real/complex-valued libcommute::loperator object. More...
 
bool Complex
 Whether the stored parts are complex-valued. More...
 
StatesClassification const & S
 Information about invariant subspaces of the Hamiltonian. More...
 
Hamiltonian const & H
 The Hamiltonian. More...
 
std::unordered_map< std::size_t, BlockNumbermapPartsFromRight
 A map between positions of parts in the parts list and the respective right subspace indices. More...
 
std::unordered_map< std::size_t, BlockNumbermapPartsFromLeft
 A map between positions of parts in the parts list and the respective left subspace indices. More...
 
BlocksBimap LeftRightBlocks
 Left-to-right connections between invariant subspaces established by this monomial operator. More...
 
std::vector< MonomialOperatorPartparts
 List of parts (matrix blocks). More...
 
- Protected Attributes inherited from Pomerol::ComputableObject
StatusEnum Status = Constructed
 Current computation status. More...
 

Detailed Description

A special case of a monomial operator: A product of four fermionic operators \(O_i O_j O_k O_l\). Each of \(O_i, O_j, O_k\) and \(O_l\) can be either a creation or annihilation operator.

Definition at line 332 of file MonomialOperator.hpp.

Constructor & Destructor Documentation

◆ QuarticOperator()

template<typename... IndexTypes>
Pomerol::QuarticOperator::QuarticOperator ( IndexClassification< IndexTypes... > const &  IndexInfo,
HilbertSpace< IndexTypes... > const &  HS,
StatesClassification const &  S,
Hamiltonian const &  H,
ParticleIndex  Index1,
ParticleIndex  Index2,
ParticleIndex  Index3,
ParticleIndex  Index4,
std::tuple< bool, bool, bool, bool > const &  Dagger = std::tuple<bool, bool, bool, bool>(true, true, false, false) 
)
inline

Constructor.

Template Parameters
IndexTypesTypes of indices carried by operators acting in the Hilbert space HS.
Parameters
[in]IndexInfoMap for fermionic operator index tuples.
[in]HSHilbert space.
[in]SInformation about invariant subspaces of the Hamiltonian.
[in]HThe Hamiltonian.
[in]Index1The single-particle index \(i\) of the first operator.
[in]Index2The single-particle index \(j\) of the second operator.
[in]Index3The single-particle index \(k\) of the third operator.
[in]Index4The single-particle index \(l\) of the fourth operator.
[in]DaggerIndicates whether each of the four operators is a creator.

Definition at line 357 of file MonomialOperator.hpp.

Member Function Documentation

◆ getC1Index()

ParticleIndex Pomerol::QuarticOperator::getC1Index ( ) const
inline

Return the single-particle index \(k\) under the assumption that O_k is an annihilation operator.

Definition at line 409 of file MonomialOperator.hpp.

◆ getC2ndex()

ParticleIndex Pomerol::QuarticOperator::getC2ndex ( ) const
inline

Return the single-particle index \(l\) under the assumption that O_l is an annihilation operator.

Definition at line 414 of file MonomialOperator.hpp.

◆ getCX1Index()

ParticleIndex Pomerol::QuarticOperator::getCX1Index ( ) const
inline

Return the single-particle index \(i\) under the assumption that O_i is a creation operator.

Definition at line 399 of file MonomialOperator.hpp.

◆ getCX2Index()

ParticleIndex Pomerol::QuarticOperator::getCX2Index ( ) const
inline

Return the single-particle index \(j\) under the assumption that O_j is a creation operator.

Definition at line 404 of file MonomialOperator.hpp.

◆ getDagger()

std::tuple<bool, bool, bool, bool> const& Pomerol::QuarticOperator::getDagger ( ) const
inline

Return the creation/annihilation type of each of the four operators.

Definition at line 420 of file MonomialOperator.hpp.

◆ getIndex1()

ParticleIndex Pomerol::QuarticOperator::getIndex1 ( ) const
inline

Return the single-particle index \(i\).

Definition at line 390 of file MonomialOperator.hpp.

◆ getIndex2()

ParticleIndex Pomerol::QuarticOperator::getIndex2 ( ) const
inline

Return the single-particle index \(j\).

Definition at line 392 of file MonomialOperator.hpp.

◆ getIndex3()

ParticleIndex Pomerol::QuarticOperator::getIndex3 ( ) const
inline

Return the single-particle index \(k\).

Definition at line 394 of file MonomialOperator.hpp.

◆ getIndex4()

ParticleIndex Pomerol::QuarticOperator::getIndex4 ( ) const
inline

Return the single-particle index \(l\).

Definition at line 396 of file MonomialOperator.hpp.


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