OPAL (Object Oriented Parallel Accelerator Library)  2021.1.99
OPAL
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
ParticleInteractLayout< T, Dim, Mesh > Class Template Reference

#include <ParticleInteractLayout.h>

Inheritance diagram for ParticleInteractLayout< T, Dim, Mesh >:
Inheritance graph
[legend]
Collaboration diagram for ParticleInteractLayout< T, Dim, Mesh >:
Collaboration graph
[legend]

Classes

struct  pair_t
 

Public Types

typedef std::vector< pair_t >::iterator pair_iterator
 
typedef ParticleLayout< T, Dim >::SingleParticlePos_t SingleParticlePos_t
 
typedef ParticleLayout< T, Dim >::Index_t Index_t
 
typedef ParticleInteractAttrib< SingleParticlePos_tParticlePos_t
 
typedef ParticleInteractAttrib< Index_tParticleIndex_t
 
typedef ParticleInteractAttrib< T > ParticleInterRadius_t
 
- Public Types inherited from ParticleSpatialLayout< T, Dim, UniformCartesian< Dim, T > >
typedef int pair_t
 
typedef pair_tpair_iterator
 
typedef ParticleLayout< T, Dim >::SingleParticlePos_t SingleParticlePos_t
 
typedef ParticleLayout< T, Dim >::Index_t Index_t
 
typedef ParticleAttrib< SingleParticlePos_tParticlePos_t
 
typedef ParticleAttrib< Index_tParticleIndex_t
 
typedef RegionLayout< T, Dim, UniformCartesian< Dim, T > > RegionLayout_t
 
- Public Types inherited from ParticleLayout< T, Dim >
enum  { Dimension = Dim }
 
enum  UpdateFlags {
  SWAP , BCONDS , NUMFLAGS , OPTDESTROY ,
  ALL
}
 
typedef T Position_t
 
typedef unsigned Index_t
 
typedef Vektor< T, DimSingleParticlePos_t
 
- Public Types inherited from User
typedef Unique::type ID_t
 

Public Member Functions

 ParticleInteractLayout (FieldLayout< Dim > &)
 
 ParticleInteractLayout (FieldLayout< Dim > &, Mesh &)
 
 ParticleInteractLayout (const RegionLayout< T, Dim, Mesh > &)
 
 ParticleInteractLayout ()
 
 ~ParticleInteractLayout ()
 
void update (IpplParticleBase< ParticleInteractLayout< T, Dim, Mesh > > &p, const ParticleAttrib< char > *canSwap=0)
 
void getPairlist (unsigned, pair_iterator &, pair_iterator &, IpplParticleBase< ParticleInteractLayout< T, Dim, Mesh > > &)
 
void setInteractionRadius (const T &r)
 
void setInteractionRadius (ParticleInterRadius_t &rAttrib)
 
getMaxInteractionRadius ()
 
getInteractionRadius (unsigned i)
 
void setNeedGhostSwap (bool cond=true)
 
virtual void Repartition (UserList *)
 
- Public Member Functions inherited from ParticleSpatialLayout< T, Dim, UniformCartesian< Dim, T > >
 ParticleSpatialLayout (FieldLayout< Dim > &)
 
 ParticleSpatialLayout (FieldLayout< Dim > &, UniformCartesian< Dim, T > &)
 
 ParticleSpatialLayout (const RegionLayout< T, Dim, UniformCartesian< Dim, T > > &)
 
 ParticleSpatialLayout ()
 
 ~ParticleSpatialLayout ()
 
FieldLayout< Dim > & getFieldLayout ()
 
RegionLayout< T, Dim, UniformCartesian< Dim, T > > & getLayout ()
 
const RegionLayout< T, Dim, UniformCartesian< Dim, T > > & getLayout () const
 
int getNodeCount (unsigned i) const
 
bool getEmptyNode (unsigned i) const
 
void update (IpplParticleBase< ParticleSpatialLayout< T, Dim, UniformCartesian< Dim, T >, BoxParticleCachingPolicy< T, Dim, UniformCartesian< Dim, T > > > > &p, const ParticleAttrib< char > *canSwap=0)
 
void printDebug (Inform &)
 
virtual void notifyUserOfDelete (UserList *)
 
void enableCaching ()
 
void disableCaching ()
 
- Public Member Functions inherited from ParticleLayout< T, Dim >
 ParticleLayout ()
 
 ~ParticleLayout ()
 
void setUpdateFlag (UpdateFlags f, bool val)
 
bool getUpdateFlag (UpdateFlags f) const
 
