|
pomerol
2.2
|
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.