Manages Slave-Master contact method data and operations using two velocity fields.
More...
#include <ContactManager.h>
|
| | 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.
|
| |
Manages Slave-Master contact method data and operations using two velocity fields.
◆ ContactManager()
| ContactManager::ContactManager |
( |
vector< Contact * > |
contact_List, |
|
|
double |
real_distance_correction_coefficient |
|
) |
| |
Constructor.
- Parameters
-
| contact | list |
| real_distance_correction_coefficient | Real distance correction coefficient (0 to disable) |
◆ applyVelocityContactCorrection()
| void ContactManager::applyVelocityContactCorrection |
( |
Mesh * |
mesh, |
|
|
vector< Body * > * |
bodies, |
|
|
double |
dt |
|
) |
| |
Apply multi field velocity contact correction.
- Parameters
-
◆ computeContactForces()
| void ContactManager::computeContactForces |
( |
Mesh * |
mesh, |
|
|
double |
time_step |
|
) |
| |
Compute nodal contact for sticking and for non sticking contact.
- Parameters
-
◆ contactNodalDetection()
| void ContactManager::contactNodalDetection |
( |
Mesh * |
mesh, |
|
|
vector< Body * > * |
bodies |
|
) |
| |
Check if nodes are in contact.
- Parameters
-
| [in] | mesh | Mesh reference |
| [in] | bodies | A 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] | mesh | Mesh reference |
| [in] | time_step | Time 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] | mesh | Mesh reference |
| [in] | bodies | A 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] | mesh | Mesh reference |
| [in] | bodies | A list of Bodies |
◆ 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: