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"
16
17#include <map>
18#include <set>
19#include <vector>
20
22{
23 public:
26 Numerical_Orbital_Lm orb_r; // New r vector, exists in atomic orbital form, expanded in solid spherical function
27
28 std::vector<std::vector<std::vector<ModuleBase::Vector3<double>>>> orb1_orb2_R;
29 std::vector<std::vector<std::vector<double>>> psi_psi;
30 std::vector<std::vector<std::vector<ModuleBase::Vector3<double>>>> psi_r_psi;
31 bool allocate_flag; // translate: Used to initialize the array
32 int** cal_tag=nullptr; // Used for parallel scheme
33
35
36 std::vector<double> rcut_orb_; // real space cutoffs of LCAO orbitals' radial functions
37
38 std::map<
39 size_t,
40 std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, Center2_Orb::Orb11>>>>>>
42
43 std::map<
44 size_t,
45 std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, Center2_Orb::Orb21>>>>>>
47
50
51 void init(const UnitCell& ucell, const Grid_Technique& gt, const int nkstot, const LCAO_Orbitals& orb);
52 int iw2it(const UnitCell& ucell, int iw);
53 int iw2ia(const UnitCell& ucell, int iw);
54 int iw2iL(const UnitCell& ucell, int iw);
55 int iw2iN(const UnitCell& ucell, int iw);
56 int iw2im(const UnitCell& ucell, int iw);
57 void cal_R_number(const UnitCell& ucell, const Grid_Driver& gd);
58 void cal_orb_overlap(const UnitCell& ucell);
59 void prepare_midmatrix_pblas(const UnitCell& ucell,
60 const int ik_L,
61 const int ik_R,
63 std::complex<double>*& midmatrix,
64 const Parallel_Orbitals& pv,
65 const K_Vectors& kv);
66 std::complex<double> det_berryphase(const UnitCell& ucell,
67 const int ik_L,
68 const int ik_R,
70 const int occ_bands,
71 const Parallel_Orbitals& para_orb,
72 const psi::Psi<std::complex<double>>* psi_in,
73 const K_Vectors& kv);
74};
75
76#endif
Definition sltk_grid_driver.h:43
Definition grid_technique.h:18
Definition klist.h:13
Definition ORB_read.h:19
Definition sph_bessel_recursive.h:49
3 elements vector
Definition vector3.h:22
Definition ORB_atomic_lm.h:22
Definition ORB_gaunt_table.h:9
Definition parallel_orbitals.h:9
Definition unitcell.h:16
Definition psi.h:37
Definition unk_overlap_lcao.h:22
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:518
int kpoints_number
Definition unk_overlap_lcao.h:34
int ** cal_tag
Definition unk_overlap_lcao.h:32
void init(const UnitCell &ucell, const Grid_Technique &gt, const int nkstot, const LCAO_Orbitals &orb)
Definition unk_overlap_lcao.cpp:27
bool allocate_flag
Definition unk_overlap_lcao.h:31
std::vector< std::vector< std::vector< ModuleBase::Vector3< double > > > > psi_r_psi
Definition unk_overlap_lcao.h:30
Numerical_Orbital_Lm orb_r
Definition unk_overlap_lcao.h:26
ORB_gaunt_table MGT
Definition unk_overlap_lcao.h:25
std::vector< std::vector< std::vector< double > > > psi_psi
Definition unk_overlap_lcao.h:29
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:554
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:41
int iw2im(const UnitCell &ucell, int iw)
Definition unk_overlap_lcao.cpp:355
void cal_orb_overlap(const UnitCell &ucell)
Definition unk_overlap_lcao.cpp:442
~unkOverlap_lcao()
Definition unk_overlap_lcao.cpp:14
int iw2it(const UnitCell &ucell, int iw)
Definition unk_overlap_lcao.cpp:246
unkOverlap_lcao()
Definition unk_overlap_lcao.cpp:9
ModuleBase::Sph_Bessel_Recursive::D2 * psb_
Definition unk_overlap_lcao.h:24
std::vector< double > rcut_orb_
Definition unk_overlap_lcao.h:36
int iw2iL(const UnitCell &ucell, int iw)
Definition unk_overlap_lcao.cpp:300
std::vector< std::vector< std::vector< ModuleBase::Vector3< double > > > > orb1_orb2_R
Definition unk_overlap_lcao.h:28
void cal_R_number(const UnitCell &ucell, const Grid_Driver &gd)
Definition unk_overlap_lcao.cpp:383
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:46
int iw2ia(const UnitCell &ucell, int iw)
Definition unk_overlap_lcao.cpp:273
int iw2iN(const UnitCell &ucell, int iw)
Definition unk_overlap_lcao.cpp:327