OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy > Class Template Reference

#include <ParticleSpatialLayout.h>

Inheritance diagram for ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >:
Collaboration diagram for ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >:

Public Types

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, MeshRegionLayout_t
enum  { Dimension = Dim }
enum  UpdateFlags {
  SWAP , BCONDS , NUMFLAGS , OPTDESTROY ,
  ALL
}
typedef T Position_t
typedef Unique::type ID_t

Public Member Functions

 ParticleSpatialLayout (FieldLayout< Dim > &)
 ParticleSpatialLayout (FieldLayout< Dim > &, Mesh &)
 ParticleSpatialLayout (const RegionLayout< T, Dim, Mesh > &)
 ParticleSpatialLayout ()
 ~ParticleSpatialLayout ()
FieldLayout< Dim > & getFieldLayout ()
RegionLayout< T, Dim, Mesh > & getLayout ()
const RegionLayout< T, Dim, Mesh > & getLayout () const
int getNodeCount (unsigned i) const
bool getEmptyNode (unsigned i) const
void update (IpplParticleBase< ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy > > &p, const ParticleAttrib< char > *canSwap=0)
void printDebug (Inform &)
virtual void Repartition (UserList *)
virtual void notifyUserOfDelete (UserList *)
void enableCaching ()
void disableCaching ()
void setUpdateFlag (UpdateFlags f, bool val)
bool getUpdateFlag (UpdateFlags f) const
ParticleBConds< T, Dim > & getBConds ()
void setBConds (const ParticleBConds< T, Dim > &bc)
ID_t get_Id () const
void setCacheDimension (int d, T length)
void setAllCacheDimensions (T length)
template<class C>
void updateCacheInformation (ParticleSpatialLayout< T, Dim, Mesh, C > &PLayout)
template<class C>
void updateGhostParticles (IpplParticleBase< ParticleSpatialLayout< T, Dim, Mesh, C > > &PData, ParticleSpatialLayout< T, Dim, Mesh, C > &)

Protected Member Functions

void setup ()
template<class PB>
void rebuild_layout (size_t haveLocal, PB &PData)
template<class PB>
size_t swap_particles (size_t LocalNum, PB &PData)
template<class PB>
size_t short_swap_particles (size_t LocalNum, PB &PData)
template<class PB>
size_t swap_particles (size_t LocalNum, PB &PData, const ParticleAttrib< char > &canSwap)
template<class PB>
size_t new_swap_particles (size_t LocalNum, PB &PData)
template<class PB>
size_t new_swap_particles (size_t LocalNum, PB &PData, const ParticleAttrib< char > &canSwap)
template<class PPT, class NDI>
void apply_bconds (unsigned n, PPT &R, const ParticleBConds< T, Dim > &bcs, const NDI &nr)

Protected Attributes

RegionLayout< T, Dim, MeshRLayout
size_t * NodeCount
bool * EmptyNode
bool * SwapNodeList [Dim]
Message ** SwapMsgList
unsigned NeighborNodes [Dim]
std::vector< size_t > * PutList
bool caching
ID_t Id

Private Attributes

ParticleBConds< T, DimBoundConds
unsigned int UpdateOptions
boxDimension [Dim]
bool periodic [2 *Dim]
std::map< unsigned, std::list< std::pair< NDRegion< T, Dim >, Offset_t > > > regions

Detailed Description

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
class ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >

Definition at line 60 of file ParticleSpatialLayout.h.

Member Typedef Documentation

◆ ID_t

typedef Unique::type User::ID_t
inherited

Definition at line 35 of file User.h.

◆ Index_t

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
typedef ParticleLayout<T,Dim>::Index_t ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::Index_t

Definition at line 74 of file ParticleSpatialLayout.h.

◆ pair_iterator

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
typedef pair_t* ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::pair_iterator

Definition at line 71 of file ParticleSpatialLayout.h.

◆ pair_t

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
typedef int ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::pair_t

