|
QNANO
|

Public Member Functions | |
| void | add_longrange (const Atom_List &atlist, const Distribute_EV_List &EV_e, const Distribute_EV_List &EV_h, int nr_e, int nr_h, double epsilon, int nrblocks, int verbosity=1) |
| void | add_onsite (const Atom_List &atlist, const Coulomb_Onsite_Storage_List &onsite_storage_list, const Distribute_EV_List &EV_e, const Distribute_EV_List &EV_h, int nr_e, int nr_h, double epsilon, int verbosity=1) |
| void | MPI_Reduce_to_Node0 () |
| Add parts calculated on different nodes and move them to node 0. | |
| Coulomb_Matrix_Elements_Calculator (Coulomb_Matrix_Elements::Type type, int nr_e, int nr_h) | |
Public Attributes | |
| Coulomb_Matrix_Elements | mat_elem |
| void Coulomb_Matrix_Elements_Calculator::add_longrange | ( | const Atom_List & | atlist, |
| const Distribute_EV_List & | EV_e, | ||
| const Distribute_EV_List & | EV_h, | ||
| int | nr_e, | ||
| int | nr_h, | ||
| double | epsilon, | ||
| int | nrblocks, | ||
| int | verbosity = 1 |
||
| ) |
LONGRANGE PART: Calculation of the longrange part requires taking the matrix product
Vijkl=(sum_m phi^*_{im} phi_{lm})^T U (sum_m phi^*_{jm} phi_{km}) Phi_{r,{ij}}=(sum_m phi^*_{im} phi_{jm})
Main problem: storage of all eigenvector data at each process Solution: Distribute Eigenvectors according to atom numbers across processes Also: further decompose nr. of local atoms into blocks to reduce memory for U
1.8.11