triqs::hilbert_space::space_partition
#include <triqs/hilbert_space.hpp>
template<typename StateType, typename OperatorType> class space_partition
Implementation of the automatic partitioning algorithm
Partitions a Hilbert space into a set of subspaces invariant under action of a given Hermitian operator (Hamiltonian). Optionally modifies the partition so that a given operator generates only one-to-one connections between the subspaces. For a detailed description of the algorithm see Computer Physics Communications 200, March 2016, 274-284 (section 4.2).
Template parameters
- StateType: Many-body state type, must model [[statevector_concept]]
- OperatorType: Imperative operator type, must provide StateType operator()(StateType const&)
Member types
index_t | uint32_t | Index of a basis Fock state/subspace |
state_t | StateType | Accessor to StateType template parameter |
operator_t | OperatorType | Accessor to OperatorType template parameter |
amplitude_t | typename state_t::value_type | Amplitude type of the state |
block_mapping_t | std::set<std::pair<index_t, index_t>> | Connections between subspaces represented as a set of (from-index,to-index) pair |
matrix_element_map_t | std::map<std::pair<index_t, index_t>, typename state_t::value_type> | Non-zero matrix elements of an operator represented as a mapping (from-state,to-state) -> value |