Program Listing for File model_instance_base.hpp¶
↰ Return to documentation for file (src_ed/model_instance_base.hpp)
#ifndef model_instance_base_h
#define model_instance_base_h
#include "model.hpp"
#include "Green_function_set.hpp"
#include "hdf5_io.hpp"
struct sector_data
{
double E0;
double weight;
};
struct model_instance_base
{
// members
double SEF_bath;
bool complex_Hilbert;
bool gf_read;
bool gf_solved;
bool gs_solved;
bool hopping_solved;
bool is_correlated; // true if interactions are non zero on the cluster
bool spin_down;
double E0;
double GS_energy;
GF_FORMAT GF_solver;
int dim_GF;
int mixing;
map<sector, sector_data> sec_data;
map<string, double> value;
matrix<Complex> M_down;
matrix<Complex> M;
sector GS_sector;
set<sector> sector_set;
set<sector> target_sectors;
shared_ptr<model> the_model;
size_t label;
size_t n_mixed;
size_t total_dim;
vector<tuple<string,double,double>> averages;
double GF_density;
model_instance_base(size_t _label, shared_ptr<model> _the_model, const map<string,double> _value, const string &_sectors);
~model_instance_base();
string full_name();
size_t dimension();
virtual pair<double, string> low_energy_states() = 0;
virtual pair<double, double> cluster_averages(shared_ptr<Hermitian_operator> h) = 0;
virtual void Green_function_solve() = 0;
virtual pair<double, string> one_body_solve() = 0;
virtual matrix<Complex> Green_function(const Complex &z, bool spin_down, bool blocks) = 0;
virtual void Green_function_average() = 0;
virtual void Green_function_density() = 0;
virtual matrix<Complex> self_energy(const Complex &z, bool spin_down) = 0;
virtual matrix<Complex> hopping_matrix(bool spin_down) = 0;
virtual vector<tuple<int,int,double>> interactions() = 0;
virtual matrix<Complex> hopping_matrix_full(bool spin_down, bool diag) = 0;
virtual vector<Complex> susceptibility(shared_ptr<Hermitian_operator> h, const vector<Complex> &w) = 0;
virtual matrix<Complex> hybridization_function(Complex w, bool spin_down) = 0;
virtual vector<pair<double,double>> susceptibility_poles(shared_ptr<Hermitian_operator> h) = 0;
virtual void print(ostream& fout) = 0;
virtual double tr_sigma_inf() = 0;
virtual void merge_states() = 0;
virtual void write_hdf5(H5::Group& grp) = 0;
virtual void read_hdf5(H5::Group& grp) = 0;
virtual void print_wavefunction(ostream& fout) = 0;
virtual pair<matrix<Complex>, vector<uint64_t>> density_matrix_mixed(vector<int> sites) = 0;
virtual pair<matrix<Complex>, vector<uint64_t>> density_matrix_factorized(vector<int> sites) = 0;
};
#endif /* model_instance_base_hpp */