10#include "bhfmm/containers/ParticleCellPointers.h"
13#include "particleContainer/adapter/vectorization/SIMD_VectorizedCellProcessorHelpers.h"
14#include "particleContainer/adapter/CellDataSoA.h"
15#include "WrapOpenMP.h"
21#include "molecules/MoleculeForwardDeclaration.h"
34 typedef std::vector<Component> ComponentList;
72 double _cutoffRadiusSquare;
77 typedef std::vector<Molecule *> MoleculeList;
94 struct VCP2PCPThreadData {
96 VCP2PCPThreadData(): _charges_dist_lookup(
nullptr){
97 _upotXpolesV.resize(_numVectorElements);
98 _virialV.resize(_numVectorElements);
100 for (
size_t j = 0; j < _numVectorElements; ++j) {
101 _upotXpolesV[j] = 0.0;
116 vcp_lookupOrMask_single* _charges_dist_lookup;
121 std::vector<VCP2PCPThreadData *> _threadData;
123 static const size_t _numVectorElements = VCP_VEC_SIZE;
126 template<
bool calculateMacroscopic>
127 inline void _loopBodyCharge(
161 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: 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
Definition: ParticleCellPointers.h:44
Vectorized calculation of the force.
Definition: VectorizedChargeP2PCellProcessor.h:32
void processCellPair(ParticleCellPointers &cell1, ParticleCellPointers &cell2)
Calculate forces between pairs of Molecules in cell1 and cell2.
Definition: VectorizedChargeP2PCellProcessor.cpp:541
void processCell(ParticleCellPointers &cell)
Calculate forces between pairs of Molecules in cell.
Definition: VectorizedChargeP2PCellProcessor.cpp:531
void preprocessCell(ParticleCellPointers &cell)
Load the CellDataSoA for cell.
Definition: VectorizedChargeP2PCellProcessor.cpp:117
void initTraversal()
Reset macroscopic values to 0.0.
Definition: VectorizedChargeP2PCellProcessor.cpp:74
void endTraversal()
Store macroscopic values in the Domain.
Definition: VectorizedChargeP2PCellProcessor.cpp:87
VectorizedChargeP2PCellProcessor(Domain &domain, double cutoffRadius=0, double LJcutoffRadius=0)
Construct and set up the internal parameter table.
Definition: VectorizedChargeP2PCellProcessor.cpp:20
void postprocessCell(ParticleCellPointers &cell)
Free the LennardJonesSoA for cell.
Definition: VectorizedChargeP2PCellProcessor.cpp:194
Definition: L2PCellProcessor.cpp:15