Definition at line 70 of file ParticleSpatialLayout.h.

◆ ParticleIndex_t

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
typedef ParticleAttrib<Index_t> ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::ParticleIndex_t

Definition at line 78 of file ParticleSpatialLayout.h.

◆ ParticlePos_t

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
typedef ParticleAttrib<SingleParticlePos_t> ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::ParticlePos_t

Definition at line 77 of file ParticleSpatialLayout.h.

◆ Position_t

template<class T, unsigned Dim>
typedef T ParticleLayout< T, Dim >::Position_t
inherited

Definition at line 62 of file ParticleLayout.h.

◆ RegionLayout_t

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
typedef RegionLayout<T,Dim,Mesh> ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::RegionLayout_t

Definition at line 79 of file ParticleSpatialLayout.h.

◆ SingleParticlePos_t

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
typedef ParticleLayout<T,Dim>::SingleParticlePos_t ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::SingleParticlePos_t

Definition at line 73 of file ParticleSpatialLayout.h.

Member Enumeration Documentation

◆ anonymous enum

template<class T, unsigned Dim>
anonymous enum
inherited
Enumerator
Dimension 

Definition at line 58 of file ParticleLayout.h.

◆ UpdateFlags

template<class T, unsigned Dim>
enum ParticleLayout::UpdateFlags
inherited
Enumerator
SWAP 
BCONDS 
NUMFLAGS 
OPTDESTROY 
ALL 

Definition at line 59 of file ParticleLayout.h.

Constructor & Destructor Documentation

◆ ParticleSpatialLayout() [1/4]

◆ ParticleSpatialLayout() [2/4]

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

Definition at line 37 of file ParticleSpatialLayout.hpp.

References RLayout, and setup().

Here is the call graph for this function:

◆ ParticleSpatialLayout() [3/4]

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

Definition at line 48 of file ParticleSpatialLayout.hpp.

References RLayout, and setup().

Here is the call graph for this function:

◆ ParticleSpatialLayout() [4/4]

template<class T, unsigned Dim, class Mesh, class CachingPolicy>
ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::ParticleSpatialLayout ( )

Definition at line 59 of file ParticleSpatialLayout.hpp.

References RLayout, and setup().

Here is the call graph for this function:

◆ ~ParticleSpatialLayout()

template<class T, unsigned Dim, class Mesh, class CachingPolicy>
ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::~ParticleSpatialLayout ( )

Definition at line 100 of file ParticleSpatialLayout.hpp.

References Dim, EmptyNode, NodeCount, PutList, RLayout, SwapMsgList, and SwapNodeList.

Member Function Documentation

◆ apply_bconds()

template<class T, unsigned Dim>
template<class PPT, class NDI>
void ParticleLayout< T, Dim >::apply_bconds ( unsigned n,
PPT & R,
const ParticleBConds< T, Dim > & bcs,
const NDI & nr )
inlineprotectedinherited

◆ disableCaching()

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
void ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::disableCaching ( )
inline

Definition at line 172 of file ParticleSpatialLayout.h.

◆ enableCaching()

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
void ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::enableCaching ( )
inline

Definition at line 171 of file ParticleSpatialLayout.h.

◆ get_Id()

ID_t User::get_Id ( ) const
inlineinherited

Definition at line 46 of file User.h.

References Id.

Referenced by UserList::checkinUser(), and UserList::checkoutUser().

◆ getBConds()

◆ getEmptyNode()

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
bool ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::getEmptyNode ( unsigned i) const
inline

◆ getFieldLayout()

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
FieldLayout< Dim > & ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::getFieldLayout ( )
inline

Definition at line 113 of file ParticleSpatialLayout.h.

◆ getLayout() [1/2]

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
RegionLayout< T, Dim, Mesh > & ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::getLayout ( )
inline

◆ getLayout() [2/2]

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
const RegionLayout< T, Dim, Mesh > & ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::getLayout ( ) const
inline

