|
In mechanics, the normal force \( f^n \) is the component of a contact force that is perpendicular to the surface that a particle contacts. The following figure illustrates two particles colliding and the two normal forces at its common perpendicular direction.
The calculation of the normal forces between colliding particles is modeled by a linear spring and a dashpot. The linear spring models the material stiffness, and the dashpot models the energy dissipation that occurs during the real collision.
The general Algorithm to compute any normal force in MercuryDPM is:
computeNormalForce | |
---|---|
1. Set the relative velocity | relativeVelocity_ |
2. Set the normal relative velocity | setNormalRelativeVelocity_ |
3. If overlap \( \delta^n > 0 \) | if (getOverlap() > 0) |
4. Normal force | normalForce = getStiffness()* getOverlap() - getDissipation()* getNormalRelativeVelocity() |
5. Set normal force | setAbsoluteNormalForce(std::abs(normalForce)) |
6. Set force | setForce(getNormal() * normalForce) |
7. Set torque | setTorque(Vec3D(0.0, 0.0, 0.0)) |
To integrate the normal contribution into the contact interaction, the developer needs to use the normal force species.
The available models to compute the normal interaction are: