ESyS-Particle  2.3.4
TSubLattice< T > Class Template Reference

Class for a Sublattice. More...

#include <SubLattice.h>

Inheritance diagram for TSubLattice< T >:
Collaboration diagram for TSubLattice< T >:

Public Member Functions

 TSubLattice (const esys::lsm::CLatticeParam &prm, int rank, MPI_Comm comm, MPI_Comm worker_comm)
 
virtual ~TSubLattice ()
 
virtual void setTimeStepSize (double dt)
 
virtual vector< int > getCommCoords () const
 
virtual vector< int > getCommDims () const
 
virtual void receiveParticles ()
 
virtual void receiveConnections ()
 
virtual const MPI_Comm & getWorkerComm () const
 
virtual void initNeighborTable (const Vec3 &, const Vec3 &)
 
virtual void initNeighborTable (const Vec3 &, const Vec3 &, const vector< bool > &)
 
virtual void addWall ()
 
virtual void addElasticWIG ()
 
virtual void addBondedWIG ()
 
virtual void addDirBondedWIG ()
 
virtual void addViscWIG ()
 
virtual void addTaggedElasticWIG ()
 
virtual void addTriMesh ()
 
virtual void addTriMeshIG ()
 
virtual void addBondedTriMeshIG ()
 
virtual void addMesh2D ()
 
virtual void addMesh2DIG ()
 
virtual void addBondedMesh2DIG ()
 
virtual void addPairIG ()
 
virtual void addTaggedPairIG ()
 
virtual void addSingleIG ()
 
virtual void addBondedIG ()
 
virtual void addCappedBondedIG ()
 
virtual void addShortBondedIG ()
 
virtual void addRotBondedIG ()
 
virtual void addRotThermBondedIG ()
 
virtual void addDamping ()
 
virtual void setExIG ()
 
virtual void removeIG ()
 
virtual void getWallPos ()
 
virtual void getWallForce ()
 
virtual void addSphereBody ()
 
virtual void addESphereBodyIG ()
 
virtual void getSphereBodyPos ()
 
virtual void getSphereBodyForce ()
 
virtual void oneStep ()
 
virtual void oneStepTherm ()
 
virtual void exchangePos ()
 
void setTimeStep (double dt)
 
virtual void rebuildParticleArray ()
 
virtual void rebuildInteractions ()
 
virtual void searchNeighbors ()
 
virtual void updateInteractions ()
 
virtual void checkNeighbors ()
 
void resetDisplacements ()
 
virtual void do2dCalculations (bool do2d)
 
virtual int getNumParticles ()
 
std::pair< double, int > findParticleNearestTo (const Vec3 &pt)
 
std::pair< int, Vec3getParticlePosn (int particleId)
 
AParallelInteractionStoragefindPis (const std::string &groupName)
 
template<typename TmplPis >
ParticleIdPairVector getBondGroupIdPairs (TmplPis *pBondPis)
 
virtual void moveParticleTo ()
 
virtual void moveTaggedParticlesBy ()
 
virtual void moveSingleParticleTo (int particleId, const Vec3 &posn)
 
virtual void moveWallBy ()
 
virtual void moveSphereBodyBy ()
 
virtual void setWallNormal ()
 
virtual void applyForceToWall ()
 
virtual void setParticleVelocity ()
 
virtual void setVelocityOfWall ()
 
virtual void setParticleNonDynamic ()
 
virtual void setParticleNonRot ()
 
virtual void setParticleNonTrans ()
 
virtual void setParticleDensity ()
 
virtual void setTaggedParticleVel ()
 
virtual void tagParticleNearestTo ()
 
virtual void moveSingleNode ()
 
virtual void moveTaggedNodes ()
 
virtual void translateMeshBy (const std::string &meshName, const Vec3 &translation)
 
virtual void sendDataToMaster ()
 
virtual void countParticles ()
 
virtual void printStruct ()
 
virtual void printData ()
 
virtual void printTimes ()
 
virtual void addScalarParticleField ()
 
virtual void addVectorParticleField ()
 
virtual void addScalarInteractionField ()
 
virtual void addScalarHistoryInteractionField ()
 
virtual void addVectorInteractionField ()
 
virtual void addScalarTriangleField ()
 
virtual void addVectorTriangleField ()
 
virtual void sendFieldData ()
 
virtual void addVectorWallField ()
 
virtual void saveSnapShotData (std::ostream &oStream)
 
virtual void saveCheckPointData (std::ostream &oStream)
 
virtual void loadCheckPointData (std::istream &iStream)
 
virtual void setTimer (MpiWTimers &timers)
 
virtual void getMeshNodeRef ()
 
virtual void getMeshFaceRef ()
 
virtual void getMesh2DStress ()
 
virtual void getTriMeshForce ()
 
virtual void getParticleData (const IdVector &particleIdVector)
 
- Public Member Functions inherited from ASubLattice
virtual ~ASubLattice ()
 
void setNTSize (int)
 
virtual void setParticleType (const std::string &particleType)
 
virtual const std::string & getParticleType () const
 
virtual void initComplex ()
 
virtual void setParticleAngularVelocity ()
 
- Public Member Functions inherited from esys::lsm::CheckPointable
 CheckPointable ()
 
virtual ~CheckPointable ()
 

Protected Types

typedef ParallelParticleArray< T > ParticleArray
 
typedef map< string, AInteractionGroup< T > * > NameIGroupMap
 persistent interactions More...
 

Protected Member Functions

