ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
get_pchg_lcao.h
Go to the documentation of this file.
1#ifndef GET_PCHG_LCAO_H
2#define GET_PCHG_LCAO_H
3
4#include "source_cell/klist.h"
6
15{
16 public:
17 Get_pchg_lcao(psi::Psi<double>* psi_gamma_in, const Parallel_Orbitals* ParaV_in);
18 Get_pchg_lcao(psi::Psi<std::complex<double>>* psi_k_in, const Parallel_Orbitals* ParaV_in);
19
21
22 // For gamma_only
23 void begin(double** rho,
24 const ModuleBase::matrix& wg,
25 const std::vector<double>& ef_all_spin,
26 const int rhopw_nrxx,
27 const std::vector<int>& out_pchg,
28 const int nbands,
29 const double nelec,
30 const int nspin,
31 const UnitCell* ucell_in,
32 const Parallel_Grid& pgrid,
33 const Grid_Driver* GridD_in,
34 const K_Vectors& kv,
35 const std::string& global_out_dir,
36 std::ofstream& ofs_running);
37
38 // For multi-k
39 void begin(double** rho,
40 std::complex<double>** rhog,
41 const ModuleBase::matrix& wg,
42 const std::vector<double>& ef_all_spin,
43 const ModulePW::PW_Basis* rho_pw,
44 const int rhopw_nrxx,
45 const std::vector<int>& out_pchg,
46 const int nbands,
47 const double nelec,
48 const int nspin,
49 UnitCell* ucell_in,
50 const Parallel_Grid& pgrid,
51 const Grid_Driver* GridD_in,
52 const K_Vectors& kv,
53 const std::string& global_out_dir,
54 std::ofstream& ofs_running,
55 const bool if_separate_k,
56 const int chr_ngmc);
57
58 private:
59 void prepare_get_pchg(std::ofstream& ofs_running);
60
68 void select_bands(const std::vector<int>& out_pchg, const int nbands, const int fermi_band);
69
70#ifdef __MPI
84 void idmatrix(const int& ib,
85 const int nspin,
86 const double& nelec,
87 const ModuleBase::matrix& wg,
89 const K_Vectors& kv);
90
91 // For multi-k
92 void idmatrix(const int& ib,
93 const int nspin,
94 const double& nelec,
95 const ModuleBase::matrix& wg,
96 elecstate::DensityMatrix<std::complex<double>, double>& DM,
97 const K_Vectors& kv,
98 const bool if_separate_k);
99
100#endif
101 std::vector<int> bands_picked_;
105};
106#endif // GET_PCHG_LCAO_H
Manages the computation of the charge densities for different bands (band-decomposed charge densities...
Definition get_pchg_lcao.h:15
void prepare_get_pchg(std::ofstream &ofs_running)
Definition get_pchg_lcao.cpp:446
psi::Psi< double > * psi_gamma
Definition get_pchg_lcao.h:102
void select_bands(const std::vector< int > &out_pchg, const int nbands, const int fermi_band)
Set this->bands_picked_ according to the mode, and process an error if the mode is not recognized.
Definition get_pchg_lcao.cpp:249
~Get_pchg_lcao()
Definition get_pchg_lcao.cpp:18
const Parallel_Orbitals * ParaV
Definition get_pchg_lcao.h:104
void idmatrix(const int &ib, const int nspin, const double &nelec, const ModuleBase::matrix &wg, elecstate::DensityMatrix< double, double > &DM, const K_Vectors &kv)
Calculates the density matrix for a given band.
Definition get_pchg_lcao.cpp:329
void begin(double **rho, const ModuleBase::matrix &wg, const std::vector< double > &ef_all_spin, const int rhopw_nrxx, const std::vector< int > &out_pchg, const int nbands, const double nelec, const int nspin, const UnitCell *ucell_in, const Parallel_Grid &pgrid, const Grid_Driver *GridD_in, const K_Vectors &kv, const std::string &global_out_dir, std::ofstream &ofs_running)
Definition get_pchg_lcao.cpp:23
std::vector< int > bands_picked_
Definition get_pchg_lcao.h:101
psi::Psi< std::complex< double > > * psi_k
Definition get_pchg_lcao.h:103
Definition sltk_grid_driver.h:43
Definition klist.h:13
Definition matrix.h:19
A class which can convert a function of "r" to the corresponding linear superposition of plane waves ...
Definition pw_basis.h:56
Definition parallel_grid.h:8
Definition parallel_orbitals.h:9
Definition unitcell.h:17
Definition density_matrix.h:36
Definition psi.h:37