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.
MOVE($MOVE_box$) = ( %MOVE_velocity%, 0, 0, 0 ) begin_alias{} "box" = " MOVE$MOVE_box$ ... " end_alias{}
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\).
List of members:
RIGIDBODY_joints joints of a RIGIDBODY with other geometry parts
RIGIDBODY_intersections intersection of a rigid body with a boundary or with another rigid body