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 TWO_CENTER_BUNDLE_H
2#define 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,
41 const bool out_element_info,
42 const bool cal_force) const;
43
44 std::unique_ptr<TwoCenterIntegrator> kinetic_orb;
45 std::unique_ptr<TwoCenterIntegrator> overlap_orb;
46 std::unique_ptr<TwoCenterIntegrator> overlap_orb_beta;
47 std::unique_ptr<TwoCenterIntegrator> overlap_orb_alpha;
48 std::unique_ptr<TwoCenterIntegrator> overlap_orb_onsite;
49
50 std::unique_ptr<RadialCollection> orb_;
51 std::unique_ptr<RadialCollection> beta_;
52 std::unique_ptr<RadialCollection> alpha_;
53 std::unique_ptr<RadialCollection> orb_onsite_;
54};
55
56#endif
Definition ORB_read.h:18
Definition ORB_nonlocal.h:21
Definition two_center_bundle.h:11
std::unique_ptr< TwoCenterIntegrator > kinetic_orb
Definition two_center_bundle.h:44
std::unique_ptr< RadialCollection > orb_
Definition two_center_bundle.h:50
void tabulate()
Definition two_center_bundle.cpp:62
TwoCenterBundle & operator=(TwoCenterBundle &&)=default
std::unique_ptr< RadialCollection > alpha_
Definition two_center_bundle.h:52
std::unique_ptr< TwoCenterIntegrator > overlap_orb_beta
Definition two_center_bundle.h:46
std::unique_ptr< TwoCenterIntegrator > overlap_orb
Definition two_center_bundle.h:45
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:47
std::unique_ptr< RadialCollection > orb_onsite_
Definition two_center_bundle.h:53
std::unique_ptr< TwoCenterIntegrator > overlap_orb_onsite
Definition two_center_bundle.h:48
void build_orb(int ntype, const std::string *file_orb0)
Definition two_center_bundle.cpp:12
void to_LCAO_Orbitals(LCAO_Orbitals &orb, const double lcao_ecut, const double lcao_dk, const double lcao_dr, const double lcao_rmax, const bool out_element_info, const bool cal_force) const
Overwrites the content of a LCAO_Orbitals object (e.g. ORB) with the current object.
Definition two_center_bundle.cpp:207
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:51
~TwoCenterBundle()=default