#include <triqs/hilbert_space/state.hpp>

template<typename HilbertSpace, typename ScalarType, bool BasedOnMap> class state

Many-body state as a list of amplitudes in a basis of Fock states

The amplitudes can either be stored using a map (only non-vanishing elements are stored) or in a nda::vector. In order to make this class model [[statevector_concept]] free function [[make_zero_state]] is defined. Specializations on BasedOnMap provide different extensions of the concept, and are documented separately:

  • state, map-based storage

  • state, vector-based storage

Function [[project]] can be used to project a state from one Hilbert space to another Hilbert space/subspace.

Template parameters

  • HilbertSpace: Hilbert space type, one of [[hilbert_space]] and [[sub_hilbert_space]]

  • ScalarType: Amplitude type, normally double or std::complex<double>

  • BasedOnMap: Use the implementation based on a map