QMCPACK
DerivYukawaBreakup< T > Struct Template Reference
+ Collaboration diagram for DerivYukawaBreakup< T >:

Public Member Functions

 DerivYukawaBreakup ()
 
void reset (ParticleSet &ref)
 
void reset (ParticleSet &ref, T rs)
 
operator() (T r, T rinv) const
 need the df(r)/d(rs) More...
 
df (T r) const
 need d(df(r)/d(rs))/dr More...
 
integrate_r2 (T rc) const
 
Fk (T k, T rc) const
 
Xk (T k, T rc) const
 integral from kc to infinity More...
 

Public Attributes

Rc
 
Rs
 
SqrtRs
 
OneOverSqrtRs
 
NormFactor
 
OneOverSqrtRs3
 
OneOverRs
 
DerivSecondTaylorTerm
 
n2
 

Detailed Description

template<class T = double>
struct qmcplusplus::DerivYukawaBreakup< T >

Definition at line 252 of file LRBreakupUtilities.h.

Constructor & Destructor Documentation

◆ DerivYukawaBreakup()

DerivYukawaBreakup ( )
inline

Definition at line 264 of file LRBreakupUtilities.h.

264 {}

Member Function Documentation

◆ df()

T df ( r) const
inline

need d(df(r)/d(rs))/dr

Definition at line 304 of file LRBreakupUtilities.h.

References qmcplusplus::exp(), DerivYukawaBreakup< T >::OneOverRs, and DerivYukawaBreakup< T >::OneOverSqrtRs.

305  {
306  if (r < std::numeric_limits<T>::epsilon())
307  return -0.5 * OneOverRs * (1.0 - r * OneOverSqrtRs);
308  else
309  {
310  return -0.5 * OneOverRs * std::exp(-r * OneOverSqrtRs);
311  }
312  }
MakeReturn< UnaryNode< FnExp, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t exp(const Vector< T1, C1 > &l)

◆ Fk()

T Fk ( k,
rc 
) const
inline

Definition at line 316 of file LRBreakupUtilities.h.

References DerivYukawaBreakup< T >::Xk().

316 { return -Xk(k, rc); }
T Xk(T k, T rc) const
integral from kc to infinity

◆ integrate_r2()

T integrate_r2 ( rc) const
inline

Definition at line 314 of file LRBreakupUtilities.h.

314 { return 0.0; }

◆ operator()()

T operator() ( r,
rinv 
) const
inline

need the df(r)/d(rs)

Definition at line 293 of file LRBreakupUtilities.h.

References qmcplusplus::exp(), and DerivYukawaBreakup< T >::OneOverSqrtRs.

294  {
295  if (r < std::numeric_limits<T>::epsilon())
296  return 0.5 * OneOverSqrtRs * (1.0 - r * OneOverSqrtRs);
297  else
298  {
299  return 0.5 * OneOverSqrtRs * std::exp(-r * OneOverSqrtRs);
300  }
301  }
MakeReturn< UnaryNode< FnExp, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t exp(const Vector< T1, C1 > &l)

◆ reset() [1/2]

void reset ( ParticleSet ref)
inline

Definition at line 266 of file LRBreakupUtilities.h.

References DerivYukawaBreakup< T >::DerivSecondTaylorTerm, ParticleSet::getLattice(), ParticleSet::getTotalNum(), DerivYukawaBreakup< T >::n2, DerivYukawaBreakup< T >::NormFactor, DerivYukawaBreakup< T >::OneOverRs, DerivYukawaBreakup< T >::OneOverSqrtRs, DerivYukawaBreakup< T >::OneOverSqrtRs3, qmcplusplus::pow(), DerivYukawaBreakup< T >::Rc, DerivYukawaBreakup< T >::Rs, qmcplusplus::sqrt(), and DerivYukawaBreakup< T >::SqrtRs.

