ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
elecstate_pw.h
Go to the documentation of this file.
1#ifndef ELECSTATEPW_H
2#define ELECSTATEPW_H
3
5
6#include "elecstate.h"
11
12namespace elecstate
13{
14
15template <typename T, typename Device = base_device::DEVICE_CPU>
16class ElecStatePW : public ElecState
17{
18 private:
19 using Real = typename GetTypeReal<T>::type;
20
21 public:
23 Charge* chr_in,
24 K_Vectors* pkv_in,
25 UnitCell* ucell_in,
26 pseudopot_cell_vnl* ppcell_in,
27 ModulePW::PW_Basis* rhopw_in,
28 ModulePW::PW_Basis_Big* bigpw_in);
29
31
33 virtual void psiToRho(const psi::Psi<T, Device>& psi);
34
35 virtual void cal_tau(const psi::Psi<T, Device>& psi);
36
39
40 Real* becsum = nullptr;
41
43 void init_rho_data();
44 Real** rho = nullptr; // [Device] [spin][nrxx] rho
45 T** rhog = nullptr; // [Device] [spin][nrxx] rhog
46 Real** kin_r = nullptr; // [Device] [spin][nrxx] kin_r
47
49
50 protected:
51
53
54 UnitCell* ucell = nullptr;
55
56 const pseudopot_cell_vnl* ppcell = nullptr;
57
60 void updateRhoK(const psi::Psi<T, Device>& psi); // override;
61
63 void parallelK();
64
66 void rhoBandK(const psi::Psi<T, Device>& psi);
67
70
73 void addusdens_g(const Real* becsum, T** rhog);
74
75 Device * ctx = {};
76
77 bool init_rho = false;
78
79 mutable T* vkb = nullptr;
80
81 Real* rho_data = nullptr;
82 T* rhog_data = nullptr;
83 Real* kin_r_data = nullptr;
84 T* wfcr = nullptr;
85 T* wfcr_another_spin = nullptr;
86
87 private:
90
95
99
102};
103
104} // namespace elecstate
105
106#endif
Definition charge.h:18
Definition klist.h:13
Definition pw_basis_big.h:16
Special pw_basis class. It includes different k-points.
Definition pw_basis_k.h:57
A class which can convert a function of "r" to the corresponding linear superposition of plane waves ...
Definition pw_basis.h:56
Definition unitcell.h:17
Definition elecstate_pw.h:17
T * wfcr
Definition elecstate_pw.h:84
Real * kin_r_data
Definition elecstate_pw.h:83
T * wfcr_another_spin
Definition elecstate_pw.h:85
UnitCell * ucell
Definition elecstate_pw.h:54
Device * ctx
Definition elecstate_pw.h:75
virtual void cal_tau(const psi::Psi< T, Device > &psi)
Definition elecstate_pw_cal_tau.cpp:6
void init_rho_data()
init rho_data and kin_r_data
Definition elecstate_pw.cpp:59
bool init_rho
Definition elecstate_pw.h:77
typename GetTypeReal< T >::type Real
Definition elecstate_pw.h:19
Real ** kin_r
Definition elecstate_pw.h:46
void rhoBandK(const psi::Psi< T, Device > &psi)
calcualte rho for each k
Definition elecstate_pw.cpp:171
Real * becsum
Definition elecstate_pw.h:40
Real ** rho
Definition elecstate_pw.h:44
T * vkb
Definition elecstate_pw.h:79
Real * rho_data
Definition elecstate_pw.h:81
void parallelK()
sum over all pools for rho and ebands
Definition elecstate_pw.cpp:163
virtual void psiToRho(const psi::Psi< T, Device > &psi)
interface for HSolver to calculate rho from Psi
Definition elecstate_pw.cpp:110
void cal_becsum(const psi::Psi< T, Device > &psi)
calculate becsum for uspp
Definition elecstate_pw.cpp:270
ModulePW::PW_Basis * rhopw_smooth
Definition elecstate_pw.h:52
ModulePW::PW_Basis_K * basis
Definition elecstate_pw.h:48
void add_usrho(const psi::Psi< T, Device > &psi)
add to the charge density in reciprocal space the part which is due to the US augmentation.
Definition elecstate_pw.cpp:423
const pseudopot_cell_vnl * ppcell
Definition elecstate_pw.h:56
~ElecStatePW()
Definition elecstate_pw.cpp:32
T ** rhog
Definition elecstate_pw.h:45
void addusdens_g(const Real *becsum, T **rhog)
Definition elecstate_pw.cpp:456
T * rhog_data
Definition elecstate_pw.h:82
void updateRhoK(const psi::Psi< T, Device > &psi)
Definition elecstate_pw.cpp:157
Definition elecstate.h:15
Definition VNL_in_pw.h:21
Definition psi.h:37
#define T
Definition exp.cpp:237
Definition cal_dm.h:10
Definition exx_lip.h:23
T type
Definition macros.h:8
Definition math_kernel_op.h:217
Definition math_kernel_op.h:192
Definition memory_op.h:99
Definition memory_op.h:115
Definition memory_op.h:17
Definition memory_op.h:31
Definition elecstate_op.h:12
Definition meta_op.h:9