ls1-MarDyn
ls1-MarDyn molecular dynamics code
Classes | Public Types | Public Member Functions | Friends | List of all members
VectorizedCellProcessor Class Reference

Vectorized calculation of the force. More...

#include <VectorizedCellProcessor.h>

Inheritance diagram for VectorizedCellProcessor:
CellProcessor

Public Types

typedef std::vector< ComponentComponentList
 

Public Member Functions

VectorizedCellProcessoroperator= (const VectorizedCellProcessor &)=delete
 
 VectorizedCellProcessor (Domain &domain, double cutoffRadius, double LJcutoffRadius)
 Construct and set up the internal parameter table. More...
 
void initTraversal ()
 Reset macroscopic values to 0.0. More...
 
void preprocessCell (ParticleCell &)
 Load the CellDataSoA for cell. More...
 
double processSingleMolecule (Molecule *, ParticleCell &)
 
void processCell (ParticleCell &cell)
 Calculate forces between pairs of Molecules in cell. More...
 
void processCellPair (ParticleCell &cell1, ParticleCell &cell2, bool sumAll=false)
 
void postprocessCell (ParticleCell &)
 Free the LennardJonesSoA for cell. More...
 
void endTraversal ()
 Store macroscopic values in the Domain. More...
 
template<bool calculateMacroscopic>
vcp_inline void _loopBodyLJ (const RealCalcVec &m1_r_x, const RealCalcVec &m1_r_y, const RealCalcVec &m1_r_z, const RealCalcVec &r1_x, const RealCalcVec &r1_y, const RealCalcVec &r1_z, const RealCalcVec &m2_r_x, const RealCalcVec &m2_r_y, const RealCalcVec &m2_r_z, const RealCalcVec &r2_x, const RealCalcVec &r2_y, const RealCalcVec &r2_z, RealCalcVec &f_x, RealCalcVec &f_y, RealCalcVec &f_z, RealAccumVec &V_x, RealAccumVec &V_y, RealAccumVec &V_z, RealAccumVec &sum_upot6lj, RealAccumVec &sum_virial, const MaskCalcVec &forceMask, const RealCalcVec &eps_24, const RealCalcVec &sig2, const RealCalcVec &shift6)
 
template<bool calculateMacroscopic>
vcp_inline void _loopBodyCharge (const RealCalcVec &m1_r_x, const RealCalcVec &m1_r_y, const RealCalcVec &m1_r_z, const RealCalcVec &r1_x, const RealCalcVec &r1_y, const RealCalcVec &r1_z, const RealCalcVec &qii, const RealCalcVec &m2_r_x, const RealCalcVec &m2_r_y, const RealCalcVec &m2_r_z, const RealCalcVec &r2_x, const RealCalcVec &r2_y, const RealCalcVec &r2_z, const RealCalcVec &qjj, RealCalcVec &f_x, RealCalcVec &f_y, RealCalcVec &f_z, RealAccumVec &V_x, RealAccumVec &V_y, RealAccumVec &V_z, RealAccumVec &sum_upotXpoles, RealAccumVec &sum_virial, const MaskCalcVec &forceMask)
 
template<bool calculateMacroscopic>
vcp_inline void _loopBodyChargeDipole (const RealCalcVec &m1_r_x, const RealCalcVec &m1_r_y, const RealCalcVec &m1_r_z, const RealCalcVec &r1_x, const RealCalcVec &r1_y, const RealCalcVec &r1_z, const RealCalcVec &q, const RealCalcVec &m2_r_x, const RealCalcVec &m2_r_y, const RealCalcVec &m2_r_z, const RealCalcVec &r2_x, const RealCalcVec &r2_y, const RealCalcVec &r2_z, const RealCalcVec &e_x, const RealCalcVec &e_y, const RealCalcVec &e_z, const RealCalcVec &p, RealCalcVec &f_x, RealCalcVec &f_y, RealCalcVec &f_z, RealAccumVec &V_x, RealAccumVec &V_y, RealAccumVec &V_z, RealAccumVec &M_x, RealAccumVec &M_y, RealAccumVec &M_z, RealAccumVec &sum_upotXpoles, RealAccumVec &sum_virial, const MaskCalcVec &forceMask)
 
template<bool calculateMacroscopic>
vcp_inline void _loopBodyDipole (const RealCalcVec &m1_r_x, const RealCalcVec &m1_r_y, const RealCalcVec &m1_r_z, const RealCalcVec &r1_x, const RealCalcVec &r1_y, const RealCalcVec &r1_z, const RealCalcVec &eii_x, const RealCalcVec &eii_y, const RealCalcVec &eii_z, const RealCalcVec &pii, const RealCalcVec &m2_r_x, const RealCalcVec &m2_r_y, const RealCalcVec &m2_r_z, const RealCalcVec &r2_x, const RealCalcVec &r2_y, const RealCalcVec &r2_z, const RealCalcVec &ejj_x, const RealCalcVec &ejj_y, const RealCalcVec &ejj_z, const RealCalcVec &pjj, RealCalcVec &f_x, RealCalcVec &f_y, RealCalcVec &f_z, RealAccumVec &V_x, RealAccumVec &V_y, RealAccumVec &V_z, RealAccumVec &M1_x, RealAccumVec &M1_y, RealAccumVec &M1_z, RealAccumVec &M2_x, RealAccumVec &M2_y, RealAccumVec &M2_z, RealAccumVec &sum_upotXpoles, RealAccumVec &sum_virial, RealAccumVec &sum_myRF, const MaskCalcVec &forceMask, const RealCalcVec &epsRFInvrc3)
 
template<bool calculateMacroscopic>
vcp_inline void _loopBodyChargeQuadrupole (const RealCalcVec &m1_r_x, const RealCalcVec &m1_r_y, const RealCalcVec &m1_r_z, const RealCalcVec &r1_x, const RealCalcVec &r1_y, const RealCalcVec &r1_z, const RealCalcVec &q, const RealCalcVec &m2_r_x, const RealCalcVec &m2_r_y, const RealCalcVec &m2_r_z, const RealCalcVec &r2_x, const RealCalcVec &r2_y, const RealCalcVec &r2_z, const RealCalcVec &ejj_x, const RealCalcVec &ejj_y, const RealCalcVec &ejj_z, const RealCalcVec &m, RealCalcVec &f_x, RealCalcVec &f_y, RealCalcVec &f_z, RealAccumVec &V_x, RealAccumVec &V_y, RealAccumVec &V_z, RealAccumVec &M_x, RealAccumVec &M_y, RealAccumVec &M_z, RealAccumVec &sum_upotXpoles, RealAccumVec &sum_virial, const MaskCalcVec &forceMask)
 
template<bool calculateMacroscopic>
vcp_inline void _loopBodyDipoleQuadrupole (const RealCalcVec &m1_r_x, const RealCalcVec &m1_r_y, const RealCalcVec &m1_r_z, const RealCalcVec &r1_x, const RealCalcVec &r1_y, const RealCalcVec &r1_z, const RealCalcVec &eii_x, const RealCalcVec &eii_y, const RealCalcVec &eii_z, const RealCalcVec &p, const RealCalcVec &m2_r_x, const RealCalcVec &m2_r_y, const RealCalcVec &m2_r_z, const RealCalcVec &r2_x, const RealCalcVec &r2_y, const RealCalcVec &r2_z, const RealCalcVec &ejj_x, const RealCalcVec &ejj_y, const RealCalcVec &ejj_z, const RealCalcVec &m, RealCalcVec &f_x, RealCalcVec &f_y, RealCalcVec &f_z, RealAccumVec &V_x, RealAccumVec &V_y, RealAccumVec &V_z, RealAccumVec &M1_x, RealAccumVec &M1_y, RealAccumVec &M1_z, RealAccumVec &M2_x, RealAccumVec &M2_y, RealAccumVec &M2_z, RealAccumVec &sum_upotXpoles, RealAccumVec &sum_virial, const MaskCalcVec &forceMask)
 
