ESyS-Particle  2.3.4
ParallelParticleArray Class Reference

parrallel particle storage array with neighborsearch and variable exchange More...

#include <SubLattice.h>

Inheritance diagram for ParallelParticleArray:
Collaboration diagram for ParallelParticleArray:

Classes

class  ParticleIterator
 

Public Types

typedef T_Handle< typename NeighborTable< T >::pairlist > PairListHandle
 
typedef NeighborTable< T >::pairlist::iterator PairListIterator
 
typedef T_Handle< typename NeighborTable< T >::particlelist > ParticleListHandle
 
typedef NeighborTable< T >::particlelist::iterator ParticleListIterator
 

Public Member Functions

 ParallelParticleArray (TML_Comm *comm, const vector< unsigned int > &dims, const Vec3 &min, const Vec3 &max, double rmax, double alpha)
 
 ParallelParticleArray (TML_Comm *comm, const vector< unsigned int > &dims, const vector< bool > &circ, const Vec3 &min, const Vec3 &max, double rmax, double alpha)
 
 ~ParallelParticleArray ()
 
Vec3 getMinPos () const
 
Vec3 getMaxPos () const
 
vector< int > getCommCoords () const
 
vector< int > getCommDims () const
 
int size ()
 
int getInnerSize ()
 
void insert (const T &)
 particle insertion More...
 
void insert (const vector< T > &)
 multi particle insert More...
 
virtual bool isInInner (const Vec3 &)
 
T * getParticlePtrByIndex (int)
 
T * getParticlePtrByPosition (const Vec3 &)
 
void rebuild ()
 
template<typename P >
void exchange (P(T::*rdf)(), void(T::*wrtf)(const P &))
 
void forParticle (int, void(T::*rdf)())
 
template<typename P >
void forParticle (int, void(T::*rdf)(P), const P &)
 
void forParticleTag (int, void(T::*rdf)())
 
template<typename P >
void forParticleTag (int, void(T::*rdf)(P), const P &)
 
void forParticleTagMask (int, int, void(T::*rdf)())
 
template<typename P >
void forParticleTagMask (int, int, void(T::*rdf)(P), const P &)
 
void forAllParticles (void(T::*rdf)())
 
void forAllParticles (void(T::*rdf)() const)
 
template<typename P >
void forAllParticles (void(T::*rdf)(P), const P &)
 
template<typename P >
void forAllInnerParticles (void(T::*rdf)(P &), P &)
 
ParticleIterator getInnerParticleIterator ()
 
template<typename P >
void forAllParticlesGet (P &, typename P::value_type(T::*rdf)() const)
 
template<typename P >
void forAllInnerParticlesGet (P &, typename P::value_type(T::*rdf)() const)
 
template<typename P >
vector< pair< int, P > > forAllParticlesGetIndexed (P(T::*rdf)() const)
 
template<typename P >
vector< pair< int, P > > forAllInnerParticlesGetIndexed (P(T::*rdf)() const)
 
template<typename P >
void forAllTaggedParticlesGet (P &, typename P::value_type(T::*rdf)() const, int, int)
 
template<typename P >
void forAllTaggedInnerParticlesGet (P &, typename P::value_type(T::*rdf)() const, int, int)
 
template<typename P >
vector< pair< int, P > > forAllTaggedParticlesGetIndexed (P(T::*rdf)() const, int, int)
 
template<typename P >
vector< pair< int, P > > forAllInnerTaggedParticlesGetIndexed (P(T::*rdf)() const, int, int)
 
template<typename P >
void forPointsGetNearest (P &, typename P::value_type(T::*rdf)() const, const Vec3 &, double, double, double, int, int, int)
 
virtual set< int > getBoundarySlabIds (int, int) const
 
virtual set< int > get2ndSlabIds (int, int) const
 
PairListHandle getFullPairList ()
 Get list of all pairs. Forwards to NTable::getFullList(). More...
 
PairListHandle getNewPairList ()
 Get list of new pairs. Forwards to NTable::getNewList(). More...
 
