TRIQS/TRIQS 4.0.0
Researching Interacting Quantum Systems
Loading...
Searching...
No Matches
many_body_operator.hpp
#include "../hilbert_space/fundamental_operator_set.hpp"
#include "../utility/dressed_iterator.hpp"
#include "../utility/real_or_complex.hpp"
#include "../utility/numeric_ops.hpp"
#include "../utility/variant_extensions.hpp"
#include <h5/h5.hpp>
#include <algorithm>
#include <cmath>
#include <compare>
#include <complex>
#include <cstddef>
#include <functional>
#include <map>
#include <ostream>
#include <string>
#include <type_traits>
#include <utility>
#include <variant>
#include <vector>

Detailed Description

Provides generic many-body operators.

Definition in file many_body_operator.hpp.

Go to the source code of this file.

Classes

struct  triqs::operators::canonical_ops_t
 Second quantization creation/annihilation operator. More...
class  triqs::operators::many_body_operator_generic< T >
 Generic many-body operator. More...
class  triqs::operators::real_or_complex
 Type that can represent either a real or a complex number. More...

Typedefs

using triqs::operators::indices_t = hilbert_space::fundamental_operator_set::indices_t
 Elevate triqs::hilbert_space::indices_t to the triqs::operators namespace.
using triqs::operators::many_body_operator = many_body_operator_generic<real_or_complex>
 Many-body operator with real or complex coefficients (see triqs::operators::many_body_operator_generic).
using triqs::operators::many_body_operator_complex = many_body_operator_generic<std::complex<double>>
 Many-body operator with complex coefficients (see triqs::operators::many_body_operator_generic).
using triqs::operators::many_body_operator_real = many_body_operator_generic<double>
 Many-body operator with real coefficients (see triqs::operators::many_body_operator_generic).
using triqs::operators::monomial_t = std::vector<canonical_ops_t>
 Type used to represent a monomial of canonical second quantization operators.

Functions

template<typename T1, typename T2>
void triqs::operators::assert_operators_are_close (many_body_operator_generic< T1 > const &op1, many_body_operator_generic< T2 > const &op2, double precision)
 Assert that two many-body operators are close to each other within a given precision.
template<typename T = real_or_complex, typename... IndexTypes>
many_body_operator_generic< T > triqs::operators::c (IndexTypes... indices)
 Create an annihilation operator \( \hat{c}_{\alpha} \).
template<typename T = real_or_complex, typename... IndexTypes>
many_body_operator_generic< T > triqs::operators::c_dag (IndexTypes... indices)
 Create a creation operator \( \hat{c}_{\alpha}^{\dagger} \).
template<typename T>
many_body_operator_generic< T > triqs::operators::imag (many_body_operator_generic< T > const &op)
 Get a copy of the given operator \( \hat{O} \) with the real parts of all monomial coefficients set to zero.
template<typename T>
bool triqs::operators::is_op_hermitian (many_body_operator_generic< T > const &op, double tolerance=0.0)
 Check if a many-body operator is Hermitian within a given precision.
template<typename T = real_or_complex, typename... IndexTypes>
many_body_operator_generic< T > triqs::operators::n (IndexTypes... indices)
 Create a number operator \( \hat{n}_{\alpha} = \hat{c}_{\alpha}^{\dagger} \hat{c}_{\alpha} \).
bool triqs::operators::operator< (monomial_t const &m1, monomial_t const &m2)
 Less-than comparison operator for triqs::operators::monomial_t.
std::ostream & triqs::operators::operator<< (std::ostream &os, canonical_ops_t const &op)
 Write a triqs::operators::canonical_ops_t to a std::ostream.
std::ostream & triqs::operators::operator<< (std::ostream &os, monomial_t const &m)
 Write a triqs::operators::monomial_t to a std::ostream.
template<typename T>
many_body_operator_generic< T > triqs::operators::real (many_body_operator_generic< T > const &op)
 Get a copy of the given operator \( \hat{O} \) with the imaginary parts of all monomial coefficients set to zero.