ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
math_ylm_op.h
Go to the documentation of this file.
1#ifndef MODULE_BASE_MATH_MULTI_DEVICE_H
2#define MODULE_BASE_MATH_MULTI_DEVICE_H
3
4#include "source_psi/psi.h"
5#include <complex>
6
7namespace ModuleBase {
8
9template <typename FPTYPE, typename Device>
29 const Device *ctx,
30 const int &ng,
31 const int &lmax,
32 const FPTYPE &SQRT2,
33 const FPTYPE &PI,
34 const FPTYPE &PI_HALF,
35 const FPTYPE &FOUR_PI,
36 const FPTYPE &SQRT_INVERSE_FOUR_PI,
37 const FPTYPE *g,
38 FPTYPE * p,
39 FPTYPE * ylm);
40};
41
42#if __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM
43template <typename FPTYPE>
44struct cal_ylm_real_op<FPTYPE, base_device::DEVICE_GPU>
45{
46 void operator()(const base_device::DEVICE_GPU* ctx,
47 const int& ng,
48 const int& lmax,
49 const FPTYPE& SQRT2,
50 const FPTYPE& PI,
51 const FPTYPE& PI_HALF,
52 const FPTYPE& FOUR_PI,
53 const FPTYPE& SQRT_INVERSE_FOUR_PI,
54 const FPTYPE* g,
55 FPTYPE* p,
56 FPTYPE* ylm);
57};
58
59#endif // __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM
60} // namespace ModuleBase
61#endif //MODULE_BASE_MATH_MULTI_DEVICE_H
Definition array_pool.h:6
const double PI
Definition constants.h:19
const double SQRT2
Definition constants.h:27
const double PI_HALF
Definition constants.h:20
const double FOUR_PI
Definition constants.h:22
const double SQRT_INVERSE_FOUR_PI
Definition constants.h:26
Definition device.cpp:21
Definition math_ylm_op.h:10
void operator()(const Device *ctx, const int &ng, const int &lmax, const FPTYPE &SQRT2, const FPTYPE &PI, const FPTYPE &PI_HALF, const FPTYPE &FOUR_PI, const FPTYPE &SQRT_INVERSE_FOUR_PI, const FPTYPE *g, FPTYPE *p, FPTYPE *ylm)
YLM_REAL::Real spherical harmonics ylm(G) up to l=lmax Use Numerical recursive algorithm as given in ...