AutoPas  3.0.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
autopas::TriwiseFunctor< Particle_T, CRTP_T > Class Template Reference

TriwiseFunctor class. More...

#include <TriwiseFunctor.h>

Inheritance diagram for autopas::TriwiseFunctor< Particle_T, CRTP_T >:
Inheritance graph
[legend]
Collaboration diagram for autopas::TriwiseFunctor< Particle_T, CRTP_T >:
Collaboration graph
[legend]

Public Types

using SoAArraysType = typename Particle_T::SoAArraysType
 Structure of the SoAs defined by the particle.
 
- Public Types inherited from autopas::Functor< Particle_T, CRTP_T >
using SoAArraysType = typename Particle_T::SoAArraysType
 Structure of the SoAs defined by the particle.
 
using Functor_T = CRTP_T
 Make the Implementation type template publicly available.
 

Public Member Functions

 TriwiseFunctor (double cutoff)
 Constructor.
 
virtual void AoSFunctor (Particle_T &i, Particle_T &j, Particle_T &k, bool newton3)
 TriwiseFunctor for arrays of structures (AoS).
 
virtual void SoAFunctorSingle (SoAView< SoAArraysType > soa, bool newton3)
 TriwiseFunctor for structure of arrays (SoA)
 
virtual void SoAFunctorPair (SoAView< SoAArraysType > soa1, SoAView< SoAArraysType > soa2, bool newton3)
 TriwiseFunctor for structure of arrays (SoA)
 
virtual void SoAFunctorTriple (SoAView< SoAArraysType > soa1, SoAView< SoAArraysType > soa2, SoAView< SoAArraysType > soa3, bool newton3)
 TriwiseFunctor for structure of arrays (SoA)
 
virtual void SoAFunctorVerlet (SoAView< SoAArraysType > soa, const size_t indexFirst, const std::vector< size_t, AlignedAllocator< size_t > > &neighborList, bool newton3)
 TriwiseFunctor for structure of arrays (SoA) for neighbor lists.
 
- Public Member Functions inherited from autopas::Functor< Particle_T, CRTP_T >
 Functor (double cutoff)
 Constructor.
 
virtual void initTraversal ()
 This function is called at the start of each traversal.
 
virtual void endTraversal (bool newton3)
 This function is called at the end of each traversal.
 
template<class ParticleCell >
void SoALoader (ParticleCell &cell, SoA< SoAArraysType > &soa, size_t offset, bool skipSoAResize)
 Copies the AoS data of the given cell in the given soa.
 
template<typename ParticleCell >
void SoAExtractor (ParticleCell &cell, SoA< SoAArraysType > &soa, size_t offset)
 Copies the data stored in the soa back into the cell.
 
virtual bool allowsNewton3 ()=0
 Specifies whether the functor is capable of Newton3-like functors.
 
virtual bool allowsNonNewton3 ()=0
 Specifies whether the functor is capable of non-Newton3-like functors.
 
virtual bool isRelevantForTuning ()=0
 Specifies whether the functor should be considered for the auto-tuning process.
 
virtual std::string getName ()=0
 Returns name of functor.
 
double getCutoff () const
 Getter for the functor's cutoff.
 
virtual size_t getNumFLOPs () const
 Get the number of FLOPs.
 
virtual double getHitRate () const
 Get the hit rate.
 

Additional Inherited Members

- Static Public Member Functions inherited from autopas::Functor< Particle_T, CRTP_T >
static constexpr std::array< typename Particle_T::AttributeNames, 0 > getNeededAttr ()
 Get attributes needed for computation.
 
static constexpr std::array< typename Particle_T::AttributeNames, 0 > getNeededAttr (std::false_type)
 Get attributes needed for computation without N3 optimization.
 
static constexpr std::array< typename Particle_T::AttributeNames, 0 > getComputedAttr ()
 Get attributes computed by this functor.
 

Detailed Description

template<class Particle_T, class CRTP_T>
class autopas::TriwiseFunctor< Particle_T, CRTP_T >

TriwiseFunctor class.

This class describes the triwise interactions between particles.

Functor base class.

