## 2. Numerical algorithm

The frequency dependent 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 frequency dependent linearised elastic force vector, M ( λ ) u ˙˙ is the frequency dependent linearised inertial force vector, R is the linearised reduction matrix and L is the linearised essential boundary condition matrix.

First stage: All eigenfrequencies are computed for a given frequency using the same algorithm than the one used for the Undamped Free Vibration Solver. These approximated eigenfrequencies will then be used in the second stage to compute the exact eigenfrequencies.

Second stage. For each of the approximated eigenfrequencies, the following iterative algorithm is applied.

1. Computation of K ( λ ) and M ( λ ) with the last computed approximated eigenfrequency value.

2. Compute the eigenfrequency value near the approximated eigenfrequency by solving the standard eigenvalue problem using the same algorithm than the one used for the Undamped Free Vibration Solver.

If the iterative eigenvalue solver does not converge, the number of Lanczos vectors used is increased until this algorithm converges.

3. If the new computed eigenfrequency is not nearly equal to the approximated eigenfrequency ( λ i λ i 1 λ i > tol ), restart the iteration at step 1 with the approximated eigenfrequency just calculated.

4. If the exact eigenfrequency value is too far from the approximated eigenfrequency ( λ i λ 0 λ i < tol_predictor ), the list of all the eigenfrequencies is recomputed with the current eigenfrequency.

If the new approximated eigenfrequency does not correspond to the eigenfrequency computed in step 3, the eigenfrequency of the current mode is recomputed. Go to step 1.

Store the eigenfrequency and the associated mode in the database and go to the next eigenfrequency computation at step 1.

This numerical method only works if the eigenfrequencies of the problem are well separated.