15 #ifndef QMCPLUSPLUS_RADIALGRIDFUNCTOR_SLATERBASISSET_H 16 #define QMCPLUSPLUS_RADIALGRIDFUNCTOR_SLATERBASISSET_H 26 static_assert(std::is_floating_point<T>::value,
"T must be a float point type");
37 std::vector<Component_t>
sset;
41 bool normalized =
true,
42 const char* node_name =
"radfunc",
43 const char* exp_name =
"exponent",
44 const char* c_name =
"contraction");
49 typename std::vector<Component_t>::iterator it(
sset.begin());
50 typename std::vector<Component_t>::iterator it_end(
sset.end());
62 typename std::vector<Component_t>::iterator it(
sset.begin());
63 typename std::vector<Component_t>::iterator it_end(
sset.end());
77 typename std::vector<Component_t>::iterator it(
sset.begin()), it_end(
sset.end());
80 Y += (*it).evaluate(r, rinv);
92 typename std::vector<Component_t>::iterator it(
sset.begin()), it_end(
sset.end());
95 Y += (*it).evaluate(r, rinv, du, d2u);
109 typename std::vector<Component_t>::iterator it(
sset.begin()), it_end(
sset.end());
112 Y += (*it).evaluate(r, rinv, du, d2u, d3u);
123 APP_ABORT(
" Error: Slater Orbitals with HDF5 not implemented. Please contact developers. Aborting.\n");
130 : L(l), Normalized(normalized), nodeName(node_name), expName(exp_name), coeffName(c_name)
139 std::string cname((
const char*)cur->name);
140 if (cname ==
"radfunc" || cname ==
"Rnl")
145 radAttrib.
add(zeta, expName);
146 radAttrib.
add(zeta,
"alpha");
147 radAttrib.
add(c, coeffName);
148 radAttrib.
add(zeta,
"c");
149 radAttrib.
add(qN,
"node");
150 radAttrib.
add(qN,
"n");
156 LOGMSG(
" Slater Component (n,zeta,c)= " << qN - 1 <<
" " << zeta <<
" " << c)
163 c *= anorm(qN - 1, zeta);
165 LOGMSG(
" Slater Component (n,zeta,c)= " << qN <<
" " << zeta <<
" " << c)
SlaterCombo(int l=0, bool normalized=true, const char *node_name="radfunc", const char *exp_name="exponent", const char *c_name="contraction")
helper functions for EinsplineSetBuilder
void evaluateWithThirdDeriv(real_type r, real_type rinv)
bool put(xmlNodePtr cur)
assign attributes to the set
real_type df(real_type r)
real_type evaluate(real_type r, real_type rinv)
Generic Slater-Type Orbital.
Wrapping information on parallelism.
void evaluateAll(real_type r, real_type rinv)
class to handle a set of attributes of an xmlNode
bool putBasisGroup(xmlNodePtr cur)
#define APP_ABORT(msg)
Widely used but deprecated fatal error macros from legacy code.
std::vector< Component_t > sset
std::vector< xmlNodePtr > InParam
bool putBasisGroupH5(hdf_archive &hin, Communicate &myComm)
void add(PDT &aparam, const std::string &aname, std::vector< PDT > candidate_values={}, TagStatus status=TagStatus::OPTIONAL)
add a new attribute
class to evaluate the normalization factors for the Slater-Type orbitals