pomerol
2.1
|
Data Structures | |
class | Pomerol::DensityMatrix |
Many-body Gibbs density matrix. More... | |
class | Pomerol::DensityMatrixPart |
Part of a many-body Gibbs density matrix. More... | |
class | Pomerol::FieldOperatorContainer |
Container for instances of CreationOperator and AnnihilationOperator. More... | |
class | Pomerol::Hamiltonian |
Hamiltonian of a quantum system. More... | |
class | Pomerol::HamiltonianPart |
Part of a Hamiltonian of a quantum system. More... | |
class | Pomerol::HilbertSpace< IndexTypes > |
Hilbert space of a quantum system. More... | |
class | Pomerol::IndexClassification< IndexTypes > |
Contiguous list of operator index tuples. More... | |
class | Pomerol::MonomialOperator |
Monomial quantum operator. More... | |
class | Pomerol::CreationOperator |
A special case of a monomial operator: A single fermion creation operator \(c^\dagger_i\). More... | |
class | Pomerol::AnnihilationOperator |
A special case of a monomial operator: A single fermion annihilation operator \(c_i\). More... | |
class | Pomerol::QuadraticOperator |
class | Pomerol::MonomialOperatorPart |
Part of a monomial quantum operator. More... | |
class | Pomerol::StatesClassification |
Classification of many-body basis states into bases of invariant subspaces. More... | |
Typedefs | |
using | Pomerol::BlockMapping = std::pair< BlockNumber, BlockNumber > |
A pair of invariant subspace indices. More... | |
using | Pomerol::BlockNumber = int |
Index of a subspace (block) within a full many-body Hilbert space. More... | |
using | Pomerol::InnerQuantumState = libcommute::sv_index_type |
Index of a state within a block. More... | |
Functions | |
template<typename ScalarType , typename... IndexTypes> | |
HilbertSpace< IndexTypes... > | Pomerol::MakeHilbertSpace (IndexClassification< IndexTypes... > const &IndexInfo, Operators::expression< ScalarType, IndexTypes... > const &H, unsigned int bits_per_boson=1) |
template<typename ScalarType , typename... IndexTypes> | |
HilbertSpace< IndexTypes... > | Pomerol::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... > | Pomerol::MakeIndexClassification (Operators::expression< ScalarType, IndexTypes... > const &H) |
template<typename ScalarType , typename... IndexTypes> | |
void | Pomerol::Hamiltonian::prepare (Operators::expression< ScalarType, IndexTypes... > const &H, HilbertSpace< IndexTypes... > const &HS, MPI_Comm const &comm=MPI_COMM_WORLD) |
Variables | |
constexpr BlockNumber | Pomerol::INVALID_BLOCK_NUMBER = -1 |
A special value that stands for a non-existent subspace (block). More... | |
using Pomerol::BlockMapping = typedef std::pair<BlockNumber, BlockNumber> |
A pair of invariant subspace indices.
Definition at line 48 of file MonomialOperator.hpp.
using Pomerol::BlockNumber = typedef int |
Index of a subspace (block) within a full many-body Hilbert space.
Definition at line 32 of file StatesClassification.hpp.
using Pomerol::InnerQuantumState = typedef libcommute::sv_index_type |
Index of a state within a block.
Definition at line 37 of file StatesClassification.hpp.
HilbertSpace<IndexTypes...> Pomerol::MakeHilbertSpace | ( | IndexClassification< IndexTypes... > const & | IndexInfo, |
Operators::expression< ScalarType, IndexTypes... > const & | H, | ||
std::map< std::tuple< IndexTypes... >, unsigned int > const & | bits_per_boson_map | ||
) |
A factory function for HilbertSpace that constructs it from an IndexClassification object and a polynomial expression of system's Hamiltonian. The Hilbert space is constructed as a direct product of elementary spaces, each associated with a single fermionic or bosonic degree of freedom (an index tuple carried by a boson creation/annihilation operator).
ScalarType | Coefficient type of expression H. |
[in] | IndexInfo | Map for fermionic operator index tuples. |
[in] | H | Hamiltonian of the system. |
[in] | bits_per_boson_map | A bosonic degree of freedom with a certain operator index tuple will result in a truncated elementary bosonic space of dimension \(2^b\), where \(b\) is the value in this map corresponding to the index tuple. If the tuple is missing from the map, \(b\) is taken to be 1. |
Definition at line 212 of file HilbertSpace.hpp.
HilbertSpace<IndexTypes...> Pomerol::MakeHilbertSpace | ( | IndexClassification< IndexTypes... > const & | IndexInfo, |
Operators::expression< ScalarType, IndexTypes... > const & | H, | ||
unsigned int | bits_per_boson = 1 |
||
) |
A factory function for HilbertSpace that constructs it from an IndexClassification object and a polynomial expression of system's Hamiltonian. The Hilbert space is constructed as a direct product of elementary spaces, each associated with a single fermionic or bosonic degree of freedom (an index tuple carried by a boson creation/annihilation operator).
ScalarType | Coefficient type of expression H. |
[in] | IndexInfo | Map for fermionic operator index tuples. |
[in] | H | Hamiltonian of the system. |
[in] | bits_per_boson | Each bosonic degree of freedom will result in a truncated elementary bosonic space of dimension \(2^\verb|bits_per_boson|\). |
Definition at line 193 of file HilbertSpace.hpp.
IndexClassification<IndexTypes...> Pomerol::MakeIndexClassification | ( | Operators::expression< ScalarType, IndexTypes... > const & | H | ) |
A factory function for IndexClassification, which populates the index map by extracting all index tuples from a given polynomial expression.
ScalarType | Coefficient type of expression H. |
IndexTypes | Types of indices carried by a single creation/annihilation operator. |
[in] | H | Expression to be analyzed. |
Definition at line 150 of file IndexClassification.hpp.
void Pomerol::Hamiltonian::prepare | ( | Operators::expression< ScalarType, IndexTypes... > const & | H, |
HilbertSpace< IndexTypes... > const & | HS, | ||
MPI_Comm const & | comm = MPI_COMM_WORLD |
||
) |
Fill matrices of all diagonal blocks in parallel.
ScalarType | Scalar type (either double or std::complex<double>) of the expression H . |
IndexTypes | Types of indices carried by operators in the expression H . |
[in] | H | Expression of the Hamiltonian. |
[in] | HS | Hilbert space. |
[in] | comm | MPI communicator used to parallelize the computation. |
Definition at line 125 of file Hamiltonian.hpp.
|
constexpr |
A special value that stands for a non-existent subspace (block).
Definition at line 34 of file StatesClassification.hpp.