|
NetDEM v1.0
|
An abstract class representing a collision solver for a particle and a wall. More...
#include <collision_solver_pw.hpp>
Public Member Functions | |
| CollisionSolverPW () | |
| CollisionSolverPW (Particle *const p, Wall *const w) | |
| virtual CollisionSolverPW * | Clone () const =0 |
| virtual void | Init (Particle *const p, Wall *const w) |
| virtual bool | Detect ()=0 |
| virtual bool | Detect (ContactPW *const cnt) |
| virtual void | ResolveInit (ContactPW *const cnt, double timestep)=0 |
| virtual void | ResolveUpdate (ContactPW *const cnt, double timestep)=0 |
| virtual | ~CollisionSolverPW () |
Public Attributes | |
| Particle * | particle {nullptr} |
| Wall * | wall {nullptr} |
Protected Member Functions | |
| void | InitBasicGeoms (CollisionGeometries *const cnt_geoms, double timestep) |
| void | UpdateBasicGeoms (CollisionGeometries *const cnt_geoms, double timestep, Vec3d const &dir_n_old) |
An abstract class representing a collision solver for a particle and a wall.
This class provides an interface for detecting and resolving collisions between a particle and a wall, and includes methods for initializing and updating the contact geometries associated with each collision. Subclasses are expected to implement the core collision detection and resolution logic.
|
inline |
Constructor for an empty CollisionSolverPW.
Constructor for a CollisionSolverPW with specific particle and wall.
| p | The particle involved in the collision. |
| w | The wall involved in the collision. |
|
inlinevirtual |
Virtual destructor for CollisionSolverPW.
|
pure virtual |
Clone this collision solver.
Implemented in netdem::SolverANNPPlane, netdem::SolverANNPW, netdem::SolverBooleanPW, netdem::SolverGJKPW, netdem::SolverSDFPW, netdem::SolverSpherePlane, and netdem::SolverSphereTriangle.
|
pure virtual |
Detect whether a collision has occurred between the particle and the wall.
true if a collision has occurred, false otherwise. Implemented in netdem::SolverANNPPlane, netdem::SolverANNPW, netdem::SolverBooleanPW, netdem::SolverGJKPW, netdem::SolverSDFPW, netdem::SolverSpherePlane, and netdem::SolverSphereTriangle.
|
inlinevirtual |
Initialize the particle and wall involved in the collision.
| p | The particle involved in the collision. |
| w | The wall involved in the collision. |
Reimplemented in netdem::SolverANNPPlane, netdem::SolverANNPW, netdem::SolverBooleanPW, netdem::SolverGJKPW, netdem::SolverSDFPW, netdem::SolverSpherePlane, and netdem::SolverSphereTriangle.
|
protected |
Initialize the basic geometries associated with the collision surface.
| cnt_geoms | A pointer to the CollisionGeometries object where contact geometry information will be stored. |
| timestep | The timestep length used in the simulation. |
|
pure virtual |
Prepare for resolving the collision by initializing the ContactPW object.
| cnt | A pointer to a ContactPW object storing details of the collision. |
| timestep | The timestep length used in the simulation. |
Implemented in netdem::SolverANNPPlane, netdem::SolverANNPW, netdem::SolverBooleanPW, netdem::SolverGJKPW, netdem::SolverSDFPW, netdem::SolverSpherePlane, and netdem::SolverSphereTriangle.
|
pure virtual |
Update the particle and wall involved in the collision based on the current state of the simulation.
| cnt | A pointer to a ContactPW object storing details of the collision. |
| timestep | The timestep length used in the simulation. |
Implemented in netdem::SolverANNPPlane, netdem::SolverANNPW, netdem::SolverBooleanPW, netdem::SolverGJKPW, netdem::SolverSDFPW, netdem::SolverSpherePlane, and netdem::SolverSphereTriangle.
|
protected |
Update the basic geometries associated with the collision surface.
| cnt_geoms | A pointer to the CollisionGeometries object where contact geometry information will be stored. |
| timestep | The timestep length used in the simulation. |
| dir_n_old | The old normal direction of the contact surface. |
| Particle* netdem::CollisionSolverPW::particle {nullptr} |
A pointer to the particle involved in the collision.
| Wall* netdem::CollisionSolverPW::wall {nullptr} |
A pointer to the wall involved in the collision.