ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
pswfc_radials.h
Go to the documentation of this file.
1#ifndef PSWFC_RADIALS_H_
2#define PSWFC_RADIALS_H_
3
5#include <map>
6#include <vector>
7
8class PswfcRadials : public RadialSet {
9 public:
12 PswfcRadials* clone() const { return new PswfcRadials(*this); }
21 void build(const std::string& file = "",
22 const int itype = 0,
23 const double screening_coeff = 0.1,
24 const double conv_thr = 1e-10,
25 std::ofstream* ptr_log = nullptr,
26 const int rank = 0);
27
34 void read_upf_pswfc(std::ifstream& ifs,
35 const double screening_coeff,
36 const double conv_thr,
37 std::ofstream* ptr_log = nullptr,
38 const int rank = 0
39 );
40
45 double radial_norm(const std::vector<double> rgrid,
46 const std::vector<double> rvalue);
51 bool startswith(std::string word, std::string pattern);
56 std::string read_keyword_value(std::ifstream& ifs, std::string word);
60 std::string steal_from_quotes(std::string word);
65 std::string steal_from_quotes(std::ifstream& ifs, std::string word);
66
72 double cut_to_convergence(const std::vector<double>& rgrid,
73 std::vector<double>& rvalue,
74 const double& conv_thr);
79 void smooth(std::vector<double>& rgrid,
80 std::vector<double>& rvalue,
81 const double sigma = 0.1);
85 std::vector<double> pswfc_prepossess(std::map<std::pair<int, int>, std::vector<double>>& pswfc_map,
86 const double conv_thr = 1e-6);
87 private:
88
89};
90#endif // PSWFC_RADIALS_H_
Definition pswfc_radials.h:8
double radial_norm(const std::vector< double > rgrid, const std::vector< double > rvalue)
returns the norm of the radial function
Definition pswfc_radials.cpp:141
PswfcRadials()
Definition pswfc_radials.h:10
std::vector< double > pswfc_prepossess(std::map< std::pair< int, int >, std::vector< double > > &pswfc_map, const double conv_thr=1e-6)
call cut_to_convergence for each (l,zeta) corresponding orbital in std::map, then zero-padding to the...
Definition pswfc_radials.cpp:202
void read_upf_pswfc(std::ifstream &ifs, const double screening_coeff, const double conv_thr, std::ofstream *ptr_log=nullptr, const int rank=0)
read ONCVPSP program generated pseudopotential file, and store the radial functions in RadialCollecti...
Definition pswfc_radials.cpp:247
~PswfcRadials()
Definition pswfc_radials.h:13
PswfcRadials * clone() const
for polymorphic copy
Definition pswfc_radials.h:12
PswfcRadials & operator=(const PswfcRadials &rhs)
Definition pswfc_radials.cpp:13
void smooth(std::vector< double > &rgrid, std::vector< double > &rvalue, const double sigma=0.1)
smooth the radial function to avoid high frequency noise in FFT-spherical bessel transform
Definition pswfc_radials.cpp:190
bool startswith(std::string word, std::string pattern)
python-like startswith function
Definition pswfc_radials.cpp:57
void build(const std::string &file="", const int itype=0, const double screening_coeff=0.1, const double conv_thr=1e-10, std::ofstream *ptr_log=nullptr, const int rank=0)
central function to build RadialCollection from ONCVPSP program generated pseudopotential file
Definition pswfc_radials.cpp:19
std::string steal_from_quotes(std::string word)
steal string from quotes
Definition pswfc_radials.cpp:76
double cut_to_convergence(const std::vector< double > &rgrid, std::vector< double > &rvalue, const double &conv_thr)
cut radial function to convergence
Definition pswfc_radials.cpp:154
std::string read_keyword_value(std::ifstream &ifs, std::string word)
read value from attributes in HTML-like format
Definition pswfc_radials.cpp:125
An abstract class representing the set of all numerical radial functions (of the same kind) from a si...
Definition radial_set.h:26
int itype() const
Definition radial_set.h:154
file(GLOB ATen_CORE_SRCS "*.cpp") set(ATen_CPU_SRCS $
Definition CMakeLists.txt:1