ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
cal_r_overlap_R.h
Go to the documentation of this file.
1#ifndef CAL_R_OVERLAP_R_H
2#define CAL_R_OVERLAP_R_H
3
7#include "source_base/ylm.h"
17
18#include <map>
19#include <set>
20#include <vector>
21
22// output r_R matrix, added by Jingan
24{
25
26 public:
29
30 double kmesh_times = 4;
31 double sparse_threshold = 1e-10;
32 bool binary = false;
33
34 void init(const UnitCell& ucell,const Parallel_Orbitals& pv, const LCAO_Orbitals& orb);
35 void init_nonlocal(const UnitCell& ucell,const Parallel_Orbitals& pv, const LCAO_Orbitals& orb);
38 const int& T1,
39 const int& L1,
40 const int& m1,
41 const int& N1,
43 const int& T2,
44 const int& L2,
45 const int& m2,
46 const int& N2
47 );
48 void get_psi_r_beta(
49 const UnitCell& ucell,
50 std::vector<std::vector<double>>& nlm,
52 const int& T1,
53 const int& L1,
54 const int& m1,
55 const int& N1,
57 const int& T2
58 );
59 void out_rR(const UnitCell& ucell, const Grid_Driver& gd, const int& istep);
60 void out_rR_other(const UnitCell& ucell, const int& istep, const std::set<Abfs::Vector3_Order<int>>& output_R_coor);
61
62 private:
63 void initialize_orb_table(const UnitCell& ucell, const LCAO_Orbitals& orb);
64 void construct_orbs_and_orb_r(const UnitCell& ucell,const LCAO_Orbitals& orb);
66
67 std::vector<int> iw2ia;
68 std::vector<int> iw2iL;
69 std::vector<int> iw2im;
70 std::vector<int> iw2iN;
71 std::vector<int> iw2it;
72
75
77 std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>> orbs;
78 std::vector<std::vector<Numerical_Orbital_Lm>> orbs_nonlocal;
79
80 std::map<
81 size_t,
82 std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, Center2_Orb::Orb11>>>>>>
84
85 std::map<
86 size_t,
87 std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, Center2_Orb::Orb21>>>>>>
89
90 std::map<
91 size_t,
92 std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, Center2_Orb::Orb11>>>>>
94
95 std::map<
96 size_t,
97 std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, Center2_Orb::Orb21>>>>>
99
100 const Parallel_Orbitals* ParaV = nullptr;
101};
102#endif
Definition abfs-vector3_order.h:16
Definition sltk_grid_driver.h:40
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 cal_r_overlap_R.h:24
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 cal_r_overlap_R.h:88
void init(const UnitCell &ucell, const Parallel_Orbitals &pv, const LCAO_Orbitals &orb)
Definition cal_r_overlap_R.cpp:450
bool binary
Definition cal_r_overlap_R.h:32
std::vector< int > iw2it
Definition cal_r_overlap_R.h:71
cal_r_overlap_R()
Definition cal_r_overlap_R.cpp:10
Numerical_Orbital_Lm orb_r
Definition cal_r_overlap_R.h:76
std::vector< int > iw2ia
Definition cal_r_overlap_R.h:67
std::vector< std::vector< Numerical_Orbital_Lm > > orbs_nonlocal
Definition cal_r_overlap_R.h:78
~cal_r_overlap_R()
Definition cal_r_overlap_R.cpp:14
void get_psi_r_beta(const UnitCell &ucell, std::vector< std::vector< double > > &nlm, const ModuleBase::Vector3< double > &R1, const int &T1, const int &L1, const int &m1, const int &N1, const ModuleBase::Vector3< double > &R2, const int &T2)
Definition cal_r_overlap_R.cpp:520
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_nonlocal
Definition cal_r_overlap_R.h:93
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 cal_r_overlap_R.h:83
double sparse_threshold
Definition cal_r_overlap_R.h:31
void out_rR(const UnitCell &ucell, const Grid_Driver &gd, const int &istep)
Definition cal_r_overlap_R.cpp:598
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > orbs
Definition cal_r_overlap_R.h:77
double kmesh_times
Definition cal_r_overlap_R.h:30
ORB_gaunt_table MGT
Definition cal_r_overlap_R.h:74
std::vector< int > iw2im
Definition cal_r_overlap_R.h:69
ModuleBase::Vector3< double > get_psi_r_psi(const ModuleBase::Vector3< double > &R1, const int &T1, const int &L1, const int &m1, const int &N1, const ModuleBase::Vector3< double > &R2, const int &T2, const int &L2, const int &m2, const int &N2)
Definition cal_r_overlap_R.cpp:476
std::vector< int > iw2iL
Definition cal_r_overlap_R.h:68
const Parallel_Orbitals * ParaV
Definition cal_r_overlap_R.h:100
void initialize_orb_table(const UnitCell &ucell, const LCAO_Orbitals &orb)
Definition cal_r_overlap_R.cpp:18
void construct_orbs_and_nonlocal_and_orb_r(const UnitCell &ucell, const LCAO_Orbitals &orb)
Definition cal_r_overlap_R.cpp:218
void init_nonlocal(const UnitCell &ucell, const Parallel_Orbitals &pv, const LCAO_Orbitals &orb)
Definition cal_r_overlap_R.cpp:463
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_nonlocal
Definition cal_r_overlap_R.h:98
void construct_orbs_and_orb_r(const UnitCell &ucell, const LCAO_Orbitals &orb)
Definition cal_r_overlap_R.cpp:46
ModuleBase::Sph_Bessel_Recursive::D2 * psb_
Definition cal_r_overlap_R.h:73
std::vector< int > iw2iN
Definition cal_r_overlap_R.h:70
void out_rR_other(const UnitCell &ucell, const int &istep, const std::set< Abfs::Vector3_Order< int > > &output_R_coor)
Definition cal_r_overlap_R.cpp:867