TriwiseFunctor class. More...
#include <TriwiseFunctor.h>


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. | |
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
| Particle_T | the type of Particle |
| CRTP_T | the actual type of the functor |
| Particle_T | the type of Particle |
| CRTP_T | the actual type of the functor |
|
inlineexplicit |
Constructor.
| cutoff |
|
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!
| i | Particle i |
| j | Particle j |
| k | Particle k |
| newton3 | defines whether or whether not to use newton 3 |
Reimplemented in mdLib::AxilrodTellerFunctor< Particle_T, useMixing, useNewton3, calculateGlobals, countFLOPs >.
|
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!
| soa1 | First structure of arrays. |
| soa2 | Second structure of arrays. |
| newton3 | defines whether or whether not to use newton 3 |
|
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!
| soa | Structure of arrays |
| newton3 | defines whether or whether not to use newton 3 |
|
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!
| soa1 | First structure of arrays. |
| soa2 | Second structure of arrays. |
| soa3 | Third structure of arrays. |
| newton3 | defines whether or whether not to use newton 3 |
|
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!
| soa | Structure of arrays |
| indexFirst | The index of the first particle for each interaction |
| neighborList | The list of neighbors |
| newton3 | defines whether or whether not to use newton 3 |