Struct lattice_operator¶
Defined in File lattice_operator.hpp
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}}¶
-
lattice_operator(lattice_model &_model, const string &_name, latt_op_type _type = latt_op_type::one_body)¶