15 #ifndef QMCPLUSPLUS_RADIALGRIDFUNCTOR_GAUSSIANBASISSET_H 16 #define QMCPLUSPLUS_RADIALGRIDFUNCTOR_GAUSSIANBASISSET_H 26 static_assert(std::is_floating_point<T>::value,
"T must be a float point type");
96 std::vector<BasicGaussian>
gset;
99 bool normalized =
false,
100 const char* node_name =
"radfunc",
101 const char* exp_name =
"exponent",
102 const char* c_name =
"contraction");
114 typename std::vector<BasicGaussian>::const_iterator it(
gset.begin());
115 typename std::vector<BasicGaussian>::const_iterator it_end(
gset.end());
127 typename std::vector<BasicGaussian>::const_iterator it(
gset.begin());
128 typename std::vector<BasicGaussian>::const_iterator it_end(
gset.end());
131 res += (*it).df(r, r2);
141 typename std::vector<BasicGaussian>::iterator it(
gset.begin()), it_end(
gset.end());
156 typename std::vector<BasicGaussian>::iterator it(
gset.begin()), it_end(
gset.end());
159 Y += (*it).evaluate(r, rr,
dY,
d2Y);
170 typename std::vector<BasicGaussian>::iterator it(
gset.begin()), it_end(
gset.end());
173 Y += (*it).evaluate(r, rr,
dY,
d2Y,
d3Y);
191 bool put(xmlNodePtr cur);
212 : Normalized(normalized), nodeName(node_name), expName(exp_name), coeffName(c_name)
227 radAttrib.
add(alpha, expName);
228 radAttrib.
add(c, coeffName);
230 addGaussian(c, alpha);
239 c *= NormL *
std::pow(alpha, NormPow);
249 for (
int i = 0; i < gset.size(); i++)
259 std::string cname((
const char*)cur->name);
260 if (cname ==
"radfunc")
274 if (myComm.
rank() == 0)
276 hin.
read(NbRadFunc,
"NbRadFunc");
277 hin.
push(
"radfunctions");
279 myComm.
bcast(NbRadFunc);
281 for (
int i = 0; i < NbRadFunc; i++)
284 std::stringstream tempdata;
285 std::string dataradID0 =
"DataRad", dataradID;
286 tempdata << dataradID0 << i;
287 dataradID = tempdata.str();
289 if (myComm.
rank() == 0)
291 hin.
push(dataradID.c_str());
292 hin.
read(alpha,
"exponent");
293 hin.
read(c,
"contraction");
300 c *= NormL *
std::pow(alpha, NormPow);
304 if (myComm.
rank() == 0)
308 if (myComm.
rank() == 0)
BasicGaussian(real_type sig, real_type c)
real_type evaluate(real_type r, real_type rinv)
helper functions for EinsplineSetBuilder
int rank() const
return the rank
void reset(real_type sig, real_type c)
real_type f(real_type rr) const
bool put(xmlNodePtr cur)
assign attributes to the set
void evaluateWithThirdDeriv(real_type r, real_type rinv)
Wrapping information on parallelism.
MakeReturn< BinaryNode< FnPow, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t, typename CreateLeaf< Vector< T2, C2 > >::Leaf_t > >::Expression_t pow(const Vector< T1, C1 > &l, const Vector< T2, C2 > &r)
real_type evaluate(real_type r, real_type rr, real_type &du, real_type &d2u, real_type &d3u)
int size() const
return the number Gaussians
real_type df(real_type r)
class to handle a set of attributes of an xmlNode
MakeReturn< UnaryNode< FnArcTan, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t atan(const Vector< T1, C1 > &l)
real_type evaluate(real_type r, real_type rr, real_type &du, real_type &d2u)
OHMMS_PRECISION real_type
MakeReturn< UnaryNode< FnExp, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t exp(const Vector< T1, C1 > &l)
bool putBasisGroupH5(hdf_archive &hin, Communicate &myComm)
int DFactorial(int num)
double factorial of num
void evaluateAll(real_type r, real_type rinv)
void push(const std::string &gname, bool createit=true)
push a group to the group stack
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)
real_type df(real_type r, real_type rr) const
GaussianCombo(int l=0, bool normalized=false, const char *node_name="radfunc", const char *exp_name="exponent", const char *c_name="contraction")
bool putBasisGroup(xmlNodePtr cur)
void read(T &data, const std::string &aname)
read the data from the group aname and check status runtime error is issued on I/O error ...
void addGaussian(real_type c, real_type alpha)
void setgrid(real_type r)
void add(PDT &aparam, const std::string &aname, std::vector< PDT > candidate_values={}, TagStatus status=TagStatus::OPTIONAL)
add a new attribute
std::vector< BasicGaussian > gset