ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
get_wf_lcao.h
Go to the documentation of this file.
1#ifndef GET_WF_LCAO_H
2#define GET_WF_LCAO_H
3
7
9{
10 public:
13
15 void begin(const UnitCell& ucell,
16 const psi::Psi<double>* psid,
17 const ModulePW::PW_Basis_K* pw_wfc,
18 const Parallel_Grid& pgrid,
19 const Parallel_Orbitals& para_orb,
20 Gint_Gamma& gg,
21 const int& out_wfc_pw,
22 const K_Vectors& kv,
23 const double nelec,
24 const std::vector<int>& out_wfc_norm,
25 const std::vector<int>& out_wfc_re_im,
26 const int nbands,
27 const int nspin,
28 const int nlocal,
29 const std::string& global_out_dir,
30 std::ofstream& ofs_running);
31
33 void begin(const UnitCell& ucell,
34 const psi::Psi<double>* psid,
35 const ModulePW::PW_Basis_K* pw_wfc,
36 const Parallel_Grid& pgrid,
37 const Parallel_Orbitals& para_orb,
38 Gint_k& gg,
39 const int& out_wfc_pw,
40 const K_Vectors& kv,
41 const double nelec,
42 const std::vector<int>& out_wfc_norm,
43 const std::vector<int>& out_wfc_re_im,
44 const int nbands,
45 const int nspin,
46 const int nlocal,
47 const std::string& global_out_dir,
48 std::ofstream& ofs_running)
49 {
50 throw std::logic_error("gint_k should use with complex psi.");
51 };
52
54 void begin(const UnitCell& ucell,
55 const psi::Psi<std::complex<double>>* psi,
56 const ModulePW::PW_Basis_K* pw_wfc,
57 const Parallel_Grid& pgrid,
58 const Parallel_Orbitals& para_orb,
59 Gint_k& gk,
60 const int& out_wfc_pw,
61 const K_Vectors& kv,
62 const double nelec,
63 const std::vector<int>& out_wfc_norm,
64 const std::vector<int>& out_wfc_re_im,
65 const int nbands,
66 const int nspin,
67 const int nlocal,
68 const std::string& global_out_dir,
69 std::ofstream& ofs_running);
70
72 void begin(const UnitCell& ucell,
73 const psi::Psi<std::complex<double>>* psi,
74 const ModulePW::PW_Basis_K* pw_wfc,
75 const Parallel_Grid& pgrid,
76 const Parallel_Orbitals& para_orb,
77 Gint_Gamma& gk,
78 const int& out_wfc_pw,
79 const K_Vectors& kv,
80 const double nelec,
81 const std::vector<int>& out_wfc_norm,
82 const std::vector<int>& out_wfc_re_im,
83 const int nbands,
84 const int nspin,
85 const int nlocal,
86 const std::string& global_out_dir,
87 std::ofstream& ofs_running)
88 {
89 throw std::logic_error("gint_gamma should use with real psi.");
90 };
91
92 private:
93 void prepare_get_wf(std::ofstream& ofs_running);
94
95 void select_bands(const std::vector<int>& out_wfc_kb, const int nbands, const int fermi_band);
96
97 void set_pw_wfc(const ModulePW::PW_Basis_K* pw_wfc,
98 const int& ik,
99 const int& ib,
100 const int& nspin,
101 const double* const* const rho,
102 psi::Psi<std::complex<double>>& wfc_g);
103
104 int globalIndex(int localindex, int nblk, int nprocs, int myproc);
105
106 int localIndex(int globalindex, int nblk, int nprocs, int& myproc);
107
108#ifdef __MPI
109 template <typename T>
110 int set_wfc_grid(const int naroc[2],
111 const int nb,
112 const int dim0,
113 const int dim1,
114 const int iprow,
115 const int ipcol,
116 const T* in,
117 T** out,
118 const std::vector<int>& trace_lo);
119 template <typename T>
120 void wfc_2d_to_grid(const T* wfc_2d, const Parallel_Orbitals& pv, T** wfc_grid, const std::vector<int>& trace_lo);
121#endif // __MPI
122
123 std::vector<int> bands_picked_;
124 const elecstate::ElecState* pes_ = nullptr;
125};
126#endif // GET_WF_LCAO_H
Definition get_wf_lcao.h:9
void wfc_2d_to_grid(const T *wfc_2d, const Parallel_Orbitals &pv, T **wfc_grid, const std::vector< int > &trace_lo)
Definition get_wf_lcao.cpp:614
void set_pw_wfc(const ModulePW::PW_Basis_K *pw_wfc, const int &ik, const int &ib, const int &nspin, const double *const *const rho, psi::Psi< std::complex< double > > &wfc_g)
Definition get_wf_lcao.cpp:529
void prepare_get_wf(std::ofstream &ofs_running)
Definition get_wf_lcao.cpp:692
const elecstate::ElecState * pes_
Definition get_wf_lcao.h:124
void begin(const UnitCell &ucell, const psi::Psi< std::complex< double > > *psi, const ModulePW::PW_Basis_K *pw_wfc, const Parallel_Grid &pgrid, const Parallel_Orbitals &para_orb, Gint_Gamma &gk, const int &out_wfc_pw, const K_Vectors &kv, const double nelec, const std::vector< int > &out_wfc_norm, const std::vector< int > &out_wfc_re_im, const int nbands, const int nspin, const int nlocal, const std::string &global_out_dir, std::ofstream &ofs_running)
tmp, delete after Gint is refactored.
Definition get_wf_lcao.h:72
void select_bands(const std::vector< int > &out_wfc_kb, const int nbands, const int fermi_band)
Definition get_wf_lcao.cpp:451
~Get_wf_lcao()
Definition get_wf_lcao.cpp:17
std::vector< int > bands_picked_
Definition get_wf_lcao.h:123
void begin(const UnitCell &ucell, const psi::Psi< double > *psid, const ModulePW::PW_Basis_K *pw_wfc, const Parallel_Grid &pgrid, const Parallel_Orbitals &para_orb, Gint_Gamma &gg, const int &out_wfc_pw, const K_Vectors &kv, const double nelec, const std::vector< int > &out_wfc_norm, const std::vector< int > &out_wfc_re_im, const int nbands, const int nspin, const int nlocal, const std::string &global_out_dir, std::ofstream &ofs_running)
For gamma_only.
Definition get_wf_lcao.cpp:22
void begin(const UnitCell &ucell, const psi::Psi< double > *psid, const ModulePW::PW_Basis_K *pw_wfc, const Parallel_Grid &pgrid, const Parallel_Orbitals &para_orb, Gint_k &gg, const int &out_wfc_pw, const K_Vectors &kv, const double nelec, const std::vector< int > &out_wfc_norm, const std::vector< int > &out_wfc_re_im, const int nbands, const int nspin, const int nlocal, const std::string &global_out_dir, std::ofstream &ofs_running)
tmp, delete after Gint is refactored.
Definition get_wf_lcao.h:33
int globalIndex(int localindex, int nblk, int nprocs, int myproc)
Definition get_wf_lcao.cpp:711
int localIndex(int globalindex, int nblk, int nprocs, int &myproc)
Definition get_wf_lcao.cpp:718
int set_wfc_grid(const int naroc[2], const int nb, const int dim0, const int dim1, const int iprow, const int ipcol, const T *in, T **out, const std::vector< int > &trace_lo)
Definition get_wf_lcao.cpp:559
Definition gint_gamma.h:23
Definition gint_k.h:13
Definition klist.h:13
Special pw_basis class. It includes different k-points.
Definition pw_basis_k.h:57
Definition parallel_grid.h:8
Definition parallel_orbitals.h:9
Definition unitcell.h:16
Definition elecstate.h:15
Definition psi.h:37
#define T
Definition exp.cpp:237
Definition exx_lip.h:23