ParticleListHandle getParticlesAtPlane (Vec3 o, Vec3 n)
 Get list of particles along a plane. Forwards to NTable::getParticlesAtPlane. More...
 
ParticleListHandle getParticlesNearSphere (Vec3 c, double r)
 Get list of particles near a sphere body. Forwards to NTable::getParticlesNearSphere. More...
 
ParticleListHandle getParticlesNearTriangle (const Triangle &t)
 Get list of particles near a triangle. Forwards to NTable::getParticlesNearTriangle. More...
 
ParticleListHandle getParticlesNearEdge (const AEdge *e)
 Get list of particles near an edge. Forwards to NTable::getParticlesNearEdge. More...
 
ParticleListHandle getParticlesNearPoint (const Vec3 &v)
 Get list of particles near a point. Forwards to NTable::getParticlesNearEdge. More...
 
ParticleListHandle getAllParticles ()
 Get list of all particles. Forwards to NTable. More...
 
void getAllInnerParticles (vector< T > &)
 get all particles in inner block and put them into a vector More...
 
void saveCheckPointData (std::ostream &)
 
void loadCheckPointData (std::istream &)
 

Private Member Functions

template<typename P >
void exchange_single (P(T::*rdf)(), void(T::*wrtf)(const P &), NTSlab< T >, NTSlab< T >, int, int)
 

Private Attributes

NeighborTable< T > * m_nt
 
Vec3 m_minpos
 
Vec3 m_maxpos
 local minimum and maximum positions More...
 
double m_xshift
 
double m_yshift
 
double m_zshift
 circular shift values More...
 
bool m_circ_edge_x_up
 
bool m_circ_edge_x_down
 circular edge flags More...
 

Static Private Attributes

static const int m_exchg_tag
 

Friends

template<typename TT >
ostream & operator<< (ostream &, const ParallelParticleArray< TT > &)
 

Detailed Description

parrallel particle storage array with neighborsearch and variable exchange

Member Typedef Documentation

◆ PairListHandle

◆ PairListIterator

◆ ParticleListHandle

◆ ParticleListIterator

typedef NeighborTable<T>::particlelist::iterator ParallelParticleArray::ParticleListIterator

Constructor & Destructor Documentation

◆ ParallelParticleArray() [1/2]

ParallelParticleArray::ParallelParticleArray ( TML_Comm comm,
const vector< unsigned int > &  dims,
const Vec3 min,
const Vec3 max,
double  rmax,
double  alpha 
)

◆ ParallelParticleArray() [2/2]

ParallelParticleArray::ParallelParticleArray ( TML_Comm comm,
const vector< unsigned int > &  dims,
const vector< bool > &  circ,
const Vec3 min,
const Vec3 max,
double  rmax,
double  alpha 
)

◆ ~ParallelParticleArray()

ParallelParticleArray::~ParallelParticleArray ( )

Member Function Documentation

◆ exchange()

template<typename P >
void ParallelParticleArray::exchange ( P(T::*)()  rdf,
void(T::*)(const P &)  wrtf 
)

◆ exchange_single()

template<typename P >
void ParallelParticleArray::exchange_single ( P(T::*)()  rdf,
void(T::*)(const P &)  wrtf,
NTSlab< T >  ,
NTSlab< T >  ,
int  ,
int   
)
private

◆ forAllInnerParticles()

template<typename P >
void ParallelParticleArray::forAllInnerParticles ( void(T::*)(P &)  rdf,
P &   
)

◆ forAllInnerParticlesGet()

template<typename P >
void ParallelParticleArray::forAllInnerParticlesGet ( P &  ,
typename P::value_type(T::*)() const  rdf 
)

◆ forAllInnerParticlesGetIndexed()

template<typename P >
vector<pair<int,P> > ParallelParticleArray::forAllInnerParticlesGetIndexed ( P(T::*)() const  rdf)

◆ forAllInnerTaggedParticlesGetIndexed()

