ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
unk_overlap_lcao.h
Go to the documentation of this file.
1#ifndef UNKOVERLAP_LCAO
2#define UNKOVERLAP_LCAO
3
6#include "source_base/ylm.h"
11#include "source_cell/klist.h"
13#include "source_psi/psi.h"
17
18#include <map>
19#include <set>
20#include <vector>
21
23{
24 public:
27 Numerical_Orbital_Lm orb_r; // New r vector, exists in atomic orbital form, expanded in solid spherical function
28
29 std::vector<std::vector<std::vector<ModuleBase::Vector3<double>>>> orb1_orb2_R;
30 std::vector<std::vector<std::vector<double>>> psi_psi;
31 std::vector<std::vector<std::vector<ModuleBase::Vector3<double>>>> psi_r_psi;
32 bool allocate_flag; // translate: Used to initialize the array
33 int** cal_tag=nullptr; // Used for parallel scheme
34
36
37 std::vector<double> rcut_orb_; // real space cutoffs of LCAO orbitals' radial functions
38
39 std::map<
40 size_t,
41 std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, Center2_Orb::Orb11>>>>>>
43
44 std::map<
45 size_t,
46 std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, Center2_Orb::Orb21>>>>>>
48
51
52 void init(const UnitCell& ucell, const int nkstot, const LCAO_Orbitals& orb);
53 int iw2it(const UnitCell& ucell, int iw);
54 int iw2ia(const UnitCell& ucell, int iw);
55 int iw2iL(const UnitCell& ucell, int iw);
56 int iw2iN(const UnitCell& ucell, int iw);
57 int iw2im(const UnitCell& ucell, int iw);
58 void cal_R_number(const UnitCell& ucell, const Grid_Driver& gd);
59 void cal_orb_overlap(const UnitCell& ucell);
60 void prepare_midmatrix_pblas(const UnitCell& ucell,
61 const int ik_L,
62 const int ik_R,
64 std::complex<double>*& midmatrix,
65 const Parallel_Orbitals& pv,
66 const K_Vectors& kv);
67 std::complex<double> det_berryphase(const UnitCell& ucell,
68 const int ik_L,
69 const int ik_R,
71 const int occ_bands,
72 const Parallel_Orbitals& para_orb,
73 const psi::Psi<std::complex<double>>* psi_in,
74 const K_Vectors& kv);
75};
76
77#endif
Definition sltk_grid_driver.h:40
Definition klist.h:12
Definition ORB_read.h:18
Definition sph_bessel_recursive.h:49
3 elements vector
Definition vector3.h:24
Definition ORB_atomic_lm.h:21
Definition ORB_gaunt_table.h:9
Definition parallel_orbitals.h:9
Definition unitcell.h:15
Definition psi.h:37
Definition unk_overlap_lcao.h:23
void prepare_midmatrix_pblas(const UnitCell &ucell, const int ik_L, const int ik_R, const ModuleBase::Vector3< double > dk, std::complex< double > *&midmatrix, const Parallel_Orbitals &pv, const K_Vectors &kv)
Definition unk_overlap_lcao.cpp:503
int kpoints_number
Definition unk_overlap_lcao.h:35
int ** cal_tag
Definition unk_overlap_lcao.h:33
void init(const UnitCell &ucell, const int nkstot, const LCAO_Orbitals &orb)
Definition unk_overlap_lcao.cpp:26
bool allocate_flag
Definition unk_overlap_lcao.h:32
std::vector< std::vector< std::vector< ModuleBase::Vector3< double > > > > psi_r_psi
Definition unk_overlap_lcao.h:31
Numerical_Orbital_Lm orb_r
Definition unk_overlap_lcao.h:27
ORB_gaunt_table MGT
Definition unk_overlap_lcao.h:26
std::vector< std::vector< std::vector< double > > > psi_psi
Definition unk_overlap_lcao.h:30
std::complex< double > det_berryphase(const UnitCell &ucell, const int ik_L, const int ik_R, const ModuleBase::Vector3< double > dk, const int occ_bands, const Parallel_Orbitals &para_orb, const psi::Psi< std::complex< double > > *psi_in, const K_Vectors &kv)
Definition unk_overlap_lcao.cpp:539
std::map< size_t, std::map< size_t, std::map< size_t, std::map< size_t, std::map< size_t, std::map< size_t, Center2_Orb::Orb11 > > > > > > center2_orb11
Definition unk_overlap_lcao.h:42
int iw2im(const UnitCell &ucell, int iw)
Definition unk_overlap_lcao.cpp:340
void cal_orb_overlap(const UnitCell &ucell)
Definition unk_overlap_lcao.cpp:427
~unkOverlap_lcao()
Definition unk_overlap_lcao.cpp:13
int iw2it(const UnitCell &ucell, int iw)
Definition unk_overlap_lcao.cpp:231
unkOverlap_lcao()
Definition unk_overlap_lcao.cpp:8
ModuleBase::Sph_Bessel_Recursive::D2 * psb_
Definition unk_overlap_lcao.h:25
std::vector< double > rcut_orb_
Definition unk_overlap_lcao.h:37
int iw2iL(const UnitCell &ucell, int iw)
Definition unk_overlap_lcao.cpp:285
std::vector< std::vector< std::vector< ModuleBase::Vector3< double > > > > orb1_orb2_R
Definition unk_overlap_lcao.h:29
void cal_R_number(const UnitCell &ucell, const Grid_Driver &gd)
Definition unk_overlap_lcao.cpp:368
std::map< size_t, std::map< size_t, std::map< size_t, std::map< size_t, std::map< size_t, std::map< size_t, Center2_Orb::Orb21 > > > > > > center2_orb21_r
Definition unk_overlap_lcao.h:47
int iw2ia(const UnitCell &ucell, int iw)
Definition unk_overlap_lcao.cpp:258
int iw2iN(const UnitCell &ucell, int iw)
Definition unk_overlap_lcao.cpp:312