ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
fR_overlap.h
Go to the documentation of this file.
1#ifndef FR_OVERLAP_H
2#define FR_OVERLAP_H
3#ifdef __LCAO
4#include <complex>
5#include <functional>
11
12
13template <typename T>
14class FR_overlap
15{
16public:
17 using fr_ptr = std::function<T(ModuleBase::Vector3<double>)>;
18
19 FR_overlap();
20
21 void set_parameters(fr_ptr fr_in,
22 const UnitCell* ucell_in,
23 const LCAO_Orbitals* ptr_orb,
24 const Grid_Driver* GridD_in,
25 const Parallel_Orbitals* paraV,
26 int radial_grid_num = 140,
27 int degree = 110);
28
29 FR_overlap(const FR_overlap<T>& FR_in);
30
31 FR_overlap(FR_overlap<T>&& FR_in);
32
33 ~FR_overlap();
34
35 void calculate_FR();
36
37 hamilt::HContainer<T>* get_FR_pointer() const
38 {
39 return this->FR_container;
40 }
41
42protected:
43 void initialize_FR(const Grid_Driver* GridD, const Parallel_Orbitals* paraV);
44
45 void cal_FR_IJR(const int& iat1,
46 const int& iat2,
47 const Parallel_Orbitals* paraV,
49 T* data_pointer);
50
51 std::map<std::pair<int, int>, double> psi_inter(const int& T1,
52 const std::set<std::pair<int, int>>& LN_pair1,
53 const double& r_norm);
54
55 double Polynomial_Interpolation(const double* psi_r, const int& mesh_r, const double& dr, const double& x);
56
57 fr_ptr fr = nullptr;
58 const UnitCell* ucell = nullptr;
59 const LCAO_Orbitals* ptr_orb_ = nullptr;
60 int radial_grid_num = 140;
61 ModuleBase::Lebedev_laikov_grid* Leb_grid = nullptr;
62 hamilt::HContainer<T>* FR_container = nullptr;
63};
64#endif
65#endif
Definition sltk_grid_driver.h:43
Definition ORB_read.h:19
Definition math_lebedev_laikov.h:12
3 elements vector
Definition vector3.h:22
Definition parallel_orbitals.h:9
Definition unitcell.h:16
Definition hcontainer.h:144
#define T
Definition exp.cpp:237