1#ifndef HYDROGEN_RADIALS_H_
2#define HYDROGEN_RADIALS_H_
75 const double charge = 1.0,
76 const bool with_slater_screening =
false,
78 const double rcut = 10.0,
79 const double dr = 0.01,
80 const double conv_thr = 1e-6,
82 const std::string
symbol =
"",
83 const std::string strategy =
"minimal-valence",
84 std::ofstream* ptr_log =
nullptr
91 std::vector<std::pair<int, int>>
unzip_strategy(
const int nmax = 0,
92 const std::string strategy =
"minimal-valence");
97 void smooth(std::vector<double>& rgrid,
98 std::vector<double>& rvalue,
99 const double sigma = 0.1);
111 const bool with_slater_screening,
114 const double conv_thr,
116 std::vector<double>& rgrid,
117 std::vector<double>& rvalue,
118 std::ofstream* ptr_log =
nullptr);
123 double radial_norm(
const std::vector<double> rgrid,
124 const std::vector<double> rvalue);
133 std::map<std::pair<int, int>, std::pair<std::vector<double>, std::vector<double>>>
135 const bool with_slater_screening =
false,
137 const double dr = 0.01,
138 const double conv_thr = 1e-6,
140 const std::string strategy =
"minimal-valence",
141 std::ofstream* ptr_log =
nullptr);
146 std::map<std::pair<int, int>, std::pair<int, int>>
148 const std::string strategy =
"minimal-valence");
157 void hydrogen(
const double charge = 1.0,
158 const bool with_slater_screening =
false,
160 const double dr = 0.01,
161 const double conv_thr = 1e-6,
163 const std::string strategy =
"minimal-valence",
164 std::ofstream* ptr_log =
nullptr);
185 const bool with_slater_screening =
false,
188 const double rmin = 0.0,
189 const double rmax = 10.0,
190 const double dr = 0.01,
192 std::ofstream* ptr_log =
nullptr);
Definition assoc_laguerre.h:8
Definition hydrogen_radials.h:50
std::vector< double > generate_hydrogen_radial_segment(const double charge=1.0, const bool with_slater_screening=false, const int n=0, const int l=0, const double rmin=0.0, const double rmax=10.0, const double dr=0.01, const int rank=0, std::ofstream *ptr_log=nullptr)
generate hydrogen-like radial functions for a given n, l, in a given range [rmin, rmax]
Definition hydrogen_radials.cpp:37
std::map< std::pair< int, int >, std::pair< int, int > > mapping_nl_lzeta(const int nmax=0, const std::string strategy="minimal-valence")
mapping the n, l pairs to the l, zeta pairs
Definition hydrogen_radials.cpp:349
double slater_screening(const std::string symbol, const int n, const int l)
return the Slater screening constant for calculating effective nuclear charge
Definition hydrogen_radials.cpp:413
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 hydrogen_radials.cpp:270
HydrogenRadials * clone() const
copy constructor
Definition hydrogen_radials.h:60
void build(const int itype=0, const double charge=1.0, const bool with_slater_screening=false, const int nmax=0, const double rcut=10.0, const double dr=0.01, const double conv_thr=1e-6, const int rank=0, const std::string symbol="", const std::string strategy="minimal-valence", std::ofstream *ptr_log=nullptr)
build the hydrogen-like radial functions and push into NumericalRadials
Definition hydrogen_radials.cpp:15
std::map< std::pair< int, int >, std::pair< std::vector< double >, std::vector< double > > > generate_orb(const double charge=1.0, const bool with_slater_screening=false, const int nmax=0, const double dr=0.01, const double conv_thr=1e-6, const int rank=0, const std::string strategy="minimal-valence", std::ofstream *ptr_log=nullptr)
generate set of hydrogen-like radial functions for a given charge, nmax, dr, rank,...
Definition hydrogen_radials.cpp:285
~HydrogenRadials()
destructor
Definition hydrogen_radials.h:62
HydrogenRadials & operator=(const HydrogenRadials &rhs)
overloaded assignment operator
Definition hydrogen_radials.cpp:9
double generate_hydrogen_radial_toconv(const double charge, const bool with_slater_screening, const int n, const int l, const double conv_thr, const int rank, std::vector< double > &rgrid, std::vector< double > &rvalue, std::ofstream *ptr_log=nullptr)
generate hydrogen-like radial functions for a given n, l, from 0.0 to a radius where the norm of radi...
Definition hydrogen_radials.cpp:98
double radial_norm(const std::vector< double > rgrid, const std::vector< double > rvalue)
returns the norm of the radial function
Definition hydrogen_radials.cpp:84
HydrogenRadials()
default constructor
Definition hydrogen_radials.h:53
void hydrogen(const double charge=1.0, const bool with_slater_screening=false, const int nmax=0, const double dr=0.01, const double conv_thr=1e-6, const int rank=0, const std::string strategy="minimal-valence", std::ofstream *ptr_log=nullptr)
kernel function of hydrogen-like radial functions
Definition hydrogen_radials.cpp:382
Assoc_Laguerre assoc_laguerre_
Associated Laguerre polynomials generator.
Definition hydrogen_radials.h:194
std::vector< std::pair< int, int > > unzip_strategy(const int nmax=0, const std::string strategy="minimal-valence")
parse the strategy string to get the n, l pairs
Definition hydrogen_radials.cpp:165
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
const std::string & symbol() const
Definition radial_set.h:153