22template <
typename T,
typename Device>
35 template <
typename T_in,
typename Device_in = Device>
40 virtual void act(
const int nbands,
59 const int*
isk =
nullptr;
68 const T *
get_pw(
const int m,
const int iq)
const;
76 void act_op(
const int nbands,
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 op_exx_pw.h:24
psi::Psi< T, Device > psi
Definition op_exx_pw.h:111
bool first_iter
Definition op_exx_pw.h:56
T * h_psi_real
Definition op_exx_pw.h:118
void multiply_potential(T *density_recip, int ik, int iq) const
Definition op_exx_pw.cpp:518
const int * isk
Definition op_exx_pw.h:59
void set_wg(const ModuleBase::matrix *wg_in)
Definition op_exx_pw.h:52
T * density_recip
Definition op_exx_pw.h:120
void get_potential() const
Definition op_exx_pw.cpp:564
T * density_real
Definition op_exx_pw.h:117
ModulePW::PW_Basis * rhopw_dev
Definition op_exx_pw.h:62
Real tpiba
Definition op_exx_pw.h:65
int cnt
Definition op_exx_pw.h:100
void cal_density_recip(const T *psi_nk_real, const T *psi_mq_real, double omega) const
double cal_exx_energy_op(psi::Psi< T, Device > *psi_) const
Definition op_exx_pw.cpp:897
std::map< int, std::vector< int > > q_points
Definition op_exx_pw.h:132
base_device::AbacusDevice_t device
Definition op_exx_pw.h:141
T * psi_nk_real
Definition op_exx_pw.h:115
const ModuleBase::matrix * wg
Definition op_exx_pw.h:112
virtual ~OperatorEXXPW()
Definition op_exx_pw.cpp:89
void rho_recip2real(const T *rho_recip, T *rho_real, bool add=false, Real factor=1.0) const
const ModuleBase::matrix * p_wg
Definition op_exx_pw.h:135
Device * ctx
Definition op_exx_pw.h:139
void construct_ace() const
Definition op_exx_pw.cpp:334
void act_op(const int nbands, const int nbasis, const int npol, const T *tmpsi_in, T *tmhpsi, const int ngk_ik=0, const bool is_first_node=false) const
Definition op_exx_pw.cpp:157
const T * get_pw(const int m, const int iq) const
Definition op_exx_pw.cpp:532
double cal_exx_energy_ace(psi::Psi< T, Device > *psi_) const
Definition op_exx_pw.cpp:862
typename ct::PsiToContainer< Device >::type ct_Device
Definition op_exx_pw.h:143
const ModulePW::PW_Basis_K * wfcpw
Definition op_exx_pw.h:60
T * h_psi_recip
Definition op_exx_pw.h:122
std::vector< T * > Xi_ace_k
Definition op_exx_pw.h:129
const ModulePW::PW_Basis * rhopw
Definition op_exx_pw.h:61
void set_psi(psi::Psi< T, Device > &psi_in) const
Definition op_exx_pw.h:50
void act_op_ace(const int nbands, const int nbasis, const int npol, const T *tmpsi_in, T *tmhpsi, const int ngk_ik=0, const bool is_first_node=false) const
Definition op_exx_pw.cpp:267
T * h_psi_ace
Definition op_exx_pw.h:126
bool gamma_extrapolation
Definition op_exx_pw.h:163
double cal_exx_energy(psi::Psi< T, Device > *psi_) const
Definition op_exx_pw.cpp:849
Real * pot
Definition op_exx_pw.h:123
base_device::DEVICE_CPU * cpu_ctx
Definition op_exx_pw.h:140
std::vector< int > get_q_points(const int ik) const
Definition op_exx_pw.cpp:472
K_Vectors * kv
Definition op_exx_pw.h:108
T * psi_mq_real
Definition op_exx_pw.h:116
T * psi_h_psi_ace
Definition op_exx_pw.h:127
typename GetTypeReal< T >::type Real
Definition op_exx_pw.h:26
T * L_ace
Definition op_exx_pw.h:128
bool potential_got
Definition op_exx_pw.h:102
const UnitCell * ucell
Definition op_exx_pw.h:63
double exx_divergence(Conv_Coulomb_Pot_K::Coulomb_Type coulomb_type, double erfc_omega=0) const
Definition op_exx_pw.cpp:726
virtual void act(const int nbands, const int nbasis, const int npol, const T *tmpsi_in, T *tmhpsi, const int ngk_ik=0, const bool is_first_node=false) const override
Definition op_exx_pw.cpp:131
Definition operator_pw.h:8
int ik
Definition operator.h:101
virtual void add(Operator *next)
bool is_first_node
Definition operator.h:109
#define T
Definition exp.cpp:237
Coulomb_Type
Definition conv_coulomb_pot_k.h:10
AbacusDevice_t
Definition types.h:12
T type
Definition macros.h:8
Definition math_kernel_op.h:132
Definition math_kernel_op.h:168
Definition math_kernel_op.h:217
Definition math_kernel_op.h:151
Definition memory_op.h:77
Definition memory_op.h:17
Definition memory_op.h:31
Definition memory_op.h:45
Definition tensor_types.h:113