void calcForces ()
 
void zeroForces ()
 
void integrate (double)
 
void integrateTherm (double dt)
 
void zeroHeat ()
 
void thermExpansion ()
 
void calcHeatFrict ()
 
void calcHeatTrans ()
 
virtual bool doAddPIG (const string &, const string &, CVarMPIBuffer &, bool tagged=false)
 
virtual bool doAddDamping (const string &, CVarMPIBuffer &)
 

Protected Attributes

ParticleArraym_ppa
 
map< string, AParallelInteractionStorage * > m_dpis
 
map< string, AParallelInteractionStorage * > m_bpis
 dynamic interactions More...
 
NameIGroupMap m_singleParticleInteractions
 
map< string, AParallelInteractionStorage * > m_damping
 Body/gravitational force interactions. More...
 
map< string, AWallInteractionGroup< T > * > m_WIG
 
map< string, ASphereBodyInteractionGroup< T > * > m_SIG
 
map< string, CWall * > m_walls
 
map< string, CSphereBody * > m_spheres
 
map< string, TriMesh * > m_mesh
 
map< string, Mesh2D * > m_mesh2d
 
double m_dt
 
double m_nrange
 
double m_alpha
 
int m_last_ns
 
map< int, vector< int > > m_temp_conn
 
int m_rank
 rank in m_comm More...
 
MPI_Comm m_comm
 
TML_Comm m_tml_comm
 
MPI_Comm m_worker_comm
 MPI communicator between workers (excl. master) More...
 
TML_Comm m_tml_worker_comm
 TML version of the communicator between workers (excl. master) More...
 
esys::lsm::CLatticeParam::ProcessDims m_dims
 
double packtime
 
double unpacktime
 
double commtime
 
double forcetime
 
map< int, AFieldSlave * > m_field_slaves
 
MpiWTimersm_pTimers
 

Additional Inherited Members

- Public Types inherited from ASubLattice
typedef std::pair< int, int > ParticleIdPair
 
typedef std::vector< ParticleIdPairParticleIdPairVector
 
typedef std::vector< int > IdVector
 

Detailed Description

template<typename T>
class TSubLattice< T >

Class for a Sublattice.

Member Typedef Documentation

◆ NameIGroupMap

template<typename T >
typedef map<string,AInteractionGroup<T>*> TSubLattice< T >::NameIGroupMap
protected

persistent interactions

◆ ParticleArray

template<typename T >
typedef ParallelParticleArray<T> TSubLattice< T >::ParticleArray
protected

Constructor & Destructor Documentation

◆ TSubLattice()

◆ ~TSubLattice()

template<class T >
TSubLattice< T >::~TSubLattice
virtual

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

Here is the call graph for this function:

Member Function Documentation

◆ addBondedIG()

template<class T >
void TSubLattice< T >::addBondedIG
virtual

Add bonded interaction group to the lattice. Receive the parameters from master. The bonds are created from the neighbor table.

Implements ASubLattice.

References console, CBondedIGP::k, CBondedIGP::m_scaling, CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::pop_string(), CBondedIGP::rbreak, CVarMPIBuffer::receiveBroadcast(), ParallelInteractionStorage_EB< P, I >::setUnbreakable(), CBondedIGP::tag, ParallelInteractionStorage_E< P, I >::tryInsert(), and Console::XDebug().

Here is the call graph for this function:

◆ addBondedMesh2DIG()

template<class T >
void TSubLattice< T >::addBondedMesh2DIG
virtual

◆ addBondedTriMeshIG()

◆ addBondedWIG()

template<class T >
void TSubLattice< T >::addBondedWIG
virtual

add bonded wall interaction group. Parameters received from the master

Implements ASubLattice.

References console, Console::Error(), extractBWallIGP(), AIGParam::getName(), CEWallIGP::getWallName(), esys::lsm::bpu::iter(), CVarMPIBuffer::receiveBroadcast(), AInteractionGroup< T >::Update(), and Console::XDebug().

Here is the call graph for this function:

◆ addCappedBondedIG()

template<class T >
void TSubLattice< T >::addCappedBondedIG
virtual

Add bonded interaction group to the lattice. Receive the parameters from master. The bonds are created from the neighbor table.

Implements ASubLattice.

References console, CBondedIGP::k, CCappedBondedIGP::m_force_limit, CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::pop_string(), CBondedIGP::rbreak, CVarMPIBuffer::receiveBroadcast(), ParallelInteractionStorage_EB< P, I >::setUnbreakable(), CBondedIGP::tag, ParallelInteractionStorage_E< P, I >::tryInsert(), and Console::XDebug().

Here is the call graph for this function:

◆ addDamping()

template<class T >
void TSubLattice< T >::addDamping
virtual

Add a DampingGroup to the lattice. Receive the parameters from master.

Implements ASubLattice.

References console, CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ addDirBondedWIG()

template<class T >
void TSubLattice< T >::addDirBondedWIG
virtual

add bonded wall interaction group with direction dependend elasticity . Parameters received from the master

Implements ASubLattice.

References console, Console::Error(), extractSoftBWallIGP(), AIGParam::getName(), CEWallIGP::getWallName(), esys::lsm::bpu::iter(), CVarMPIBuffer::receiveBroadcast(), AInteractionGroup< T >::Update(), and Console::XDebug().

Here is the call graph for this function:

◆ addElasticWIG()

template<class T >
void TSubLattice< T >::addElasticWIG
virtual

add elastic wall interaction group. Parameters received from the master

