|
NetDEM v1.0
|
A class used to solve collisions between a particle and a wall using a signed distance field. More...
#include <solver_sdf_pw.hpp>
Public Types | |
| enum | PotentialType { linear , hertz } |
| An enumeration of potential types used by the solver. More... | |
Public Member Functions | |
| SolverSDFPW () | |
| Default constructor for SolverSDFPW class. | |
| SolverSDFPW (Particle *const p, Wall *const w) | |
| Constructor for SolverSDFPW class. | |
| CollisionSolverPW * | Clone () const override |
| Clones the current SolverSDFPW instance. | |
| void | Init (Particle *const p, Wall *const w) override |
| Initializes the SolverSDFPW instance with the given particles and walls. | |
| bool | Detect () override |
| Detects if there is a collision between the particle and the wall. | |
| void | ResolveInit (ContactPW *const cnt, double timestep) override |
| Resolves the collision based on the initial contact information and timestep. | |
| void | ResolveUpdate (ContactPW *const cnt, double timestep) override |
| Updates the contact information object and resolves the collision based on the updated information and timestep. | |
| void | ResolveInit (CollisionGeometries *const cnt_geoms, double timestep) |
| Resolves the collision between the particle and the wall based on the initial contact geometries and timestep. | |
| void | ResolveUpdate (CollisionGeometries *const cnt_geoms, double timestep) |
| Updates the contact geometries object and resolves the collision based on the updated information and timestep. | |
| void | ResolveInitWToP (CollisionGeometries *const cnt_geoms, double timestep) |
| Resolves the collision between the wall and the particle based on the initial contact geometries and timestep. | |
| void | ResolveUpdateWToP (CollisionGeometries *const cnt_geoms, double timestep) |
| Updates the contact geometries object and resolves the collision based on the updated information and timestep. | |
| void | ResolveInitPToW (CollisionGeometries *const cnt_geoms, double timestep) |
| Resolves the collision between the particle and the wall based on the initial contact geometries and timestep. | |
| void | ResolveUpdatePToW (CollisionGeometries *const cnt_geoms, double timestep) |
| Updates the contact geometries object and resolves the collision based on the updated information and timestep. | |
| double | GetPotential (double dist, double node_area, double size_eq, double size_ratio) |
| Calculates the potential energy between two shapes based on their distance and type of potential function used. | |
Public Member Functions inherited from netdem::CollisionSolverPW | |
| CollisionSolverPW () | |
| CollisionSolverPW (Particle *const p, Wall *const w) | |
| virtual bool | Detect (ContactPW *const cnt) |
| virtual | ~CollisionSolverPW () |
Static Public Member Functions | |
| static double | KiToKn (double ki, double size_eq, double size_ratio) |
| static double | KiFromKn (double kn, double size_eq, double size_ratio) |
| static double | KiToEstar (double ki, double size_eq, double size_ratio) |
| static double | KiFromEstar (double Estar, double size_eq, double size_ratio) |
Public Attributes | |
| int | potential_type {PotentialType::linear} |
| Whether to solve both sides of the collision. | |
| bool | solve_two_sides {false} |
| bool | use_equivalent_stiffness {true} |
| double | beta {0.65} |
Public Attributes inherited from netdem::CollisionSolverPW | |
| Particle * | particle {nullptr} |
| Wall * | wall {nullptr} |
Additional Inherited Members | |
Protected Member Functions inherited from netdem::CollisionSolverPW | |
| void | InitBasicGeoms (CollisionGeometries *const cnt_geoms, double timestep) |
| void | UpdateBasicGeoms (CollisionGeometries *const cnt_geoms, double timestep, Vec3d const &dir_n_old) |
A class used to solve collisions between a particle and a wall using a signed distance field.
The SolverSDFPW class is used to solve collisions between a particle and a wall based on the signed distance field of the particles and walls in a particle-wall collision detection system.
| netdem::SolverSDFPW::SolverSDFPW | ( | ) |
Default constructor for SolverSDFPW class.
Constructor for SolverSDFPW class.
| p | A pointer to the particle involved in the collision. |
| w | A pointer to the wall involved in the collision. |
|
overridevirtual |
Clones the current SolverSDFPW instance.
Implements netdem::CollisionSolverPW.
|
overridevirtual |
Detects if there is a collision between the particle and the wall.
Implements netdem::CollisionSolverPW.
| double netdem::SolverSDFPW::GetPotential | ( | double | dist, |
| double | node_area, | ||
| double | size_eq, | ||
| double | size_ratio ) |
Calculates the potential energy between two shapes based on their distance and type of potential function used.
| dist | The distance between the shapes. |
| node_area | The surface area associated with the node. |
| size_eq | The equivalent size of the shape. |
Initializes the SolverSDFPW instance with the given particles and walls.
| p | A pointer to the particle involved in the collision. |
| w | A pointer to the wall involved in the collision. |
Reimplemented from netdem::CollisionSolverPW.
|
static |
|
static |
|
static |
|
static |
| void netdem::SolverSDFPW::ResolveInit | ( | CollisionGeometries *const | cnt_geoms, |
| double | timestep ) |
Resolves the collision between the particle and the wall based on the initial contact geometries and timestep.
| cnt_geoms | A pointer to the contact geometries object. |
| timestep | The timestep to use for resolving the collision. |
|
overridevirtual |
Resolves the collision based on the initial contact information and timestep.
| cnt | A pointer to the contact information object. |
| timestep | The timestep to use for resolving the collision. |
Implements netdem::CollisionSolverPW.
| void netdem::SolverSDFPW::ResolveInitPToW | ( | CollisionGeometries *const | cnt_geoms, |
| double | timestep ) |
Resolves the collision between the particle and the wall based on the initial contact geometries and timestep.
| cnt_geoms | A pointer to the contact geometries object. |
| timestep | The timestep to use for resolving the collision. |
| void netdem::SolverSDFPW::ResolveInitWToP | ( | CollisionGeometries *const | cnt_geoms, |
| double | timestep ) |
Resolves the collision between the wall and the particle based on the initial contact geometries and timestep.
| cnt_geoms | A pointer to the contact geometries object. |
| timestep | The timestep to use for resolving the collision. |
| void netdem::SolverSDFPW::ResolveUpdate | ( | CollisionGeometries *const | cnt_geoms, |
| double | timestep ) |
Updates the contact geometries object and resolves the collision based on the updated information and timestep.
| cnt_geoms | A pointer to the contact geometries object. |
| timestep | The timestep to use for resolving the collision. |
|
overridevirtual |
Updates the contact information object and resolves the collision based on the updated information and timestep.
| cnt | A pointer to the contact information object. |
| timestep | The timestep to use for resolving the collision. |
Implements netdem::CollisionSolverPW.
| void netdem::SolverSDFPW::ResolveUpdatePToW | ( | CollisionGeometries *const | cnt_geoms, |
| double | timestep ) |
Updates the contact geometries object and resolves the collision based on the updated information and timestep.
| cnt_geoms | A pointer to the contact geometries object. |
| timestep | The timestep to use for resolving the collision. |
| void netdem::SolverSDFPW::ResolveUpdateWToP | ( | CollisionGeometries *const | cnt_geoms, |
| double | timestep ) |
Updates the contact geometries object and resolves the collision based on the updated information and timestep.
| cnt_geoms | A pointer to the contact geometries object. |
| timestep | The timestep to use for resolving the collision. |
| double netdem::SolverSDFPW::beta {0.65} |
| int netdem::SolverSDFPW::potential_type {PotentialType::linear} |
Whether to solve both sides of the collision.
| bool netdem::SolverSDFPW::solve_two_sides {false} |
Whether to auto convert the model stiffness parameter, such that it is identical to those in conventional linear or Hertz contact.
| bool netdem::SolverSDFPW::use_equivalent_stiffness {true} |