pomerol  2.1
Namespaces | Data Structures | Typedefs | Enumerations | Functions | Variables
Pomerol Namespace Reference

The main namespace of the library. More...

Namespaces

 LatticePresets
 This namespace encloses factory functions for various terms most commonly used to write a lattice Hamiltonian.
 
 Operators
 Expressions of quantum-mechanical operators.
 

Data Structures

class  AnnihilationOperator
 A special case of a monomial operator: A single fermion annihilation operator \(c_i\). More...
 
struct  ComputableObject
 A base class for computable objects. More...
 
class  CreationOperator
 A special case of a monomial operator: A single fermion creation operator \(c^\dagger_i\). More...
 
class  DensityMatrix
 Many-body Gibbs density matrix. More...
 
class  DensityMatrixPart
 Part of a many-body Gibbs density matrix. More...
 
struct  ElementWithPermFreq
 A decorator that permutes indices of Matsubara frequencies in calls to operator(). More...
 
class  EnsembleAverage
 Canonical ensemble average of a monomial operator. More...
 
class  FieldOperatorContainer
 Container for instances of CreationOperator and AnnihilationOperator. More...
 
class  GFContainer
 Container for instances of GreensFunction. More...
 
class  GreensFunction
 Fermionic single-particle Matsubara Green's function. More...
 
class  GreensFunctionPart
 Part of a fermionic single-particle Matsubara Green's function. More...
 
class  Hamiltonian
 Hamiltonian of a quantum system. More...
 
class  HamiltonianPart
 Part of a Hamiltonian of a quantum system. More...
 
class  HilbertSpace
 Hilbert space of a quantum system. More...
 
class  IndexClassification
 Contiguous list of operator index tuples. More...
 
struct  IndexCombination2
 A tuple-like combination of two single-particle indices. More...
 
struct  IndexCombination4
 A tuple-like combination of four single-particle indices. More...
 
class  IndexContainer2
 Base class for sparse container types whose elements are addressable by two single-particle indices. More...
 
class  IndexContainer4
 Base class for sparse container types whose elements are addressable by four single-particle indices. More...
 
class  MatsubaraContainer4
 Container for functions of three Matsubara frequencies. More...
 
class  MonomialOperator
 Monomial quantum operator. More...
 
class  MonomialOperatorPart
 Part of a monomial quantum operator. More...
 
struct  Permutation3
 Permutation of 3 elements. More...
 
struct  Permutation4
 Permutation of 4 elements. More...
 
class  QuadraticOperator
 
class  StatesClassification
 Classification of many-body basis states into bases of invariant subspaces. More...
 
class  Susceptibility
 Dynamical susceptibility. More...
 
class  SusceptibilityPart
 Part of a dynamical susceptibility. More...
 
class  TermList
 A list of terms contributing to the Lehmann representation of a correlation function. More...
 
struct  Thermal
 Base class for objects whose definition depends on the temperature. More...
 
class  ThreePointSusceptibility
 3-point fermion-boson susceptibility in the Matsubara representation. More...
 
class  ThreePointSusceptibilityContainer
 Container for instances of ThreePointSusceptibility. More...
 
class  ThreePointSusceptibilityPart
 Part of a 3-point susceptibility. More...
 
class  TwoParticleGF
 Fermionic two-particle Matsubara Green's function. More...
 
class  TwoParticleGFContainer
 Container for instances of TwoParticleGF. More...
 
class  TwoParticleGFPart
 Part of a fermionic two-particle Matsubara Green's function. More...
 
class  Vertex4
 Irreducible two-particle vertex. More...
 

Typedefs

using RealType = double
 Real floating point type. More...
 
using ComplexType = std::complex< double >
 Complex floating point type. More...
 
using ParticleIndex = unsigned int
 Index of a single particle degree of freedom. More...
 
using QuantumState = libcommute::sv_index_type
 Index of a many-body state. More...
 
using ComplexMatrixType = Eigen::Matrix< ComplexType, Eigen::Dynamic, Eigen::Dynamic, Eigen::AutoAlign|Eigen::RowMajor >
 Dense complex matrix. More...
 
template<bool Complex>
using MelemType = typename std::conditional< Complex, ComplexType, RealType >::type
 
