1#ifndef MODULEHAMILTPW_ONSITEPROJECTOR_H
2#define MODULEHAMILTPW_ONSITEPROJECTOR_H
16 template <
typename T,
typename Device>
35 const std::vector<std::string>& orb_files,
36 const std::vector<int>& nproj,
37 const std::vector<int>&
lproj,
38 const std::vector<int>& iproj,
39 const std::vector<double>& onsite_r);
48 const std::complex<double>* ppsi
55 std::vector<int>& nzeta,
56 std::vector<std::vector<double>>& radials,
60 void init(
const std::string& orbital_dir,
66 const double onsite_radius,
98 std::complex<double>*
becp =
nullptr;
108 std::vector<std::vector<int>>
it2ia;
110 std::vector<std::vector<double>>
projs;
double float array
Definition realarray.h:21
Special pw_basis class. It includes different k-points.
Definition pw_basis_k.h:57
RadialProjector is for projecting a function who has seperatable radial and angular parts: f(r) = f(|...
Definition radial_proj.h:67
Definition structure_factor.h:11
Definition onsite_projector.h:18
int size_vproj
Definition onsite_projector.h:103
ModuleBase::matrix nhtol
Definition onsite_projector.h:128
void overlap_proj_psi(const int npm, const std::complex< double > *ppsi)
void init_proj(const std::string &orbital_dir, const std::vector< std::string > &orb_files, const std::vector< int > &nproj, const std::vector< int > &lproj, const std::vector< int > &iproj, const std::vector< double > &onsite_r)
initialize the radial projector for real-space projection involving operators
int get_npwx() const
Definition onsite_projector.h:81
int get_size_becp() const
Definition onsite_projector.h:75
std::vector< std::vector< int > > it2ia
Definition onsite_projector.h:108
std::complex< double > * h_becp
Definition onsite_projector.h:100
std::map< std::tuple< int, int, int, int >, int > itiaiprojm2irow_
Definition onsite_projector.h:125
static OnsiteProjector< T, Device > * get_instance()
static access to this class instance
const UnitCell * ucell
Definition onsite_projector.h:115
std::complex< double > * get_tab_atomic() const
Definition onsite_projector.h:78
std::complex< double > * get_becp() const
Definition onsite_projector.h:76
void cal_occupations(const psi::Psi< std::complex< T >, Device > *psi, const ModuleBase::matrix &wg_in)
calculate and print the occupations of all lm orbitals
RadialProjection::RadialProjector rp_
Definition onsite_projector.h:121
void tabulate_atomic(const int ik, const char grad='n')
calculate the onsite projectors in reciprocal space(|G+K>) for all atoms
OnsiteProjector()
Definition onsite_projector.h:87
int npwx_
Definition onsite_projector.h:106
void init(const std::string &orbital_dir, const UnitCell *ucell_in, const psi::Psi< std::complex< T >, Device > &psi, const K_Vectors &kv, const ModulePW::PW_Basis_K &pw_basis, Structure_Factor &sf, const double onsite_radius, const int nq, const double dq, const ModuleBase::matrix &wg, const ModuleBase::matrix &ekb)
std::complex< double > * get_h_becp() const
Definition onsite_projector.h:77
std::complex< double > * tab_atomic_
Definition onsite_projector.h:97
int get_npw() const
Definition onsite_projector.h:80
std::vector< int > lproj
Definition onsite_projector.h:112
const ModulePW::PW_Basis_K * pw_basis_
Definition onsite_projector.h:117
std::vector< int > iat_nh
Definition onsite_projector.h:113
Device * ctx
Definition onsite_projector.h:90
base_device::DEVICE_CPU * cpu_ctx
Definition onsite_projector.h:91
int tot_nproj
Definition onsite_projector.h:104
std::vector< std::vector< int > > it2iproj
Definition onsite_projector.h:111
int get_tot_nproj() const
Definition onsite_projector.h:79
const int & get_nh(int iat) const
Definition onsite_projector.h:82
std::vector< int > irow2m_
Definition onsite_projector.h:124
std::vector< int > irow2it_
Definition onsite_projector.h:122
Structure_Factor * sf_
Definition onsite_projector.h:118
std::vector< double > rgrid
Definition onsite_projector.h:109
hamilt::Onsite_Proj_tools< T, Device > * get_fs_tools() const
Definition onsite_projector.h:84
int ntype
Definition onsite_projector.h:119
std::complex< double > * becp
Definition onsite_projector.h:98
std::vector< int > irow2iproj_
Definition onsite_projector.h:123
void read_abacus_orb(std::ifstream &ifs, std::string &elem, double &ecut, int &nr, double &dr, std::vector< int > &nzeta, std::vector< std::vector< double > > &radials, const int rank=0)
base_device::AbacusDevice_t device
Definition onsite_projector.h:92
hamilt::Onsite_Proj_tools< T, Device > * fs_tools
Definition onsite_projector.h:95
std::vector< std::vector< double > > projs
Definition onsite_projector.h:110
int size_becp
Definition onsite_projector.h:102
int ik_
Definition onsite_projector.h:107
static OnsiteProjector< T, Device > * instance
Definition onsite_projector.h:93
ModuleBase::realArray tab
Definition onsite_projector.h:127
bool initialed
Definition onsite_projector.h:130
int npw_
Definition onsite_projector.h:105
AbacusDevice_t
Definition types.h:12
Definition onsite_projector.h:15
Definition math_kernel_op.h:217
Definition memory_op.h:77
Definition memory_op.h:17
Definition memory_op.h:31
Definition memory_op.h:45