ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
setup_psi_pw.h
Go to the documentation of this file.
1#ifndef SETUP_PSI_PW_H
2#define SETUP_PSI_PW_H
3
6#include "source_cell/klist.h"
13
14template <typename T, typename Device = base_device::DEVICE_CPU>
16{
17 public:
18
21
22 //------------
23 // variables
24 // psi_cpu, complex<double> on cpu
25 // psi_t, complex<T> on cpu/gpu
26 // psi_d, complex<double> on cpu/gpu
27 //------------
28
29 // originally, this term is psi
30 // for PW, we have psi_cpu
31 psi::Psi<std::complex<double>, base_device::DEVICE_CPU>* psi_cpu = nullptr;
32
33 // originally, this term is kspw_psi
34 // if CPU, kspw_psi = psi, otherwise, kspw_psi has a new copy
36
37 // originally, this term is __kspw_psi
39
40 // psi_initializer controller
42
43 bool already_initpsi = false;
44
45 //------------
46 // functions
47 //------------
48
49 void before_runner(
50 const UnitCell &ucell,
51 const K_Vectors &kv,
52 const Structure_Factor &sf,
53 const ModulePW::PW_Basis_K &pw_wfc,
54 const pseudopot_cell_vnl &ppcell,
55 const Input_para &inp);
56
57 void init(hamilt::Hamilt<T, Device>* p_hamilt);
58
59 void update_psi_d();
60
61 // Transfer data from device to host in pw basis
62 void copy_d2h(const base_device::AbacusDevice_t &device);
63
64 void clean();
65
66 private:
67
69 = base_device::memory::cast_memory_op<std::complex<double>, T, base_device::DEVICE_CPU, Device>;
70
71};
72
73
74#endif
Definition klist.h:13
Special pw_basis class. It includes different k-points.
Definition pw_basis_k.h:57
Definition setup_psi_pw.h:16
psi::Psi< T, Device > * psi_t
Definition setup_psi_pw.h:35
void before_runner(const UnitCell &ucell, const K_Vectors &kv, const Structure_Factor &sf, const ModulePW::PW_Basis_K &pw_wfc, const pseudopot_cell_vnl &ppcell, const Input_para &inp)
Definition setup_psi_pw.cpp:11
void update_psi_d()
Definition setup_psi_pw.cpp:38
bool already_initpsi
Definition setup_psi_pw.h:43
void init(hamilt::Hamilt< T, Device > *p_hamilt)
Definition setup_psi_pw.cpp:52
~Setup_Psi_pw()
Definition setup_psi_pw.cpp:8
psi::Psi< std::complex< double >, Device > * psi_d
Definition setup_psi_pw.h:38
void clean()
Definition setup_psi_pw.cpp:83
Setup_Psi_pw()
Definition setup_psi_pw.cpp:5
void copy_d2h(const base_device::AbacusDevice_t &device)
Definition setup_psi_pw.cpp:65
psi::PSIInit< T, Device > * p_psi_init
Definition setup_psi_pw.h:41
psi::Psi< std::complex< double >, base_device::DEVICE_CPU > * psi_cpu
Definition setup_psi_pw.h:31
Definition structure_factor.h:11
Definition unitcell.h:17
Definition hamilt.h:16
Definition VNL_in_pw.h:21
Definition psi_init.h:12
Definition psi.h:37
#define T
Definition exp.cpp:237
AbacusDevice_t
Definition types.h:12
Definition input_parameter.h:13
Definition memory_op.h:99