template<typename ScalarType >
using LOperatorType = libcommute::loperator< ScalarType, libcommute::fermion, libcommute::boson >
 
template<bool Complex>
using LOperatorTypeRC = libcommute::loperator< MelemType< Complex >, libcommute::fermion, libcommute::boson >
 
template<bool Complex>
using MatrixType = Eigen::Matrix< MelemType< Complex >, Eigen::Dynamic, Eigen::Dynamic, Eigen::AutoAlign|Eigen::RowMajor >
 
using ComplexVectorType = Eigen::Matrix< ComplexType, Eigen::Dynamic, 1, Eigen::AutoAlign >
 Dense complex vector. More...
 
using RealVectorType = Eigen::Matrix< RealType, Eigen::Dynamic, 1, Eigen::AutoAlign >
 Dense real vector. More...
 
template<bool Complex>
using VectorType = Eigen::Matrix< MelemType< Complex >, Eigen::Dynamic, 1, Eigen::AutoAlign >
 
template<bool Complex>
using ColMajorMatrixType = Eigen::SparseMatrix< MelemType< Complex >, Eigen::ColMajor >
 
template<bool Complex>
using RowMajorMatrixType = Eigen::SparseMatrix< MelemType< Complex >, Eigen::RowMajor >
 
using BlockMapping = std::pair< BlockNumber, BlockNumber >
 A pair of invariant subspace indices. More...
 
using BlockNumber = int
 Index of a subspace (block) within a full many-body Hilbert space. More...
 
using InnerQuantumState = libcommute::sv_index_type
 Index of a state within a block. More...
 
using FreqTuple2 = std::tuple< ComplexType, ComplexType >
 Duplet of complex frequencies. More...
 
using FreqVec2 = std::vector< FreqTuple2 >
 List of complex frequency duplets. More...
 
using FreqTuple3 = std::tuple< ComplexType, ComplexType, ComplexType >
 Triplet of complex frequencies. More...
 
using FreqVec3 = std::vector< FreqTuple3 >
 List of complex frequency triplets. More...
 

Enumerations

enum  Channel : int { PP, PH, xPH }
 Channel, in which a susceptibility function is defined. More...
 

Functions

template<bool Complex>
bool chaseIndices (typename RowMajorMatrixType< Complex >::InnerIterator &index1_iter, typename ColMajorMatrixType< Complex >::InnerIterator &index2_iter)
 Make the lagging index catch up or outrun the leading index. More...
 
template<typename ScalarType , typename... IndexTypes>
HilbertSpace< IndexTypes... > MakeHilbertSpace (IndexClassification< IndexTypes... > const &IndexInfo, Operators::expression< ScalarType, IndexTypes... > const &H, unsigned int bits_per_boson=1)
 
template<typename ScalarType , typename... IndexTypes>
HilbertSpace< IndexTypes... > MakeHilbertSpace (IndexClassification< IndexTypes... > const &IndexInfo, Operators::expression< ScalarType, IndexTypes... > const &H, std::map< std::tuple< IndexTypes... >, unsigned int > const &bits_per_boson_map)
 
template<typename ScalarType , typename... IndexTypes>
IndexClassification< IndexTypes... > MakeIndexClassification (Operators::expression< ScalarType, IndexTypes... > const &H)
 
std::ostream & operator<< (std::ostream &os, Channel channel)
 
std::size_t hash_binned_real (double x, double bin_size)
 

Variables

static const ComplexType I = ComplexType(0.0, 1.0)
 Imaginary unit \(i\). More...
 
const std::array< Permutation3, 6 > permutations3
 An array of all 3! = 6 permutations of 3 elements. More...
 
const std::array< Permutation4, 24 > permutations4
 An array of all 4! = 24 permutations of 4 elements. More...
 
constexpr BlockNumber INVALID_BLOCK_NUMBER = -1
 A special value that stands for a non-existent subspace (block). More...
 

Detailed Description

The main namespace of the library.

Function Documentation

◆ chaseIndices()

template<bool Complex>
bool Pomerol::chaseIndices ( typename RowMajorMatrixType< Complex >::InnerIterator &  index1_iter,
typename ColMajorMatrixType< Complex >::InnerIterator &  index2_iter 
)
inline

Make the lagging index catch up or outrun the leading index.

Definition at line 30 of file ChaseIndices.hpp.