template<typename P >
vector<pair<int,P> > ParallelParticleArray::forAllInnerTaggedParticlesGetIndexed ( P(T::*)() const  rdf,
int  ,
int   
)

◆ forAllParticles() [1/3]

void ParallelParticleArray::forAllParticles ( void(T::*)() const  rdf)

◆ forAllParticles() [2/3]

void ParallelParticleArray::forAllParticles ( void(T::*)()  rdf)

Referenced by main().

Here is the caller graph for this function:

◆ forAllParticles() [3/3]

template<typename P >
void ParallelParticleArray::forAllParticles ( void(T::*)(P)  rdf,
const P &   
)

◆ forAllParticlesGet()

template<typename P >
void ParallelParticleArray::forAllParticlesGet ( P &  ,
typename P::value_type(T::*)() const  rdf 
)

Referenced by main().

Here is the caller graph for this function:

◆ forAllParticlesGetIndexed()

template<typename P >
vector<pair<int,P> > ParallelParticleArray::forAllParticlesGetIndexed ( P(T::*)() const  rdf)

◆ forAllTaggedInnerParticlesGet()

template<typename P >
void ParallelParticleArray::forAllTaggedInnerParticlesGet ( P &  ,
typename P::value_type(T::*)() const  rdf,
int  ,
int   
)

◆ forAllTaggedParticlesGet()

template<typename P >
void ParallelParticleArray::forAllTaggedParticlesGet ( P &  ,
typename P::value_type(T::*)() const  rdf,
int  ,
int   
)

◆ forAllTaggedParticlesGetIndexed()

template<typename P >
vector<pair<int,P> > ParallelParticleArray::forAllTaggedParticlesGetIndexed ( P(T::*)() const  rdf,
int  ,
int   
)

◆ forParticle() [1/2]

void ParallelParticleArray::forParticle ( int  ,
void(T::*)()  rdf 
)

Referenced by main().

Here is the caller graph for this function:

◆ forParticle() [2/2]

template<typename P >
void ParallelParticleArray::forParticle ( int  ,
void(T::*)(P)  rdf,
const P &   
)

◆ forParticleTag() [1/2]

void ParallelParticleArray::forParticleTag ( int  ,
void(T::*)()  rdf 
)

◆ forParticleTag() [2/2]

template<typename P >
void ParallelParticleArray::forParticleTag ( int  ,
void(T::*)(P)  rdf,
const P &   
)

◆ forParticleTagMask() [1/2]

void ParallelParticleArray::forParticleTagMask ( int  ,
int  ,
void(T::*)()  rdf 
)

◆ forParticleTagMask() [2/2]

template<typename P >
void ParallelParticleArray::forParticleTagMask ( int  ,
int  ,
void(T::*)(P)  rdf,
const P &   
)

◆ forPointsGetNearest()

template<typename P >
void ParallelParticleArray::forPointsGetNearest ( P &  ,
typename P::value_type(T::*)() const  rdf,
const Vec3 ,
double  ,
double  ,
double  ,
int  ,
int  ,
int   
)

◆ get2ndSlabIds()

virtual set<int> ParallelParticleArray::get2ndSlabIds ( int  ,
int   
) const
virtual

◆ getAllInnerParticles()

void ParallelParticleArray::getAllInnerParticles ( vector< T > &  )

get all particles in inner block and put them into a vector

◆ getAllParticles()

ParticleListHandle ParallelParticleArray::getAllParticles ( )
inline

Get list of all particles. Forwards to NTable.

◆ getBoundarySlabIds()

virtual set<int> ParallelParticleArray::getBoundarySlabIds ( int  ,
int   
) const
virtual

◆ getCommCoords()

vector<int> ParallelParticleArray::getCommCoords ( ) const
inline

Referenced by TSubLattice< T >::getCommCoords().

Here is the caller graph for this function:

◆ getCommDims()

vector<int> ParallelParticleArray::getCommDims ( ) const
inline

Referenced by TSubLattice< T >::getCommDims().

