QMCPACK
ConvertPosUnit< ParticleAttrib< TinyVector< T, 3 > >, Tensor< T, 3 >, 3 > Struct Template Reference

Specialized ConvertPosUnit for ParticleAttrib<T,3>, Tensor<T,3> More...

+ Collaboration diagram for ConvertPosUnit< ParticleAttrib< TinyVector< T, 3 > >, Tensor< T, 3 >, 3 >:

Public Types

using Array_t = ParticleAttrib< TinyVector< T, 3 > >
 
using Transformer_t = Tensor< T, 3 >
 

Static Public Member Functions

static void apply (const Array_t &pin, const Transformer_t &X, Array_t &pout, int first, int last)
 
static void apply (const Transformer_t &X, const Array_t &pin, Array_t &pout, int first, int last)
 
static void apply (Array_t &pinout, const Transformer_t &X, int first, int last)
 
static void apply (const Transformer_t &X, Array_t &pinout, int first, int last)
 

Detailed Description

template<class T>
struct qmcplusplus::ConvertPosUnit< ParticleAttrib< TinyVector< T, 3 > >, Tensor< T, 3 >, 3 >

Specialized ConvertPosUnit for ParticleAttrib<T,3>, Tensor<T,3>

Definition at line 37 of file FastParticleOperators.h.

Member Typedef Documentation

◆ Array_t

Definition at line 39 of file FastParticleOperators.h.

◆ Transformer_t

using Transformer_t = Tensor<T, 3>

Definition at line 40 of file FastParticleOperators.h.

Member Function Documentation

◆ apply() [1/4]

static void apply ( const Array_t pin,
const Transformer_t X,
Array_t pout,
int  first,
int  last 
)
inlinestatic

Definition at line 42 of file FastParticleOperators.h.

43  {
44  T x00 = X[0], x01 = X[1], x02 = X[2], x10 = X[3], x11 = X[4], x12 = X[5], x20 = X[6], x21 = X[7], x22 = X[8];
45 #pragma ivdep
46  for (int i = first; i < last; i++)
47  {
48  pout[i][0] = pin[i][0] * x00 + pin[i][1] * x10 + pin[i][2] * x20;
49  pout[i][1] = pin[i][0] * x01 + pin[i][1] * x11 + pin[i][2] * x21;
50  pout[i][2] = pin[i][0] * x02 + pin[i][1] * x12 + pin[i][2] * x22;
51  }
52  }

◆ apply() [2/4]

static void apply ( const Transformer_t X,
const Array_t pin,
Array_t pout,
int  first,
int  last 
)
inlinestatic

Definition at line 54 of file FastParticleOperators.h.

55  {
56  T x00 = X[0], x01 = X[1], x02 = X[2], x10 = X[3], x11 = X[4], x12 = X[5], x20 = X[6], x21 = X[7], x22 = X[8];
57 #pragma ivdep
58  for (int i = first; i < last; i++)
59  {
60  pout[i][0] = pin[i][0] * x00 + pin[i][1] * x01 + pin[i][2] * x02;
61  pout[i][1] = pin[i][0] * x10 + pin[i][1] * x11 + pin[i][2] * x12;
62  pout[i][2] = pin[i][0] * x20 + pin[i][1] * x21 + pin[i][2] * x22;
63  }
64  }

◆ apply() [3/4]

static void apply ( Array_t pinout,
const Transformer_t X,
int  first,
int  last 
)
inlinestatic

Definition at line 66 of file FastParticleOperators.h.

67  {
68  T x00 = X[0], x01 = X[1], x02 = X[2], x10 = X[3], x11 = X[4], x12 = X[5], x20 = X[6], x21 = X[7], x22 = X[8];
69 #pragma ivdep
70  for (int i = first; i < last; i++)
71  {
72  T _x(pinout[i][0]), _y(pinout[i][1]), _z(pinout[i][2]);
73  pinout[i][0] = _x * x00 + _y * x10 + _z * x20;
74  pinout[i][1] = _x * x01 + _y * x11 + _z * x21;
75  pinout[i][2] = _x * x02 + _y * x12 + _z * x22;
76  }
77  }

◆ apply() [4/4]

static void apply ( const Transformer_t X,
Array_t pinout,
int  first,
int  last 
)
inlinestatic

Definition at line 79 of file FastParticleOperators.h.

80  {
81  T x00 = X[0], x01 = X[1], x02 = X[2], x10 = X[3], x11 = X[4], x12 = X[5], x20 = X[6], x21 = X[7], x22 = X[8];
82 #pragma ivdep
83  for (int i = first; i < last; i++)
84  {
85  T _x(pinout[i][0]), _y(pinout[i][1]), _z(pinout[i][2]);
86  pinout[i][0] = _x * x00 + _y * x01 + _z * x02;
87  pinout[i][1] = _x * x10 + _y * x11 + _z * x12;
88  pinout[i][2] = _x * x20 + _y * x21 + _z * x22;
89  }
90  }

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