pomerol
2.1
|
Hilbert space of a quantum system. More...
#include <HilbertSpace.hpp>
Public Types | |
using | FullHilbertSpaceType = libcommute::hilbert_space< IndexTypes... > |
Type of the full Hilbert space. More... | |
using | SpacePartitionType = libcommute::space_partition |
Type of the partition into invariant subspaces. More... | |
Public Types inherited from Pomerol::ComputableObject | |
enum | StatusEnum { Constructed, Prepared, Computed } |
Computation status of the object. More... | |
Public Member Functions | |
template<typename ScalarType > | |
HilbertSpace (IndexClassification< IndexTypes... > const &IndexInfo, Operators::expression< ScalarType, IndexTypes... > const &H, unsigned int bits_per_boson=1) | |
template<typename ScalarType > | |
HilbertSpace (IndexClassification< IndexTypes... > const &IndexInfo, Operators::expression< ScalarType, IndexTypes... > const &H, std::map< std::tuple< IndexTypes... >, unsigned int > const &bits_per_boson_map) | |
void | compute () |
IndexClassification< IndexTypes... > const & | getIndexInfo () const |
Access the IndexClassification object used to construct this Hilbert space. More... | |
FullHilbertSpaceType const & | getFullHilbertSpace () const |
Access the full Hilbert space object. More... | |
SpacePartitionType const & | getSpacePartition () const |
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 | |
Protected Attributes inherited from Pomerol::ComputableObject | |
StatusEnum | Status = Constructed |
Current computation status. More... | |
Hilbert space of a quantum system.
A thin wrapper around libcommute's hilbert_space (information about a finite-dimensional state space) and space_partition (partition of the full state space into invariant subspaces of a Hamiltonian).
IndexTypes | Types of indices carried by operators acting in this Hilbert space. |
Definition at line 49 of file HilbertSpace.hpp.
using Pomerol::HilbertSpace< IndexTypes >::FullHilbertSpaceType = libcommute::hilbert_space<IndexTypes...> |
Type of the full Hilbert space.
Definition at line 53 of file HilbertSpace.hpp.
using Pomerol::HilbertSpace< IndexTypes >::SpacePartitionType = libcommute::space_partition |
Type of the partition into invariant subspaces.
Definition at line 55 of file HilbertSpace.hpp.
|
inline |
Construct a full Hilbert space 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 110 of file HilbertSpace.hpp.
|
inline |
Construct a full Hilbert space 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 130 of file HilbertSpace.hpp.
|
inline |
Find a partition of the full Hilbert space into invariant subspaces of the Hamiltonian. The partition fulfills an additional requirement that all fermionic creation/annihilation operators connect one invariant subspace to at most one subspace.
Definition at line 141 of file HilbertSpace.hpp.
|
inline |
Access the full Hilbert space object.
Definition at line 172 of file HilbertSpace.hpp.
|
inline |
Access the IndexClassification object used to construct this Hilbert space.
Definition at line 169 of file HilbertSpace.hpp.
|
inline |
Access the space partition object.
Definition at line 176 of file HilbertSpace.hpp.