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
6#include "source_cell/klist.h"
8
17{
18 public:
19 Get_pchg_lcao(psi::Psi<double>* psi_gamma_in, const Parallel_Orbitals* ParaV_in);
20 Get_pchg_lcao(psi::Psi<std::complex<double>>* psi_k_in, const Parallel_Orbitals* ParaV_in);
21
23
24 // For gamma_only
25 void begin(Gint_Gamma& gg,
26 double** rho,
27 const ModuleBase::matrix& wg,
28 const std::vector<double>& ef_all_spin,
29 const int rhopw_nrxx,
30 const std::vector<int>& out_pchg,
31 const int nbands,
32 const double nelec,
33 const int nspin,
34 const UnitCell* ucell_in,
35 const Parallel_Grid& pgrid,
36 const Grid_Driver* GridD_in,
37 const K_Vectors& kv,
38 const std::string& global_out_dir,
39 std::ofstream& ofs_running);
40
41 // For multi-k
42 void begin(Gint_k& gk,
43 double** rho,
44 std::complex<double>** rhog,
45 const ModuleBase::matrix& wg,
46 const std::vector<double>& ef_all_spin,
47 const ModulePW::PW_Basis* rho_pw,
48 const int rhopw_nrxx,
49 const std::vector<int>& out_pchg,
50 const int nbands,
51 const double nelec,
52 const int nspin,
53 UnitCell* ucell_in,
54 const Parallel_Grid& pgrid,
55 const Grid_Driver* GridD_in,
56 const K_Vectors& kv,
57 const std::string& global_out_dir,
58 std::ofstream& ofs_running,
59 const bool if_separate_k,
60 const int chr_ngmc);
61
62 private:
63 void prepare_get_pchg(std::ofstream& ofs_running);
64
72 void select_bands(const std::vector<int>& out_pchg, const int nbands, const int fermi_band);
73
74#ifdef __MPI
88 void idmatrix(const int& ib,
89 const int nspin,
90 const double& nelec,
91 const ModuleBase::matrix& wg,
93 const K_Vectors& kv);
94
95 // For multi-k
96 void idmatrix(const int& ib,
97 const int nspin,
98 const double& nelec,
99 const ModuleBase::matrix& wg,
100 elecstate::DensityMatrix<std::complex<double>, double>& DM,
101 const K_Vectors& kv,
102 const bool if_separate_k);
103
104#endif
105 std::vector<int> bands_picked_;
109};
110#endif // GET_PCHG_LCAO_H
Manages the computation of the charge densities for different bands (band-decomposed charge densities...
Definition get_pchg_lcao.h:17
void prepare_get_pchg(std::ofstream &ofs_running)
Definition get_pchg_lcao.cpp:469
psi::Psi< double > * psi_gamma
Definition get_pchg_lcao.h:106
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:272
~Get_pchg_lcao()
Definition get_pchg_lcao.cpp:18
const Parallel_Orbitals * ParaV
Definition get_pchg_lcao.h:108
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:352
std::vector< int > bands_picked_
Definition get_pchg_lcao.h:105
void begin(Gint_Gamma &gg, 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
psi::Psi< std::complex< double > > * psi_k
Definition get_pchg_lcao.h:107
Definition gint_gamma.h:23
Definition gint_k.h:13
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:16
Definition density_matrix.h:36
Definition psi.h:37