exx.h Source File

LibRPA: exx.h Source File
LibRPA
exx.h
1 /*
2  * @file exx.h
3  * @brief utilities for computing exact exchange energies, including orbital and total energies.
4  */
5 #include "meanfield.h"
6 #include "ri.h"
7 
8 // NOTE: a temporary namespace to avoid redefinition with LibRI
9 namespace LIBRPA
10 {
11 
12 class Exx
13 {
14  private:
16  const MeanField& mf_;
18  const vector<Vector3_Order<double>>& kfrac_list_;
19 
20  ComplexMatrix get_dmat_cplx_R_global(const int& ispin, const Vector3_Order<int>& R);
21  ComplexMatrix extract_dmat_cplx_R_IJblock(const ComplexMatrix& dmat_cplx, const atom_t& I, const atom_t& J);
22  void build_dmat_R(const Vector3_Order<int>& R);
23  void build_dmat_R(const atom_t& I, const atom_t& J, const Vector3_Order<int>& R);
24  void warn_dmat_IJR_nonzero_imag(const ComplexMatrix& dmat_cplx,
25  const int& ispin, const atom_t& I, const atom_t& J,
26  const Vector3_Order<int> R);
27  void build_exx_orbital_energy_LibRI(const Cs_LRI &Cs,
28  const vector<Vector3_Order<int>> &Rlist,
29  const Vector3_Order<int> &R_period,
30  const atpair_R_mat_t& coul_mat);
31  public:
33  map<int, atpair_R_mat_t> dmat;
35  map<int, map<Vector3_Order<double>, map<atom_t, map<atom_t, shared_ptr<ComplexMatrix>>>>> Hexx;
36 
38  map<int, map<int, ComplexMatrix>> Hexx_KS;
39 
41  map<int, map<int, map<int, double>>> Eexx;
42 
43  Exx(const MeanField& mf, const vector<Vector3_Order<double>> &kfrac_list): mf_(mf), kfrac_list_(kfrac_list) {};
45  void build_exx_orbital_energy(const Cs_LRI &Cs,
46  const vector<Vector3_Order<int>> &Rlist,
47  const Vector3_Order<int> &R_period,
48  const atpair_R_mat_t& coul_mat);
49 };
50 
51 } // namespace LIBRPA
size_t atom_t
type of atom indices
Definition: atoms.h:22
Definition: complexmatrix.h:20
Definition: exx.h:13
map< int, map< int, ComplexMatrix > > Hexx_KS
exact-exchange Hamiltonian in the basis of KS states, dimension (nspins, n_kpoints,...
Definition: exx.h:38
map< int, map< int, map< int, double > > > Eexx
exact-exchange energy of each state, dimension (nspins, n_kpoints, n_bands). This is actually the dia...
Definition: exx.h:41
map< int, atpair_R_mat_t > dmat
Density matrix in lattice vector space, dimension (nspins, I, J, R, nao_I, nao_J)
Definition: exx.h:33
map< int, map< Vector3_Order< double >, map< atom_t, map< atom_t, shared_ptr< ComplexMatrix > > > > > Hexx
exact-exchange Hamiltonian in k space, dimension (nspins, k, I, J, nao_I, nao_J)
Definition: exx.h:35
void build_exx_orbital_energy(const Cs_LRI &Cs, const vector< Vector3_Order< int >> &Rlist, const Vector3_Order< int > &R_period, const atpair_R_mat_t &coul_mat)
Build and store the density matrix from the meanfield object.
Definition: exx.cpp:87
Object of the meanfield input of Green's function.
Definition: meanfield.h:20
Definition: vector3_order.h:15
Utilities to handle the mean-field starting point for many-body calculation.
Definition: analycont.cpp:14
Utilies related to resolution of identity.
atom_mapping< map< Vector3_Order< int >, std::shared_ptr< matrix > > >::pair_t_old atpair_R_mat_t
type alias of atom-pair mapping to real matrix indexed by unit-cell vector
Definition: ri.h:39
Definition: ri.h:46