NetDEM v1.0
Loading...
Searching...
No Matches
netdem::Scene Class Reference

A class for managing the elements in a DEM simulation. Scene behaves as a std container: More...

#include <scene.hpp>

Public Member Functions

 Scene ()
 Default constructor for the scene class.
 
void Init (Simulation *const sim)
 Initialize this scene with pointers to its owning simulation object.
 
ShapeInsertShape (const Shape *const s_ptr)
 Insert a single shape into this scene.
 
VecXT< Shape * > InsertShape (const VecXT< Shape * > &s_list)
 Insert a list of shapes into this scene.
 
ParticleInsertParticleLocal (const Particle *const p_ptr)
 Insert a single particle into this scene. The particle will be forced inserted no mather which sub-domain it belongs to.
 
ParticleInsertParticle (const Particle *const p_ptr)
 Insert a single particle into this scene.
 
ParticleInsertParticle (Particle const &p)
 Insert a copy of the given particle into this scene.
 
VecXT< Particle * > InsertParticle (const VecXT< Particle * > &p_list)
 Insert a list of particles into this scene.
 
VecXT< Particle * > InsertParticle (const VecXT< Particle > &p_list)
 Insert a list of particles into this scene by copying the given particles.
 
void InsertParticle (const BondedSpheres *const p_ptr)
 Insert a bonded-sphere particle into this scene.
 
void InsertParticle (const VecXT< BondedSpheres * > &p_list)
 Insert a list of bonded-sphere particles into this scene.
 
void InsertParticle (const VecXT< BondedSpheres > &p_list)
 Insert a list of bonded-sphere particles into this scene by copying the given particles.
 
void InsertParticle (const BondedVoronois *const p_ptr)
 Insert a bonded-voronoi particle into this scene.
 
void InsertParticle (const VecXT< BondedVoronois * > &p_list)
 Insert a list of bonded-voronoi particles into this scene.
 
void InsertParticle (const VecXT< BondedVoronois > &p_list)
 Insert a list of bonded-voronoi particles into this scene by copying the given particles.
 
ParticleInsertDerivedParticle (Particle const *p_ptr)
 Insert a derived particle into this scene by copying the given particle.
 
VecXT< Particle * > InsertDerivedParticle (const VecXT< Particle * > &p_list)
 Insert a list of derived particles into this scene by copying the given particles.
 
WallInsertWall (const Wall *const w_ptr)
 Insert a single wall into this scene.
 
WallInsertWall (Wall const &w)
 Insert a copy of the given wall into this scene.
 
VecXT< Wall * > InsertWall (const VecXT< Wall * > &w_list)
 Insert a list of walls into this scene.
 
VecXT< Wall * > InsertWall (const VecXT< Wall > &w_list)
 Insert a list of walls into this scene by copying the given walls.
 
void RemoveShape (Shape *s_ptr)
 Remove the given shape from this scene.
 
void RemoveParticle (Particle *p_ptr)
 Remove the given particle from this scene.
 
void RemoveParticle (int id)
 Remove the particle with the given ID from this scene.
 
void RemoveWall (Wall *w_ptr)
 Remove the given wall from this scene.
 
void RemoveWall (int id)
 Remove the wall with the given ID from this scene.
 
ContactModelInsertContactModel (const ContactModel *const cm_ptr)
 Insert a contact model into this scene.
 
VecXT< ContactModel * > InsertContactModel (const VecXT< ContactModel * > &cm_list)
 Insert a list of contact models into this scene.
 
VecXT< Shape * > GetShapes ()
 Return a vector of pointers to all shapes in this scene.
 
bool InScene (const Shape *const s_ptr)
 Check if the given shape is in this scene.
 
bool InScene (const ContactModel *const cnt_ptr)
 Check if the given contact model is in this scene.
 
void SetNumberOfMaterials (int num)
 Set the number of materials in this scene and initialize the contact lookup table accordingly.
 
void SetBondModel (int mat_type_1, int mat_type_2, ContactModel *const cnt_model)
 Set the bond model between two materials.
 
