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.