## Removing singularities of the stiffness matrix

It is often the case that the stiffness matrix describing the static behavior of multibody systems is singular. Indeed, the stiffness matrix associated with a system presenting rigid body modes is singular. It is possible to remove these singularities by adding fictitious spring connections during the solution process. (*Default value:* * p_{f} = - DBL_MAX*, i.e., singularities will not be removed during the solution process). The step control parameter data section defines the single parameter that control this procedure.

The solution process involves the tri-factorization of the stiffness matrix as

* K = L^{T} D L*,

where

*is a lower triangular matrix and*

**L***a diagonal matrix. It the stiffness matrix is singular, one of the diagonal elements, say*

**D = diag(d**_{i})*, will vanish and the tri-factorization of the stiffness matrix cannot continue.*

**d**_{j}In most cases, the diagonal term does not vanish exactly, but rather becomes very small. The following quantity is defined

**ε = 100.0 DBL_EPSILON NbOfDofs,**

where ** NbOfDofs** is the total number of degrees of freedom and DBL_EPSILON the machine accuracy. The condition for vanishing of a diagonal term now becomes

**d**_{j}≤ ε |k_{max}|,where

*is the maximum term appearing on the diagonal of the stiffness matrix and represents an approximation to the norm of the stiffness matrix.*

**k**_{max}When a vanishing term is detected, it is set to * d_{j} = p_{f} |k_{max}|*. This numerical procedure can be interpreted as follow. When a singularity is detected by the presence of a vanishing diagonal term,

*, a spring of stiffness constant*

**d**_{j}≤ ε |k_{max}|*connected to the ground is added to the system. Selecting a small value of*

**p**_{f}|k_{max}|*corresponds to adding a soft spring to remove the singularity, whereas selecting a large of the same coefficient corresponds to adding a large spring. In the limit, very large values of*

**p**_{f}≪ 1*correspond to clamping the structure to the ground.*

**p**_{f}