void SetBondModel (int mat_type_1, int mat_type_2, std::string const &label)
 Set the bond model between two materials using the label of the contact model.
 
void SetCollisionModel (int mat_type_1, int mat_type_2, ContactModel *const cnt_model)
 Set the collision model between two materials.
 
void SetCollisionModel (int mat_type_1, int mat_type_2, std::string const &label)
 Set the collision model between two materials using the label of the contact model.
 
void SetGravity (double gx, double gy, double gz)
 Set the gravity acceleration vector for all particles in this scene.
 
ContactModelGetBondModel (Particle *p1, Particle *p2)
 Get the bond model between two particles.
 
DomainGetDomain () const
 Get the domain.
 
ContactModelGetBondModel (Particle *p, Wall *w)
 Get the bond model between a particle and a wall.
 
ContactModelGetCollisionModel (Particle *p1, Particle *p2)
 Get the collision model between two particles.
 
ContactModelGetCollisionModel (Particle *p, Wall *w)
 Get the collision model between a particle and a wall.
 
void AutoReadRestart (std::string const &path, int mech_cyc, int shape_info_case=0, std::string filecase="vtk")
 Restart the simulation using output files.
 
void ReadRestartShapesVTK (std::string const &file)
 Read in the particle shape information from a restart file.
 
void ReadRestartParticlesVTK (std::string const &file)
 Read in the particle information from a restart file.
 
void ReadRestartWallsVTK (std::string const &file)
 Read in the wall information from a restart file.
 
void ReadRestartContactsVTK (std::string const &file)
 Read in the contact model information from a restart file.
 
void ReadRestartShapesJSON (std::string const &file)
 Read in the particle shape information from a restart file.
 
void ReadRestartParticlesJSON (std::string const &file)
 Read in the particle information from a restart file.
 
void ReadRestartWallsJSON (std::string const &file)
 Read in the wall information from a restart file.
 
void ReadRestartContactsJSON (std::string const &file)
 Read in the contact model information from a restart file.
 
VecXT< Particle * > const & GetParticles ()
 Get the particles in the scene.
 
VecXT< Wall * > const & GetWalls ()
 Get the walls in the scene.
 
VecXT< ContactPP * > GetContactPPs ()
 Get all particle-particle contacts in this scene.
 
VecXT< ContactPW * > GetContactPWs ()
 Get all particle-wall contacts in this scene.
 
std::unordered_map< int, Shape * > const & GetShapeMap ()
 Get the shape map in the scene.
 
VecXT< Particle * > GetParticlesWithProxy ()
 Get the particles, along with the particle proxyes, in the scene. (for debugging only)
 
void ClearShape ()
 Clear all shapes from this scene.
 
void ClearParticle ()
 Clear all particles from this scene.
 
void ClearWall ()
 Clear all walls from this scene.
 
void ClearContactModels ()
 Clear all contact models from this scene.
 
void ClearContacts ()
 Clear all contacts from this scene.
 
ParticleFindParticle (int id)
 Find the particle with the given ID in this scene.
 
ParticleFindParticleWithProxy (int id)
 Find the particle with the given ID in this scene.
 
WallFindWall (int id)
 Find the wall with the given ID in this scene.
 
 ~Scene ()
 Destroy this scene and free all associated memory.
 

Public Attributes

Vec3d gravity_coef {0, 0, -9.81}
 The gravity acceleration vector applied to all particles in this scene.
 
VecXT< Wall * > wall_list
 A list of pointers to all walls assumed to exist in this scene. No MPI transfer is performed on wall data.
 
MiniMap< int, ContactModel * > contact_model_map
 A map from integer IDs to pointers to contact models defined in this scene.
 
VecXT< VecXT< ContactModel * > > bond_model_table
 A lookup table for contact models based on the two materials in contact.
 
VecXT< VecXT< ContactModel * > > collision_model_table
 
VecXT< Particle * > particle_list
 A list of pointers to all particles that belong to this sub-domain (scene).
 

Protected Attributes