ParticleBConds< T, Dim > & getBConds ()
 
void setBConds (const ParticleBConds< T, Dim > &bc)
 
- Public Member Functions inherited from FieldLayoutUser
 FieldLayoutUser ()
 
virtual ~FieldLayoutUser ()
 
- Public Member Functions inherited from User
 User ()
 
virtual ~User ()
 
ID_t get_Id () const
 
- Public Member Functions inherited from BoxParticleCachingPolicy< T, Dim, UniformCartesian< Dim, T > >
 BoxParticleCachingPolicy ()
 
void setCacheDimension (int d, T length)
 
void setAllCacheDimensions (T length)
 
void updateCacheInformation (ParticleSpatialLayout< T, Dim, UniformCartesian< Dim, T >, C > &PLayout)
 
void updateGhostParticles (IpplParticleBase< ParticleSpatialLayout< T, Dim, UniformCartesian< Dim, T >, C > > &PData, ParticleSpatialLayout< T, Dim, UniformCartesian< Dim, T >, C > &)
 

Private Member Functions

void setup ()
 
void rebuild_interaction_data ()
 
void rebuild_interaction_data (const bool periodicBC[2 *Dim])
 
void swap_ghost_particles (unsigned, IpplParticleBase< ParticleInteractLayout< T, Dim, Mesh > > &)
 
void swap_ghost_particles (unsigned, IpplParticleBase< ParticleInteractLayout< T, Dim, Mesh > > &, const bool periodicBC[2 *Dim])
 
void find_pairs (const unsigned LocalNum, const unsigned a1, const unsigned a2, const bool initLists, IpplParticleBase< ParticleInteractLayout< T, Dim, Mesh > > &PData)
 
void setMaxInteractionRadius (T maxval)
 
getMaxLocalInteractionRadius ()
 

Private Attributes

bool NeedGhostSwap
 
bool * InterNodeList
 
bool * SentToNodeList
 
unsigned InteractionNodes
 
std::vector< std::vector< pair_t > * > PairList
 
InterRadius
 
MaxGlobalInterRadius
 
ParticleInterRadius_tInterRadiusArray
 

Additional Inherited Members

- Protected Member Functions inherited from ParticleSpatialLayout< T, Dim, UniformCartesian< Dim, T > >
void setup ()
 
void rebuild_layout (size_t haveLocal, PB &PData)
 
size_t swap_particles (size_t LocalNum, PB &PData)
 
size_t swap_particles (size_t LocalNum, PB &PData, const ParticleAttrib< char > &canSwap)
 
size_t short_swap_particles (size_t LocalNum, PB &PData)
 
size_t new_swap_particles (size_t LocalNum, PB &PData)
 
size_t new_swap_particles (size_t LocalNum, PB &PData, const ParticleAttrib< char > &canSwap)
 
- Protected Member Functions inherited from ParticleLayout< T, Dim >
template<class PPT , class NDI >
void apply_bconds (unsigned n, PPT &R, const ParticleBConds< T, Dim > &bcs, const NDI &nr)
 
- Protected Member Functions inherited from BoxParticleCachingPolicy< T, Dim, UniformCartesian< Dim, T > >
 ~BoxParticleCachingPolicy ()
 
- Protected Attributes inherited from ParticleSpatialLayout< T, Dim, UniformCartesian< Dim, T > >
RegionLayout< T, Dim, UniformCartesian< Dim, T > > RLayout
 
size_t * NodeCount
 
bool * EmptyNode
 
bool * SwapNodeList [Dim]
 
Message ** SwapMsgList
 
unsigned NeighborNodes [Dim]
 
std::vector< size_t > * PutList
 
bool caching
 
- Protected Attributes inherited from User
ID_t Id
 

Detailed Description

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
class ParticleInteractLayout< T, Dim, Mesh >

Definition at line 61 of file ParticleInteractLayout.h.

Member Typedef Documentation

◆ Index_t

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
typedef ParticleLayout<T, Dim>::Index_t ParticleInteractLayout< T, Dim, Mesh >::Index_t

Definition at line 77 of file ParticleInteractLayout.h.

◆ pair_iterator

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
typedef std::vector<pair_t>::iterator ParticleInteractLayout< T, Dim, Mesh >::pair_iterator

Definition at line 73 of file ParticleInteractLayout.h.

◆ ParticleIndex_t

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
typedef ParticleInteractAttrib<Index_t> ParticleInteractLayout< T, Dim, Mesh >::ParticleIndex_t

