QMCPACK
DTD_BConds< T, 3, PPPS > Struct Template Reference

specialization for a periodic 3D general cell with wigner-seitz==simulation cell More...

+ Collaboration diagram for DTD_BConds< T, 3, PPPS >:

Public Member Functions

 DTD_BConds (const CrystalLattice< T, 3 > &lat)
 
apply_bc (TinyVector< T, 3 > &displ) const
 apply BC to a displacement vector a and return the minimum-image distance More...
 
void apply_bc (std::vector< TinyVector< T, 3 >> &dr, std::vector< T > &r, std::vector< T > &rinv) const
 
void apply_bc (std::vector< TinyVector< T, 3 >> &dr, std::vector< T > &r) const
 
void evaluate_rsquared (TinyVector< T, 3 > *restrict dr, T *restrict rr, int n)
 

Public Attributes

r00
 
r10
 
r20
 
r01
 
r11
 
r21
 
r02
 
r12
 
r22
 
g00
 
g10
 
g20
 
g01
 
g11
 
g21
 
g02
 
g12
 
g22
 

Detailed Description

template<class T>
struct qmcplusplus::DTD_BConds< T, 3, PPPS >

specialization for a periodic 3D general cell with wigner-seitz==simulation cell

Skip image cells.

Definition at line 85 of file ParticleBConds3D.h.

Constructor & Destructor Documentation

◆ DTD_BConds()

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

Definition at line 89 of file ParticleBConds3D.h.

90  : r00(lat.R(0)),
91  r10(lat.R(3)),
92  r20(lat.R(6)),
93  r01(lat.R(1)),
94  r11(lat.R(4)),
95  r21(lat.R(7)),
96  r02(lat.R(2)),
97  r12(lat.R(5)),
98  r22(lat.R(8)),
99  g00(lat.G(0)),
100  g10(lat.G(3)),
101  g20(lat.G(6)),
102  g01(lat.G(1)),
103  g11(lat.G(4)),
104  g21(lat.G(7)),
105  g02(lat.G(2)),
106  g12(lat.G(5)),
107  g22(lat.G(8))
108  {}

Member Function Documentation

◆ apply_bc() [1/3]

T apply_bc ( TinyVector< T, 3 > &  displ) const
inline

apply BC to a displacement vector a and return the minimum-image distance

Parameters
latlattice
adisplacement vector
Returns
the minimum-image distance

Definition at line 115 of file ParticleBConds3D.h.

116  {
117  //cart2unit
118  TinyVector<T, 3> ar(displ[0] * g00 + displ[1] * g10 + displ[2] * g20,
119  displ[0] * g01 + displ[1] * g11 + displ[2] * g21,
120  displ[0] * g02 + displ[1] * g12 + displ[2] * g22);
121  //put them in the box
122  ar[0] -= round(ar[0]);
123  ar[1] -= round(ar[1]);
124  ar[2] -= round(ar[2]);
125  //unit2cart
126  displ[0] = ar[0] * r00 + ar[1] * r10 + ar[2] * r20;
127  displ[1] = ar[0] * r01 + ar[1] * r11 + ar[2] * r21;
128  displ[2] = ar[0] * r02 + ar[1] * r12 + ar[2] * r22;
129  return displ[0] * displ[0] + displ[1] * displ[1] + displ[2] * displ[2];
130  }

◆ apply_bc() [2/3]

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

Definition at line 132 of file ParticleBConds3D.h.

References DTD_BConds< T, D, SC >::apply_bc(), qmcplusplus::simd::inv(), qmcplusplus::n, and qmcplusplus::simd::sqrt().

133  {
134  const int n = dr.size();
135  for (int i = 0; i < n; ++i)
136  rinv[i] = apply_bc(dr[i]);
137  simd::sqrt(&rinv[0], &r[0], n);
138  simd::inv(&r[0], &rinv[0], n);
139  }
T apply_bc(TinyVector< T, 3 > &displ) const
apply BC to a displacement vector a and return the minimum-image distance
void inv(const T *restrict in, T *restrict out, int n)
Definition: vmath.hpp:65
void sqrt(T *restrict inout, SIZET n)
Definition: vmath.hpp:52

◆ apply_bc() [3/3]

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

Definition at line 141 of file ParticleBConds3D.h.

References DTD_BConds< T, D, SC >::apply_bc().

142  {
143  for (int i = 0; i < dr.size(); ++i)
144  r[i] = apply_bc(dr[i]);
145  }
T apply_bc(TinyVector< T, 3 > &displ) const
apply BC to a displacement vector a and return the minimum-image distance

◆ evaluate_rsquared()

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

Definition at line 147 of file ParticleBConds3D.h.

References DTD_BConds< T, D, SC >::apply_bc(), and qmcplusplus::n.

148  {
149  for (int i = 0; i < n; ++i)
150  rr[i] = apply_bc(dr[i]);
151  }
T apply_bc(TinyVector< T, 3 > &displ) const
apply BC to a displacement vector a and return the minimum-image distance

Member Data Documentation

◆ g00

T g00

Definition at line 88 of file ParticleBConds3D.h.

◆ g01

T g01

Definition at line 88 of file ParticleBConds3D.h.

◆ g02

T g02

Definition at line 88 of file ParticleBConds3D.h.

◆ g10

T g10

Definition at line 88 of file ParticleBConds3D.h.

◆ g11

T g11

Definition at line 88 of file ParticleBConds3D.h.

◆ g12

T g12

Definition at line 88 of file ParticleBConds3D.h.

◆ g20

T g20

Definition at line 88 of file ParticleBConds3D.h.

◆ g21

T g21

Definition at line 88 of file ParticleBConds3D.h.

◆ g22

T g22

Definition at line 88 of file ParticleBConds3D.h.

◆ r00

T r00

Definition at line 87 of file ParticleBConds3D.h.

◆ r01

T r01

Definition at line 87 of file ParticleBConds3D.h.

◆ r02

T r02

Definition at line 87 of file ParticleBConds3D.h.

◆ r10

T r10

Definition at line 87 of file ParticleBConds3D.h.

◆ r11

T r11

Definition at line 87 of file ParticleBConds3D.h.

◆ r12

T r12

Definition at line 87 of file ParticleBConds3D.h.

◆ r20

T r20

Definition at line 87 of file ParticleBConds3D.h.

◆ r21

T r21

Definition at line 87 of file ParticleBConds3D.h.

◆ r22

T r22

Definition at line 87 of file ParticleBConds3D.h.


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