QMCPACK
DTD_BConds< T, D, SC > Struct Template Reference
+ Inheritance diagram for DTD_BConds< T, D, SC >:
+ Collaboration diagram for DTD_BConds< T, D, SC >:

Public Member Functions

 DTD_BConds (const CrystalLattice< T, D > &lat)
 constructor: doing nothing More...
 
apply_bc (TinyVector< T, D > &displ) const
 apply BC on displ and return |displ|^2 More...
 
void apply_bc (std::vector< TinyVector< T, D >> &dr, std::vector< T > &r, std::vector< T > &rinv) const
 apply BC on dr and evaluate r and rinv More...
 
void apply_bc (std::vector< TinyVector< T, D >> &dr, std::vector< T > &r) const
 
void evaluate_rsquared (TinyVector< T, D > *restrict dr, T *restrict rr, int n)
 

Detailed Description

template<class T, unsigned D, int SC>
struct qmcplusplus::DTD_BConds< T, D, SC >

Definition at line 69 of file ParticleBConds.h.

Constructor & Destructor Documentation

◆ DTD_BConds()

DTD_BConds ( const CrystalLattice< T, D > &  lat)
inline

constructor: doing nothing

Definition at line 72 of file ParticleBConds.h.

72 {}

Member Function Documentation

◆ apply_bc() [1/3]

◆ apply_bc() [2/3]

void apply_bc ( std::vector< TinyVector< T, D >> &  dr,
std::vector< T > &  r,
std::vector< T > &  rinv 
) const
inline

apply BC on dr and evaluate r and rinv

Parameters
drvector of displacements, in and out
rvector of distances
rinvvector of 1/r

The input displacement vectors are not modified with the open boundary conditions.

Definition at line 87 of file ParticleBConds.h.

References qmcplusplus::dot(), qmcplusplus::simd::inv(), qmcplusplus::n, and qmcplusplus::simd::sqrt().

88  {
89  const int n = dr.size();
90  for (int i = 0; i < n; ++i)
91  rinv[i] = dot(dr[i], dr[i]);
92  simd::sqrt(&rinv[0], &r[0], n);
93  simd::inv(&r[0], &rinv[0], n);
94  }
void inv(const T *restrict in, T *restrict out, int n)
Definition: vmath.hpp:65
Tensor< typename BinaryReturn< T1, T2, OpMultiply >::Type_t, D > dot(const AntiSymTensor< T1, D > &lhs, const AntiSymTensor< T2, D > &rhs)
void sqrt(T *restrict inout, SIZET n)
Definition: vmath.hpp:52

◆ apply_bc() [3/3]

void apply_bc ( std::vector< TinyVector< T, D >> &  dr,
std::vector< T > &  r 
) const
inline

Definition at line 96 of file ParticleBConds.h.

References qmcplusplus::dot(), and qmcplusplus::sqrt().

97  {
98  for (int i = 0; i < dr.size(); ++i)
99  r[i] = std::sqrt(dot(dr[i], dr[i]));
100  }
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)
Tensor< typename BinaryReturn< T1, T2, OpMultiply >::Type_t, D > dot(const AntiSymTensor< T1, D > &lhs, const AntiSymTensor< T2, D > &rhs)

◆ evaluate_rsquared()

void evaluate_rsquared ( TinyVector< T, D > *restrict  dr,
T *restrict  rr,
int  n 
)
inline

Definition at line 102 of file ParticleBConds.h.

References qmcplusplus::dot(), and qmcplusplus::n.

Referenced by qmcplusplus::TEST_CASE().

103  {
104  for (int i = 0; i < n; ++i)
105  rr[i] = dot(dr[i], dr[i]);
106  }
Tensor< typename BinaryReturn< T1, T2, OpMultiply >::Type_t, D > dot(const AntiSymTensor< T1, D > &lhs, const AntiSymTensor< T2, D > &rhs)

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