VecXT< Particle * > particle_ghost_list
 A list of pointers to all particles that do not physically exist, but are introduced to provide well-defined contacts.
 
VecXT< Particle * > particle_proxy_list
 A list of pointers to all proxy particles that belong to other domains, but may come into contact with particles in this domain.
 
VecXT< Wall * > wall_ghost_list
 A list of pointers to all walls that do not physically exist, but are introduced to provide well-defined contacts.
 
std::unordered_map< int, Particle * > particle_map
 A map from integer IDs to pointers to particles, used for MPI particle reconstruction.
 
std::unordered_map< int, Shape * > shape_map
 A map from shape IDs to pointers to shapes defined in this scene.
 
VecXT< Shape * > local_shape_list
 A list of pointers to all shapes that have been generated locally and not yet synced with other sub-domains.
 

Friends

class DEMSolver
 
class MPIManager
 

Detailed Description

A class for managing the elements in a DEM simulation. Scene behaves as a std container:

  • the instances inserted is a copy of theoriginal instances. In other words, instances in the scene and the original reference instances are independent. When an instance is inserted, the method will return a pointer to the instance in the scene.
  • we use id to differentiate each instance. When an instance is inserted, it will be assigned a unique id. To avoid the id confict between different sub-domains, it assumed that the largest number of availiable ids is 2,000,000, for particles and shapes, respectively. For each sub-domain, the id starts from 2,000,000 by rank, e.g. 2,000,000, 2,000,001, ... for the second processor.
  • by default, particles and contacts are owned by DEMObjectPool::GetInstance(). Shapes, walls and contact models are owned by the scene. Be caution about the memery free-up issue. We can improve if one come up with a better design. Basicly, we do not want to tangle with smart pointers (we developers need to be very clear about and should have fully control on the life period of these instances).
  • bottom-line: do not directly manupulate the properties (i.e., the particle, wall, contact, shapes, contact models, etc.) in the scene. (These properties are made public for easy acess.) Use method such as Insertxxx, Removexxx. In particular, proxy and ghost is maintained by mpi_manager and dem_solver in a simulation instance.
  • walls and contact models are also assumed to exist in all sub-domains with the same ids.

Note and to-do: currently, the scene, dem_solver and mpi_manager are deeply coupuled with each other. Will need to re-consider the code design. e.g.,

  • 1. particle and wall owns and maintains the linked lists, which is used by dem_solver.
  • 2. scenes owns the particle proxy and ghost, which are maintained by the mpi_manager and dem_solver.
  • 3. particle insertion and removal by the scene might destropy the linked lists for dem_solver)

Constructor & Destructor Documentation

◆ Scene()

Scene::Scene ( )

Default constructor for the scene class.

◆ ~Scene()

Scene::~Scene ( )

Destroy this scene and free all associated memory.

Member Function Documentation

◆ AutoReadRestart()

void Scene::AutoReadRestart ( std::string const & path,
int mech_cyc,
int shape_info_case = 0,
std::string filecase = "vtk" )

Restart the simulation using output files.

Parameters
pathThe path where the output files are located.
mech_cycThe mechanical time step cycle number at which the restart is initiated.
shape_info_caseAn integer value that specifies how much shape information should be read in for each particle during the restart. Valid values are 0 (for only 0-step json), 2 (for time-specific json).
filecaseThe filecase (vtk or json) of the output files.

◆ ClearContactModels()

void Scene::ClearContactModels ( )

Clear all contact models from this scene.

◆ ClearContacts()

void Scene::ClearContacts ( )

Clear all contacts from this scene.

◆ ClearParticle()

void Scene::ClearParticle ( )

Clear all particles from this scene.

◆ ClearShape()

void Scene::ClearShape ( )

Clear all shapes from this scene.

◆ ClearWall()

void Scene::ClearWall ( )

Clear all walls from this scene.

◆ FindParticle()

Particle * Scene::FindParticle ( int id)

Find the particle with the given ID in this scene.

