MPM-Geomechanics
Material Point Method for simulating geo-materials under large deformation conditions
Loading...
Searching...
No Matches
ContactManager Class Reference

Manages Slave-Master contact method data and operations using two velocity fields. More...

#include <ContactManager.h>

Collaboration diagram for ContactManager:

Public Member Functions

 ContactManager (vector< Contact * > contact_List, double real_distance_correction_coefficient)
 Constructor.
 
void computeContactForces (Mesh *mesh, double time_step)
 Compute nodal contact for sticking and for non sticking contact.
 
void nodalUnitNormal (Mesh *mesh, vector< Body * > *bodies)
 Calculate the nodal normal mass vector \( n_I = \frac{\sum_p m_p N_{Ip}}{\left| \sum_p m_p N_{Ip} \right|} \).
 
void contactNodalDetection (Mesh *mesh, vector< Body * > *bodies)
 Check if nodes are in contact.
 
void realDistanceCorrection (Mesh *mesh, vector< Body * > *bodies)
 Applies the "real distance correction" method for contact detection. \( D^{ MS }_I = - X_I ^ M n_I ^ M - X_I ^ S n_I ^ S \leq \lambda \, d_c\).
 
void nodalMomentumContactUpdate (Mesh *mesh, double time_step)
 Update the nodal momentum after contact forces calculation \( p^{ b,k + \frac{1}{2}}_{\, iI} = \bar{ p } ^ { b,k + \frac{1}{2} }_{\, iI} + \Delta t^k f^{ b,c,k }_{\, iI}\).
 
bool getRealDistanceCorrectionFlag () const
 Return if the real distance correction is active.
 
bool getContactDetectionFlag () const
 Return if contact detection has occurred.
 
void applyVelocityContactCorrection (Mesh *mesh, vector< Body * > *bodies, double dt)
 Apply multi field velocity contact correction.
 

Private Attributes

bool contactDetection = false
 variable for contact detection
 
vector< Contact * > contactList
 
double realDistanceCorrectionCoefficient = 0.0
 Real distance correction coefficient \(\lambda\).
 
bool realDistanceCorrectionActive = false
 Real distance correction active.
 

Detailed Description

Manages Slave-Master contact method data and operations using two velocity fields.

Constructor & Destructor Documentation

◆ ContactManager()

ContactManager::ContactManager ( vector< Contact * >  contact_List,
double  real_distance_correction_coefficient 
)

Constructor.

Parameters
contactlist
real_distance_correction_coefficientReal distance correction coefficient (0 to disable)

Member Function Documentation

◆ applyVelocityContactCorrection()

void ContactManager::applyVelocityContactCorrection ( Mesh mesh,
vector< Body * > *  bodies,
double  dt 
)

Apply multi field velocity contact correction.

Parameters
mesh
bodies
dt

◆ computeContactForces()

void ContactManager::computeContactForces ( Mesh mesh,
double  time_step 
)

Compute nodal contact for sticking and for non sticking contact.

Parameters
[in]time_stepTime step

◆ contactNodalDetection()

void ContactManager::contactNodalDetection ( Mesh mesh,
vector< Body * > *  bodies 
)

Check if nodes are in contact.

Parameters
[in]meshMesh reference
[in]bodiesA list of Bodies

◆ getContactDetectionFlag()

bool ContactManager::getContactDetectionFlag ( ) const
inline

Return if contact detection has occurred.

Returns
contact detection flag

◆ getRealDistanceCorrectionFlag()

bool ContactManager::getRealDistanceCorrectionFlag ( ) const
inline

Return if the real distance correction is active.

Returns
real distance correction active

◆ nodalMomentumContactUpdate()

void ContactManager::nodalMomentumContactUpdate ( Mesh mesh,
double  time_step 
)

Update the nodal momentum after contact forces calculation \( p^{ b,k + \frac{1}{2}}_{\, iI} = \bar{ p } ^ { b,k + \frac{1}{2} }_{\, iI} + \Delta t^k f^{ b,c,k }_{\, iI}\).

Parameters
[in]meshMesh reference
[in]time_stepTime step

◆ nodalUnitNormal()

void ContactManager::nodalUnitNormal ( Mesh mesh,
vector< Body * > *  bodies 
)

Calculate the nodal normal mass vector \( n_I = \frac{\sum_p m_p N_{Ip}}{\left| \sum_p m_p N_{Ip} \right|} \).

Parameters
[in]meshMesh reference
[in]bodiesA list of Bodies

◆ realDistanceCorrection()

void ContactManager::realDistanceCorrection ( Mesh mesh,
vector< Body * > *  bodies 
)

Applies the "real distance correction" method for contact detection. \( D^{ MS }_I = - X_I ^ M n_I ^ M - X_I ^ S n_I ^ S \leq \lambda \, d_c\).

Parameters
[in]meshMesh reference
[in]bodiesA list of Bodies

Member Data Documentation

◆ contactDetection

bool ContactManager::contactDetection = false
private

variable for contact detection

◆ contactList

vector<Contact*> ContactManager::contactList
private

◆ realDistanceCorrectionActive

bool ContactManager::realDistanceCorrectionActive = false
private

Real distance correction active.

◆ realDistanceCorrectionCoefficient

double ContactManager::realDistanceCorrectionCoefficient = 0.0
private

Real distance correction coefficient \(\lambda\).


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