Skip to content

3.12 Rigid Section

The Rigid section is used to define all rigid constraints, rigid body initial kinematics, and rigid connectors. The motion of a point \(\mathbf{x}\) connected to a rigid body is given by

\[ \begin{equation} \mathbf{x}=\mathbf{r}\left(t\right)+\mathbf{R}\left(t\right)\cdot\mathbf{Z}=\mathbf{r}\left(t\right)+\mathbf{z}\left(t\right)\label{eq:rbm-position} \end{equation} \]

where \(\mathbf{r}\left(t\right)\) is the position of the rigid body center of mass and \(\mathbf{R}\left(t\right)\) is the body's (proper orthogonal) rotation tensor, which satisfies \(\mathbf{R}\left(t_{0}\right)=\mathbf{I}\) at the initial time \(t_{0}\); here, \(\mathbf{z}\left(t\right)=\mathbf{R}\left(t\right)\cdot\mathbf{Z}\) is the position vector of the point relative to the body's center of mass, and \(\mathbf{X}=\mathbf{r}\left(t_{0}\right)+\mathbf{Z}\) is the initial position. In FEBio, the rotation is evaluated as \(\mathbf{R}\left(t\right)=\exp\left[\boldsymbol{\xi}\left(t\right)\right]\), where \(\boldsymbol{\xi}\left(t\right)\) is the material rotation of the rigid body from its reference configuration. In practice, \(\boldsymbol{\xi}\) is stored as a quaternion to facilitate the multiplication of rotation tensors. The exponential map \(\exp\left[\boldsymbol{\xi}\left(t\right)\right]\) is given in full form as

\[ \begin{equation} \mathbf{R}\left(t\right)=\exp\left[\boldsymbol{\xi}\left(t\right)\right]=\cos\xi\,\mathbf{I}-\sin\xi\,\boldsymbol{\mathcal{E}}\cdot\mathbf{n}+\left(1-\cos\xi\right)\mathbf{n}\otimes\mathbf{n}\label{eq:rbr-rotation-tensor} \end{equation} \]

where \(\boldsymbol{\mathcal{E}}\) is the third-order permutation pseudo-tensor with rectangular components \(\varepsilon_{ijk}\) (permutation symbol). Here, \(\mathbf{n}\) is the unit vector along the axis of rotation and \(\xi\) is the angle of rotation about \(\mathbf{n}\), such that \(\boldsymbol{\xi}=\xi\mathbf{n}\). Both \(\xi\) and \(\mathbf{n}\) may evolve over time. Either none or all the components of \(\boldsymbol{\xi}\left(t\right)\) must be prescribed (or fixed) for a rigid body.

The Rigid section can contain the following subsections.

rigid_bc Define a rigid constraint.

rigid_ic Define a rigid initial condition.

rigid_load Define a load on a rigid body.

rigid_connector Define a connection or joint between two rigid bodies.

Rigid Constraints

The rigid constraints section allows users to prescribe the kinematics applied to a single rigid body. A rigid constraint is added using the _rigid_bc tag in the Rigid parent tag. The particular constraint is defined via the type attribute. An optional name _attribute can be added to uniquely name the constraint.

Rigid Initial Conditions

The _rigid_ic section defines the initial conditions on rigid bodies. Rigid initial conditions can be used to set the initial values for the rigid body's linear and angular velocity. The particular initial condition is selected using the type _attribute.

Rigid Loads

The _rigid_load _section can be used to applied loads to a rigid body.

Rigid Connectors

The rigid connector section allows users to define different type of connections between two rigid bodies. The specific connector is defined via the type attribute.

The rigid connectors fall into two categories. The first category define different joints that constrain the relative motion of one rigid body with respect to the second one.

Rigid joints produce nonlinear constraints between rigid bodies, which prevent relative motion except along the degrees of freedom of the joint. The term 'rigid' refers to the bodies, not to the joints. Each rigid joint needs to define two rigid bodies (\(a\) and \(b)\), a joint origin common to both bodies, and a set of axes that determine the relative orientation of the joint degrees of freedom. These axes define orthonormal basis vectors \(\left\{ \mathbf{e}^{a}_{1},\mathbf{e}^{a}_{2},\mathbf{e}^{a}_{3}\right\}\) and \(\left\{ \mathbf{e}^{b}_{1},\mathbf{e}^{b}_{2},\mathbf{e}^{b}_{3}\right\}\) on each rigid body, with both bases being coincident, \(\left\{ \mathbf{e}_{1},\mathbf{e}_{2},\mathbf{e}_{3}\right\}\), at the start of the analysis, and given in world coordinates.

The rigid joint nonlinear constraints produce reaction forces and moments that are enforced with penalty parameters and Lagrange multipliers. The penalty parameters, force_penalty and moment_penalty, may be conceptualized as stiffnesses of linear/torsional springs that prevent relative translations/rotations of the rigid bodies along degrees of freedom that must remain constrained for that joint. The penalty values should be selected based on a rough estimation of the maximum reactions forces and moments acting at these joints, divided by the maximum amount of linear/angular separation that your analysis can tolerate for that joint. Alternatively, set the force_penalty and moment_penalty parameters to 1 and turn on the auto_penalty; this setting will automatically adjust the_ force_penalty_ and moment_penalty to an appropriate value.

The augmented Lagrangian method is used by default, where the joint reaction force and moment are treated as Lagrange multipliers, augmented at each time step by the product of the force/moment penalty parameter and the linear/angular gap. Use the parameter maxaug to control the maximum allowable number of augmentations at each time step (maxaug=0 produces the penalty method); use a non-zero value for the parameter minaug to ensure a minimum number of augmentations. Augmentations will proceed until the relative change in the reaction force/moment magnitude is less than tolerance, and/or the linear gap is less than gaptol, and/or the angular gap is less than angtol. Setting any of these parameters to zero disables that check.

The nonlinear constraints that enforce these joints produce a non-symmetric stiffness matrix. Therefore, when using rigid joints, use the analysis setting for a non-symmetric formulation.

The second category of connectors apply a force on the rigid bodies that is proportional to some relative motion. The term 'rigid' refers to the bodies, not to the connectors.

The following rigid connectors can be defined.

All of these joints and connectors define two parameters that reference the two rigid bodies.

parameter Description
_body_a _ The first rigid body in the connector
_ body_b_ The second rigid body in the connector

In addition, the joints defined above are all based on the Augmented Lagrangian method, and consequently, also share the following parameters.

parameter Description
laugon Augmentation flag
tolerance Specifies the augmentation tolerance
minaug The minimum number of augmentations.
maxaug The maximum number of augmentations.
gaptol Gap tolerance
angtol Angular separation tolerance
_force_penalty _ Penalty factor applied to force augmentations.
_ moment_penalty_ Penalty factor applied to moment augmentations.
auto_penalty Flag to calculate penalty factor automatically.

Additional parameters, unique to a specific connector, are defined in the sections below.