Parameters
idThe ID of the particle to find.
Returns
A pointer to the particle with the given ID, or nullptr if no such particle exists in this scene.

◆ FindParticleWithProxy()

Particle * Scene::FindParticleWithProxy ( int id)

Find the particle with the given ID in this scene.

Parameters
idThe ID of the particle to find.
Returns
A pointer to the particle with the given ID, or nullptr if no such particle exists in this scene.

◆ FindWall()

Wall * Scene::FindWall ( int id)

Find the wall with the given ID in this scene.

Parameters
idThe ID of the wall to find.
Returns
A pointer to the wall with the given ID, or nullptr if no such wall exists in this scene.

◆ GetBondModel() [1/2]

ContactModel * Scene::GetBondModel ( Particle * p,
Wall * w )

Get the bond model between a particle and a wall.

Parameters
pA pointer to the particle.
wA pointer to the wall.
Returns
A pointer to the bond model between the particle and the wall.

◆ GetBondModel() [2/2]

ContactModel * Scene::GetBondModel ( Particle * p1,
Particle * p2 )

Get the bond model between two particles.

Parameters
p1A pointer to the first particle.
p2A pointer to the second particle.
Returns
A pointer to the bond model between the two particles.

◆ GetCollisionModel() [1/2]

ContactModel * Scene::GetCollisionModel ( Particle * p,
Wall * w )

Get the collision model between a particle and a wall.

Parameters
pA pointer to the particle.
wA pointer to the wall.
Returns
A pointer to the collision model between the particle and the wall.

◆ GetCollisionModel() [2/2]

ContactModel * Scene::GetCollisionModel ( Particle * p1,
Particle * p2 )

Get the collision model between two particles.

Parameters
p1A pointer to the first particle.
p2A pointer to the second particle.
Returns
A pointer to the collision model between the two particles.

◆ GetContactPPs()

VecXT< ContactPP * > Scene::GetContactPPs ( )

Get all particle-particle contacts in this scene.

Returns
A vector of pointers to all particle-particle contacts in this scene.

◆ GetContactPWs()

VecXT< ContactPW * > Scene::GetContactPWs ( )

Get all particle-wall contacts in this scene.

Returns
A vector of pointers to all particle-wall contacts in this scene.

◆ GetDomain()

Domain * Scene::GetDomain ( ) const

Get the domain.

Returns
A pointer to the domain that contains the scene.

◆ GetParticles()

VecXT< Particle * > const & Scene::GetParticles ( )

Get the particles in the scene.

◆ GetParticlesWithProxy()

VecXT< Particle * > Scene::GetParticlesWithProxy ( )

Get the particles, along with the particle proxyes, in the scene. (for debugging only)

◆ GetShapeMap()

unordered_map< int, Shape * > const & Scene::GetShapeMap ( )

Get the shape map in the scene.

◆ GetShapes()

◆ GetWalls()

VecXT< Wall * > const & Scene::GetWalls ( )

Get the walls in the scene.

◆ Init()

void Scene::Init ( Simulation *const sim)

Initialize this scene with pointers to its owning simulation object.

Parameters
simA pointer to the Simulation instance that owns this scene.

◆ InScene() [1/2]

bool Scene::InScene ( const ContactModel *const cnt_ptr)

Check if the given contact model is in this scene.

Parameters
cnt_ptrA pointer to the contact model to check for existence in this scene.
Returns
true if the contact model is found in this scene, false otherwise.

◆ InScene() [2/2]

bool Scene::InScene ( const Shape *const s_ptr)

Check if the given shape is in this scene.

Parameters
s_ptrA pointer to the shape to check for existence in this scene.
Returns
true if the shape is found in this scene, false otherwise.

◆ InsertContactModel() [1/2]

◆ InsertContactModel() [2/2]

VecXT< ContactModel * > Scene::InsertContactModel ( const VecXT< ContactModel * > & cm_list)

Insert a list of contact models into this scene.

Parameters
cm_listThe vector of pointers to the contact models to be inserted.
Returns
A vector of pointers to the newly inserted contact models.