template<bool calculateMacroscopic>
vcp_inline void _loopBodyQuadrupole (const RealCalcVec &m1_r_x, const RealCalcVec &m1_r_y, const RealCalcVec &m1_r_z, const RealCalcVec &r1_x, const RealCalcVec &r1_y, const RealCalcVec &r1_z, const RealCalcVec &eii_x, const RealCalcVec &eii_y, const RealCalcVec &eii_z, const RealCalcVec &mii, const RealCalcVec &m2_r_x, const RealCalcVec &m2_r_y, const RealCalcVec &m2_r_z, const RealCalcVec &r2_x, const RealCalcVec &r2_y, const RealCalcVec &r2_z, const RealCalcVec &ejj_x, const RealCalcVec &ejj_y, const RealCalcVec &ejj_z, const RealCalcVec &mjj, RealCalcVec &f_x, RealCalcVec &f_y, RealCalcVec &f_z, RealAccumVec &V_x, RealAccumVec &V_y, RealAccumVec &V_z, RealAccumVec &Mii_x, RealAccumVec &Mii_y, RealAccumVec &Mii_z, RealAccumVec &Mjj_x, RealAccumVec &Mjj_y, RealAccumVec &Mjj_z, RealAccumVec &sum_upotXpoles, RealAccumVec &sum_virial, const MaskCalcVec &forceMask)
 
- Public Member Functions inherited from CellProcessor
 CellProcessor (const double cutoffRadius, const double LJCutoffRadius)
 
virtual ~CellProcessor ()
 
double getCutoffRadius () const
 
double getLJCutoffRadius () const
 
void setCutoffRadius (const double c)
 
void setLJCutoffRadius (const double ljc)
 
double getCutoffRadiusSquare () const
 
double getLJCutoffRadiusSquare () const
 
void setCutoffRadiusSquare (const double c)
 
void setLJCutoffRadiusSquare (const double ljc)
 

Friends

class VCP1CLJRMMTest
 

Additional Inherited Members

- Protected Attributes inherited from CellProcessor
double _cutoffRadiusSquare
 
double _LJCutoffRadiusSquare
 

Detailed Description

Vectorized calculation of the force.

Author
Johannes Heckl

Constructor & Destructor Documentation

◆ VectorizedCellProcessor()

VectorizedCellProcessor::VectorizedCellProcessor ( Domain domain,
double  cutoffRadius,
double  LJcutoffRadius 
)

Construct and set up the internal parameter table.

Components and parameters should be finalized before this call.

Member Function Documentation

◆ endTraversal()

void VectorizedCellProcessor::endTraversal ( )
virtual

Store macroscopic values in the Domain.

Implements CellProcessor.

◆ initTraversal()

void VectorizedCellProcessor::initTraversal ( )
virtual

Reset macroscopic values to 0.0.

Implements CellProcessor.

◆ postprocessCell()

void VectorizedCellProcessor::postprocessCell ( ParticleCell )
inlinevirtual

Free the LennardJonesSoA for cell.

Implements CellProcessor.

◆ preprocessCell()

void VectorizedCellProcessor::preprocessCell ( ParticleCell )
inlinevirtual

Load the CellDataSoA for cell.

Implements CellProcessor.

◆ processCell()

void VectorizedCellProcessor::processCell ( ParticleCell cell)
virtual

Calculate forces between pairs of Molecules in cell.

Implements CellProcessor.

◆ processCellPair()

void VectorizedCellProcessor::processCellPair ( ParticleCell cell1,
ParticleCell cell2,
bool  sumAll = false 
)
virtual

Called for each cell pair within the cutoff radius. Called exactly once per pair (i.e. pairs are not ordered).

Note
will not be called for empty cells. Sum up all macroscopic values (e.g. for hs) or only half of them (e.g. for fs)

Implements CellProcessor.

◆ processSingleMolecule()

double VectorizedCellProcessor::processSingleMolecule ( Molecule ,
ParticleCell  
)
inlinevirtual

Implements CellProcessor.


The documentation for this class was generated from the following files: