## 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: pf = - 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 = LT D L,

where L is a lower triangular matrix and D = diag(di) a diagonal matrix. It the stiffness matrix is singular, one of the diagonal elements, say dj, will vanish and the tri-factorization of the stiffness matrix cannot continue.

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

dj ≤ ε |kmax|,

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

When a vanishing term is detected, it is set to dj = pf |kmax|. This numerical procedure can be interpreted as follow. When a singularity is detected by the presence of a vanishing diagonal term, dj ≤ ε |kmax|, a spring of stiffness constant pf |kmax| connected to the ground is added to the system. Selecting a small value of pf ≪ 1 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 pf correspond to clamping the structure to the ground.