ESyS-Particle  2.3.4
Mesh2D_PIS_EB< ParticleType, IType > Class Template Reference

Class for parallel storage of interactions between a 2D mesh and particles which does require exchange of interactions across process boundaries but where interactions are not dynamically formed. More...

#include <mesh2d_pis_eb.h>

Inheritance diagram for Mesh2D_PIS_EB< ParticleType, IType >:
Collaboration diagram for Mesh2D_PIS_EB< ParticleType, IType >:

Classes

class  InteractionIterator
 

Public Member Functions

 Mesh2D_PIS_EB (Mesh2D *, ParallelParticleArray< ParticleType > *, typename IType::ParameterType)
 
virtual bool isIn (const vector< int > &)
 
virtual void setTimeStepSize (double dt)
 
virtual void calcForces ()
 
virtual bool update ()
 
virtual void exchange ()
 
virtual void rebuild ()
 
virtual void tryInsert (const typename IType::TriIntType &)
 
virtual void tryInsert (const typename IType::CornerIntType &)
 
virtual void tryInsert (const vector< int > &)
 
InteractionIterator getInnerInteractionIterator ()
 
void buildFromPPATagged (int, int)
 
void buildFromPPAByGap (double)
 
virtual void saveSnapShotData (std::ostream &)
 
virtual void saveCheckPointData (std::ostream &)
 
virtual void loadCheckPointData (std::istream &)
 
- Public Member Functions inherited from Mesh2D_PIS< ParticleType >
 Mesh2D_PIS (Mesh2D *, ParallelParticleArray< ParticleType > *)
 
virtual ~Mesh2D_PIS ()
 
virtual void addExIG (AParallelInteractionStorage *)
 
virtual AFieldSlavegenerateNewScalarFieldSlave (TML_Comm *, const string &, int, int, int, int)
 
virtual AFieldSlavegenerateNewVectorFieldSlave (TML_Comm *, const string &, int, int, int, int)
 
- Public Member Functions inherited from AParallelInteractionStorage
 AParallelInteractionStorage (AParallelParticleArray *ppa)
 
virtual ~AParallelInteractionStorage ()
 
virtual void calcHeatFrict ()
 
virtual void calcHeatTrans ()
 
virtual AFieldSlavegenerateNewScalarHistoryFieldSlave (TML_Comm *, const string &, int, int, int)
 
virtual bool willSave ()
 
- Public Member Functions inherited from esys::lsm::CheckPointable
 CheckPointable ()
 
virtual ~CheckPointable ()
 

Protected Attributes

IType::ParameterType m_param
 
TML_CartComm m_comm
 
std::set< pair< int, int > > m_edge_int_set
 
std::set< pair< int, int > > m_corner_int_set
 
std::list< typename IType::TriIntType > m_edge_interactions
 
std::list< typename IType::CornerIntType > m_corner_interactions
 
- Protected Attributes inherited from Mesh2D_PIS< ParticleType >
int m_update_timestamp
 
Mesh2Dm_mesh
 
- Protected Attributes inherited from AParallelInteractionStorage
AParallelParticleArraym_ppa
 

Private Member Functions

void exchange_boundary (int, int)
 

Static Private Attributes

static const int m_edge_exchg_tag =45
 
static const int m_corner_exchg_tag =46
 

Detailed Description

template<class ParticleType, class IType>
class Mesh2D_PIS_EB< ParticleType, IType >

Class for parallel storage of interactions between a 2D mesh and particles which does require exchange of interactions across process boundaries but where interactions are not dynamically formed.

Constructor & Destructor Documentation

◆ Mesh2D_PIS_EB()

template<class ParticleType , class IType >
Mesh2D_PIS_EB< ParticleType, IType >::Mesh2D_PIS_EB ( Mesh2D mesh_p,
ParallelParticleArray< ParticleType > *  ppa_p,
typename IType::ParameterType  param 
)

constructor

Parameters
mesh_pa pointer to the triangle mesh
ppa_pa pointer to the particle array
paramthe interaction parameters

References console, Mesh2D_PIS_EB< ParticleType, IType >::m_param, Mesh2D_PIS< ParticleType >::m_update_timestamp, and Console::XDebug().

Here is the call graph for this function:

Member Function Documentation

◆ buildFromPPAByGap()

template<class ParticleType , class IType >
void Mesh2D_PIS_EB< ParticleType, IType >::buildFromPPAByGap ( double  gmax)

build interactions according to given maximum gap between particle and 2d edge

Parameters
gmaxthe maximum gap

References console, Console::Debug(), and Console::XDebug().

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

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

◆ buildFromPPATagged()

template<class ParticleType , class IType >
void Mesh2D_PIS_EB< ParticleType, IType >::buildFromPPATagged ( int  tag,
int  mask 
)

References console, Console::Debug(), and Console::XDebug().

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

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

◆ calcForces()

template<class ParticleType , class IType >
void Mesh2D_PIS_EB< ParticleType, IType >::calcForces
virtual

calculate all the forces

Implements AParallelInteractionStorage.

References console, and Console::XDebug().

Here is the call graph for this function:

◆ exchange()

template<class ParticleType , class IType >
void Mesh2D_PIS_EB< ParticleType, IType >::exchange
virtual

Implements AParallelInteractionStorage.

References console, and Console::XDebug().

Here is the call graph for this function:

◆ exchange_boundary()

template<class ParticleType , class IType >
void Mesh2D_PIS_EB< ParticleType, IType >::exchange_boundary ( int  dim,
int  dir 
)
private

helper function to do the actual shifting of values in exchange()

Parameters
dimdimension, 0->x, 1->y, 2->z
dirdirection, 1->up, -1->down

References console, esys::lsm::bpu::iter(), and Console::XDebug().

Here is the call graph for this function:

◆ getInnerInteractionIterator()

template<class ParticleType , class IType >
Mesh2D_PIS_EB< ParticleType, IType >::InteractionIterator Mesh2D_PIS_EB< ParticleType, IType >::getInnerInteractionIterator

◆ isIn()

template<class ParticleType , class IType >
bool Mesh2D_PIS_EB< ParticleType, IType >::isIn ( const vector< int > &  v)
virtual

Check if an interaction is in this PIS. The first 2 values in the vector are expected to be the edge/corner (v[0]) and particle (v[1]) ids, the 3rd an indicator if tri edge (v[2]==1)or corner (v[2]==2) interaction. If there is no 3rd value or it is not 1 (edge), "false" is returned.

Parameters
vvector of particle ids
Warning
log(N)

Implements AParallelInteractionStorage.

References console, and Console::Error().

Here is the call graph for this function:

◆ loadCheckPointData()

template<class ParticleType , class IType >
void Mesh2D_PIS_EB< ParticleType, IType >::loadCheckPointData ( std::istream &  ost)
virtual

Reimplemented from Mesh2D_PIS< ParticleType >.

References console, and Console::Critical().

Here is the call graph for this function:

◆ rebuild()

template<class ParticleType , class IType >
void Mesh2D_PIS_EB< ParticleType, IType >::rebuild
virtual

Rebuild interactions after moving particles or interactions between processes. Set particle pointers accordig to particle IDs and remove interactionw which include unavailable particles.

Implements AParallelInteractionStorage.

References console, ParallelParticleArray< T >::getParticlePtrByIndex(), NULL, and Console::XDebug().

Here is the call graph for this function:

◆ saveCheckPointData()

template<class ParticleType , class IType >
void Mesh2D_PIS_EB< ParticleType, IType >::saveCheckPointData ( std::ostream &  ost)
virtual

◆ saveSnapShotData()

template<class ParticleType , class IType >
void Mesh2D_PIS_EB< ParticleType, IType >::saveSnapShotData ( std::ostream &  ost)
virtual

◆ setTimeStepSize()

template<class ParticleType , class IType >
void Mesh2D_PIS_EB< ParticleType, IType >::setTimeStepSize ( double  dt)
virtual

◆ tryInsert() [1/3]

template<class ParticleType , class IType >
void Mesh2D_PIS_EB< ParticleType, IType >::tryInsert ( const typename IType::CornerIntType &  In)
virtual

References console, ParallelParticleArray< T >::getParticlePtrByIndex(), NULL, and Console::XDebug().

Here is the call graph for this function:

◆ tryInsert() [2/3]

template<class ParticleType , class IType >
void Mesh2D_PIS_EB< ParticleType, IType >::tryInsert ( const typename IType::TriIntType &  In)
virtual

References console, ParallelParticleArray< T >::getParticlePtrByIndex(), NULL, and Console::XDebug().

Here is the call graph for this function:

◆ tryInsert() [3/3]

template<class ParticleType , class IType >
void Mesh2D_PIS_EB< ParticleType, IType >::tryInsert ( const vector< int > &  pids)
virtual

Insert interactions newly created from particle Ids and parameters. If insertion is impossible because the interaction is already in, or one of the particles is not in the associated PPA nothing happens. Check if an interaction is in this PIS. The first 2 values in the vector are expected to be the tri/edge/corner (pids[0]) and particle (pids[1]) ids, the 3rd an indicator if edge (pids[2]==1)or corner (pids[2]==2) interaction. If there is no 3rd value or it is not in [1,2], nothing happens.

Parameters
pidsthe particle Ids

References console, Console::Error(), ParallelParticleArray< T >::getParticlePtrByIndex(), NULL, and Console::XDebug().

Here is the call graph for this function:

◆ update()

template<class ParticleType , class IType >
bool Mesh2D_PIS_EB< ParticleType, IType >::update
virtual

Implements AParallelInteractionStorage.

References console, esys::lsm::bpu::iter(), and Console::XDebug().

Here is the call graph for this function:

Member Data Documentation

◆ m_comm

template<class ParticleType , class IType >
TML_CartComm Mesh2D_PIS_EB< ParticleType, IType >::m_comm
protected

◆ m_corner_exchg_tag

template<class ParticleType , class IType >
const int Mesh2D_PIS_EB< ParticleType, IType >::m_corner_exchg_tag =46
staticprivate

◆ m_corner_int_set

template<class ParticleType , class IType >
std::set<pair<int,int> > Mesh2D_PIS_EB< ParticleType, IType >::m_corner_int_set
protected

◆ m_corner_interactions

template<class ParticleType , class IType >
std::list<typename IType::CornerIntType> Mesh2D_PIS_EB< ParticleType, IType >::m_corner_interactions
protected

◆ m_edge_exchg_tag

template<class ParticleType , class IType >
const int Mesh2D_PIS_EB< ParticleType, IType >::m_edge_exchg_tag =45
staticprivate

◆ m_edge_int_set

template<class ParticleType , class IType >
std::set<pair<int,int> > Mesh2D_PIS_EB< ParticleType, IType >::m_edge_int_set
protected

◆ m_edge_interactions

template<class ParticleType , class IType >
std::list<typename IType::TriIntType> Mesh2D_PIS_EB< ParticleType, IType >::m_edge_interactions
protected

◆ m_param

template<class ParticleType , class IType >
IType::ParameterType Mesh2D_PIS_EB< ParticleType, IType >::m_param
protected

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