NetDEM v1.0
|
A contact model based on the Hertz-Mindlin theory of elastic-plastic contact. More...
#include <model_hertz_mindlin.hpp>
Public Member Functions | |
HertzMindlin () | |
HertzMindlin (double E_eq, double kt, double mu, double beta) | |
Construct a HertzMindlin object with the specified parameters. | |
nlohmann::json | PackJson () override |
Pack object data into a JSON object for serialization. | |
void | InitFromJson (nlohmann::json const &js) override |
Initialize object data from a JSON object. | |
void | SetProperty (nlohmann::json const &js) override |
Set a property of the object from a JSON object. | |
void | SetProperty (std::string const &name, double value) override |
Set a named property of the object to a given value. | |
ContactModel * | Clone () const override |
Create a deep copy of the object. | |
void | EvaluateForces (ContactForces *const cnt_forces, CollisionGeometries &cnt_geoms, ContactPP *const cnt, double dt) const override |
Compute the force and moment on a particle-particle contact point. | |
void | EvaluateForces (ContactForces *const cnt_forces, CollisionGeometries &cnt_geoms, ContactPW *const cnt, double dt) const override |
Compute the force and moment on a particle-wall contact point. | |
void | Print () const override |
Print information about the current state of the object to the console. | |
Public Member Functions inherited from netdem::ContactModel | |
virtual void | EvaluateForces (ContactForces *const cnt_forces, BondGeometries &cnt_geoms, ContactPP *const cnt, double dt) const |
Calculate the contact forces and moments due to this model. | |
virtual void | EvaluateForces (ContactForces *const cnt_forces, BondGeometries &cnt_geoms, ContactPW *const cnt, double dt) const |
Calculate the contact forces and moments due to this model. | |
virtual | ~ContactModel () |
Public Attributes | |
double | E_eq {2.0e7} |
double | kt {1.0e6} |
double | beta {0.7} |
double | mu {0.5} |
Public Attributes inherited from netdem::ContactModel | |
int | id {0} |
std::string | label {"default"} |
int | model_type {0} |
std::string | model_name {"contact_model"} |
Additional Inherited Members | |
Public Types inherited from netdem::ContactModel | |
enum | Type { none , linear_spring , hertz_mindlin , volume_based , parallel_bond } |
A contact model based on the Hertz-Mindlin theory of elastic-plastic contact.
This class provides a set of methods and member variables for computing contact forces and moments between particles and walls or other particles, based on the Hertz-Mindlin theory of elastic-plastic contact. The model assumes that both contacting bodies are elastic, but that they can deform plastically under high pressures. The contact force is computed based on the overlap between the two bodies at a given contact point, as well as the elastic properties of the bodies (represented by the normal and tangential stiffnesses kn and kt) and the frictional properties (represented by the coefficient of friction mu).
netdem::HertzMindlin::HertzMindlin | ( | ) |
A default constructor for this class (sets all parameters to their default values).
netdem::HertzMindlin::HertzMindlin | ( | double | E_eq, |
double | kt, | ||
double | mu, | ||
double | beta ) |
Construct a HertzMindlin object with the specified parameters.
This constructor creates a HertzMindlin object with the specified values for the normal and tangential stiffnesses, the damping ratio, and the coefficient of friction.
E_eq | The equivalent Young's modulus of the interacting bodies. |
kt | The tangential stiffness of the interacting bodies. |
mu | The coefficient of friction between the interacting bodies. |
beta | The damping ratio used in the model. |
|
overridevirtual |
Create a deep copy of the object.
This method creates a new HertzMindlin object with the same parameter values as the current object, and returns a pointer to the new object.
Reimplemented from netdem::ContactModel.
|
overridevirtual |
Compute the force and moment on a particle-particle contact point.
This method computes the normal and tangential forces and moments exerted on a particle-particle contact point, based on the current state of the two particles and the parameters of the Hertz-Mindlin model. The resulting forces and moments are added to the ContactForces object passed in to the method.
cnt_forces | A pointer to the ContactForces object tracking all contact forces and moments. |
cnt_geoms | A reference to the CollisionGeometries object containing information about the colliding objects. |
cnt | A pointer to the ContactPP object representing the particle-particle contact. |
dt | The time step used in the simulation. |
Reimplemented from netdem::ContactModel.
|
overridevirtual |
Compute the force and moment on a particle-wall contact point.
This method computes the normal and tangential forces and moments exerted on a particle-wall contact point, based on the current state of the particle and the parameters of the Hertz-Mindlin model. The resulting forces and moments are added to the ContactForces object passed in to the method.
cnt_forces | A pointer to the ContactForces object tracking all contact forces and moments. |
cnt_geoms | A reference to the CollisionGeometries object containing information about the colliding objects. |
cnt | A pointer to the ContactPW object representing the particle-wall contact. |
dt | The time step used in the simulation. |
Reimplemented from netdem::ContactModel.
|
overridevirtual |
Initialize object data from a JSON object.
This method initializes the state of the HertzMindlin object from a JSON object, as created by the PackJson() method. It is used during deserialization of saved simulation states.
js | A JSON object representing the desired state of the HertzMindlin object. |
Reimplemented from netdem::ContactModel.
|
overridevirtual |
Pack object data into a JSON object for serialization.
This method packs the current state of the HertzMindlin object into a JSON object, for use in serialization and deserialization.
Reimplemented from netdem::ContactModel.
|
overridevirtual |
Print information about the current state of the object to the console.
This method prints information about the current parameter values of the HertzMindlin object to the console, for debugging and analysis purposes.
Reimplemented from netdem::ContactModel.
|
overridevirtual |
Set a property of the object from a JSON object.
This method sets a named property of the HertzMindlin object from a JSON object. If the named property does not exist, this method throws an exception.
js | A JSON object containing the desired new value for the named property. |
Reimplemented from netdem::ContactModel.
|
overridevirtual |
Set a named property of the object to a given value.
This method sets a named property of the HertzMindlin object to a given value. If the named property does not exist, this method throws an exception.
name | The name of the property to set. |
value | The desired new value for the named property. |
Reimplemented from netdem::ContactModel.
double netdem::HertzMindlin::beta {0.7} |
The damping ratio used in the model (defaults to 0.7).
double netdem::HertzMindlin::E_eq {2.0e7} |
The equivalent Young's modulus of the interacting bodies.
double netdem::HertzMindlin::kt {1.0e6} |
The tangential stiffness of the interacting bodies.
double netdem::HertzMindlin::mu {0.5} |
The coefficient of friction between the interacting bodies.