## 2. Numerical algorithm

The undamped free vibration problem exposed by the model abstraction layer of B2000++ is:

{ K u + M u ˙˙ = 0 u = R v L u = 0

Where K u is the linearised elastic force vector, M u ˙˙ is the linearised inertial force vector, R is the linearised reduction matrix and L is the linearised essential boundary condition matrix.

Using the model reduction equation, the problem becomes:

{ R T K R v + R T M R v ˙˙ = 0 L R v = 0

Using the Lagrange Multiplier Adjunction method for imposing the essential boundary conditions, the problem becomes:

[ R T K R R T L T L R 0 ] [ v Λ ] + [ R T M R 0 0 0 ] [ v Λ ] = 0

The free vibration frequencies and modes are then found by solving the following eigenvalue problem:

[ R T K R R T L T L R 0 ] [ v Λ ] = λ [ R T M R 0 0 0 ] [ v Λ ]

This eigenvalue problem is then solved using the Implicitly Restarted Arnoldi Iteration algorithm [Sor92] (or the Implicitly Restarted Lanczos Iteration variant if the problem is real and symmetric) implemented in the ARPACK library.

The Implicitly Restarted Arnoldi Iteration algorithm computes the higher eigenvalues of the problem. To compute the lower eigenvalues or the eigenvalues near a given position σ , a spectral shift value is applied to the eigenvalue problem that becomes:

( [ R T K R R T L T L R 0 ] σ [ R T M R 0 0 0 ] ) 1 [ R T M R 0 0 0 ] [ v Λ ] = μ [ v Λ ]

The eigenvalues can then by obtained using the relation:

λ i = σ + 1 μ i

Finally, the eigenfrequencies are:

f i = λ i 2 π

and the eigenmodes are:

u i = R v i