◆ InsertDerivedParticle() [1/2]

VecXT< Particle * > Scene::InsertDerivedParticle ( const VecXT< Particle * > & p_list)

Insert a list of derived particles into this scene by copying the given particles.

Parameters
p_listThe vector of particles to be copied and inserted into this scene.
Returns
A vector of pointers to the newly inserted derived particles.

◆ InsertDerivedParticle() [2/2]

Particle * Scene::InsertDerivedParticle ( Particle const * p_ptr)

Insert a derived particle into this scene by copying the given particle.

Parameters
p_ptrThe pointer to the particle to be copied and inserted into this scene.
Returns
A pointer to the newly inserted derived particle.

◆ InsertParticle() [1/10]

void Scene::InsertParticle ( const BondedSpheres *const p_ptr)

Insert a bonded-sphere particle into this scene.

Parameters
p_ptrA pointer to the BondedSpheres particle to be inserted.

◆ InsertParticle() [2/10]

void Scene::InsertParticle ( const BondedVoronois *const p_ptr)

Insert a bonded-voronoi particle into this scene.

Parameters
p_ptrA pointer to the BondedVoronois particle to be inserted.

◆ InsertParticle() [3/10]

◆ InsertParticle() [4/10]

void Scene::InsertParticle ( const VecXT< BondedSpheres * > & p_list)

Insert a list of bonded-sphere particles into this scene.

Parameters
p_listThe vector of pointers to the BondedSpheres particles to be inserted.

◆ InsertParticle() [5/10]

void Scene::InsertParticle ( const VecXT< BondedSpheres > & p_list)

Insert a list of bonded-sphere particles into this scene by copying the given particles.

Parameters
p_listThe vector of BondedSpheres particles to be copied and inserted into this scene.

◆ InsertParticle() [6/10]

void Scene::InsertParticle ( const VecXT< BondedVoronois * > & p_list)

Insert a list of bonded-voronoi particles into this scene.

Parameters
p_listThe vector of pointers to the BondedVoronois particles to be inserted.

◆ InsertParticle() [7/10]

void Scene::InsertParticle ( const VecXT< BondedVoronois > & p_list)

Insert a list of bonded-voronoi particles into this scene by copying the given particles.

Parameters
p_listThe vector of BondedVoronois particles to be copied and inserted into this scene.

◆ InsertParticle() [8/10]

VecXT< Particle * > Scene::InsertParticle ( const VecXT< Particle * > & p_list)

Insert a list of particles into this scene.

Parameters
p_listThe vector of pointers to the particles to be inserted.
Returns
A vector of pointers to the newly inserted particles.

◆ InsertParticle() [9/10]

VecXT< Particle * > Scene::InsertParticle ( const VecXT< Particle > & p_list)

Insert a list of particles into this scene by copying the given particles.

Parameters
p_listThe vector of particles to be copied and inserted into this scene.
Returns
A vector of pointers to the newly inserted particles.

◆ InsertParticle() [10/10]

Particle * Scene::InsertParticle ( Particle const & p)

Insert a copy of the given particle into this scene.

Parameters
pThe particle to be copied and inserted into this scene.
Returns
A pointer to the newly inserted particle.

◆ InsertParticleLocal()

Particle * Scene::InsertParticleLocal ( const Particle *const p_ptr)

Insert a single particle into this scene. The particle will be forced inserted no mather which sub-domain it belongs to.

Parameters
p_ptrA pointer to the particle to be inserted.
Returns
A pointer to the newly inserted particle.

◆ InsertShape() [1/2]

◆ InsertShape() [2/2]

VecXT< Shape * > Scene::InsertShape ( const VecXT< Shape * > & s_list)

Insert a list of shapes into this scene.

Parameters
s_listThe vector of pointers to the shapes to be inserted.
Returns
A vector of pointers to the newly inserted shapes.

◆ InsertWall() [1/4]

VecXT< Wall * > Scene::InsertWall ( const VecXT< Wall * > & w_list)

Insert a list of walls into this scene.

