ESyS-Particle  2.3.4
ParallelParticleArray< T > Class Template Reference

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

#include <pp_array.h>

Collaboration diagram for ParallelParticleArray< T >:

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 =42
 

Friends

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

Detailed Description

template<typename T>
class ParallelParticleArray< T >

parrallel particle storage array with neighborsearch and variable exchange

Member Typedef Documentation

◆ PairListHandle

template<typename T >
typedef T_Handle<typename NeighborTable<T>::pairlist> ParallelParticleArray< T >::PairListHandle

◆ PairListIterator

template<typename T >
typedef NeighborTable<T>::pairlist::iterator ParallelParticleArray< T >::PairListIterator

◆ ParticleListHandle

template<typename T >
typedef T_Handle<typename NeighborTable<T>::particlelist> ParallelParticleArray< T >::ParticleListHandle

◆ ParticleListIterator

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

Constructor & Destructor Documentation

◆ ParallelParticleArray() [1/2]

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

Construct a parallel particle array from a given communicator and geometry, i.e. minimum and maximum corners and search range. The process topology is generated from the communicator (via MPI_Dims_create). All boundaries are assumed to be open (i.e. not circular)

Parameters
commthe communicator
dimsthe dimensions the process space. {dims[0]=0; dims[1]=0; dims[2]=0;}–is 3D allocation of processors. {dims[0]=0; dims[1]=0; dims[2]=1;}–is 2D allocation of processors. {dims[0]=0; dims[1]=1; dims[2]=1;}–is 1D allocation of processors.
minthe (global) minimum corner of the model space
maxthe (global) maximum corner of the model space
rangethe search range
alphathe pair search cutoff
Todo:
check for (dims.size() > 3)

References console, Console::Error(), ParallelParticleArray< T >::m_circ_edge_x_down, ParallelParticleArray< T >::m_circ_edge_x_up, ParallelParticleArray< T >::m_nt, and NULL.

Here is the call graph for this function:

◆ ParallelParticleArray() [2/2]

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

Construct a parallel particle array from a given communicator and geometr, i.e. minimum and maximum corners and search range. The process topology is generated from the communicator (via MPI_Dims_create). The boundary conditions i.e. circular or open are given as parameter.

Parameters
commthe communicator
dimsthe dimensions the process space. {dims[0]=0; dims[1]=0; dims[2]=0;}–is 3D allocation of processors. {dims[0]=0; dims[1]=0; dims[2]=1;}–is 2D allocation of processors. {dims[0]=0; dims[1]=1; dims[2]=1;}–is 1D allocation of processors.
circcircular/open boundary conditions {circ[0] : x-direction, circ[1] : y-direction and circ[2] : z-direction, {true : circular, false : open}
minthe (global) minimum corner of the model space
maxthe (global) maximum corner of the model space
rangethe search range
alphathe pair search cutoff
Todo:
check for (dims.size() > 3)

References ParallelParticleArray< T >::m_circ_edge_x_down, ParallelParticleArray< T >::m_circ_edge_x_up, ParallelParticleArray< T >::m_nt, ParallelParticleArray< T >::m_xshift, ParallelParticleArray< T >::m_yshift, ParallelParticleArray< T >::m_zshift, and NULL.

◆ ~ParallelParticleArray()

template<typename T >
ParallelParticleArray< T >::~ParallelParticleArray

destructor

References NULL.

Member Function Documentation

◆ exchange()

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

For all particles shared with neighboring nodes, exchange some value accessible by read and write functions.

Parameters
rdfthe particle member function to read the value
wrtfthe particle member function to write the value

◆ exchange_single()

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

Helper function which does the actual shifting of values for exchange

Parameters
rdfthe particle member function to read the value
wrtfthe particle member function to write the value
send_slabthe NTSlab in which the data to be sent are located
recv_slabthe NTSlab in which the received data will be applied
dirthe direction of the transfer (x,y,z)
distthe shift distance, i.e. up or down (1,-1)

References NTSlab< T >::begin(), NTSlab< T >::end(), esys::lsm::bpu::iter(), and NTSlab< T >::size().

Here is the call graph for this function:

◆ forAllInnerParticles()

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

call a particle member function taking one argument for all inner particles

Parameters
fncthe particle member function
argthe argument to the particle member function

References NTBlock< T >::begin(), NTBlock< T >::end(), and esys::lsm::bpu::iter().

Here is the call graph for this function:

◆ forAllInnerParticlesGet()

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

Get a value for all inner particle using a particle member function and return the values in a container.

Parameters
contthe container
rdfthe particle member function

References NTBlock< T >::begin(), NTBlock< T >::end(), esys::lsm::bpu::iter(), and ParallelParticleArray< T >::m_nt.

Here is the call graph for this function:

◆ forAllInnerParticlesGetIndexed()

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

Get a value all inner particles using a particle member function and return a vector of pairs of the particle id and the value.

Parameters
rdfthe particle member function

References NTBlock< T >::begin(), NTBlock< T >::end(), esys::lsm::bpu::iter(), and ParallelParticleArray< T >::m_nt.

Here is the call graph for this function:

◆ forAllInnerTaggedParticlesGetIndexed()

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

Get a value all inner particles which have a tag fitting a given tag and mask using a particle member function and return a vector of pairs of the particle id and the value.

Parameters
rdfthe particle member function
tagthe particle tag
maskthe mask

References NTBlock< T >::begin(), NTBlock< T >::end(), esys::lsm::bpu::iter(), and ParallelParticleArray< T >::m_nt.

Here is the call graph for this function:

◆ forAllParticles() [1/3]

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

◆ forAllParticles() [2/3]

template<typename T >
void ParallelParticleArray< T >::forAllParticles ( void(T::*)()  fnc)

call a particle member function taking no argument for all particles

call a const particle member function taking no argument for all particles

References esys::lsm::bpu::iter().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ forAllParticles() [3/3]

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

call a particle member function taking one argument for all particles

Parameters
fncthe particle member function
argthe argument to the particle member function

References esys::lsm::bpu::iter().

Here is the call graph for this function:

◆ forAllParticlesGet()

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

Call a constant particle member function taking no argument and returning a value for all particles and collect the return values in a container. The container has to be an STL sequence container (vector,list...) or something with the same interface. The template parameter P is a type of container of the return type of the particle member function, not the return type itself. The container had to be reference argument because template instantiation based only on return type is impossible.

Parameters
contthe container
rdfthe particle member function

References esys::lsm::bpu::iter().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ forAllParticlesGetIndexed()

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

Get a value for each particle using a particle member function and return a vector of pairs of the particle id and the value.

Parameters
rdfthe particle member function

References esys::lsm::bpu::iter(), and ParallelParticleArray< T >::m_nt.

Here is the call graph for this function:

◆ forAllTaggedInnerParticlesGet()

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

Get a value for all inner particle which have a tag fitting a given tag and mask using a particle member function and return the values in a container.

Parameters
contthe container
rdfthe particle member function
tagthe particle tag
maskthe mask

References NTBlock< T >::begin(), NTBlock< T >::end(), esys::lsm::bpu::iter(), and ParallelParticleArray< T >::m_nt.

Here is the call graph for this function:

◆ forAllTaggedParticlesGet()

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

Call a constant particle member function taking no argument and returning a value for all particles which have a tag fitting a given tag and mask and collect the return values in a container. The container has to be an STL sequence container (vector,list...) or something with the same interface. The template parameter P is a type of container of the return type of the particle member function, not the return type itself. The container had to be reference argument because template instantiation based only on return type is impossible.

Parameters
contthe container
rdfthe particle member function
tagthe particle tag
maskthe mask

References esys::lsm::bpu::iter(), and ParallelParticleArray< T >::m_nt.

Here is the call graph for this function:

◆ forAllTaggedParticlesGetIndexed()

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

Get a value for each particle which has a tag fitting a given tag and mask using a particle member function and return a vector of pairs of the particle id and the value.

Parameters
rdfthe particle member function
tagthe particle tag
maskthe mask

References esys::lsm::bpu::iter(), and ParallelParticleArray< T >::m_nt.

Here is the call graph for this function:

◆ forParticle() [1/2]

template<typename T >
void ParallelParticleArray< T >::forParticle ( int  id,
void(T::*)()  mf 
)

Call a member function taking no argument for one particle. Do nothing if the particle with the id is not in the ntable.

Parameters
idthe id of the particle
mfthe member function
Warning
current implementation is O(n)

References NULL.

Referenced by main().

Here is the caller graph for this function:

◆ forParticle() [2/2]

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

Call a member function taking one argument for one particle. Do nothing if the particle with the id is not in the ntable.

Parameters
idthe id of the particle
mfthe member function
argthe argument to the function call
Warning
current implementation is O(n)

References NULL.

◆ forParticleTag() [1/2]

template<typename T >
void ParallelParticleArray< T >::forParticleTag ( int  tag,
void(T::*)()  mf 
)

Call a member function taking no argument for all particles with a given tag.

Parameters
tagthe tag
mfthe member function

References esys::lsm::bpu::iter().

Here is the call graph for this function:

◆ forParticleTag() [2/2]

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

Call a member function taking one argument for all particleswith a given tag.

Parameters
tagthe tag
mfthe member function
argthe argument to the function call

References esys::lsm::bpu::iter().

Here is the call graph for this function:

◆ forParticleTagMask() [1/2]

template<typename T >
void ParallelParticleArray< T >::forParticleTagMask ( int  tag,
int  mask,
void(T::*)()  mf 
)

Call a member function taking no argument for all particles with a given tag and mask. The functions is called if the masked bits in the particle tag and the given tag are identical, i.e. if ptag & mask == tag & mask

Parameters
tagthe tag
maskthe mask
mfthe member function

References esys::lsm::bpu::iter().

Here is the call graph for this function:

◆ forParticleTagMask() [2/2]

template<typename T >
template<typename P >
void ParallelParticleArray< T >::forParticleTagMask ( int  tag,
int  mask,
void(T::*)(P)  mf,
const P &  arg 
)

Call a member function taking one argument for all particles with a given tag and mask. The functions is called if the masked bits in the particle tag and the given tag are identical, i.e. if ptag & mask == tag & mask

Parameters
tagthe tag
maskthe mask
mfthe member function
argthe argument to the function call

References esys::lsm::bpu::iter().

Here is the call graph for this function:

◆ forPointsGetNearest()

template<typename T >
template<typename P >
void ParallelParticleArray< T >::forPointsGetNearest ( P &  cont,
typename P::value_type(T::*)() const  rdf,
const Vec3 orig,
double  dx,
double  dy,
double  dz,
int  nx,
int  ny,
int  nz 
)

get a value for the nearest particle to each point of a grid using a particle member function and return a container with the values

Parameters
contthe container
rdfthe particle member function returning the value
origthe base point of the grid
dxthe grid spacing in x-direction
dythe grid spacing in y-direction
dzthe grid spacing in z-direction
nxthe grid size in x-direction
nythe grid size in y-direction
nzthe grid size in z-direction

References console, Console::Debug(), and ParallelParticleArray< T >::m_nt.

Here is the call graph for this function:

◆ get2ndSlabIds()

template<typename T >
set< int > ParallelParticleArray< T >::get2ndSlabIds ( int  dir,
int  up 
) const
virtual

Get the Ids of all particles in the slab next to the boundary.

Parameters
dirthe direction ,i.e. 0->x, 1->y and 2->z
upup (1) or down (-1)

References NTSlab< T >::begin(), NTSlab< T >::end(), esys::lsm::bpu::iter(), and ParallelParticleArray< T >::m_nt.

Here is the call graph for this function:

◆ getAllInnerParticles()

template<typename T >
void ParallelParticleArray< T >::getAllInnerParticles ( vector< T > &  pv)

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

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

Parameters
pva reference to the vector

References NTBlock< T >::begin(), NTBlock< T >::end(), esys::lsm::bpu::iter(), and ParallelParticleArray< T >::m_nt.

Here is the call graph for this function:

◆ getAllParticles()

template<typename T >
ParticleListHandle ParallelParticleArray< T >::getAllParticles ( )
inline

Get list of all particles. Forwards to NTable.

References ParallelParticleArray< T >::m_nt.

◆ getBoundarySlabIds()

template<typename T >
set< int > ParallelParticleArray< T >::getBoundarySlabIds ( int  dir,
int  up 
) const
virtual

Get the Ids of all particles in the boundary slab.

Parameters
dirthe direction ,i.e. 0->x, 1->y and 2->z
upup (1) or down (-1)

References NTSlab< T >::begin(), NTSlab< T >::end(), esys::lsm::bpu::iter(), and ParallelParticleArray< T >::m_nt.

Here is the call graph for this function:

◆ getCommCoords()

template<typename T >
vector<int> ParallelParticleArray< T >::getCommCoords ( ) const
inline

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

Here is the caller graph for this function:

◆ getCommDims()

template<typename T >
vector<int> ParallelParticleArray< T >::getCommDims ( ) const
inline

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

Here is the caller graph for this function:

◆ getFullPairList()

template<typename T >
PairListHandle ParallelParticleArray< T >::getFullPairList ( )
inline

Get list of all pairs. Forwards to NTable::getFullList().

References ParallelParticleArray< T >::m_nt.

Referenced by CElasticInteractionGroup< T >::Update(), CRotElasticInteractionGroup< T >::Update(), and CRotThermElasticInteractionGroup< T >::Update().

Here is the caller graph for this function:

◆ getInnerParticleIterator()

template<typename T >
ParallelParticleArray< T >::ParticleIterator ParallelParticleArray< T >::getInnerParticleIterator

References ParallelParticleArray< T >::m_nt.

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

Here is the caller graph for this function:

◆ getInnerSize()

template<typename T >
int ParallelParticleArray< T >::getInnerSize ( )
inline

References ParallelParticleArray< T >::m_nt.

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

Here is the caller graph for this function:

◆ getMaxPos()

template<typename T >
Vec3 ParallelParticleArray< T >::getMaxPos ( ) const
inline

◆ getMinPos()

template<typename T >
Vec3 ParallelParticleArray< T >::getMinPos ( ) const
inline

◆ getNewPairList()

template<typename T >
PairListHandle ParallelParticleArray< T >::getNewPairList ( )
inline

Get list of new pairs. Forwards to NTable::getNewList().

References ParallelParticleArray< T >::m_nt.

Referenced by CElasticInteractionGroup< T >::Update(), CRotElasticInteractionGroup< T >::Update(), and CRotThermElasticInteractionGroup< T >::Update().

Here is the caller graph for this function:

◆ getParticlePtrByIndex()

template<typename T >
T * ParallelParticleArray< T >::getParticlePtrByIndex ( int  id)

◆ getParticlePtrByPosition()

template<typename T >
T * ParallelParticleArray< T >::getParticlePtrByPosition ( const Vec3 pos)

Get the pointer to a particle closest to a given position. Return NULL if the position is outside the area.

Parameters
posthe position.

◆ getParticlesAtPlane()

template<typename T >
ParticleListHandle ParallelParticleArray< T >::getParticlesAtPlane ( Vec3  o,
Vec3  n 
)
inline

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

References ParallelParticleArray< T >::m_nt.

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

Here is the caller graph for this function:

◆ getParticlesNearEdge()

template<typename T >
ParticleListHandle ParallelParticleArray< T >::getParticlesNearEdge ( const AEdge e)
inline

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

References ParallelParticleArray< T >::m_nt.

◆ getParticlesNearPoint()

template<typename T >
ParticleListHandle ParallelParticleArray< T >::getParticlesNearPoint ( const Vec3 v)
inline

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

References ParallelParticleArray< T >::m_nt.

◆ getParticlesNearSphere()

template<typename T >
ParticleListHandle ParallelParticleArray< T >::getParticlesNearSphere ( Vec3  c,
double  r 
)
inline

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

References ParallelParticleArray< T >::m_nt.

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

Here is the caller graph for this function:

◆ getParticlesNearTriangle()

template<typename T >
ParticleListHandle ParallelParticleArray< T >::getParticlesNearTriangle ( const Triangle t)
inline

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

References ParallelParticleArray< T >::m_nt.

◆ insert() [1/2]

template<typename T >
void ParallelParticleArray< T >::insert ( const T &  p)

particle insertion

insert a single particle into the storage

Parameters
pthe particle

◆ insert() [2/2]

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

multi particle insert

insert a STL vector of particles into the storage

Parameters
vpthe vector of particles

References esys::lsm::bpu::iter().

Here is the call graph for this function:

◆ isInInner()

template<typename T >
bool ParallelParticleArray< T >::isInInner ( const Vec3 pos)
virtual

◆ loadCheckPointData()

template<typename T >
void ParallelParticleArray< T >::loadCheckPointData ( std::istream &  ist)

load checkpoint data from an istream

Parameters
istthe input stream

References console, Console::Debug(), ParallelParticleArray< T >::isInInner(), and ParallelParticleArray< T >::m_nt.

Here is the call graph for this function:

◆ rebuild()

template<typename T >
void ParallelParticleArray< T >::rebuild

Rebuild the neighbor table, i.e. relocate particles to the appropriate gridpoints and exchange boundary particles with neighboring nodes. No (geometric) resizing done.

References NTSlab< T >::begin(), NTSlab< T >::end(), NTSlab< T >::erase(), and esys::lsm::bpu::iter().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ saveCheckPointData()

template<typename T >
void ParallelParticleArray< T >::saveCheckPointData ( std::ostream &  ost)

save checkpoint data into an ostream

Parameters
ostthe output stream

References NTBlock< T >::begin(), console, Console::Debug(), NTBlock< T >::end(), ParallelParticleArray< T >::getInnerSize(), esys::lsm::bpu::iter(), and ParallelParticleArray< T >::m_nt.

Here is the call graph for this function:

◆ size()

template<typename T >
int ParallelParticleArray< T >::size ( )
inline

Friends And Related Function Documentation

◆ operator<<

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

Member Data Documentation

◆ m_circ_edge_x_down

template<typename T >
bool ParallelParticleArray< T >::m_circ_edge_x_down
private

circular edge flags

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

◆ m_circ_edge_x_up

template<typename T >
bool ParallelParticleArray< T >::m_circ_edge_x_up
private

◆ m_exchg_tag

template<typename T >
const int ParallelParticleArray< T >::m_exchg_tag =42
staticprivate

◆ m_maxpos

template<typename T >
Vec3 ParallelParticleArray< T >::m_maxpos
private

local minimum and maximum positions

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

◆ m_minpos

template<typename T >
Vec3 ParallelParticleArray< T >::m_minpos
private

◆ m_nt

◆ m_xshift

template<typename T >
double ParallelParticleArray< T >::m_xshift
private

◆ m_yshift

template<typename T >
double ParallelParticleArray< T >::m_yshift
private

◆ m_zshift

template<typename T >
double ParallelParticleArray< T >::m_zshift
private

circular shift values

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


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