ESyS-Particle
4.0.1
|
Class for a Sublattice. More...
#include <SubLattice.h>
Public Member Functions | |
TSubLattice (const esys::lsm::CLatticeParam &prm, int rank, MPI_Comm comm, MPI_Comm worker_comm) | |
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 | 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 | 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, Vec3 > | getParticlePosn (int particleId) |
AParallelInteractionStorage * | findPis (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 | 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 | 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) |
![]() | |
void | setNTSize (int) |
virtual void | setParticleType (const std::string &particleType) |
virtual const std::string & | getParticleType () const |
virtual void | initComplex () |
virtual void | setParticleAngularVelocity () |
Protected Types | |
typedef ParallelParticleArray< T > | ParticleArray |
typedef map< string, AInteractionGroup< T > * > | NameIGroupMap |
persistent interactions |
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 | |
ParticleArray * | m_ppa |
map< string, AParallelInteractionStorage * > | m_dpis |
map< string, AParallelInteractionStorage * > | m_bpis |
dynamic interactions | |
NameIGroupMap | m_singleParticleInteractions |
map< string, AParallelInteractionStorage * > | m_damping |
Body/gravitational force interactions. | |
map< string, AWallInteractionGroup< T > * > | m_WIG |
map< string, CWall * > | m_walls |
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 | |
MPI_Comm | m_comm |
TML_Comm | m_tml_comm |
MPI_Comm | m_worker_comm |
MPI communicator between workers (excl. master) | |
TML_Comm | m_tml_worker_comm |
TML version of the communicator between workers (excl. master) | |
esys::lsm::CLatticeParam::ProcessDims | m_dims |
double | packtime |
double | unpacktime |
double | commtime |
double | forcetime |
map< int, AFieldSlave * > | m_field_slaves |
MpiWTimers * | m_pTimers |
Additional Inherited Members | |
![]() | |
typedef std::pair< int, int > | ParticleIdPair |
typedef std::vector < ParticleIdPair > | ParticleIdPairVector |
typedef std::vector< int > | IdVector |
Class for a Sublattice.
TSubLattice< T >::TSubLattice | ( | const esys::lsm::CLatticeParam & | prm, |
int | rank, | ||
MPI_Comm | comm, | ||
MPI_Comm | worker_comm | ||
) |
construct SubLattice
param | Lattice parameters |
rank | the MPI rank |
comm | the MPI communicator |
References TSubLattice< T >::m_dims, TSubLattice< T >::m_rank, TSubLattice< T >::m_tml_worker_comm, TSubLattice< T >::m_worker_comm, and TML_Comm::setComm().
|
virtual |
Add bonded interaction group to the lattice. Receive the parameters from master. The bonds are created from the neighbor table.
Implements ASubLattice.
References CBondedIGP::k, CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::pop_string(), CBondedIGP::rbreak, CVarMPIBuffer::receiveBroadcast(), ParallelInteractionStorage_EB< P, I >::setUnbreakable(), and BasicCon::XDebug().
|
virtual |
add bonded interactions with 2d mesh get parameters from master
Implements ASubLattice.
References Mesh2D_PIS_EB< ParticleType, IType >::buildFromPPAByGap(), CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Add a bonded TriMesh interaction group
Implements ASubLattice.
References CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
add bonded wall interaction group. Parameters received from the master
Implements ASubLattice.
References BasicCon::Error(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Add bonded interaction group to the lattice. Receive the parameters from master. The bonds are created from the neighbor table.
Implements ASubLattice.
References CBondedIGP::k, CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::pop_string(), CBondedIGP::rbreak, CVarMPIBuffer::receiveBroadcast(), ParallelInteractionStorage_EB< P, I >::setUnbreakable(), and BasicCon::XDebug().
|
virtual |
Add a DampingGroup to the lattice. Receive the parameters from master.
Implements ASubLattice.
References CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
add bonded wall interaction group with direction dependend elasticity . Parameters received from the master
Implements ASubLattice.
References BasicCon::Error(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
add elastic wall interaction group. Parameters received from the master
Implements ASubLattice.
References CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Add a 2D mesh. Receive all data from master
Implements ASubLattice.
References Mesh2D::LoadMesh(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Add a (non-bonded) LineMesh (2D) interaction group
Implements ASubLattice.
References CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Add a PairInteractionGroup to the lattice
Implements ASubLattice.
References CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
add scalar per-interaction field to saver list
Implements ASubLattice.
References BasicCon::XDebug().
|
virtual |
add scalar per-particle field to saver list
Implements ASubLattice.
References BasicCon::XDebug().
|
virtual |
Add a per-triangle scalar field saver. Data received from master.
Implements ASubLattice.
References BasicCon::Critical(), BasicCon::Debug(), Triangle::getScalarFieldFunction(), and BasicCon::XDebug().
|
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 CBondedIGP::k, CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::pop_string(), CBondedIGP::rbreak, CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Add a SingleInteractionGroup to the lattice
Implements ASubLattice.
References CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Add a tagged PairInteractionGroup to the lattice
Implements ASubLattice.
References CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Add a Triangle Mesh
Implements ASubLattice.
References TriMesh::LoadMesh(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Add a TriMesh interaction group
Implements ASubLattice.
References CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
add per-interaction vector field to saver list
Implements ASubLattice.
References BasicCon::Debug(), BasicCon::Error(), and BasicCon::XDebug().
|
virtual |
add vector per-particle field to saver list
Implements ASubLattice.
References BasicCon::Debug(), and BasicCon::XDebug().
|
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 BasicCon::Critical(), BasicCon::Debug(), Edge2D::getVectorFieldFunction(), Triangle::getVectorFieldFunction(), and BasicCon::XDebug().
|
virtual |
Add vector wall field. Data received from master.
Implements ASubLattice.
References AWallFieldSlave::addWall(), BasicCon::Error(), and BasicCon::XDebug().
|
virtual |
add wall with viscous drag
Implements ASubLattice.
References BasicCon::Error(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Add wall to the sublattice. Parameters received from the master
Implements ASubLattice.
References CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Apply given force to a wall. Parameters are received from master.
Implements ASubLattice.
References CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
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 BasicCon::XDebug().
|
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 BasicCon::XDebug().
|
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(), BasicCon::Debug(), CMPISGBufferLeaf::send(), and BasicCon::XDebug().
|
virtual |
Send number of owned particles to the master
Implements ASubLattice.
References CMPIVarSGBufferLeaf::append(), BasicCon::Debug(), and CMPIVarSGBufferLeaf::send().
|
protectedvirtual |
Do the work for adding the damping
type | the type of damping |
param_buffer | the buffer containing the parameters |
Reimplemented in TRotSubLattice< T >.
References BasicCon::Error().
Referenced by TRotSubLattice< T >::doAddDamping().
|
protectedvirtual |
do the actual work adding the PIG
name | the name of the PIG |
type | the type of the PIG |
param_buffer | the buffer containing the rest of the parameters |
References FractalFrictionIGP::dy, FractalFrictionIGP::mu, FractalFrictionIGP::ny, CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_int(), and BasicCon::XDebug().
Referenced by TRotSubLattice< T >::doAddPIG().
|
virtual |
Exchange positions of shared particles with the other sublattices.
Implements ASubLattice.
References BasicCon::XDebug().
|
virtual |
send back stress on faces of given mesh, get mesh name from master
Implements ASubLattice.
References BasicCon::Critical(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
send back face (edge in 2D, triangle in 3d) ids of given mesh, get mesh name from master
Implements ASubLattice.
References BasicCon::Critical(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
send back node ids of given mesh, get mesh name from master
Implements ASubLattice.
References BasicCon::Critical(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Implements ASubLattice.
References BasicCon::Debug().
|
virtual |
Implements ASubLattice.
|
virtual |
send back stress on faces of given mesh, get mesh name from master
Implements ASubLattice.
References CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
get force acting on a wall
Implements ASubLattice.
References CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
get position of a wall
Implements ASubLattice.
References CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Initialize particle storage. The dimensions are global.
min | minimum corner |
max | maximum corner |
Implements ASubLattice.
References BasicCon::XDebug().
|
virtual |
Initialize particle storage with some circular boundaries. The dimensions are global.
min | minimum corner |
max | maximum corner |
Implements ASubLattice.
References BasicCon::Critical(), BasicCon::Info(), and BasicCon::XDebug().
|
protected |
Do the time integration for the particles owned by the SubLattice by 1st order method
dt | the time step |
References BasicCon::XDebug().
|
protected |
Do the time integration for the particles owned by the SubLattice for temprature
dt | the time step |
References BasicCon::XDebug().
|
virtual |
Move all particles with a given tag to a given position. Parameters (tag,posn) are received from master.
Implements ASubLattice.
References BasicCon::Debug(), CVarMPIBuffer::pop_int(), and CVarMPIBuffer::receiveBroadcast().
|
virtual |
Move mesh (tri or 2d) node by a given amount. Parameters (name,id,displacement) are received from master.
Implements ASubLattice.
References BasicCon::Debug(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Move tagged trimesh nodes by a given amount. Parameters (name,tag,displacement) are received from master.
Implements ASubLattice.
References BasicCon::Error(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::pop_string(), and CVarMPIBuffer::receiveBroadcast().
|
virtual |
Move all particles with a given tag by a specified displacement. Parameters (tag,displacement) are received from master.
Implements ASubLattice.
References BasicCon::Debug(), CVarMPIBuffer::pop_int(), and CVarMPIBuffer::receiveBroadcast().
|
virtual |
Move wall by a given vector. Parameters are received from master.
Implements ASubLattice.
References CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Do one step, i.e. calculate forces, velocities, positions
Implements ASubLattice.
|
virtual |
Do one step, i.e. calculate forces, velocities, positions
|
virtual |
Print structural information
Implements ASubLattice.
|
virtual |
rebuild interactions
Implements ASubLattice.
References BasicCon::Debug(), and CMPIBarrier::wait().
|
virtual |
rebuild particle array
Implements ASubLattice.
|
virtual |
Receive connections from a TML Communicator
comm | the Communicator |
Implements ASubLattice.
References CMPIBarrier::wait(), and BasicCon::XDebug().
|
virtual |
Receive particle from a TML Communicator
comm | the Communicator |
Implements ASubLattice.
References CMPIBarrier::wait(), and BasicCon::XDebug().
|
virtual |
Remove interaction group. The name of the group is received from the master.
Implements ASubLattice.
References BasicCon::Error(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
void TSubLattice< T >::resetDisplacements | ( | ) |
Reset the displacement of all particles & meshes
References BasicCon::Debug().
|
virtual |
save checkpoint data, i.e. for restarting
Implements esys::lsm::CheckPointable.
|
virtual |
save snapshot data, i.e. for viz/postprocessing
Reimplemented from esys::lsm::CheckPointable.
|
virtual |
Search neighbors - rebuild particle array and interactions
Implements ASubLattice.
References BasicCon::Debug(), and CMPIBarrier::wait().
|
virtual |
Send data of owned particles to the master
References BasicCon::Debug().
|
virtual |
send field data to master
Implements ASubLattice.
References BasicCon::Debug().
|
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 BasicCon::Error(), CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Set the density of a tagged group of particles. Parameters are received from master.
Implements ASubLattice.
References BasicCon::Debug(), CVarMPIBuffer::pop_double(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Make tagged particles non-dynamic i.e. don't update velocity (rot+lin). Parameters (tag) are received from master.
Implements ASubLattice.
References BasicCon::Debug(), CVarMPIBuffer::pop_int(), and CVarMPIBuffer::receiveBroadcast().
|
virtual |
Make tagged particles non-rotational, i.e. don't update rotational velocity & position Parameters (tag) are received from master.
Implements ASubLattice.
References BasicCon::Debug(), CVarMPIBuffer::pop_int(), and CVarMPIBuffer::receiveBroadcast().
|
virtual |
Make tagged particles lieanr non-dynamic, i.e. don't update linear velocity Parameters (tag) are received from master.
References BasicCon::Debug(), CVarMPIBuffer::pop_int(), and CVarMPIBuffer::receiveBroadcast().
|
virtual |
Set the velocity of a particle. Parameters are received from master.
Implements ASubLattice.
References BasicCon::Debug(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Set the velocity of a tagged group of particles. Parameters are received from master.
Implements ASubLattice.
References BasicCon::Debug(), CVarMPIBuffer::pop_int(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
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 BasicCon::XDebug().
|
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 CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Change wall orientation by a given vector. Parameters are received from master.
Implements ASubLattice.
References CVarMPIBuffer::pop_string(), CVarMPIBuffer::receiveBroadcast(), and BasicCon::XDebug().
|
virtual |
Tag particle closest to given position. Params received from master.
Implements ASubLattice.
References BasicCon::Debug(), CVarMPIBuffer::pop_int(), and CVarMPIBuffer::receiveBroadcast().
|
virtual |
translate mesh by given amount
meshName | the name of the mesh to be moved |
translation | the translation vector |
Implements ASubLattice.
|
virtual |
Update the interaction groups from an existing Neighbortable
Implements ASubLattice.
References BasicCon::Debug().
|
protected |
Reset the forces on all particles and walls to 0
References BasicCon::XDebug().
|
protected |
Reset the HeatSources on all particles and walls to 0
References BasicCon::XDebug().
|
protected |
Process partitioning, non-zero entries are taken literally, zero entries are computed via MPI_Dims_create.
Referenced by TSubLattice< T >::TSubLattice().