QNANO
|
#include <Coulomb_Matrix_Elements.h>
Public Types | |
enum | Type { none, direct, exchange, ee, hh } |
type: is it a direct, exchange, electron-electron or hole-hole matrix element? | |
Public Member Functions | |
void | resize (int nr_e, int nr_h) |
void | resize (const Manybody_Hilbert_Space &HS) |
void | setup (Type type_, const Manybody_Hilbert_Space &HS, const std::string &filename="") |
void | check_size_consistency () const |
check if sizes are consistend with the type of the matrix element | |
void | check_Hermitian (double accuracy=1e-6) const |
check if Hermitian | |
void | check_consistency (double accuracy=1e-6) const |
check overall consistency | |
bool | is_hole (size_t i) const |
does an index correspond to a hole (true) or to an electron(false) | |
void | read (const std::string &filename, bool read_size_from_file=false) |
reader+printer: | |
void | read_noheader (std::ifstream &ifs, const std::string &filename_for_error="") |
void | print (const std::string &filename, int round_figure=8) const |
void | apply_trafo (const QNANO_Matrix &trafo_e, const QNANO_Matrix &trafo_h) |
apply unitary transformation for electron and hole states | |
void | make_Hermitian () |
used if only upper diagonal is specified in file | |
void | copy_noresize (const Coulomb_Matrix_Elements &other) |
void | copy (const Coulomb_Matrix_Elements &other) |
Coulomb_Matrix_Elements & | operator= (const Coulomb_Matrix_Elements &other) |
Coulomb_Matrix_Elements (const Coulomb_Matrix_Elements &other) | |
Coulomb_Matrix_Elements (Type type_=none) | |
Coulomb_Matrix_Elements (Type type_, size_t i, size_t j, size_t k, size_t l) | |
Coulomb_Matrix_Elements (Type type_, int nr_e, int nr_h) | |
Coulomb_Matrix_Elements (Type type_, const Manybody_Hilbert_Space &HS, const std::string &filename="") | |
Coulomb_Matrix_Elements (Type type_, const std::string &filename) | |
Public Member Functions inherited from Tensor4 | |
size_t | get_index (size_t i, size_t j, size_t k, size_t l) const |
size_t | get_totalsize () const |
size_t | get_size (size_t i) const |
void | resize (size_t i, size_t j, size_t k, size_t l) |
void | set_zero () |
const std::complex< double > & | operator() (size_t i, size_t j, size_t k, size_t l) const |
std::complex< double > & | operator() (size_t i, size_t j, size_t k, size_t l) |
const std::complex< double > & | get_check (int i, int j, int k, int l) |
void | copy (const Tensor4 &other) |
Tensor4 & | operator= (const Tensor4 &other) |
Tensor4 (const Tensor4 &other) | |
Tensor4 (size_t i, size_t j, size_t k, size_t l) | |
Static Public Member Functions | |
static std::string | get_type_string (enum Type type_) |
Public Attributes | |
enum Coulomb_Matrix_Elements::Type | type |
Public Attributes inherited from Tensor4 | |
size_t | size [4] |
std::complex< double > * | data |
Additional Inherited Members | |
Protected Member Functions inherited from Tensor4 | |
void | allocate () |
void | deallocate () |
Class to store Coulomb matrix elements. Practically the same as a Tensor4, but knows about the QNANO format for Coulomb matrix element files