ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
sph_bessel_recursive.h
Go to the documentation of this file.
1//==========================================================
2// AUTHOR : Peize Lin
3// DATE : 2017-04-24
4//==========================================================
5
6#ifndef SPH_BESSEL_RECURSIVE_H
7#define SPH_BESSEL_RECURSIVE_H
8
9#include <vector>
10#include<cstddef>
11
12namespace ModuleBase
13{
14
16{
17public:
18 class D1;
19 class D2;
20};
21
22
23
25{
26public:
27 const std::vector<std::vector<double>> & cal_jlx( const int lmax, const size_t ix_size );
28 const std::vector<std::vector<double>> & get_jlx()const{ return jlx; }
29
30 void set_dx(const double dx_in);
31 double get_dx()const{ return dx; }
32
33private:
34 std::vector<std::vector<double>> jlx; // jlx[l][x]
35 double dx = 0.0;
36 bool finish_set_dx = false;
37
38 void cal_jlx_0( const int l_size );
39 void cal_jlx_smallx( const int l_size, const size_t ix_size );
40 void cal_jlx_recursive( const int l_size, const size_t ix_size );
41
42
43 double threshold = 1e-8; // Peize Lin test
44};
45
46
47
49{
50public:
51 const std::vector<std::vector<std::vector<double>>> & cal_jlx( const int lmax, const size_t ix1_size, const size_t ix2_size );
52 const std::vector<std::vector<std::vector<double>>> & get_jlx()const{ return jlx; }
53
54 void set_dx(const double dx_in);
55 double get_dx()const{ return dx; }
56
57private:
58 std::vector<std::vector<std::vector<double>>> jlx; // jlx[l][x1][x2]
59 double dx = 0.0;
60 bool finish_set_dx = false;
61
62 void cal_jlx_0( const int l_size, const size_t ix1_size, const size_t ix2_size );
63 void cal_jlx_smallx( const int l_size, const size_t ix1_size, const size_t ix2_size );
64 void cal_jlx_recursive( const int l_size, const size_t ix1_size, const size_t ix2_size );
65
66
67 double threshold = 1e-8; // Peize Lin test
68};
69
70
71
73{
74public:
75 class D1
76 {
77 public:
78 static std::vector<Sph_Bessel_Recursive::D1> sb_pool;
79 };
80 class D2
81 {
82 public:
83 static std::vector<Sph_Bessel_Recursive::D2> sb_pool;
84 };
85};
86
87}
88
89#endif // SPH_BESSEL_RECURSIVE_H
Definition sph_bessel_recursive.h:25
void cal_jlx_0(const int l_size)
Definition sph_bessel_recursive-d1.cpp:38
void cal_jlx_recursive(const int l_size, const size_t ix_size)
Definition sph_bessel_recursive-d1.cpp:83
double dx
Definition sph_bessel_recursive.h:35
double threshold
Definition sph_bessel_recursive.h:43
void cal_jlx_smallx(const int l_size, const size_t ix_size)
Definition sph_bessel_recursive-d1.cpp:56
double get_dx() const
Definition sph_bessel_recursive.h:31
std::vector< std::vector< double > > jlx
Definition sph_bessel_recursive.h:34
const std::vector< std::vector< double > > & cal_jlx(const int lmax, const size_t ix_size)
Definition sph_bessel_recursive-d1.cpp:28
bool finish_set_dx
Definition sph_bessel_recursive.h:36
void set_dx(const double dx_in)
Definition sph_bessel_recursive-d1.cpp:17
const std::vector< std::vector< double > > & get_jlx() const
Definition sph_bessel_recursive.h:28
Definition sph_bessel_recursive.h:49
double get_dx() const
Definition sph_bessel_recursive.h:55
void cal_jlx_0(const int l_size, const size_t ix1_size, const size_t ix2_size)
Definition sph_bessel_recursive-d2.cpp:39
void set_dx(const double dx_in)
Definition sph_bessel_recursive-d2.cpp:18
double dx
Definition sph_bessel_recursive.h:59
const std::vector< std::vector< std::vector< double > > > & cal_jlx(const int lmax, const size_t ix1_size, const size_t ix2_size)
Definition sph_bessel_recursive-d2.cpp:29
void cal_jlx_smallx(const int l_size, const size_t ix1_size, const size_t ix2_size)
Definition sph_bessel_recursive-d2.cpp:56
bool finish_set_dx
Definition sph_bessel_recursive.h:60
std::vector< std::vector< std::vector< double > > > jlx
Definition sph_bessel_recursive.h:58
double threshold
Definition sph_bessel_recursive.h:67
void cal_jlx_recursive(const int l_size, const size_t ix1_size, const size_t ix2_size)
Definition sph_bessel_recursive-d2.cpp:83
const std::vector< std::vector< std::vector< double > > > & get_jlx() const
Definition sph_bessel_recursive.h:52
Definition sph_bessel_recursive.h:76
static std::vector< Sph_Bessel_Recursive::D1 > sb_pool
Definition sph_bessel_recursive.h:78
Definition sph_bessel_recursive.h:81
static std::vector< Sph_Bessel_Recursive::D2 > sb_pool
Definition sph_bessel_recursive.h:83
Definition sph_bessel_recursive.h:73
Definition sph_bessel_recursive.h:16
Definition array_pool.h:6