267  {
268  NormFactor = 4.0 * M_PI / ref.getLattice().Volume;
269  T Density = ref.getTotalNum() / ref.getLattice().Volume;
270  n2 = ref.getTotalNum();
271  Rs = std::pow(3.0 / (4.0 * M_PI * Density), 1.0 / 3.0);
272  SqrtRs = std::sqrt(Rs);
273  OneOverSqrtRs = 1.0 / SqrtRs;
275  OneOverRs = 1.0 / Rs;
276  DerivSecondTaylorTerm = (1.0 / 12.0) * OneOverSqrtRs3;
277  Rc = ref.getLattice().LR_rc;
278  }
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)
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)

◆ reset() [2/2]

void reset ( ParticleSet ref,
rs 
)
inline

Definition at line 280 of file LRBreakupUtilities.h.

References DerivYukawaBreakup< T >::DerivSecondTaylorTerm, ParticleSet::getLattice(), ParticleSet::getTotalNum(), DerivYukawaBreakup< T >::n2, DerivYukawaBreakup< T >::NormFactor, DerivYukawaBreakup< T >::OneOverRs, DerivYukawaBreakup< T >::OneOverSqrtRs, DerivYukawaBreakup< T >::OneOverSqrtRs3, qmcplusplus::pow(), DerivYukawaBreakup< T >::Rs, qmcplusplus::sqrt(), and DerivYukawaBreakup< T >::SqrtRs.

281  {
282  Rs = rs;
283  NormFactor = 4.0 * M_PI / ref.getLattice().Volume;
284  n2 = ref.getTotalNum();
285  SqrtRs = std::sqrt(Rs);
286  OneOverSqrtRs = 1.0 / SqrtRs;
288  OneOverRs = 1.0 / Rs;
289  DerivSecondTaylorTerm = (1.0 / 12.0) * OneOverSqrtRs3;
290  }
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)
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)

◆ Xk()

T Xk ( k,
rc 
) const
inline

integral from kc to infinity

Definition at line 319 of file LRBreakupUtilities.h.

References qmcplusplus::cos(), qmcplusplus::exp(), DerivYukawaBreakup< T >::NormFactor, DerivYukawaBreakup< T >::OneOverSqrtRs, DerivYukawaBreakup< T >::Rc, DerivYukawaBreakup< T >::Rs, qmcplusplus::sin(), and DerivYukawaBreakup< T >::SqrtRs.

Referenced by DerivYukawaBreakup< T >::Fk().

320  {
321  T Rc = rc;
322  T coskr = std::cos(k * Rc);
323  T sinkr = std::sin(k * Rc);
324  T oneOverK = 1.0 / k;
325  T Val = (-0.5 * NormFactor * OneOverSqrtRs * oneOverK) *
326  (1.0 / ((1.0 + k * k * Rs) * (1.0 + k * k * Rs)) * std::exp(-rc * OneOverSqrtRs) * SqrtRs *
327  (k * SqrtRs * (rc + 2.0 * SqrtRs + k * k * rc * Rs) * coskr +
328  (rc + k * k * rc * Rs + SqrtRs * (1.0 - k * k * Rs)) * sinkr));
329  return Val;
330  }
MakeReturn< UnaryNode< FnSin, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sin(const Vector< T1, C1 > &l)
MakeReturn< UnaryNode< FnCos, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t cos(const Vector< T1, C1 > &l)
MakeReturn< UnaryNode< FnExp, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t exp(const Vector< T1, C1 > &l)

Member Data Documentation

◆ DerivSecondTaylorTerm

T DerivSecondTaylorTerm

Definition at line 261 of file LRBreakupUtilities.h.

Referenced by DerivYukawaBreakup< T >::reset().

◆ n2

T n2

Definition at line 262 of file LRBreakupUtilities.h.

Referenced by DerivYukawaBreakup< T >::reset().

◆ NormFactor

T NormFactor

◆ OneOverRs

T OneOverRs

◆ OneOverSqrtRs

◆ OneOverSqrtRs3

T OneOverSqrtRs3

Definition at line 259 of file LRBreakupUtilities.h.

Referenced by DerivYukawaBreakup< T >::reset().

◆ Rc

T Rc

◆ Rs

T Rs

◆ SqrtRs

T SqrtRs

The documentation for this struct was generated from the following file: