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* chg_in,
24 K_Vectors* pkv_in,
25 UnitCell* ucell_in,
26 pseudopot_cell_vnl* ppcell_in,
27 ModulePW::PW_Basis* rhodpw_in,
28 ModulePW::PW_Basis* rhopw_in,
29 ModulePW::PW_Basis_Big* bigpw_in);
30
32
34 virtual void psiToRho(const psi::Psi<T, Device>& psi);
35
36 virtual void cal_tau(const psi::Psi<T, Device>& psi);
37
40
41 Real* becsum = nullptr;
42
44 void init_rho_data();
45 Real** rho = nullptr; // [Device] [spin][nrxx] rho
46 T** rhog = nullptr; // [Device] [spin][nrxx] rhog
47 Real** kin_r = nullptr; // [Device] [spin][nrxx] kin_r
48
50
51 protected:
52
54
55 UnitCell* ucell = nullptr;
56
57 const pseudopot_cell_vnl* ppcell = nullptr;
58
61 void updateRhoK(const psi::Psi<T, Device>& psi); // override;
62
64 void parallelK();
65
67 void rhoBandK(const psi::Psi<T, Device>& psi);
68
71
74 void addusdens_g(const Real* becsum, T** rhog);
75
76 Device * ctx = {};
77
78 bool init_rho = false;
79
80 mutable T* vkb = nullptr;
81
82 Real* rho_data = nullptr;
83 T* rhog_data = nullptr;
84 Real* kin_r_data = nullptr;
85 T* wfcr = nullptr;
86 T* wfcr_another_spin = nullptr;
87
88 private:
91
96
100
103};
104
105} // namespace elecstate
106
107#endif
Definition charge.h:20
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:16
Definition elecstate_pw.h:17
T * wfcr
Definition elecstate_pw.h:85
Real * kin_r_data
Definition elecstate_pw.h:84
T * wfcr_another_spin
Definition elecstate_pw.h:86
UnitCell * ucell
Definition elecstate_pw.h:55
Device * ctx
Definition elecstate_pw.h:76
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:60
bool init_rho
Definition elecstate_pw.h:78
typename GetTypeReal< T >::type Real
Definition elecstate_pw.h:19
Real ** kin_r
Definition elecstate_pw.h:47
void rhoBandK(const psi::Psi< T, Device > &psi)
calcualte rho for each k
Definition elecstate_pw.cpp:172
Real * becsum
Definition elecstate_pw.h:41
Real ** rho
Definition elecstate_pw.h:45
T * vkb
Definition elecstate_pw.h:80
Real * rho_data
Definition elecstate_pw.h:82
void parallelK()
sum over all pools for rho and ebands
Definition elecstate_pw.cpp:164
virtual void psiToRho(const psi::Psi< T, Device > &psi)
interface for HSolver to calculate rho from Psi
Definition elecstate_pw.cpp:111
void cal_becsum(const psi::Psi< T, Device > &psi)
calculate becsum for uspp
Definition elecstate_pw.cpp:271
ModulePW::PW_Basis * rhopw_smooth
Definition elecstate_pw.h:53
ModulePW::PW_Basis_K * basis
Definition elecstate_pw.h:49
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:424
const pseudopot_cell_vnl * ppcell
Definition elecstate_pw.h:57
~ElecStatePW()
Definition elecstate_pw.cpp:33
T ** rhog
Definition elecstate_pw.h:46
void addusdens_g(const Real *becsum, T **rhog)
Definition elecstate_pw.cpp:457
T * rhog_data
Definition elecstate_pw.h:83
void updateRhoK(const psi::Psi< T, Device > &psi)
Definition elecstate_pw.cpp:158
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:61
Definition memory_op.h:77
Definition memory_op.h:17
Definition memory_op.h:31
Definition elecstate_op.h:12
Definition meta_op.h:9