Definition at line 81 of file ParticleInteractLayout.h.

◆ ParticleInterRadius_t

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
typedef ParticleInteractAttrib<T> ParticleInteractLayout< T, Dim, Mesh >::ParticleInterRadius_t

Definition at line 82 of file ParticleInteractLayout.h.

◆ ParticlePos_t

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
typedef ParticleInteractAttrib<SingleParticlePos_t> ParticleInteractLayout< T, Dim, Mesh >::ParticlePos_t

Definition at line 80 of file ParticleInteractLayout.h.

◆ SingleParticlePos_t

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
typedef ParticleLayout<T, Dim>::SingleParticlePos_t ParticleInteractLayout< T, Dim, Mesh >::SingleParticlePos_t

Definition at line 76 of file ParticleInteractLayout.h.

Constructor & Destructor Documentation

◆ ParticleInteractLayout() [1/4]

template<class T , unsigned Dim, class Mesh >
ParticleInteractLayout< T, Dim, Mesh >::ParticleInteractLayout ( FieldLayout< Dim > &  fl)

Definition at line 34 of file ParticleInteractLayout.hpp.

References ParticleInteractLayout< T, Dim, Mesh >::setup().

Here is the call graph for this function:

◆ ParticleInteractLayout() [2/4]

template<class T , unsigned Dim, class Mesh >
ParticleInteractLayout< T, Dim, Mesh >::ParticleInteractLayout ( FieldLayout< Dim > &  fl,
Mesh mesh 
)

Definition at line 44 of file ParticleInteractLayout.hpp.

References ParticleInteractLayout< T, Dim, Mesh >::setup().

Here is the call graph for this function:

◆ ParticleInteractLayout() [3/4]

template<class T , unsigned Dim, class Mesh >
ParticleInteractLayout< T, Dim, Mesh >::ParticleInteractLayout ( const RegionLayout< T, Dim, Mesh > &  rl)

Definition at line 54 of file ParticleInteractLayout.hpp.

References ParticleInteractLayout< T, Dim, Mesh >::setup().

Here is the call graph for this function:

◆ ParticleInteractLayout() [4/4]

template<class T , unsigned Dim, class Mesh >
ParticleInteractLayout< T, Dim, Mesh >::ParticleInteractLayout

Definition at line 64 of file ParticleInteractLayout.hpp.

References ParticleInteractLayout< T, Dim, Mesh >::setup().

Here is the call graph for this function:

◆ ~ParticleInteractLayout()

template<class T , unsigned Dim, class Mesh >
ParticleInteractLayout< T, Dim, Mesh >::~ParticleInteractLayout

Definition at line 91 of file ParticleInteractLayout.hpp.

Member Function Documentation

◆ find_pairs()

template<class T , unsigned Dim, class Mesh >
void ParticleInteractLayout< T, Dim, Mesh >::find_pairs ( const unsigned  LocalNum,
const unsigned  a1,
const unsigned  a2,
const bool  initLists,
IpplParticleBase< ParticleInteractLayout< T, Dim, Mesh > > &  PData 
)
private

Definition at line 883 of file ParticleInteractLayout.hpp.

References begin(), dot(), end(), and Attrib::Legacy::Distribution::T.

Here is the call graph for this function:

◆ getInteractionRadius()

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
T ParticleInteractLayout< T, Dim, Mesh >::getInteractionRadius ( unsigned  i)
inline

◆ getMaxInteractionRadius()

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
T ParticleInteractLayout< T, Dim, Mesh >::getMaxInteractionRadius ( )
inline

◆ getMaxLocalInteractionRadius()

template<class T , unsigned Dim, class Mesh >
T ParticleInteractLayout< T, Dim, Mesh >::getMaxLocalInteractionRadius
private

Definition at line 104 of file ParticleInteractLayout.hpp.

◆ getPairlist()

template<class T , unsigned Dim, class Mesh >
void ParticleInteractLayout< T, Dim, Mesh >::getPairlist ( unsigned  n,
pair_iterator bpi,
pair_iterator epi,
IpplParticleBase< ParticleInteractLayout< T, Dim, Mesh > > &  PData 
)

Definition at line 125 of file ParticleInteractLayout.hpp.

References Dim, Hypervolume::n, and ParticlePeriodicBCond().

Here is the call graph for this function:

◆ rebuild_interaction_data() [1/2]

template<class T , unsigned Dim, class Mesh >
void ParticleInteractLayout< T, Dim, Mesh >::rebuild_interaction_data
private