Parameters
w_listThe vector of pointers to the walls to be inserted.
Returns
A vector of pointers to the newly inserted walls.

◆ InsertWall() [2/4]

VecXT< Wall * > Scene::InsertWall ( const VecXT< Wall > & w_list)

Insert a list of walls into this scene by copying the given walls.

Parameters
w_listThe vector of walls to be copied and inserted into this scene.
Returns
A vector of pointers to the newly inserted walls.

◆ InsertWall() [3/4]

Wall * Scene::InsertWall ( const Wall *const w_ptr)

Insert a single wall into this scene.

Parameters
w_ptrA pointer to the wall to be inserted.
Returns
A pointer to the newly inserted wall.
Examples
00_nut_in_bolt.cpp, 1_membrane_case.cpp, 92_nut_in_bolt.cpp, blade_mixing_main.cpp, and landslide_main.cpp.

◆ InsertWall() [4/4]

Wall * Scene::InsertWall ( Wall const & w)

Insert a copy of the given wall into this scene.

Parameters
wThe wall to be copied and inserted into this scene.
Returns
A pointer to the newly inserted wall.

◆ ReadRestartContactsJSON()

void Scene::ReadRestartContactsJSON ( std::string const & file)

Read in the contact model information from a restart file.

Parameters
fileThe path to the restart file containing the contact model information.

◆ ReadRestartContactsVTK()

void Scene::ReadRestartContactsVTK ( std::string const & file)

Read in the contact model information from a restart file.

Parameters
fileThe path to the restart file containing the contact model information.

◆ ReadRestartParticlesJSON()

void Scene::ReadRestartParticlesJSON ( std::string const & file)

Read in the particle information from a restart file.

Parameters
fileThe path to the restart file containing the particle information.

◆ ReadRestartParticlesVTK()

void Scene::ReadRestartParticlesVTK ( std::string const & file)

Read in the particle information from a restart file.

Parameters
fileThe path to the restart file containing the particle information.

◆ ReadRestartShapesJSON()

void Scene::ReadRestartShapesJSON ( std::string const & file)

Read in the particle shape information from a restart file.

Parameters
fileThe path to the restart file containing the particle shape information.

◆ ReadRestartShapesVTK()

void Scene::ReadRestartShapesVTK ( std::string const & file)

Read in the particle shape information from a restart file.

Parameters
fileThe path to the restart file containing the particle shape information.

◆ ReadRestartWallsJSON()

void Scene::ReadRestartWallsJSON ( std::string const & file)

Read in the wall information from a restart file.

Parameters
fileThe path to the restart file containing the wall information.

◆ ReadRestartWallsVTK()

void Scene::ReadRestartWallsVTK ( std::string const & file)

Read in the wall information from a restart file.

Parameters
fileThe path to the restart file containing the wall information.

◆ RemoveParticle() [1/2]

void Scene::RemoveParticle ( int id)

Remove the particle with the given ID from this scene.

Parameters
idThe ID of the particle to be removed.

◆ RemoveParticle() [2/2]

void Scene::RemoveParticle ( Particle * p_ptr)

Remove the given particle from this scene.

Parameters
p_ptrA pointer to the particle to be removed.
Examples
1_membrane_case.cpp.

◆ RemoveShape()

void Scene::RemoveShape ( Shape * s_ptr)

Remove the given shape from this scene.

Parameters
s_ptrA pointer to the shape to be removed.

◆ RemoveWall() [1/2]

void Scene::RemoveWall ( int id)

Remove the wall with the given ID from this scene.

Parameters
idThe ID of the wall to be removed.

◆ RemoveWall() [2/2]

void Scene::RemoveWall ( Wall * w_ptr)

Remove the given wall from this scene.

Parameters
w_ptrA pointer to the wall to be removed.
Examples
92_angle_of_repose.cpp, 92_angle_repose_trimesh.cpp, and 94_angle_repose_trimesh.cpp.

◆ SetBondModel() [1/2]

void Scene::SetBondModel ( int mat_type_1,
int mat_type_2,
ContactModel *const cnt_model )

