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"
8#include "source_psi/psi.h"
9
18{
19 public:
20 Get_pchg_lcao(psi::Psi<double>* psi_gamma_in, const Parallel_Orbitals* ParaV_in);
21 Get_pchg_lcao(psi::Psi<std::complex<double>>* psi_k_in, const Parallel_Orbitals* ParaV_in);
22
24
25 // For gamma_only
26 void begin(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(double** rho,
43 std::complex<double>** rhog,
44 const ModuleBase::matrix& wg,
45 const std::vector<double>& ef_all_spin,
46 const ModulePW::PW_Basis* rho_pw,
47 const int rhopw_nrxx,
48 const std::vector<int>& out_pchg,
49 const int nbands,
50 const double nelec,
51 const int nspin,
52 UnitCell* ucell_in,
53 const Parallel_Grid& pgrid,
54 const Grid_Driver* GridD_in,
55 const K_Vectors& kv,
56 const std::string& global_out_dir,
57 std::ofstream& ofs_running,
58 const bool if_separate_k,
59 const int chr_ngmc);
60
61 private:
62 void prepare_get_pchg(std::ofstream& ofs_running);
63
71 void select_bands(const std::vector<int>& out_pchg, const int nbands, const int fermi_band);
72
73#ifdef __MPI
87 void idmatrix(const int& ib,
88 const int nspin,
89 const double& nelec,
90 const ModuleBase::matrix& wg,
92 const K_Vectors& kv);
93
94 // For multi-k
95 void idmatrix(const int& ib,
96 const int nspin,
97 const double& nelec,
98 const ModuleBase::matrix& wg,
99 elecstate::DensityMatrix<std::complex<double>, double>& DM,
100 const K_Vectors& kv,
101 const bool if_separate_k);
102
103#endif
104 std::vector<int> bands_picked_;
107 const Parallel_Orbitals* ParaV = nullptr;
108};
109#endif // GET_PCHG_LCAO_H
Manages the computation of the charge densities for different bands (band-decomposed charge densities...
Definition get_pchg_lcao.h:18
void prepare_get_pchg(std::ofstream &ofs_running)
Definition get_pchg_lcao.cpp:453
psi::Psi< double > * psi_gamma
Definition get_pchg_lcao.h:105
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:256
~Get_pchg_lcao()
Definition get_pchg_lcao.cpp:18
const Parallel_Orbitals * ParaV
Definition get_pchg_lcao.h:107
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:336
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:104
psi::Psi< std::complex< double > > * psi_k
Definition get_pchg_lcao.h:106
Definition sltk_grid_driver.h:40
Definition klist.h:12
Definition matrix.h:18
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:7
Definition parallel_orbitals.h:9
Definition unitcell.h:15
Definition density_matrix.h:70
Definition psi.h:37