***eigen
#
Description#
The procedure ***eigen
allows to specify the modes and resonant
frequencies to extract in eigen-value problems.
The eigen frequencies are normalized in the following manner:
And the associated energy for a frequency is calculated as:
The frequency values are stored with their associated energies in an
ASCII text file named problem.eigen_info
.
There are currently multiple methods implemented to extract eigen
values: spectra
, lanczos
and inverse_vector_iteration
(this
is the default method). spectra
is the most robust and the only
method that allows to compute free modes (no kinematic constraints on
the structure), or semi-free modes (some rigid body modes are still
possible). If needed, it is also the only one that can compute negative
eigen values.
The syntax is presented for each method separately below (the spectra solver is further detailed in the devel manual).
Syntax#
***eigen
spectra
\(~\,\) [ *type
type ]
\(~\,\) [ *nb_modes
nb_modes ]
\(~\,\) [ *nb_sub
nb_sub ]
\(~\,\) [ *tol
tol ]
\(~\,\) [ *output_eigen_not_freq
]
\(~\,\) [ *clean_rbm
]
\(~\,\) [ *output_rbm
]
\(~\,\) [ **use_lumped_mass
]
*type
is the type of eigen problem to solve. It can be either
basic
orgeneralized
. The latter is the default option and solve the generalized eigen problem \(K.U =\lambda M.U\) (smallest eigenvalues).basic
can be used to compute solutions of \(K.U =\lambda U\).*nb_modes
is the number of eigen values (and eigen modes) to compute. Default is \(10\).
*nb_sub
is the size of the Krylov subspace for the eigen value extraction algorithm. Default is \(4\)
nb_modes
(which is relatively high for accuracy, \(2\)nb_modes
\(+1\) may be enough ifnb_modes
is sufficiently large for the system).*tol
is the precision parameter for the calculated eigenvalues.
*output_eigen_not_freq
indicates that output must be given in terms of eigen values \(\lambda_i\), not in terms of eigen frequencies \(f_i\), with \(f_i=\frac{\sqrt{\lambda_i}}{2\pi}\).
*clean_rbm
indicates that rigid body modes are to be computed (based on geometry only) and removed for the evaluation of the Krylov subspace. This option cannot be used if the mass matrix is lumped, and is generally unecessary when
tpye
isbasic
.*output_rbm
indicates that if rigid body modes are computed, they must be output as eigen modes with vanishing eigen value and energy. Only works with the previous options.
**use_lumped_mass
is not specific to spectra, but must necessarily come after the spectra options (any other two stars options for
***eigen
as well).
Example#
(Full tests are available in External/Spectra/Test/ and are available on request for any user).
Compute the \(10\) smallest eigen values (outputs eigen frequencies) of the generalized eigen value problem.
***eigen spectra
Compute the \(25\) smallest eigen values of the basic problem (subspace size is \(100\)).
***eigen spectra
*type basic
*nb_modes 25
*output_eigen_not_freq
Compute the \(10\) smallest eigen values (outputs eigen frequencies) of the generalized eigen value problem using a lumped mass matrix.
***eigen spectra
*type generalized
**use_lumped_mass
Compute the \(40\) smallest eigen values (outputs eigen frequencies) of the generalized eigen value problem using a lumped mass matrix with a subspace of size \(100\). Also computes rigid body modes and removes them from the analysis but outputs them in the results files.
***eigen spectra
*type generalized
*nb_modes 40
*nb_sub 100
*clean_rbm
*output_rbm
Syntax#
***eigen
lanczos
\(~\,~\,~\,\) nb_freq freq_max nb_iter nb_sub
- nb_freq
is the number of eigen frequencies to find.
- freq_max
is the maximum value of the frequencies to search for.
- nb_iter
number of iteration for the eigen value search by QR decomposition. Default is \(8\).
- nb_sub
size of the Krylov subspace. Default is \(2\)
nb_freq
ifnb_freq
\(<8\), else it is \(2\)nb_freq
\(+8\).
Example#
For this example the calculation will search for 8 frequencies and then stop. The calculation will stop also if the last frequency extracted is greater than 10000 (freq_max).
***eigen lanczos
8 10000.
Syntax#
***eigen
inverse_vector_iteration
\(~\,~\,~\,\) nb_freq d_freq freq_max
- nb_freq
is the number of eigen frequencies to find.
- d_freq
is the search interval for the resonant frequencies. If several frequencies are located in an interval smaller than d_freq the calculation may fail to find all the frequencies.
lanczos
method does not need this parameter.- freq_max
is the maximum value of the frequencies to search for.
Example#
For this example the calculation will search for 8 frequencies and then stop. The calculation will stop also if the last frequency extracted is greater than 10000 (freq_max).
***eigen
8 100. 10000.
The extraction of the resonant modes is made with the method of inverse powers and with a shifting of frequencies. After having obtained a frequency \(f\), the next frequency is searched about \(f + \Delta f\) where \(\Delta f\) is given by the parameter d_freq. The choice of this frequency is therefore very important.
If d_freq is small the calculation may fall back on a frequency already calculated. In this case the search will be shifted to \(f + 2\Delta f\) and so on until a new frequency is found. This succession of searches will inevitably add to the cost of the calculation.
If d_freq is large the search process risks to omit intermediate resonant frequencies.
Lastly if it is desired to have the first resonant frequency it will be necessary to give a small value for the parameter d_freq. If the value is small enough the calculation will be sure to not skip the first frequency. Searches for subsequent frequencies will then be very slow however.