Set the bond model between two materials.

Parameters
mat_type_1The integer ID of the first material.
mat_type_2The integer ID of the second material.
cnt_modelA pointer to the contact model to set as the bond model between the two materials.

◆ SetBondModel() [2/2]

void Scene::SetBondModel ( int mat_type_1,
int mat_type_2,
std::string const & label )

Set the bond model between two materials using the label of the contact model.

Parameters
mat_type_1The integer ID of the first material.
mat_type_2The integer ID of the second material.
labelThe string label of the contact model to set as the bond model between the two materials.

◆ SetCollisionModel() [1/2]

◆ SetCollisionModel() [2/2]

void Scene::SetCollisionModel ( int mat_type_1,
int mat_type_2,
std::string const & label )

Set the collision model between two materials using the label of the contact model.

Parameters
mat_type_1The integer ID of the first material.
mat_type_2The integer ID of the second material.
labelThe string label of the contact model to set as the collision model between the two materials.

◆ SetGravity()

void Scene::SetGravity ( double gx,
double gy,
double gz )

Set the gravity acceleration vector for all particles in this scene.

Parameters
gxThe x-component of the gravity acceleration vector.
gyThe y-component of the gravity acceleration vector.
gzThe z-component of the gravity acceleration vector.

◆ SetNumberOfMaterials()

Friends And Related Symbol Documentation

◆ DEMSolver

friend class DEMSolver
friend

◆ MPIManager

friend class MPIManager
friend

Member Data Documentation

◆ bond_model_table

VecXT<VecXT<ContactModel *> > netdem::Scene::bond_model_table

A lookup table for contact models based on the two materials in contact.

Note
This table is used to quickly look up the appropriate contact model between any pair of materials in the simulation.

◆ collision_model_table

VecXT<VecXT<ContactModel *> > netdem::Scene::collision_model_table

◆ contact_model_map

MiniMap<int, ContactModel *> netdem::Scene::contact_model_map

A map from integer IDs to pointers to contact models defined in this scene.

◆ gravity_coef

Vec3d netdem::Scene::gravity_coef {0, 0, -9.81}

◆ local_shape_list

VecXT<Shape *> netdem::Scene::local_shape_list
protected

A list of pointers to all shapes that have been generated locally and not yet synced with other sub-domains.

◆ particle_ghost_list

VecXT<Particle *> netdem::Scene::particle_ghost_list
protected

A list of pointers to all particles that do not physically exist, but are introduced to provide well-defined contacts.

Note
These "ghost" particles are created when a particle moves out of the domain while still in contact with other particles or walls within this domain.

◆ particle_list

VecXT<Particle *> netdem::Scene::particle_list

A list of pointers to all particles that belong to this sub-domain (scene).

Examples
1_membrane_case.cpp, and 81_voronoi_packing.cpp.

◆ particle_map

std::unordered_map<int, Particle *> netdem::Scene::particle_map
protected

A map from integer IDs to pointers to particles, used for MPI particle reconstruction.

Note
This map is used to reconstruct particle references in contact instances after an MPI communication step.

◆ particle_proxy_list

VecXT<Particle *> netdem::Scene::particle_proxy_list
protected

A list of pointers to all proxy particles that belong to other domains, but may come into contact with particles in this domain.

Note
These "proxy" particles are updated at each DEM cycle as their positions are checked for contact with particles in this domain.

◆ shape_map

std::unordered_map<int, Shape *> netdem::Scene::shape_map
protected

A map from shape IDs to pointers to shapes defined in this scene.

Note
Shapes are assumed to exist in all sub-domains after pre-initialization.

◆ wall_ghost_list

VecXT<Wall *> netdem::Scene::wall_ghost_list
protected

A list of pointers to all walls that do not physically exist, but are introduced to provide well-defined contacts.

Note
These "ghost" walls are created when a wall is removed while still in contact with particles within this domain.

◆ wall_list

VecXT<Wall *> netdem::Scene::wall_list

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