Program Listing for File qcm_ED.hpp¶
↰ Return to documentation for file (src_ed/qcm_ED.hpp)
#ifndef qcm_ED_h
#define qcm_ED_h
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <complex>
#include <array>
#include <tuple>
#include <functional>
#include "matrix_element.hpp"
#include "matrix.hpp"
using namespace::std;
namespace ED{
void new_model(const string &name, const size_t n_sites, const size_t n_bath, const vector<vector<int>> &gen, bool bath_irrep);
tuple<size_t,size_t,size_t> model_size(const string &name);
void new_operator(const string &model_name, const string &name, const string &type, const vector<matrix_element<double>> &elements);
void new_operator(const string &model_name, const string &name, const string &type, const vector<matrix_element<complex<double>>> &elements);
bool exists(const string &model_name, const string &name);
void new_model_instance(const string &model_name, map<string, double> ¶m, const string &sec, size_t label);
void erase_model_instance(size_t label);
int mixing(size_t label);
bool complex_HS(size_t label);
pair<double, string> ground_state_solve(size_t label);
vector<tuple<string,double,double>> cluster_averages(size_t label);
void Green_function_solve(size_t label);
matrix<complex<double>> Green_function(const complex<double> &z, bool spin_down, const size_t label, bool blocks);
matrix<complex<double>> Green_function_average(bool spin_down, const size_t label);
double Green_function_density(const size_t label);
matrix<complex<double>> self_energy(const complex<double> &z, bool spin_down, const size_t label);
matrix<complex<double>> hopping_matrix(bool spin_down, const size_t label);
matrix<complex<double>> hopping_matrix_full(bool spin_down, bool diag, const size_t label);
vector<tuple<int,int,double>> interactions(const size_t label);
matrix<complex<double>> hybridization_function(const complex<double> w, bool spin_down, const size_t label);
vector<complex<double>> susceptibility(const string &op, const vector<complex<double>> &w, const size_t label);
vector<pair<double,double>> susceptibility_poles(const string &op, const size_t label);
double Potthoff_functional(const size_t label);
size_t Green_function_dimension(size_t label);
double fidelity(const int label1, const int label2);
double tr_sigma_inf(const size_t label);
void write_instance_hdf5(const string& filename, int label, const string& group);
void read_instance_hdf5(const string& filename, int label, const string& group);
void print_models(ostream& fout);
void global_parameter_init();
pair<vector<double>, vector<complex<double>>> qmatrix(bool spin_down, const size_t label);
pair<vector<double>, vector<complex<double>>> hybridization(bool spin_down, const size_t label);
string print_wavefunction(const size_t label);
pair<string, vector<matrix_element<Complex>>> matrix_elements(const string& model_name, const string& op_name);
pair<matrix<Complex>, vector<uint64_t>> density_matrix(const vector<int> &sites, size_t label);
struct CombinedMCF_data {
vector<matrix<Complex>> A;
vector<matrix<Complex>> B;
matrix<Complex> W;
};
CombinedMCF_data get_combined_mcf(bool spin_down, size_t label);
};
#endif