Struct lattice_operator

Struct Documentation

struct lattice_operator

store information about an operator of the model (a term in the Hamiltonian)

Public Functions

lattice_operator(lattice_model &_model, const string &_name, latt_op_type _type = latt_op_type::one_body)

constructor.

Parameters:
  • _model – [in] backtrace to the lattice model

  • _name – [in] name of the operator

  • _type – [in] type of operator (refer to the enumeration latt_op_type in the header file)

lattice_operator(lattice_model &_model, const string &_name, const string &_type)

constructor.

Parameters:
  • _model – [in] backtrace to the lattice model

  • _name – [in] name of the operator

  • _type – [in] type of operator (refer to the map lattice_operator::op_type_map defined above)

void add_matrix_element(const vector3D<int64_t> &pos1, const vector3D<int64_t> &link, Complex v, const string &opt = "")

adds a matrix element to the operator

Parameters:
  • pos – [in] array of positions

  • link – [in] array of bonds

  • v – [in] complex amplitude

  • opt – [in] option, that depends on the type of operator

void close()

closes the operator

void consolidate()

sets some properties of the operator, once its matrix elements have been set.

void check_spin_symmetry()

determines whether the operator is symmetric under the exchange of up and down spins sets the bool variable is_spin_symmetric accordingly

void one_body_matrix(bool spin_down)

Public Members

bool is_active

true if the operator is activated (nonzero or tagged)

bool is_closed

true if the operator cannot accept new matrix elements as it is declared complete

bool is_complex

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

bool is_density_wave

true if the operator is a density wave, and thus may be different from one cluster to the next

bool is_interaction

true if the operator is activated in one of the “lattice_model_instances”, even with value zero

double average

average (from the Green function)

double nambu_correction_full

correction to averages needed in the full Nambu formalism

double nambu_correction

correction to averages needed in the simple Nambu formalism

double norm

multiplier from the raw average to the printed average

int mixing

mixing caused by this operator (default = normal)

lattice_model &model

backtrace to the lattice model

latt_op_type type

type of the operator (see enum defined above)

string name

name of the operator

vector<bool> in_cluster

true if the operator exists in a given cluster.

vector<GF_matrix_element<Complex>> IGF_elem_down

list of inter-SUC matrix elements for the GF (takes mixing into account)

vector<GF_matrix_element<Complex>> IGF_elem

list of inter-SUC matrix elements for the GF (takes mixing into account)

vector<lattice_matrix_element> elements
vector<matrix_element<Complex>> GF_elem_down

list of intra-SUC matrix elements for the GF (takes mixing into account)

vector<matrix_element<Complex>> GF_elem

list of intra-SUC matrix elements for the GF (takes mixing into account)

Public Static Attributes

static map<string, latt_op_type> op_type_map = {{"one-body", latt_op_type::one_body}, {"singlet", latt_op_type::singlet}, {"dz", latt_op_type::dz}, {"dy", latt_op_type::dy}, {"dx", latt_op_type::dx}, {"Hubbard", latt_op_type::Hubbard}, {"Hund", latt_op_type::Hund}, {"Heisenberg", latt_op_type::Heisenberg}, {"X", latt_op_type::X}, {"Y", latt_op_type::Y}, {"Z", latt_op_type::Z}}