10#include "particleContainer/adapter/CellProcessor.h"
16#include "particleContainer/adapter/vectorization/SIMD_VectorizedCellProcessorHelpers.h"
17#include "WrapOpenMP.h"
19#include "molecules/MoleculeForwardDeclaration.h"
33 typedef std::vector<Component> ComponentList;
78 typedef std::vector<Molecule *> MoleculeList;
98 const double _epsRFInvrc3;
113 std::vector<AlignedArray<vcp_real_calc> > _eps_sig;
120 std::vector<AlignedArray<vcp_real_calc> > _shift6;
133 struct VLJP2PCPThreadData {
135 VLJP2PCPThreadData(): _ljc_dist_lookup(nullptr){
136 _upot6ljV.resize(_numVectorElements);
137 _virialV.resize(_numVectorElements);
139 for (
size_t j = 0; j < _numVectorElements; ++j) {
155 vcp_lookupOrMask_single* _ljc_dist_lookup;
160 std::vector<VLJP2PCPThreadData *> _threadData;
162 static const size_t _numVectorElements = VCP_VEC_SIZE;
165 template<
bool calculateMacroscopic>
201 template<
class ForcePolicy,
bool CalculateMacroscopic,
class MaskGatherChooser>
Defines the length of the vectors and the corresponding functions.
An aligned array.
Definition: AlignedArray.h:75
Structure of Arrays for vectorized force calculation.
Definition: CellDataSoA.h:22
Definition: CellProcessor.h:29
Definition: Comp2Param.h:15
Class implementing molecules as rigid rotators consisting out of different interaction sites (LJcente...
Definition: Component.h:14
This class is used to read in the phasespace and to handle macroscopic values.
Definition: Domain.h:47
FullMolecule modeled as LJ sphere with point polarities.
Definition: FullMolecule.h:18
FullParticleCell data structure. Renamed from ParticleCell.
Definition: FullParticleCell.h:49
Vectorized calculation of the force.
Definition: VectorizedLJP2PCellProcessor.h:31
void processCell(ParticleCell &cell)
Calculate forces between pairs of Molecules in cell.
Definition: VectorizedLJP2PCellProcessor.cpp:469
void processCellPair(ParticleCell &c1, ParticleCell &c2, bool sumAll=false)
Definition: VectorizedLJP2PCellProcessor.cpp:480
VectorizedLJP2PCellProcessor(Domain &domain, double cutoffRadius, double LJcutoffRadius)
Construct and set up the internal parameter table.
Definition: VectorizedLJP2PCellProcessor.cpp:21
void initTraversal()
Reset macroscopic values to 0.0.
Definition: VectorizedLJP2PCellProcessor.cpp:120
void endTraversal()
Store macroscopic values in the Domain.
Definition: VectorizedLJP2PCellProcessor.cpp:134
void preprocessCell(ParticleCell &)
Load the CellDataSoA for cell.
Definition: VectorizedLJP2PCellProcessor.h:50
void postprocessCell(ParticleCell &)
Free the LennardJonesSoA for cell.
Definition: VectorizedLJP2PCellProcessor.h:65
Definition: L2PCellProcessor.cpp:15