Definition at line 123 of file ParticleSpatialLayout.h.

◆ getNodeCount()

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
int ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::getNodeCount ( unsigned i) const
inline

Definition at line 129 of file ParticleSpatialLayout.h.

Referenced by operator<<(), operator<<(), and operator<<().

◆ getUpdateFlag()

◆ new_swap_particles() [1/2]

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
template<class PB>
size_t ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::new_swap_particles ( size_t LocalNum,
PB & PData )
inlineprotected

Definition at line 1073 of file ParticleSpatialLayout.h.

◆ new_swap_particles() [2/2]

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
template<class PB>
size_t ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::new_swap_particles ( size_t LocalNum,
PB & PData,
const ParticleAttrib< char > & canSwap )
inlineprotected

Definition at line 1194 of file ParticleSpatialLayout.h.

◆ notifyUserOfDelete()

template<class T, unsigned Dim, class Mesh, class CachingPolicy>
void ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::notifyUserOfDelete ( UserList * )
virtual

Implements User.

Definition at line 282 of file ParticleSpatialLayout.hpp.

◆ printDebug()

template<class T, unsigned Dim, class Mesh, class CachingPolicy>
void ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::printDebug ( Inform & o)

Definition at line 259 of file ParticleSpatialLayout.hpp.

References IpplInfo::getNodes(), and NodeCount.

Here is the call graph for this function:

◆ rebuild_layout()

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
template<class PB>
void ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::rebuild_layout ( size_t haveLocal,
PB & PData )
inlineprotected

◆ Repartition()

template<class T, unsigned Dim, class Mesh, class CachingPolicy>
void ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::Repartition ( UserList * )
virtual

◆ setAllCacheDimensions()

template<class T, unsigned Dim, class Mesh>
void BoxParticleCachingPolicy< T, Dim, Mesh >::setAllCacheDimensions ( T length)
inlineinherited

Definition at line 35 of file BoxParticleCachingPolicy.h.

References boxDimension, and Dim.

◆ setBConds()

template<class T, unsigned Dim>
void ParticleLayout< T, Dim >::setBConds ( const ParticleBConds< T, Dim > & bc)
inlineinherited

Definition at line 94 of file ParticleLayout.h.

◆ setCacheDimension()

template<class T, unsigned Dim, class Mesh>
void BoxParticleCachingPolicy< T, Dim, Mesh >::setCacheDimension ( int d,
T length )
inlineinherited

◆ setup()

template<class T, unsigned Dim, class Mesh, class CachingPolicy>
void ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::setup ( )
protected

Definition at line 68 of file ParticleSpatialLayout.hpp.

References caching, Dim, IpplInfo::getNodes(), PutList, RLayout, SwapMsgList, and SwapNodeList.

Referenced by ParticleSpatialLayout(), ParticleSpatialLayout(), ParticleSpatialLayout(), and ParticleSpatialLayout().

Here is the call graph for this function:

◆ setUpdateFlag()

template<class T, unsigned Dim>
void ParticleLayout< T, Dim >::setUpdateFlag ( UpdateFlags f,
bool val )
inlineinherited

Definition at line 76 of file ParticleLayout.h.

Referenced by ParticleLayout(), and IpplParticleBase< Layout_t >::setUpdateFlag().

◆ short_swap_particles()

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
template<class PB>
size_t ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::short_swap_particles ( size_t LocalNum,
PB & PData )
inlineprotected

Definition at line 632 of file ParticleSpatialLayout.h.

◆ swap_particles() [1/2]

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
template<class PB>
size_t ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::swap_particles ( size_t LocalNum,
PB & PData )
inlineprotected

◆ swap_particles() [2/2]

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
template<class PB>
size_t ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::swap_particles ( size_t LocalNum,
PB & PData,
const ParticleAttrib< char > & canSwap )
inlineprotected

Definition at line 773 of file ParticleSpatialLayout.h.

◆ update()

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

