ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
nonlocal_op.h
Go to the documentation of this file.
1#ifndef MODULE_HAMILT_NONLOCAL_H
2#define MODULE_HAMILT_NONLOCAL_H
3
4#include "source_psi/psi.h"
5#include <complex>
6
7namespace hamilt {
8template <typename FPTYPE, typename Device>
30 const Device* dev,
31 const int& l1,
32 const int& l2,
33 const int& l3,
34 int& sum,
35 int& iat,
36 const int& spin,
37 const int& nkb,
38 const int& deeq_x,
39 const int& deeq_y,
40 const int& deeq_z,
41 const FPTYPE* deeq,
42 std::complex<FPTYPE>* ps,
43 const std::complex<FPTYPE>* becp);
44
64 const Device* dev,
65 const int& l1,
66 const int& l2,
67 const int& l3,
68 int& sum,
69 int& iat,
70 const int& nkb,
71 const int& deeq_x,
72 const int& deeq_y,
73 const int& deeq_z,
74 const std::complex<FPTYPE>* deeq_nc,
75 std::complex<FPTYPE>* ps,
76 const std::complex<FPTYPE>* becp);
77};
78
79#if __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM
80// Partially specialize functor for base_device::GpuDevice.
81template <typename FPTYPE>
82struct nonlocal_pw_op<FPTYPE, base_device::DEVICE_GPU>
83{
84 void operator()(const base_device::DEVICE_GPU* dev,
85 const int& l1,
86 const int& l2,
87 const int& l3,
88 int& sum,
89 int& iat,
90 const int& spin,
91 const int& nkb,
92 const int& deeq_x,
93 const int& deeq_y,
94 const int& deeq_z,
95 const FPTYPE* deeq,
96 std::complex<FPTYPE>* ps,
97 const std::complex<FPTYPE>* becp);
98
99 void operator()(const base_device::DEVICE_GPU* dev,
100 const int& l1,
101 const int& l2,
102 const int& l3,
103 int& sum,
104 int& iat,
105 const int& nkb,
106 const int& deeq_x,
107 const int& deeq_y,
108 const int& deeq_z,
109 const std::complex<FPTYPE>* deeq_nc,
110 std::complex<FPTYPE>* ps,
111 const std::complex<FPTYPE>* becp);
112};
113#endif // __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM
114} // namespace hamilt
115#endif //MODULE_HAMILT_NONLOCAL_H
Definition device.cpp:21
Definition hamilt.h:12
Definition nonlocal_op.h:9
void operator()(const Device *dev, const int &l1, const int &l2, const int &l3, int &sum, int &iat, const int &spin, const int &nkb, const int &deeq_x, const int &deeq_y, const int &deeq_z, const FPTYPE *deeq, std::complex< FPTYPE > *ps, const std::complex< FPTYPE > *becp)
Compute the nonlocal potential of hPsi.