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

A contact model based on the Hertz-Mindlin theory of elastic-plastic contact. More...

#include <model_hertz_mindlin.hpp>

Inheritance diagram for netdem::HertzMindlin:
netdem::ContactModel

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.
 
ContactModelClone () 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
}
 

Detailed Description

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).

Examples
97_triaixal_comp_sphere_geom.cpp.

Constructor & Destructor Documentation

◆ HertzMindlin() [1/2]

netdem::HertzMindlin::HertzMindlin ( )

A default constructor for this class (sets all parameters to their default values).

◆ HertzMindlin() [2/2]

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.

Parameters
E_eqThe equivalent Young's modulus of the interacting bodies.
ktThe tangential stiffness of the interacting bodies.
muThe coefficient of friction between the interacting bodies.
betaThe damping ratio used in the model.

Member Function Documentation

◆ Clone()

ContactModel * netdem::HertzMindlin::Clone ( ) const
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.

Returns
A pointer to a new HertzMindlin object with identical parameter values.

Reimplemented from netdem::ContactModel.

◆ EvaluateForces() [1/2]

void netdem::HertzMindlin::EvaluateForces ( ContactForces *const cnt_forces,
CollisionGeometries & cnt_geoms,
ContactPP *const cnt,
double dt ) const
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.

Parameters
cnt_forcesA pointer to the ContactForces object tracking all contact forces and moments.
cnt_geomsA reference to the CollisionGeometries object containing information about the colliding objects.
cntA pointer to the ContactPP object representing the particle-particle contact.
dtThe time step used in the simulation.

Reimplemented from netdem::ContactModel.

◆ EvaluateForces() [2/2]

void netdem::HertzMindlin::EvaluateForces ( ContactForces *const cnt_forces,
CollisionGeometries & cnt_geoms,
ContactPW *const cnt,
double dt ) const
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.

Parameters
cnt_forcesA pointer to the ContactForces object tracking all contact forces and moments.
cnt_geomsA reference to the CollisionGeometries object containing information about the colliding objects.
cntA pointer to the ContactPW object representing the particle-wall contact.
dtThe time step used in the simulation.

Reimplemented from netdem::ContactModel.

◆ InitFromJson()

void netdem::HertzMindlin::InitFromJson ( nlohmann::json const & js)
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.

Parameters
jsA JSON object representing the desired state of the HertzMindlin object.

Reimplemented from netdem::ContactModel.

◆ PackJson()

nlohmann::json netdem::HertzMindlin::PackJson ( )
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.

Returns
A JSON object representing the current state of the HertzMindlin object.

Reimplemented from netdem::ContactModel.

◆ Print()

void netdem::HertzMindlin::Print ( ) const
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.

◆ SetProperty() [1/2]

void netdem::HertzMindlin::SetProperty ( nlohmann::json const & js)
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.

Parameters
jsA JSON object containing the desired new value for the named property.

Reimplemented from netdem::ContactModel.

◆ SetProperty() [2/2]

void netdem::HertzMindlin::SetProperty ( std::string const & name,
double value )
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.

Parameters
nameThe name of the property to set.
valueThe desired new value for the named property.

Reimplemented from netdem::ContactModel.

Member Data Documentation

◆ beta

double netdem::HertzMindlin::beta {0.7}

The damping ratio used in the model (defaults to 0.7).

◆ E_eq

double netdem::HertzMindlin::E_eq {2.0e7}

The equivalent Young's modulus of the interacting bodies.

◆ kt

double netdem::HertzMindlin::kt {1.0e6}

The tangential stiffness of the interacting bodies.

◆ mu

double netdem::HertzMindlin::mu {0.5}

The coefficient of friction between the interacting bodies.


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