Definition at line 121 of file ParticleSpatialLayout.hpp.

References ParticleLayout< T, Dim >::apply_bconds(), ParticleLayout< T, Dim >::BCONDS, IpplInfo::getNodes(), ParticleLayout< T, Dim >::getUpdateFlag(), IpplInfo::myNode(), ParticleSpatialLayout(), rebuild_layout(), and RLayout.

Here is the call graph for this function:

◆ updateCacheInformation()

◆ updateGhostParticles()

template<class T, unsigned Dim, class Mesh>
template<class C>
void BoxParticleCachingPolicy< T, Dim, Mesh >::updateGhostParticles ( IpplParticleBase< ParticleSpatialLayout< T, Dim, Mesh, C > > & PData,
ParticleSpatialLayout< T, Dim, Mesh, C > &  )
inlineinherited

Definition at line 155 of file BoxParticleCachingPolicy.h.

References boxDimension, IpplInfo::Comm, Communicate::COMM_ANY_NODE, Dim, MsgBuffer::getBuffer(), MsgBuffer::getSize(), P_LAYOUT_CYCLE, P_SPATIAL_GHOST_TAG, regions, and NDRegion< T, Dim >::touches().

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

Here is the call graph for this function:

Member Data Documentation

◆ BoundConds

template<class T, unsigned Dim>
ParticleBConds<T,Dim> ParticleLayout< T, Dim >::BoundConds
privateinherited

Definition at line 118 of file ParticleLayout.h.

◆ boxDimension

template<class T, unsigned Dim, class Mesh>
T BoxParticleCachingPolicy< T, Dim, Mesh >::boxDimension[Dim]
privateinherited

◆ caching

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
bool ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::caching
protected

Definition at line 191 of file ParticleSpatialLayout.h.

Referenced by setup().

◆ EmptyNode

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
bool* ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::EmptyNode
protected

Definition at line 182 of file ParticleSpatialLayout.h.

Referenced by ~ParticleSpatialLayout().

◆ Id

ID_t User::Id
protectedinherited

Definition at line 58 of file User.h.

Referenced by get_Id(), and User().

◆ NeighborNodes

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
unsigned ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::NeighborNodes[Dim]
protected

Definition at line 188 of file ParticleSpatialLayout.h.

◆ NodeCount

◆ periodic

template<class T, unsigned Dim, class Mesh>
bool BoxParticleCachingPolicy< T, Dim, Mesh >::periodic[2 *Dim]
privateinherited

Definition at line 261 of file BoxParticleCachingPolicy.h.

Referenced by updateCacheInformation().

◆ PutList

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
std::vector<size_t>* ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::PutList
protected

Definition at line 189 of file ParticleSpatialLayout.h.

Referenced by setup(), and ~ParticleSpatialLayout().

◆ regions

template<class T, unsigned Dim, class Mesh>
std::map<unsigned, std::list<std::pair<NDRegion<T,Dim>, Offset_t> > > BoxParticleCachingPolicy< T, Dim, Mesh >::regions
privateinherited

Definition at line 262 of file BoxParticleCachingPolicy.h.

Referenced by updateCacheInformation(), and updateGhostParticles().

◆ RLayout

◆ SwapMsgList

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
Message** ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::SwapMsgList
protected

◆ SwapNodeList

template<class T, unsigned Dim, class Mesh = UniformCartesian<Dim,T>, class CachingPolicy = BoxParticleCachingPolicy<T,Dim,Mesh >>
bool* ParticleSpatialLayout< T, Dim, Mesh, CachingPolicy >::SwapNodeList[Dim]
protected

Definition at line 186 of file ParticleSpatialLayout.h.

Referenced by setup(), and ~ParticleSpatialLayout().

◆ UpdateOptions

template<class T, unsigned Dim>
unsigned int ParticleLayout< T, Dim >::UpdateOptions
privateinherited

Definition at line 121 of file ParticleLayout.h.


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