Definition at line 168 of file ParticleInteractLayout.hpp.

References RegionLayout< T, Dim, MeshType >::begin_iv(), Dim, IpplInfo::getNodes(), and Attrib::Legacy::Distribution::T.

Here is the call graph for this function:

◆ rebuild_interaction_data() [2/2]

template<class T , unsigned Dim, class Mesh >
void ParticleInteractLayout< T, Dim, Mesh >::rebuild_interaction_data ( const bool  periodicBC[2 *Dim])
private

◆ Repartition()

template<class T , unsigned Dim, class Mesh >
void ParticleInteractLayout< T, Dim, Mesh >::Repartition ( UserList userlist)
virtual

Reimplemented from ParticleSpatialLayout< T, Dim, UniformCartesian< Dim, T > >.

Definition at line 978 of file ParticleInteractLayout.hpp.

References UserList::getUserListID().

Here is the call graph for this function:

◆ setInteractionRadius() [1/2]

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
void ParticleInteractLayout< T, Dim, Mesh >::setInteractionRadius ( const T &  r)
inline

◆ setInteractionRadius() [2/2]

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
void ParticleInteractLayout< T, Dim, Mesh >::setInteractionRadius ( ParticleInterRadius_t rAttrib)
inline

◆ setMaxInteractionRadius()

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
void ParticleInteractLayout< T, Dim, Mesh >::setMaxInteractionRadius ( maxval)
inlineprivate

◆ setNeedGhostSwap()

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
void ParticleInteractLayout< T, Dim, Mesh >::setNeedGhostSwap ( bool  cond = true)
inline

◆ setup()

template<class T , unsigned Dim, class Mesh >
void ParticleInteractLayout< T, Dim, Mesh >::setup ( void  )
private

Definition at line 73 of file ParticleInteractLayout.hpp.

References IpplInfo::getNodes().

Referenced by ParticleInteractLayout< T, Dim, Mesh >::ParticleInteractLayout().

Here is the call graph for this function:

◆ swap_ghost_particles() [1/2]

template<class T , unsigned Dim, class Mesh >
void ParticleInteractLayout< T, Dim, Mesh >::swap_ghost_particles ( unsigned  LocalNum,
IpplParticleBase< ParticleInteractLayout< T, Dim, Mesh > > &  PData 
)
private

Definition at line 520 of file ParticleInteractLayout.hpp.

References IpplInfo::getNodes(), and Attrib::Legacy::Distribution::T.

Here is the call graph for this function:

◆ swap_ghost_particles() [2/2]

template<class T , unsigned Dim, class Mesh >
void ParticleInteractLayout< T, Dim, Mesh >::swap_ghost_particles ( unsigned  LocalNum,
IpplParticleBase< ParticleInteractLayout< T, Dim, Mesh > > &  PData,
const bool  periodicBC[2 *Dim] 
)
private

◆ update()

template<class T , unsigned Dim, class Mesh >
void ParticleInteractLayout< T, Dim, Mesh >::update ( IpplParticleBase< ParticleInteractLayout< T, Dim, Mesh > > &  p,
const ParticleAttrib< char > *  canSwap = 0 
)

Member Data Documentation

◆ InteractionNodes

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
unsigned ParticleInteractLayout< T, Dim, Mesh >::InteractionNodes
private

Definition at line 167 of file ParticleInteractLayout.h.

◆ InterNodeList

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
bool* ParticleInteractLayout< T, Dim, Mesh >::InterNodeList
private

Definition at line 165 of file ParticleInteractLayout.h.

◆ InterRadius

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
T ParticleInteractLayout< T, Dim, Mesh >::InterRadius
private

◆ InterRadiusArray

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
ParticleInterRadius_t* ParticleInteractLayout< T, Dim, Mesh >::InterRadiusArray
private

◆ MaxGlobalInterRadius

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
T ParticleInteractLayout< T, Dim, Mesh >::MaxGlobalInterRadius
private

◆ NeedGhostSwap

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
bool ParticleInteractLayout< T, Dim, Mesh >::NeedGhostSwap
private

◆ PairList

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
std::vector< std::vector<pair_t>* > ParticleInteractLayout< T, Dim, Mesh >::PairList
private

Definition at line 170 of file ParticleInteractLayout.h.

◆ SentToNodeList

template<class T , unsigned Dim, class Mesh = UniformCartesian<Dim,T>>
bool* ParticleInteractLayout< T, Dim, Mesh >::SentToNodeList
private

Definition at line 166 of file ParticleInteractLayout.h.


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