Here is the caller graph for this function:

◆ getFullPairList()

◆ getInnerParticleIterator()

ParticleIterator ParallelParticleArray::getInnerParticleIterator ( )

Referenced by TSubLattice< T >::saveSnapShotData().

Here is the caller graph for this function:

◆ getInnerSize()

int ParallelParticleArray::getInnerSize ( )
inline

◆ getMaxPos()

Vec3 ParallelParticleArray::getMaxPos ( ) const
inline

◆ getMinPos()

Vec3 ParallelParticleArray::getMinPos ( ) const
inline

◆ getNewPairList()

◆ getParticlePtrByIndex()

◆ getParticlePtrByPosition()

T* ParallelParticleArray::getParticlePtrByPosition ( const Vec3 )

◆ getParticlesAtPlane()

ParticleListHandle ParallelParticleArray::getParticlesAtPlane ( Vec3  o,
Vec3  n 
)
inline

Get list of particles along a plane. Forwards to NTable::getParticlesAtPlane.

Referenced by CTaggedEWallInteractionGroup< T >::Update(), CEWallInteractionGroup< T >::Update(), CSoftBWallInteractionGroup< T >::Update(), CViscWallIG< T >::Update(), and CBWallInteractionGroup::Update().

Here is the caller graph for this function:

◆ getParticlesNearEdge()

ParticleListHandle ParallelParticleArray::getParticlesNearEdge ( const AEdge e)
inline

Get list of particles near an edge. Forwards to NTable::getParticlesNearEdge.

◆ getParticlesNearPoint()

ParticleListHandle ParallelParticleArray::getParticlesNearPoint ( const Vec3 v)
inline

Get list of particles near a point. Forwards to NTable::getParticlesNearEdge.

◆ getParticlesNearSphere()

ParticleListHandle ParallelParticleArray::getParticlesNearSphere ( Vec3  c,
double  r 
)
inline

Get list of particles near a sphere body. Forwards to NTable::getParticlesNearSphere.

Referenced by CESphereBodyInteractionGroup< T >::Update().

Here is the caller graph for this function:

◆ getParticlesNearTriangle()

ParticleListHandle ParallelParticleArray::getParticlesNearTriangle ( const Triangle t)
inline

Get list of particles near a triangle. Forwards to NTable::getParticlesNearTriangle.

◆ insert() [1/2]

void ParallelParticleArray::insert ( const T &  )

particle insertion

◆ insert() [2/2]

void ParallelParticleArray::insert ( const vector< T > &  )

multi particle insert

◆ isInInner()

◆ loadCheckPointData()

void ParallelParticleArray::loadCheckPointData ( std::istream &  )

◆ rebuild()

void ParallelParticleArray::rebuild ( )

Referenced by main().

Here is the caller graph for this function:

◆ saveCheckPointData()

void ParallelParticleArray::saveCheckPointData ( std::ostream &  )

◆ size()

int ParallelParticleArray::size ( )
inline

Friends And Related Function Documentation

◆ operator<<

template<typename TT >
ostream& operator<< ( ostream &  ,
const ParallelParticleArray< TT > &   
)
friend

Member Data Documentation

◆ m_circ_edge_x_down

bool ParallelParticleArray::m_circ_edge_x_down
private

circular edge flags

◆ m_circ_edge_x_up

bool ParallelParticleArray::m_circ_edge_x_up
private

◆ m_exchg_tag

const int ParallelParticleArray::m_exchg_tag
staticprivate

◆ m_maxpos

Vec3 ParallelParticleArray::m_maxpos
private

local minimum and maximum positions

Referenced by ParallelParticleArray< T >::getMaxPos().

◆ m_minpos

Vec3 ParallelParticleArray::m_minpos
private

◆ m_nt

◆ m_xshift

double ParallelParticleArray::m_xshift
private

◆ m_yshift

double ParallelParticleArray::m_yshift
private

◆ m_zshift

double ParallelParticleArray::m_zshift
private

circular shift values


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