Both an array of structure (AoS) and a structure of array (SoA) are supported to be used with functors. Newton3: A functor does not have to implement both a newton3 and a non-newton3 version. Instead you can specify, which version you use by overriding allowsNonNewton3 resp. allowsNewton3

Template Parameters
Particle_Tthe type of Particle
CRTP_Tthe actual type of the functor
Particle_Tthe type of Particle
CRTP_Tthe actual type of the functor

Constructor & Destructor Documentation

◆ TriwiseFunctor()

template<class Particle_T , class CRTP_T >
autopas::TriwiseFunctor< Particle_T, CRTP_T >::TriwiseFunctor ( double  cutoff)
inlineexplicit

Constructor.

Parameters
cutoff

Member Function Documentation

◆ AoSFunctor()

template<class Particle_T , class CRTP_T >
virtual void autopas::TriwiseFunctor< Particle_T, CRTP_T >::AoSFunctor ( Particle_T &  i,
Particle_T &  j,
Particle_T &  k,
bool  newton3 
)
inlinevirtual

TriwiseFunctor for arrays of structures (AoS).

This functor should calculate the forces or any triwise interaction between three particles. This should include a cutoff check if needed!

Parameters
iParticle i
jParticle j
kParticle k
newton3defines whether or whether not to use newton 3

Reimplemented in mdLib::AxilrodTellerFunctor< Particle_T, useMixing, useNewton3, calculateGlobals, countFLOPs >.

◆ SoAFunctorPair()

template<class Particle_T , class CRTP_T >
virtual void autopas::TriwiseFunctor< Particle_T, CRTP_T >::SoAFunctorPair ( SoAView< SoAArraysType soa1,
SoAView< SoAArraysType soa2,
bool  newton3 
)
inlinevirtual

TriwiseFunctor for structure of arrays (SoA)

This functor should calculate the forces or any other triwise interaction between all particles of soa1 and soa2. It should always calculate forces for all particles in soa1, even when newton3 == false. This should include a cutoff check if needed!

Parameters
soa1First structure of arrays.
soa2Second structure of arrays.
newton3defines whether or whether not to use newton 3

◆ SoAFunctorSingle()

template<class Particle_T , class CRTP_T >
virtual void autopas::TriwiseFunctor< Particle_T, CRTP_T >::SoAFunctorSingle ( SoAView< SoAArraysType soa,
bool  newton3 
)
inlinevirtual

TriwiseFunctor for structure of arrays (SoA)

This functor should calculate the forces or any other triwise interaction between all particles in an soa. This should include a cutoff check if needed!

Parameters
soaStructure of arrays
newton3defines whether or whether not to use newton 3

◆ SoAFunctorTriple()

template<class Particle_T , class CRTP_T >
virtual void autopas::TriwiseFunctor< Particle_T, CRTP_T >::SoAFunctorTriple ( SoAView< SoAArraysType soa1,
SoAView< SoAArraysType soa2,
SoAView< SoAArraysType soa3,
bool  newton3 
)
inlinevirtual

TriwiseFunctor for structure of arrays (SoA)

This functor should calculate the forces or any other triwise interaction between all particles of soa1 and soa2 and soa3. This should include a cutoff check if needed!

Parameters
soa1First structure of arrays.
soa2Second structure of arrays.
soa3Third structure of arrays.
newton3defines whether or whether not to use newton 3

◆ SoAFunctorVerlet()

template<class Particle_T , class CRTP_T >
virtual void autopas::TriwiseFunctor< Particle_T, CRTP_T >::SoAFunctorVerlet ( SoAView< SoAArraysType soa,
const size_t  indexFirst,
const std::vector< size_t, AlignedAllocator< size_t > > &  neighborList,
bool  newton3 
)
inlinevirtual

TriwiseFunctor for structure of arrays (SoA) for neighbor lists.

This functor should calculate the forces or any other triwise interaction between the particles in the SoA with index indexFirst and all particles with indices in the neighborList. This should include a cutoff check if needed!

Parameters
soaStructure of arrays
indexFirstThe index of the first particle for each interaction
neighborListThe list of neighbors
newton3defines whether or whether not to use newton 3

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