Implements ASubLattice.

References console, extractEWallIGP(), AIGParam::getName(), CEWallIGP::getWallName(), esys::lsm::bpu::iter(), CVarMPIBuffer::receiveBroadcast(), AInteractionGroup< T >::Update(), and Console::XDebug().

Here is the call graph for this function:

◆ addESphereBodyIG()

template<class T >
void TSubLattice< T >::addESphereBodyIG
virtual

add elastic sphere body interaction group. Parameters received from the master

Implements ASubLattice.

References console, extractESphereBodyIGP(), AIGParam::getName(), CESphereBodyIGP::getSphereBodyName(), esys::lsm::bpu::iter(), CVarMPIBuffer::receiveBroadcast(), AInteractionGroup< T >::Update(), and Console::XDebug().

Here is the call graph for this function:

◆ addMesh2D()

template<class T >
void TSubLattice< T >::addMesh2D
virtual

Add a 2D mesh. Receive all data from master

Implements ASubLattice.

References console, Mesh2D::LoadMesh(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ addMesh2DIG()

template<class T >
void TSubLattice< T >::addMesh2DIG
virtual

Add a (non-bonded) LineMesh (2D) interaction group

Implements ASubLattice.

References console, ETriMeshIP::k, NULL, CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ addPairIG()

template<class T >
void TSubLattice< T >::addPairIG
virtual

Add a PairInteractionGroup to the lattice

Implements ASubLattice.

References console, CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ addRotBondedIG()

template<class T >
void TSubLattice< T >::addRotBondedIG
virtual

Implements ASubLattice.

Reimplemented in TRotSubLattice< T >.

References console, and Console::Error().

Here is the call graph for this function:

◆ addRotThermBondedIG()

template<class T >
void TSubLattice< T >::addRotThermBondedIG
virtual

Implements ASubLattice.

Reimplemented in TRotSubLattice< T >.

References console, and Console::Error().

Here is the call graph for this function:

◆ addScalarHistoryInteractionField()

template<class T >
void TSubLattice< T >::addScalarHistoryInteractionField
virtual

add scalar per-interaction "history" field to saver list

Implements ASubLattice.

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

Here is the call graph for this function:

◆ addScalarInteractionField()

template<class T >
void TSubLattice< T >::addScalarInteractionField
virtual

add scalar per-interaction field to saver list

Implements ASubLattice.

References console, and Console::XDebug().

Here is the call graph for this function:

◆ addScalarParticleField()

template<class T >
void TSubLattice< T >::addScalarParticleField
virtual

add scalar per-particle field to saver list

Implements ASubLattice.

References console, and Console::XDebug().

Here is the call graph for this function:

◆ addScalarTriangleField()

template<class T >
void TSubLattice< T >::addScalarTriangleField
virtual

Add a per-triangle scalar field saver. Data received from master.

Implements ASubLattice.

References console, Console::Critical(), Console::Debug(), Triangle::getScalarFieldFunction(), NULL, and Console::XDebug().

Here is the call graph for this function:

◆ addShortBondedIG()

template<class T >
void TSubLattice< T >::addShortBondedIG
virtual

Add short bonded interaction group to the lattice. Receive the parameters from master. The bonds are created from the neighbor table.

Implements ASubLattice.

References console, CBondedIGP::k, CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::pop_string(), CBondedIGP::rbreak, CVarMPIBuffer::receiveBroadcast(), CBondedIGP::tag, ParallelInteractionStorage_E< P, I >::tryInsert(), and Console::XDebug().

Here is the call graph for this function:

◆ addSingleIG()

template<class T >
void TSubLattice< T >::addSingleIG
virtual

Add a SingleInteractionGroup to the lattice

Todo:
currently gravity is hardwired, change this

Implements ASubLattice.

References console, esys::lsm::BodyForceIGP::extract(), esys::lsm::BuoyancyIGP::extract(), AIGParam::Name(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ addSphereBody()

template<class T >
void TSubLattice< T >::addSphereBody
virtual

Add sphere body to the sublattice. Parameters received from the master

Implements ASubLattice.

References console, CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_string(), AMPIBuffer::pop_vector(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ addTaggedElasticWIG()

template<class T >
void TSubLattice< T >::addTaggedElasticWIG
virtual

add tagged elastic wall interaction group. Parameters received from the master

Implements ASubLattice.

References console, extractEWallIGP(), AIGParam::getName(), CEWallIGP::getWallName(), esys::lsm::bpu::iter(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::receiveBroadcast(), AInteractionGroup< T >::Update(), and Console::XDebug().

Here is the call graph for this function:

◆ addTaggedPairIG()

template<class T >
void TSubLattice< T >::addTaggedPairIG
virtual

Add a tagged PairInteractionGroup to the lattice

Implements ASubLattice.

References console, CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ addTriMesh()

template<class T >
void TSubLattice< T >::addTriMesh
virtual

Add a Triangle Mesh

Implements ASubLattice.

References console, TriMesh::LoadMesh(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ addTriMeshIG()

template<class T >
void TSubLattice< T >::addTriMeshIG
virtual

Add a TriMesh interaction group

Implements ASubLattice.

References console, ETriMeshIP::k, NULL, CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ addVectorInteractionField()

template<class T >
void TSubLattice< T >::addVectorInteractionField
virtual

add per-interaction vector field to saver list

Implements ASubLattice.

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

Here is the call graph for this function:

◆ addVectorParticleField()

template<class T >
void TSubLattice< T >::addVectorParticleField
virtual

add vector per-particle field to saver list

Implements ASubLattice.

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

Here is the call graph for this function:

◆ addVectorTriangleField()

template<class T >
void TSubLattice< T >::addVectorTriangleField
virtual

Add a per-triangle (in case of a TriMesh) of per-edge (in case of a Mesh2D) vector field saver. Data received from master.

Implements ASubLattice.

References console, Console::Critical(), Console::Debug(), Edge2D::getVectorFieldFunction(), Triangle::getVectorFieldFunction(), NULL, and Console::XDebug().

Here is the call graph for this function:

◆ addVectorWallField()

template<class T >
void TSubLattice< T >::addVectorWallField
virtual

Add vector wall field. Data received from master.

Implements ASubLattice.

References AWallFieldSlave::addWall(), console, Console::Error(), esys::lsm::bpu::iter(), NULL, and Console::XDebug().

Here is the call graph for this function:

◆ addViscWIG()

template<class T >
void TSubLattice< T >::addViscWIG
virtual

◆ addWall()

template<class T >
void TSubLattice< T >::addWall
virtual

Add wall to the sublattice. Parameters received from the master

Implements ASubLattice.

References console, CVarMPIBuffer::pop_string(), AMPIBuffer::pop_vector(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ applyForceToWall()

template<class T >
void TSubLattice< T >::applyForceToWall
virtual

Apply given force to a wall. Parameters are received from master.

Implements ASubLattice.

References console, esys::lsm::bpu::iter(), CVarMPIBuffer::pop_string(), AMPIBuffer::pop_vector(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ calcForces()

template<class T >
void TSubLattice< T >::calcForces
protected

Calculate the forces for all interactions contained in the sublattice. Interactions contained in more than one sublattice are calculated in each of them. Slightly more computation, but less communication, i.e. saves one syncronisation point (exchange of forces).

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

Here is the call graph for this function:

◆ calcHeatFrict()

template<class T >
void TSubLattice< T >::calcHeatFrict
protected

Calculate the Heat Sources for all interactions contained in the sublattice. Interactions contained in more than one sublattice are calculated in each of them. Slightly more computation, but less communication, i.e. saves one syncronisation point (exchange of forces).

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

Here is the call graph for this function:

◆ calcHeatTrans()

template<class T >
void TSubLattice< T >::calcHeatTrans
protected

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

Here is the call graph for this function:

◆ checkNeighbors()

template<class T >
void TSubLattice< T >::checkNeighbors
virtual

check if any of the owned particles has moved futher than the search range for the neighbor table 5 Flops(1 dotproduct)/particle looked at

Implements ASubLattice.

References CMPISGBufferLeaf::append(), console, Console::Debug(), esys::lsm::bpu::iter(), CMPISGBufferLeaf::send(), and Console::XDebug().

Here is the call graph for this function:

◆ countParticles()

template<class T >
void TSubLattice< T >::countParticles
virtual

Send number of owned particles to the master

Implements ASubLattice.

References CMPIVarSGBufferLeaf::append(), console, Console::Debug(), and CMPIVarSGBufferLeaf::send().

Here is the call graph for this function:

◆ do2dCalculations()

template<class T >
void TSubLattice< T >::do2dCalculations ( bool  do2d)
virtual

Implements ASubLattice.

◆ doAddDamping()

template<class T >
bool TSubLattice< T >::doAddDamping ( const string &  type,
CVarMPIBuffer param_buffer 
)
protectedvirtual

Do the work for adding the damping

Parameters
typethe type of damping
param_bufferthe buffer containing the parameters

Reimplemented in TRotSubLattice< T >.

References console, Console::Error(), extractABCDampingIGP(), extractDampingIGP(), extractLocalDampingIGP(), and AIGParam::getName().

Referenced by TRotSubLattice< T >::doAddDamping().

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

◆ doAddPIG()

template<class T >
bool TSubLattice< T >::doAddPIG ( const string &  name,
const string &  type,
CVarMPIBuffer param_buffer,
bool  tagged = false 
)
protectedvirtual

do the actual work adding the PIG

Parameters
namethe name of the PIG
typethe type of the PIG
param_bufferthe buffer containing the rest of the parameters

Reimplemented in TRotSubLattice< T >.

References console, CRotThermElasticIGP::diffusivity, CRotThermFrictionIGP::diffusivity, CAdhesiveFrictionIGP::dt, FractalFrictionIGP::dt, CFrictionIGP::dt, CHertzianViscoElasticFrictionIGP::dt, CHertzMindlinIGP::dt, CHertzMindlinViscoIGP::dt, CRotFrictionIGP::dt, CRotThermFrictionIGP::dt, FractalFrictionIGP::dx, FractalFrictionIGP::dy, CAdhesiveFrictionIGP::k, FractalFrictionIGP::k, CFrictionIGP::k, CRotFrictionIGP::k, CRotThermFrictionIGP::k, CAdhesiveFrictionIGP::k_s, FractalFrictionIGP::k_s, CFrictionIGP::k_s, CHertzianViscoElasticFrictionIGP::k_s, CRotFrictionIGP::k_s, CRotThermFrictionIGP::k_s, CHertzianViscoElasticFrictionIGP::m_A, CHertzianViscoElasticIGP::m_A, VWFrictionIGP::m_alpha, CHertzMindlinViscoIGP::m_COR, CLinearDashpotIGP::m_cutoff, CLinearDashpotIGP::m_damp, CHertzianElasticIGP::m_E, CHertzianViscoElasticFrictionIGP::m_E, CHertzianViscoElasticIGP::m_E, CHertzMindlinIGP::m_E, CHertzMindlinViscoIGP::m_E, CElasticIGP::m_k, CRotElasticIGP::m_kr, CRotThermElasticIGP::m_kr, CHertzianElasticIGP::m_nu, CHertzianViscoElasticFrictionIGP::m_nu, CHertzianViscoElasticIGP::m_nu, CHertzMindlinIGP::m_nu, CHertzMindlinViscoIGP::m_nu, CElasticIGP::m_scaling, CFrictionIGP::m_scaling, CRotFrictionIGP::meanR_scaling, CAdhesiveFrictionIGP::mu, FractalFrictionIGP::mu, CFrictionIGP::mu, CHertzianViscoElasticFrictionIGP::mu, CHertzMindlinIGP::mu, CHertzMindlinViscoIGP::mu, FractalFrictionIGP::mu_0, CRotFrictionIGP::mu_d, CRotThermFrictionIGP::mu_d, CRotFrictionIGP::mu_s, CRotThermFrictionIGP::mu_s, NULL, FractalFrictionIGP::nx, FractalFrictionIGP::ny, CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_int(), CAdhesiveFrictionIGP::r_cut, CRotFrictionIGP::scaling, FractalFrictionIGP::x0, Console::XDebug(), and FractalFrictionIGP::y0.

Referenced by TRotSubLattice< T >::doAddPIG().

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

◆ exchangePos()

template<class T >
void TSubLattice< T >::exchangePos
virtual

Exchange positions of shared particles with the other sublattices.

Implements ASubLattice.

References console, and Console::XDebug().

Here is the call graph for this function:

◆ findParticleNearestTo()

template<class T >
std::pair< double, int > TSubLattice< T >::findParticleNearestTo ( const Vec3 pt)
virtual

◆ findPis()

template<typename T >
AParallelInteractionStorage* TSubLattice< T >::findPis ( const std::string &  groupName)

◆ getBondGroupIdPairs()

template<typename T >
template<typename TmplPis >
ParticleIdPairVector TSubLattice< T >::getBondGroupIdPairs ( TmplPis *  pBondPis)

◆ getCommCoords()

template<typename T >
virtual vector<int> TSubLattice< T >::getCommCoords ( ) const
inlinevirtual

Implements ASubLattice.

References ParallelParticleArray< T >::getCommCoords(), and TSubLattice< T >::m_ppa.

Here is the call graph for this function:

◆ getCommDims()

template<typename T >
virtual vector<int> TSubLattice< T >::getCommDims ( ) const
inlinevirtual

Implements ASubLattice.

References ParallelParticleArray< T >::getCommDims(), and TSubLattice< T >::m_ppa.

Here is the call graph for this function:

◆ getMesh2DStress()

template<class T >
void TSubLattice< T >::getMesh2DStress
virtual

send back stress on faces of given mesh, get mesh name from master

Implements ASubLattice.

References console, Console::Critical(), Edge2D::getForceDensity(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ getMeshFaceRef()

template<class T >
void TSubLattice< T >::getMeshFaceRef
virtual

send back face (edge in 2D, triangle in 3d) ids of given mesh, get mesh name from master

Implements ASubLattice.

References console, Console::Critical(), esys::lsm::bpu::iter(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ getMeshNodeRef()

template<class T >
void TSubLattice< T >::getMeshNodeRef
virtual

send back node ids of given mesh, get mesh name from master

Implements ASubLattice.

References console, Console::Critical(), esys::lsm::bpu::iter(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ getNumParticles()

template<class T >
int TSubLattice< T >::getNumParticles
virtual

Implements ASubLattice.

◆ getParticleData()

template<class T >
void TSubLattice< T >::getParticleData ( const IdVector particleIdVector)
virtual

◆ getParticlePosn()

template<class T >
std::pair< int, Vec3 > TSubLattice< T >::getParticlePosn ( int  particleId)
virtual
Todo:
DO DOCUMENTATION

Implements ASubLattice.

References ParallelParticleArray< T >::ParticleIterator::hasNext(), ParallelParticleArray< T >::ParticleIterator::next(), NULL, and Vec3::ZERO.

Here is the call graph for this function:

◆ getSphereBodyForce()

template<class T >
void TSubLattice< T >::getSphereBodyForce
virtual

get force acting on a sphere body

Implements ASubLattice.

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

Here is the call graph for this function:

◆ getSphereBodyPos()

template<class T >
void TSubLattice< T >::getSphereBodyPos
virtual

get position of a sphere body

Implements ASubLattice.

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

Here is the call graph for this function:

◆ getTriMeshForce()

template<class T >
void TSubLattice< T >::getTriMeshForce
virtual

send back stress on faces of given mesh, get mesh name from master

Implements ASubLattice.

References console, Triangle::getForce(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ getWallForce()

template<class T >
void TSubLattice< T >::getWallForce
virtual

get force acting on a wall

Implements ASubLattice.

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

Here is the call graph for this function:

◆ getWallPos()

template<class T >
void TSubLattice< T >::getWallPos
virtual

get position of a wall

Implements ASubLattice.

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

Here is the call graph for this function:

◆ getWorkerComm()

template<typename T >
virtual const MPI_Comm& TSubLattice< T >::getWorkerComm ( ) const
inlinevirtual

◆ initNeighborTable() [1/2]

template<class T >
void TSubLattice< T >::initNeighborTable ( const Vec3 min,
const Vec3 max 
)
virtual

Initialize particle storage. The dimensions are global.

Parameters
minminimum corner
maxmaximum corner

Implements ASubLattice.

References console, Vec3::X(), Console::XDebug(), Vec3::Y(), and Vec3::Z().

Here is the call graph for this function:

◆ initNeighborTable() [2/2]

template<class T >
void TSubLattice< T >::initNeighborTable ( const Vec3 min,
const Vec3 max,
const vector< bool > &  circ 
)
virtual

Initialize particle storage with some circular boundaries. The dimensions are global.

Parameters
minminimum corner
maxmaximum corner

Implements ASubLattice.

References console, Console::Critical(), Console::Info(), Vec3::X(), Console::XDebug(), Vec3::Y(), and Vec3::Z().

Here is the call graph for this function:

◆ integrate()

template<class T >
void TSubLattice< T >::integrate ( double  dt)
protected

Do the time integration for the particles owned by the SubLattice by 1st order method

Parameters
dtthe time step

References console, and Console::XDebug().

Here is the call graph for this function:

◆ integrateTherm()

template<class T >
void TSubLattice< T >::integrateTherm ( double  dt)
protected

Do the time integration for the particles owned by the SubLattice for temprature

Parameters
dtthe time step

References console, and Console::XDebug().

Here is the call graph for this function:

◆ loadCheckPointData()

template<class T >
void TSubLattice< T >::loadCheckPointData ( std::istream &  iStream)
virtual

Reimplemented from ASubLattice.

References Mesh2D::loadCheckPoint(), CSphereBody::loadCheckPoint(), TriMesh::loadCheckPoint(), CWall::loadCheckPoint(), and CMPIBarrier::wait().

Here is the call graph for this function:

◆ moveParticleTo()

template<class T >
void TSubLattice< T >::moveParticleTo
virtual

Move all particles with a given tag to a given position. Parameters (tag,posn) are received from master.

Implements ASubLattice.

References console, Console::Debug(), CVarMPIBuffer::pop_int(), AMPIBuffer::pop_vector(), and CVarMPIBuffer::receiveBroadcast().

Here is the call graph for this function:

◆ moveSingleNode()

template<class T >
void TSubLattice< T >::moveSingleNode
virtual

Move mesh (tri or 2d) node by a given amount. Parameters (name,id,displacement) are received from master.

Implements ASubLattice.

References console, Console::Debug(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::pop_string(), AMPIBuffer::pop_vector(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ moveSingleParticleTo()

template<class T >
void TSubLattice< T >::moveSingleParticleTo ( int  particleId,
const Vec3 posn 
)
virtual

Implements ASubLattice.

◆ moveSphereBodyBy()

template<class T >
void TSubLattice< T >::moveSphereBodyBy
virtual

Move sphere body by a given vector. Parameters are received from master.

Implements ASubLattice.

References console, esys::lsm::bpu::iter(), CVarMPIBuffer::pop_string(), AMPIBuffer::pop_vector(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ moveTaggedNodes()

template<class T >
void TSubLattice< T >::moveTaggedNodes
virtual

Move tagged trimesh nodes by a given amount. Parameters (name,tag,displacement) are received from master.

Implements ASubLattice.

References console, Console::Error(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::pop_string(), AMPIBuffer::pop_vector(), and CVarMPIBuffer::receiveBroadcast().

Here is the call graph for this function:

◆ moveTaggedParticlesBy()

template<class T >
void TSubLattice< T >::moveTaggedParticlesBy
virtual

Move all particles with a given tag by a specified displacement. Parameters (tag,displacement) are received from master.

Implements ASubLattice.

References console, Console::Debug(), CVarMPIBuffer::pop_int(), AMPIBuffer::pop_vector(), and CVarMPIBuffer::receiveBroadcast().

Here is the call graph for this function:

◆ moveWallBy()

template<class T >
void TSubLattice< T >::moveWallBy
virtual

Move wall by a given vector. Parameters are received from master.

Implements ASubLattice.

References console, esys::lsm::bpu::iter(), CVarMPIBuffer::pop_string(), AMPIBuffer::pop_vector(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ oneStep()

template<class T >
void TSubLattice< T >::oneStep
virtual

Do one step, i.e. calculate forces, velocities, positions

Implements ASubLattice.

◆ oneStepTherm()

template<class T >
void TSubLattice< T >::oneStepTherm
virtual

Do one step, i.e. calculate forces, velocities, positions

◆ printData()

template<class T >
void TSubLattice< T >::printData
virtual

Implements ASubLattice.

◆ printStruct()

template<class T >
void TSubLattice< T >::printStruct
virtual

Print structural information

Implements ASubLattice.

References NULL.

◆ printTimes()

template<class T >
void TSubLattice< T >::printTimes
virtual

Implements ASubLattice.

References console, and Console::Debug().

Here is the call graph for this function:

◆ rebuildInteractions()

template<class T >
void TSubLattice< T >::rebuildInteractions
virtual

rebuild interactions

Implements ASubLattice.

References console, Console::Debug(), esys::lsm::bpu::iter(), and CMPIBarrier::wait().

Here is the call graph for this function:

◆ rebuildParticleArray()

template<class T >
void TSubLattice< T >::rebuildParticleArray
virtual

rebuild particle array

Implements ASubLattice.

◆ receiveConnections()

template<class T >
void TSubLattice< T >::receiveConnections
virtual

Receive connections from a TML Communicator

Parameters
commthe Communicator

Implements ASubLattice.

References console, NULL, CMPIBarrier::wait(), and Console::XDebug().

Here is the call graph for this function:

◆ receiveParticles()

template<class T >
void TSubLattice< T >::receiveParticles
virtual

Receive particle from a TML Communicator

Parameters
commthe Communicator
Warning
the type of particle is not checked

Implements ASubLattice.

References console, CMPIBarrier::wait(), and Console::XDebug().

Here is the call graph for this function:

◆ removeIG()

template<class T >
void TSubLattice< T >::removeIG
virtual

Remove interaction group. The name of the group is received from the master.

Warning
Doesn't deal yet with removal of dependent items, i.e. savers

Implements ASubLattice.

References console, Console::Error(), esys::lsm::bpu::iter(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ resetDisplacements()

template<class T >
void TSubLattice< T >::resetDisplacements

Reset the displacement of all particles & meshes

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

Here is the call graph for this function:

◆ saveCheckPointData()

template<class T >
void TSubLattice< T >::saveCheckPointData ( std::ostream &  oStream)
virtual

save checkpoint data, i.e. for restarting

Implements esys::lsm::CheckPointable.

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

Here is the call graph for this function:

◆ saveSnapShotData()

template<class T >
void TSubLattice< T >::saveSnapShotData ( std::ostream &  oStream)
virtual

◆ searchNeighbors()

template<class T >
void TSubLattice< T >::searchNeighbors
virtual

Search neighbors - rebuild particle array and interactions

Implements ASubLattice.

References console, Console::Debug(), and CMPIBarrier::wait().

Here is the call graph for this function:

◆ sendDataToMaster()

template<class T >
void TSubLattice< T >::sendDataToMaster
virtual

Send data of owned particles to the master

References console, and Console::Debug().

Here is the call graph for this function:

◆ sendFieldData()

template<class T >
void TSubLattice< T >::sendFieldData
virtual

send field data to master

Implements ASubLattice.

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

Here is the call graph for this function:

◆ setExIG()

template<class T >
void TSubLattice< T >::setExIG
virtual

Set excluding IG. The names of 2 interaction groups are received from the master. The 1st is set to be excluding the 2nd. If one of the named IGs does not exist, the operation is ignored and a warning emitted.

Implements ASubLattice.

References console, Console::Error(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ setParticleDensity()

template<class T >
void TSubLattice< T >::setParticleDensity
virtual

Set the density of a tagged group of particles. Parameters are received from master.

Implements ASubLattice.

References console, Console::Debug(), CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ setParticleNonDynamic()

template<class T >
void TSubLattice< T >::setParticleNonDynamic
virtual

Make tagged particles non-dynamic i.e. don't update velocity (rot+lin). Parameters (tag) are received from master.

Implements ASubLattice.

References console, Console::Debug(), CVarMPIBuffer::pop_int(), and CVarMPIBuffer::receiveBroadcast().

Here is the call graph for this function:

◆ setParticleNonRot()

template<class T >
void TSubLattice< T >::setParticleNonRot
virtual

Make tagged particles non-rotational, i.e. don't update rotational velocity & position Parameters (tag) are received from master.

Implements ASubLattice.

References console, Console::Debug(), CVarMPIBuffer::pop_int(), and CVarMPIBuffer::receiveBroadcast().

Here is the call graph for this function:

◆ setParticleNonTrans()

template<class T >
void TSubLattice< T >::setParticleNonTrans
virtual

Make tagged particles lieanr non-dynamic, i.e. don't update linear velocity Parameters (tag) are received from master.

References console, Console::Debug(), CVarMPIBuffer::pop_int(), and CVarMPIBuffer::receiveBroadcast().

Here is the call graph for this function:

◆ setParticleVelocity()

template<class T >
void TSubLattice< T >::setParticleVelocity
virtual

Set the velocity of a particle. Parameters are received from master.

Implements ASubLattice.

References console, Console::Debug(), CVarMPIBuffer::pop_int(), AMPIBuffer::pop_vector(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ setTaggedParticleVel()

template<class T >
void TSubLattice< T >::setTaggedParticleVel
virtual

Set the velocity of a tagged group of particles. Parameters are received from master.

Implements ASubLattice.

References console, Console::Debug(), CVarMPIBuffer::pop_int(), AMPIBuffer::pop_vector(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ setTimer()

template<typename T >
virtual void TSubLattice< T >::setTimer ( MpiWTimers timers)
inlinevirtual

Implements ASubLattice.

References TSubLattice< T >::m_pTimers.

◆ setTimeStep()

template<typename T >
void TSubLattice< T >::setTimeStep ( double  dt)
inline

◆ setTimeStepSize()

template<class T >
void TSubLattice< T >::setTimeStepSize ( double  dt)
virtual

Calculate the forces for all interactions contained in the sublattice. Interactions contained in more than one sublattice are calculated in each of them. Slightly more computation, but less communication, i.e. saves one syncronisation point (exchange of forces).

Implements ASubLattice.

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

Here is the call graph for this function:

◆ setVelocityOfWall()

template<class T >
void TSubLattice< T >::setVelocityOfWall
virtual

Set the velocity of a wall. Only for visc. walls, i.e. m_vel is set, but position is not affected. Parameters are received from master.

Implements ASubLattice.

References console, esys::lsm::bpu::iter(), CVarMPIBuffer::pop_string(), AMPIBuffer::pop_vector(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ setWallNormal()

template<class T >
void TSubLattice< T >::setWallNormal
virtual

Change wall orientation by a given vector. Parameters are received from master.

Implements ASubLattice.

References console, esys::lsm::bpu::iter(), CVarMPIBuffer::pop_string(), AMPIBuffer::pop_vector(), CVarMPIBuffer::receiveBroadcast(), and Console::XDebug().

Here is the call graph for this function:

◆ tagParticleNearestTo()

template<class T >
void TSubLattice< T >::tagParticleNearestTo
virtual

Tag particle closest to given position. Params received from master.

Implements ASubLattice.

References console, Console::Debug(), NULL, CVarMPIBuffer::pop_int(), AMPIBuffer::pop_vector(), and CVarMPIBuffer::receiveBroadcast().

Here is the call graph for this function:

◆ thermExpansion()

template<class T >
void TSubLattice< T >::thermExpansion
protected

References console, and Console::XDebug().

Here is the call graph for this function:

◆ translateMeshBy()

template<class T >
void TSubLattice< T >::translateMeshBy ( const std::string &  meshName,
const Vec3 translation 
)
virtual

translate mesh by given amount

Parameters
meshNamethe name of the mesh to be moved
translationthe translation vector

Implements ASubLattice.

◆ updateInteractions()

template<class T >
void TSubLattice< T >::updateInteractions
virtual

Update the interaction groups from an existing Neighbortable

Todo:
check for rebuild Neighbortable

Implements ASubLattice.

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

Here is the call graph for this function:

◆ zeroForces()

template<class T >
void TSubLattice< T >::zeroForces
protected

Reset the forces on all particles and walls to 0

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

Here is the call graph for this function:

◆ zeroHeat()

template<class T >
void TSubLattice< T >::zeroHeat
protected

Reset the HeatSources on all particles and walls to 0

References console, and Console::XDebug().

Here is the call graph for this function:

Member Data Documentation

◆ commtime

template<typename T >
double TSubLattice< T >::commtime
protected

◆ forcetime

template<typename T >
double TSubLattice< T >::forcetime
protected

◆ m_alpha

template<typename T >
double TSubLattice< T >::m_alpha
protected

◆ m_bpis

template<typename T >
map<string,AParallelInteractionStorage*> TSubLattice< T >::m_bpis
protected

dynamic interactions

◆ m_comm

template<typename T >
MPI_Comm TSubLattice< T >::m_comm
protected

◆ m_damping

template<typename T >
map<string,AParallelInteractionStorage*> TSubLattice< T >::m_damping
protected

Body/gravitational force interactions.

◆ m_dims

template<typename T >
esys::lsm::CLatticeParam::ProcessDims TSubLattice< T >::m_dims
protected

Process partitioning, non-zero entries are taken literally, zero entries are computed via MPI_Dims_create.

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

◆ m_dpis

template<typename T >
map<string,AParallelInteractionStorage*> TSubLattice< T >::m_dpis
protected

◆ m_dt

template<typename T >
double TSubLattice< T >::m_dt
protected

◆ m_field_slaves

template<typename T >
map<int,AFieldSlave*> TSubLattice< T >::m_field_slaves
protected

◆ m_last_ns

template<typename T >
int TSubLattice< T >::m_last_ns
protected

◆ m_mesh

template<typename T >
map<string,TriMesh*> TSubLattice< T >::m_mesh
protected

◆ m_mesh2d

template<typename T >
map<string,Mesh2D*> TSubLattice< T >::m_mesh2d
protected

◆ m_nrange

template<typename T >
double TSubLattice< T >::m_nrange
protected

◆ m_ppa

template<typename T >
ParticleArray* TSubLattice< T >::m_ppa
protected

◆ m_pTimers

template<typename T >
MpiWTimers* TSubLattice< T >::m_pTimers
protected

◆ m_rank

template<typename T >
int TSubLattice< T >::m_rank
protected

rank in m_comm

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

◆ m_SIG

template<typename T >
map<string,ASphereBodyInteractionGroup<T>*> TSubLattice< T >::m_SIG
protected

◆ m_singleParticleInteractions

template<typename T >
NameIGroupMap TSubLattice< T >::m_singleParticleInteractions
protected

◆ m_spheres

template<typename T >
map<string,CSphereBody*> TSubLattice< T >::m_spheres
protected

◆ m_temp_conn

template<typename T >
map<int, vector<int> > TSubLattice< T >::m_temp_conn
protected

◆ m_tml_comm

template<typename T >
TML_Comm TSubLattice< T >::m_tml_comm
protected

◆ m_tml_worker_comm

template<typename T >
TML_Comm TSubLattice< T >::m_tml_worker_comm
protected

TML version of the communicator between workers (excl. master)

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

◆ m_walls

template<typename T >
map<string,CWall*> TSubLattice< T >::m_walls
protected

◆ m_WIG

template<typename T >
map<string,AWallInteractionGroup<T>*> TSubLattice< T >::m_WIG
protected

◆ m_worker_comm

template<typename T >
MPI_Comm TSubLattice< T >::m_worker_comm
protected

MPI communicator between workers (excl. master)

Referenced by TSubLattice< T >::getWorkerComm(), and TSubLattice< T >::TSubLattice().

◆ packtime

template<typename T >
double TSubLattice< T >::packtime
protected

◆ unpacktime

template<typename T >
double TSubLattice< T >::unpacktime
protected

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