Struct Hermitian_operator

Inheritance Relationships

Derived Types

Struct Documentation

struct Hermitian_operator

Abstract class representing a Hermitian operator, i.e. a term in the Hamiltonian.

Subclassed by Heisenberg_operator, Hund_operator, anomalous_operator< op_field >, general_interaction_operator< op_field >, interaction_operator, one_body_operator< op_field >

Public Functions

inline Hermitian_operator(const string &_name, shared_ptr<model> _the_model)
virtual double average_from_GF(matrix<Complex> &Gave, bool spin_down) = 0
virtual shared_ptr<HS_Hermitian_operator> build_HS_operator(sector sec, bool complex_Hilbert_space) = 0
virtual string type() = 0
virtual vector<matrix_element<Complex>> matrix_elements() = 0
virtual void multiply_add_OTF(const vector<Complex> &x, vector<Complex> &y, double z, shared_ptr<ED_mixed_basis> B) = 0
virtual void multiply_add_OTF(const vector<double> &x, vector<double> &y, double z, shared_ptr<ED_mixed_basis> B) = 0
virtual void print(ostream &fout) = 0
virtual void set_hopping_matrix(double value, matrix<Complex> &tc, bool spin_down, int sys_mixing) = 0
virtual void set_hopping_matrix(double value, matrix<double> &tc, bool spin_down, int sys_mixing) = 0
virtual void set_target(vector<bool> &in_bath) = 0
bool shift_label(size_t label, size_t &shifted_label, bool bath, bool nambu, bool spin_down)
template<typename HS_field>
inline void expectation_value(const state<HS_field> &gs, double &average, double &average2)
template<typename HS_field>
inline void dense_form(matrix<HS_field> &h, double z, sector sec)

Public Members

bool is_active

true is the operator is active (nonzero)

bool is_complex

true is the operator has complex matrix elements, which requires a complex Hilbert space

bool is_factorizable
bool is_interaction

true if the operator is an interaction

double nambu_correction_full

Nambu correction to the averages in the full Nambu mixing case.

double nambu_correction

Nambu correction to the averages in the restricted Nambu mixing case.

double norm

multiplicative factor on the average (e.g. to divide by the number of sites)

int mixing

mixing caused by this operator (default = normal)

mutable std::mutex hs_op_mutex

protects HS_operator map from concurrent insertions

map<sector, shared_ptr<HS_Hermitian_operator>> HS_operator

Hilbert space realizations, organized by sector.

shared_ptr<model> the_model

backtrace to the model

size_t target

target of the operator: 1:cluster, 2:bath, or 3:hybrid (binary coding).

string name

name of the operator