7#include <triqs/gfs.hpp>
8#include <triqs/operators.hpp>
9#include <triqs/operators/many_body_operator.hpp>
30 std::pair<nda::matrix<double>, nda::matrix<double>>
U_matrix_kanamori(
long n_orb,
double U_int,
double U_prime,
double J_hund);
60 nda::array<dcomplex, 4>
U_matrix_slater_local(
long l, nda::matrix<dcomplex> s2l,
double U_int,
double J_hund);
69 using op_name = std::pair<std::string, int>;
71 operators::many_body_operator
rename_op(operators::many_body_operator
const &op, std::map<op_name, op_name>
const &map);
78 operators::many_body_operator
h_int_kanamori(nda::matrix<double>
const &U, nda::matrix<double>
const &Uprime,
double const &J_hund,
79 int const &n_orb, std::vector<std::string>
const &spin_names,
kanamori_params const ¶ms = {});
81 operators::many_body_operator
h_int_density(nda::matrix<double>
const &U, nda::matrix<double>
const &Uprime,
double const &J_hund,
int const &n_orb,
82 std::vector<std::string>
const &spin_names);
84 operators::many_body_operator
h_int_slater(nda::array<dcomplex, 4>
const &U,
int const &n_orb, std::vector<std::string>
const &spin_names);
103 operators::many_body_operator
make_density_density(std::vector<std::string>
const &tau_names, std::vector<long>
const &dim_gamma,
double U_int,
104 double U_prime,
double J_hund);
126 operators::many_body_operator
make_kanamori(std::vector<std::string>
const &tau_names, std::vector<long>
const &dim_gamma,
double U_int,
127 double U_prime,
double J_hund,
bool spin_flip =
true,
bool pair_hopping =
true);
145 operators::many_body_operator
make_slater(std::vector<std::string>
const &tau_names, std::vector<long>
const &dim_gamma,
double U_int,
146 double J_hund, nda::matrix<dcomplex>
const &spherical_to_dft,
147 std::optional<nda::matrix<dcomplex>>
const &dft_to_local);
std::pair< nda::matrix< double >, nda::matrix< double > > U_matrix_kanamori(long n_orb, double U_int, double U_prime, double J_hund)
construct the Kanamori two-index interaction matrix for parallel and anti-parallel spins.
operators::many_body_operator make_density_density(const std::vector< std::string > &tau_names, const std::vector< long > &dim_gamma, double U_int, double U_prime, double J_hund)
Construct a density-density interaction Hamiltonian.
operators::many_body_operator make_slater(std::vector< std::string > const &tau_names, std::vector< long > const &dim_gamma, double U_int, double J_hund, nda::matrix< dcomplex > const &spherical_to_dft, std::optional< nda::matrix< dcomplex > > const &dft_to_local)
Construct a Slater Hamiltonian.
nda::array< double, 4 > U_matrix_slater_spherical(long l, double U_int, double J_hund)
Construct a four-index Coulomb tensor in the basis of spherical harmonics.
nda::array< dcomplex, 4 > U_matrix_slater_local(long l, nda::matrix< dcomplex > sph_to_local, double U_int, double J_hund)
Construct a four-index Coulomb tensor in a specific orbital basis.
operators::many_body_operator make_kanamori(std::vector< std::string > const &tau_names, std::vector< long > const &dim_gamma, double U_int, double U_prime, double J_hund, bool spin_flip, bool pair_hopping)
Construct a Hubbard-Kanamori Hamiltonian.
operators::many_body_operator rename_op(operators::many_body_operator const &op, std::map< op_name, op_name > const &op_map)
operators::many_body_operator h_int_slater(nda::array< dcomplex, 4 > const &Umatrix, int const &n_orb, std::vector< std::string > const &spin_names)
std::pair< std::string, int > op_name
operators::many_body_operator h_int_density(nda::matrix< double > const &Umat, nda::matrix< double > const &Upmat, double const &J_hund, int const &n_orb, std::vector< std::string > const &spin_names)
operators::many_body_operator h_int_kanamori(nda::matrix< double > const &Umat, nda::matrix< double > const &Upmat, double const &J_hund, int const &n_orb, std::vector< std::string > const &spin_names, kanamori_params const ¶ms)