Class to compute terrain contact.
More...
#include <TerrainContact.h>
Class to compute terrain contact.
◆ TerrainContact()
TerrainContact::TerrainContact |
( |
STLReader * | mesh, |
|
|
double | friction ) |
|
inline |
◆ apply()
void TerrainContact::apply |
( |
Mesh * | mesh, |
|
|
std::vector< Particle * > * | particles, |
|
|
double | dt ) |
Apply the terrain contact algorithm.
◆ computeContactForces()
void TerrainContact::computeContactForces |
( |
double | dt | ) |
|
◆ computeDistanceLevelSetFunction()
void TerrainContact::computeDistanceLevelSetFunction |
( |
Mesh * | mesh | ) |
|
compute the distance level set function in nodes \( d_{I}=(X_I-X_i) e_n \) It is the distance from the node to the STL mesh
◆ determineContactPotentialPairs()
void TerrainContact::determineContactPotentialPairs |
( |
Mesh * | mesh, |
|
|
std::vector< Particle * > * | particles ) |
Determine the contact potential pairs.
◆ enablePenaltyContact()
void TerrainContact::enablePenaltyContact |
( |
bool | enable | ) |
|
Enable the penalty contact method.
◆ getSTLMesh()
◆ nodalDensityLevelSet()
void TerrainContact::nodalDensityLevelSet |
( |
Mesh * | mesh, |
|
|
vector< Particle * > * | particles ) |
Calculate the nodal density level set function \( \rho_I = \sum_p \frac{V_p N_{Ip}}{V_I} \) It allows to know the boundary of the body for a certain scalar.
◆ particleDistanceLevelSet()
void TerrainContact::particleDistanceLevelSet |
( |
Mesh * | mesh, |
|
|
vector< Particle * > * | particles ) |
Interpolate distance level set function value of particle \( d_p = \sum_I d_I N_{Ip} \).
◆ setDistanceThreshold()
void TerrainContact::setDistanceThreshold |
( |
double | threshold | ) |
|
|
inline |
Set the distance threshold for contact detection.
- Parameters
-
◆ setPenaltyStiffness()
void TerrainContact::setPenaltyStiffness |
( |
double | k | ) |
|
Set the penalty stiffness for contact forces.
◆ trianglesDensityLevelSet()
void TerrainContact::trianglesDensityLevelSet |
( |
Mesh * | mesh | ) |
|
Interpolate the density level set function in the centroids of triangles \( \rho_m = \sum_I \rho_I N_{Im} \) It allows to know the boundary of the body in contact with the STL mesh.
◆ contactPairs
◆ densityLevelSet
std::vector<double> TerrainContact::densityLevelSet |
|
private |
density level set function interpolated in centroids of triangles \( \rho_{m} \)
◆ frictionCoefficient
double TerrainContact::frictionCoefficient |
|
private |
Friction coefficient \(\mu\).
◆ penaltyStiffness
double TerrainContact::penaltyStiffness = 0.0 |
|
private |
Penalty stiffness for contact forces.
◆ scalingFactor
double TerrainContact::scalingFactor = 2.0 |
|
private |
scaling factor for the distance threshold in contact detection \( \alpha \)
◆ stlMesh
triangular mesh for terrain contact
◆ usePenaltyContact
bool TerrainContact::usePenaltyContact = false |
|
private |
Use penalty contact method.
The documentation for this class was generated from the following file: