ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
sphbes_radials.h
Go to the documentation of this file.
1#ifndef SPHBES_RADIALS_H_
2#define SPHBES_RADIALS_H_
3
4#include <map>
5#include <vector>
6#include <string>
7
9
15{
16 public:
19 RadialSet(other), sigma_(other.sigma_), dr_(other.dr_), coeff_(other.coeff_) {}
20
22 SphbesRadials* clone() const { return new SphbesRadials(*this); } // covariant return type
23
24 ~SphbesRadials() {} // ~RadialSet() is called automatically
25
35 void build(const std::string& file,
36 const double dr = 0.01,
37 const int itype = 0,
38 std::ofstream* ptr_log = nullptr,
39 const int rank = 0
40 );
41
56 void build(const int lmax,
57 const int nbes,
58 const double rcut,
59 const double sigma,
60 const double dr = 0.01,
61 const int itype = 0,
62 std::ofstream* ptr_log = nullptr,
63 const int rank = 0
64 );
65
70 double sigma() const { return sigma_; }
71 double dr() const { return dr_; }
72 std::vector<double> const& coeff(const int l, const int izeta) const { return coeff_.at(std::make_pair(l, izeta)); }
74
75 private:
76
78 double sigma_ = 0.0;
79
81 double dr_ = 0.01;
82
84 std::map<std::pair<int,int>, std::vector<double>> coeff_;
85
87 void read_coeff(std::ifstream& ifs,
88 std::ofstream* ptr_log = nullptr,
89 const int rank = 0);
90
92 void build_radset(const bool normalize = true);
93
95 std::string extract(std::string const& str, std::string const& keyword);
96
98 std::vector<std::string> split(std::string const& str, const char* delim = " \n\t");
99
101 std::vector<double> sphbes_comb(const int l,
102 std::vector<double> const& coeff_q,
103 double rcut,
104 double dr,
105 std::vector<double> const& q
106 );
107
109 double smooth(double r, double rcut, double sigma);
110
111};
112
113#endif
114
An abstract class representing the set of all numerical radial functions (of the same kind) from a si...
Definition radial_set.h:26
int lmax() const
Definition radial_set.h:155
int itype() const
Definition radial_set.h:154
Numerical radials from spherical Bessel coefficients.
Definition sphbes_radials.h:15
~SphbesRadials()
Definition sphbes_radials.h:24
std::vector< double > sphbes_comb(const int l, std::vector< double > const &coeff_q, double rcut, double dr, std::vector< double > const &q)
Computes the combination of spherical Bessel functions on a uniform grid.
Definition sphbes_radials.cpp:202
std::string extract(std::string const &str, std::string const &keyword)
Extracts a substring (VALUE) from a string of the form KEYWORD=" VALUE ".
Definition sphbes_radials.cpp:181
void build(const std::string &file, const double dr=0.01, const int itype=0, std::ofstream *ptr_log=nullptr, const int rank=0)
Builds the class from a spherical Bessel coefficient file.
Definition sphbes_radials.cpp:24
std::vector< double > const & coeff(const int l, const int izeta) const
Definition sphbes_radials.h:72
SphbesRadials * clone() const
for polymorphic copy
Definition sphbes_radials.h:22
double dr_
Radial grid spacing.
Definition sphbes_radials.h:81
SphbesRadials()
Definition sphbes_radials.h:17
void build_radset(const bool normalize=true)
Definition sphbes_radials.cpp:240
double sigma() const
Definition sphbes_radials.h:70
std::vector< std::string > split(std::string const &str, const char *delim=" \n\t")
Splits a string into a vector of substrings with given delimiters.
Definition sphbes_radials.cpp:190
std::map< std::pair< int, int >, std::vector< double > > coeff_
Spherical Bessel coefficients coeff_[{l,zeta}][q].
Definition sphbes_radials.h:84
double smooth(double r, double rcut, double sigma)
Smoothing function.
Definition sphbes_radials.cpp:235
void read_coeff(std::ifstream &ifs, std::ofstream *ptr_log=nullptr, const int rank=0)
Reads spherical Bessel coefficients, cutoff radius & smoothing parameter from a file stream.
Definition sphbes_radials.cpp:124
SphbesRadials & operator=(const SphbesRadials &rhs)
Definition sphbes_radials.cpp:12
double sigma_
Smoothing parameter.
Definition sphbes_radials.h:78
double dr() const
Definition sphbes_radials.h:71
SphbesRadials(const SphbesRadials &other)
Definition sphbes_radials.h:18
void normalize(const std::vector< double > &r, std::vector< double > &flz)
Definition psi_initializer_nao.cpp:33
file(GLOB ATen_CORE_SRCS "*.cpp") set(ATen_CPU_SRCS $
Definition CMakeLists.txt:1