RIGIDBODY_interaction
control forces acting on a RIGIDBODY due to collision or joints
To enable contact detection, set
RIGIDBODY_UseCollisionModel > 0. Interaction between a
RIGIDBODY and other geometries can take place in the form of
If a
RIGIDBODY is either linked by a joint to another geometry part or intersecting another geometry part, then the intersection forces have to be computed, see \( F_{contact}\) in
RIGIDBODY. The keyword
RIGIDBODY_interaction allows to control the contact forces and other parameters of the joint or intersection.
RIGIDBODY_interaction(1) = ( "alias_i", "alias_j", elasticRepulsion, play, contactTime, ExplicitImplicit, frictionCoefficient )
Default:
RIGIDBODY_interaction(i) = ( "*", "*", 0.5, 0.0, [100*dt(
RIGIDBODY)], 1, 0.0 )
Note: dt(
RIGIDBODY) is the time step size used for the
RIGIDBODY time integration defined by
RIGIDBODY_TimeIntegrationVersion.
| Data | Description |
|---|
| "alias_i", "alias_j" | Pair of alias markers for which collision or joint interaction has to be described. Be aware that wildcards "*" can be used. |
| elasticRepulsion | \( e_r\) in the interaction force, see below |
| play | Only for joints: \( d_{play}\) is the allowed maximum distance between link/contact locations for which no force is applied, i.e. \( F^{ij}_{contact} = 0 \text{ if } x^{ij} < d_{play}\) |
| contactTime | the term \( T_{contact}\) for the force setup, see below. The time within which the user requests resolution of intersections or stressed joints. |
| ExplicitImplicit | 1 means explicit time integration |
| (experimental) 0 means implicit time integration |
| frictionCoefficient | Coulomb-type friction at collisions/intersections, currently not used for joints |
Warning: Aliases which have a
MOVE-1 flag are ignored in the algorithms for intersection detection even when a wildcard is added. A workaround is to define such aliases with a
MOVE flag, where the identifier
%MOVE_velocity% is set to 0.
The contact forces are computed based on a spring-dashpot idea, given by
\begin{align} F_{contact}^{ij} = m^{ij}_{rep} \left( - \left( \frac{\pi}{T_{contact} } \right)^2 x^{ij} + 2 \frac{ ln( e_r ) }{T_{contact} } \frac{d}{dt}(x^{ij}) \right) \mathbf{n}^{ij}, \quad F_{friction}^{ij} = \mu \left( F_{contact}^{ij} \cdot \mathbf{n}^{ij} \right) \mathbf{t}^{ij}\end{align}
-
- \( m^{ij}_{rep} = \min( m^i , m^j )\) is the representative mass of the two interacting bodies. If index \( j\) represents a classical wall/boundary, then we assume \( m^j = \infty\).
- \( T_{contact}\) is the virtual contactTime, during which an intersection has to be resolved or two joined rigid bodies would perform one harmonic oscillation.
- \( e_r\) is the elasticRepulsion term. It defines the damping of the harmonic oscillation or the damping of the collision process.
- \( x^{ij} = \max \left( \mathbf{x}_j - \mathbf{x}_i )^T \cdot \mathbf{n}^{ij} - d_{play} , 0 \right)\), where \( \mathbf{x}_j\) is the contact location on the \( j\)-side and \( \mathbf{x}_i\) is the contact location on the \( i\)-side.
- \( \mu\) is the frictionCoefficient.
- \( \mathbf{n}^{ij}\) is the collision normal.
- \( \mathbf{t}^{ij}\) is the tangential vector to the normal vector of collision, i.e. \( (\mathbf{n}^{ij})^T \cdot \mathbf{t}^{ij} = 0\).