#include <triqs/hilbert_space/imperative_operator.hpp>

template<typename HilbertType, typename ScalarType, bool UseMap> class imperative_operator

This class is the imperative version of the [[many_body_operator]]

It is created from a many_body_operator object, and is used to act on a [[state]]. There is an optimization option UseMap (useful when HilbertType = sub_hilbert_space), which allows the user to give a map describing the connections between Hilbert subspaces generated by this operator.

Template parameters

  • HilbertType: Hilbert space type, one of [[hilbert_space]] and [[sub_hilbert_space]]
  • ScalarType: Type of operator’s coefficients, normally double or std::complex<double>
  • UseMap: Use a user-provided connection map on construction


HilbertType = sub_hilbert_space implies that the operator generates only one-to-one connections between the used subspaces. If this not the case, one has to use HilbertType = hilbert_space.

Member functions