ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
two_center_bundle.h
Go to the documentation of this file.
1#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_BASIS_MODULE_NAO_TWO_CENTER_BUNDLE_H
2#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_BASIS_MODULE_NAO_TWO_CENTER_BUNDLE_H
3
6
7#include <memory>
8#include <string>
9
11{
12 public:
13 TwoCenterBundle() = default;
14 ~TwoCenterBundle() = default;
16
17 // NOTE: some variables might be set only on RANK-0
18 void build_orb(int ntype, const std::string* file_orb0);
19 void build_beta(int ntype, Numerical_Nonlocal* nl);
20 void build_alpha(int ndesc = 0, std::string* file_desc0 = nullptr);
21 void build_orb_onsite(const double& radius);
22
23 void tabulate();
24
25 // Unlike the tabulate() above, this overload function computes
26 // two-center integration table by direct integration with Simpson's
27 // rule, which was the algorithm used prior to v3.3.4.
28 void tabulate(const double lcao_ecut, const double lcao_dk, const double lcao_dr, const double lcao_rmax);
29
37 const double lcao_ecut,
38 const double lcao_dk,
39 const double lcao_dr,
40 const double lcao_rmax) const;
41
42 std::unique_ptr<TwoCenterIntegrator> kinetic_orb;
43 std::unique_ptr<TwoCenterIntegrator> overlap_orb;
44 std::unique_ptr<TwoCenterIntegrator> overlap_orb_beta;
45 std::unique_ptr<TwoCenterIntegrator> overlap_orb_alpha;
46 std::unique_ptr<TwoCenterIntegrator> overlap_orb_onsite;
47
48 std::unique_ptr<RadialCollection> orb_;
49 std::unique_ptr<RadialCollection> beta_;
50 std::unique_ptr<RadialCollection> alpha_;
51 std::unique_ptr<RadialCollection> orb_onsite_;
52};
53
54#endif
Definition ORB_read.h:19
Definition ORB_nonlocal.h:22
Definition two_center_bundle.h:11
std::unique_ptr< TwoCenterIntegrator > kinetic_orb
Definition two_center_bundle.h:42
std::unique_ptr< RadialCollection > orb_
Definition two_center_bundle.h:48
void tabulate()
Definition two_center_bundle.cpp:62
TwoCenterBundle & operator=(TwoCenterBundle &&)=default
std::unique_ptr< RadialCollection > alpha_
Definition two_center_bundle.h:50
std::unique_ptr< TwoCenterIntegrator > overlap_orb_beta
Definition two_center_bundle.h:44
std::unique_ptr< TwoCenterIntegrator > overlap_orb
Definition two_center_bundle.h:43
void build_beta(int ntype, Numerical_Nonlocal *nl)
Definition two_center_bundle.cpp:29
std::unique_ptr< TwoCenterIntegrator > overlap_orb_alpha
Definition two_center_bundle.h:45
std::unique_ptr< RadialCollection > orb_onsite_
Definition two_center_bundle.h:51
std::unique_ptr< TwoCenterIntegrator > overlap_orb_onsite
Definition two_center_bundle.h:46
void build_orb(int ntype, const std::string *file_orb0)
Definition two_center_bundle.cpp:12
TwoCenterBundle()=default
void build_orb_onsite(const double &radius)
Definition two_center_bundle.cpp:53
void build_alpha(int ndesc=0, std::string *file_desc0=nullptr)
Definition two_center_bundle.cpp:35
std::unique_ptr< RadialCollection > beta_
Definition two_center_bundle.h:49
void to_LCAO_Orbitals(LCAO_Orbitals &orb, const double lcao_ecut, const double lcao_dk, const double lcao_dr, const double lcao_rmax) const
Overwrites the content of a LCAO_Orbitals object (e.g. ORB) with the current object.
Definition two_center_bundle.cpp:207
~TwoCenterBundle()=default