You are on page 1of 25

Modal Analysis

Code_Aster, Salome-Meca course material


GNU FDL licence (http://www.gnu.org/copyleft/fdl.html)
Outline

What are natural frequencies & normal modes ?

Presentation of the eigenvalue problem

Resolution methods

Implementation in Code_Aster

Post-processing & verification

Tips

2 - Code_Aster and Salome-Meca course material GNU FDL Licence


What are natural frequencies & normal modes ?
There are motions where the interchange of the 2 forms of energy
(kinetic & potential) can easily occur
Mathematically :
(φk , ωk ) [−ωk M + K ] φk = 0 ; φk ≠ 0
2

k
[−ω o m + k ] x0 = 0 ; x0 ≠ 0 ⇒ ωo =
2
Single DOF :
m
Dependent on boundary conditions but not on external load
Natural (or Eigen) frequency : oscillations period per second
Normal Mode (or Eigen vector) : deformation shape

33 Hz 141 Hz 206 Hz
460 Hz
3 - Code_Aster and Salome-Meca course material GNU FDL Licence
The eigenvalue problem

Two types of problem


Generalized eigenvalue problems
Mu&& + Ku = 0 ( K − λM ) Φ = 0
Quadratic eigenvalue problems
Mu&& + Cu& + Ku = 0 (K + λC + λ2 M ) Φ = 0 linearization
 C K  M 0   λ Φ 
   + λ      = 0
14K 0 − K  Φ 
 042
24
3 1 43
K quad M quad
The unknowns

– Eigenvalues (pulsations) (
0 ≤ λ1 ≤ λ2 ≤ K ≤ λn λ = ω 2 )
– Eigenmodes Φ1 , Φ 2 , Φ 3 ,K, Φ n

4 - Code_Aster and Salome-Meca course material GNU FDL Licence


Resolution methods
Modal calculation methods can be grouped into 4 main families :
Power iteration methods
Scope : calculation of extreme values of the spectrum
Pros : simplicity, good estimation of the eigenvector in a few iterations
Cons : convergence problems, poor identification of multiple modes
Code_Aster : MODE_ITER_INV

Subspace iteration methods


Scope : calculation of a part of the spectrum
Pros : reduced size of the problem, less memory required
Cons : convergence problem, many pre- and post-processing
Code_Aster : MODE_ITER_SIMULT

QR/QZ type methods


Scope : calculation of the whole spectrum
Pros : good convergence, robustness
Cons : memory and CPU costs
Code_Aster : MODE_ITER_SIMULT

Others
more or less empirical and specialized
Code_Aster : MODE_ITER_SIMULT(bisection)

5 - Code_Aster and Salome-Meca course material GNU FDL Licence


Power iteration : an illustrative method
Standard problem Ax = λ x
Determine the largest eigenvalue λ1

Algorithm Proof
Initial vector v0
(λ , u j ) j =1,n eigenmodes and eigenvalues
j

For i = 1, ...
w=Avi −1 λ1 > λ2 > λ3 > ...
v0 = ∑ (v0 , u j )u j
λ = ( Aw, w)
i
j
w
λj 
k
vi = if λ ≠ 0
A v0 = λ1 (v0 , u1 ) u1 + ∑   (v0, u j ) u j
i
k k
λ
j = 2,n  λ1 
i

(λ , v ) → (λ , u )
i
i 1 1

≠0 if possible Convergence rate

6 - Code_Aster and Salome-Meca course material GNU FDL Licence


Power iteration method
Smallest eigenvalue A−1

Eigenvalue closest to σ ( A − σI )−1 Shift and Invert

xT Ax
Rayleigh quotient r ( x ) = T ; xvp ⇒ r ( x ) = λ
x x

Initial normalized vector v0


For i = 0, ...
Algorithm

σ i = r (vi ) ;
Solve ( A - σ i I )w=vi
w
vi +1 =
w
7 - Code_Aster and Salome-Meca course material GNU FDL Licence
Subspace iteration methods

Extrapolation of the iteration method on one eigenvalue to a


subspace => methods able to compute many eigenvalues at once
More efficient than iterations on one value

Many “flavours”
‘LANCZOS’
‘JACOBI’
‘SORENSEN’

First method to use : ‘SORENSEN’ with default options


Robust
Efficient

8 - Code_Aster and Salome-Meca course material GNU FDL Licence


Verifications
Convergence of each method
A posteriori error norm on eigenmodes
if λ > ω 2solid body movement
Ax − λBx
error = if error ≤ threshold OK
Ax
else < F >
else
erreur = Ax − λBx if error ≤ threshold OK
else < F >
Sturm verification
Frequencies requested
by the user

frequencies calculated
frequency range for post-verification but not requested by
the user
9 - Code_Aster and Salome-Meca course material GNU FDL Licence
Implementation in Code_Aster
Main steps of a modal analysis

macro ASSEMBLAGE Post-


Data setting elementary
- Mesh matrices Numbering processing
Matrices Modal
- Materials -mass the - normalization
unknowns assembly calculation
- Boundary conditions -stiffness - extract
- Loads -damping - printing

Code_Aster solving commands for modal calculation


MODE_ITER_INV uses inverse iterations method
MODE_ITER_SIMULT uses subspace methods (method of choice)
MODE_ITER_CYCL modal calculation of a structure with cyclic symmetry
MACRO_MODE_MECA calculations of natural modes by frequency intervals
CALC_MODAL complete chain of modal analysis calculations

10 - Code_Aster and Salome-Meca course material GNU FDL Licence


Subspace methods in Code_Aster :
MODE_ITER_SIMULT

The three methods are iterative methods in subspaces


Same principle as MODE_ITER_INV inverse iterations but in subspaces => better
efficiency of the Arnoldi method

Which method is the best ?


SORENSEN
Fast and costless in CPU
Robust
Calculates multiple modes
Can obtain the rigid body modes (OPTION = 'BANDE' with lower bound 0. or
slightly negative)

11 - Code_Aster and Salome-Meca course material GNU FDL Licence


Solving command : MODE_ITER_SIMULT
To calculate the smallest frequencies
OPTION=‘PLUS_PETITE’

Or all frequencies in a band


OPTION=‘BANDE’

Around a given frequency


OPTION=‘CENTER’

3 methods
’JACOBI‘ Bathe and Wilson method
’TRI_DIAG‘ Lanczos method
‘SORENSEN‘ evolution of the Arnoldi method
prefered method (by default)

12 - Code_Aster and Salome-Meca course material GNU FDL Licence


Solving command : MODE_ITER_SIMULT
METHODE=‘SORENSEN’

Syntax
mode = MODE_ITER_SIMULT ( MATR_RIGI = MAT_R, MATR_MASS = MAT_M,
METHODE = ‘SORENSEN’ (default),
CALC_FREQ =_F ( OPTION = ‘PLUS_PETITE’ / ‘BANDE’
NMAX_FREQ = n / FREQ = (f1,f2)
)

Many options and parameters


But normally you should not play with them

13 - Code_Aster and Salome-Meca course material GNU FDL Licence


Solving command : MODE_ITER_SIMULT
Message output file
mode = MODE_ITER_SIMULT ( MATR_RIGI = rigi , MATR_MASS = masse
CALC_FREQ =_F( OPTION = ‘PLUS_PETITE‘, NMAX_FREQ = 5 ) )

------------------------------------------------------------------------
Les fréquences calculées sont comprises entre :
Fréquence inférieure : 7.02615E+01
Fréquence supérieure : 4.20512E+02
------------------------------------------------------------------------
Calcul modal : Méthode d'itération simultanée
Méthode de Sorensen

numéro fréquence (HZ) norme d'erreur


1 7.02615E+01 9.87164E-13
2 1.28256E+02 3.73093E-13
3 1.40530E+02 3.24591E-13
4 1.89140E+02 2.11480E-13
5 2.11116E+02 1.53475E-13

Norme d'erreur moyenne : 1.72031E-13 => error norm check (by default error < 1.E-6)
------------------------------------------------------------------------

Vérification à posteriori des modes


Dans l'intervalle ( 7.00856E+01 , 4.21562E+02 ) il y a bien 20 fréquence(s). => Mode number check
------------------------------------------------------------------------

14 - Code_Aster and Salome-Meca course material GNU FDL Licence


Solving command : MODE_ITER_INV
Some remarks
Costly algorithm : many factorizations
OPTION = ‘PROCHE' does not calculate multiple modes (modal position false)
Useful to calculate some eigenvalues
Refine the calculation of an eigenvalue (and eigenvector) found by another algorithm

Verification
Error norm on eigenmodes

15 - Code_Aster and Salome-Meca course material GNU FDL Licence


Solving command : MACRO_MODE_MECA
Calculate the frequencies in a band by cutting into smaller
subintervals
Save CPU time and memory and facilitate the convergence
Can compute the band in parallel
=> interesting if you have many CPUs
Try to find bands with good distribution of modes : as many modes
in all the bands (INFO_MODE)
Eliminate eigenmodes with low MASS_

For i = 1, number of intervals


mode_i = MODE_ITER_SIMULT ( ... ) ;
mode_i = NORM_MODE ( reuse, ... ) ;
End loop
EXTR_MODE ( ...) ;

16 - Code_Aster and Salome-Meca course material GNU FDL Licence


Solving command : CALC_MODAL
Complete modal analysis chain in a single command
CALC_MATR_ELEM (mass, stiffness, damping)
NUME_DDL
CALC_MATR_ASSE (mass, stiffness, damping)
MODE_ITER_SIMULT (dynamic mode)

Simple syntax and easier data setting

Intended for modal calculation of a solid structure without fluid


interaction
No possibility to chain an harmonic or time-history simulation

Produces a single result that stores all the modes

17 - Code_Aster and Salome-Meca course material GNU FDL Licence


Storage in the data structure
NUME_ORDRE
In the mode_meca data structure, the modes are ordered in ascending frequency.
NUME_ORDRE is the mode position in the data structure.

NUME_MODE
mode position in the whole the spectrum

NUME_ORDRE NUME_MODE FREQ


1 23 2.51972E+01
2 24 2.63652E+01
3 25 2.78854E+01
4 26 2.79978E+01
5 27 2.89328E+01

18 - Code_Aster and Salome-Meca course material GNU FDL Licence


Parameters in the data structure
Generalized mass or stiffness

v(t ) = ∑ α i (t )xi
kx
mx = xT M xk x = xT K xω =
i
mx M v&& + K v = f ⇒ mx α&&i + k x α i = f i
i i

Effective modal mass (unit) Participation Factor


MASS_EFFE_ (UN_) D * FACT_PARTICI_D *
U d normalized vector in ℜ3
=
(xT M U d )
=
(x T
MU d )
2 p x ,d T
x Mx
participation factor

( )
mx , d effective modal mass
xT M x
Property : ∑ p x ,d 2 mx = massstructure
∑ mxi ,d = massstructure
i
i
i i

1
mx ,d = mx , d unit effective modal mass
mass structure

19 - Code_Aster and Salome-Meca course material GNU FDL Licence


Post-processing command : NORM_MODE
Norms
By default : largest physical DOF equal to 1

NORME = ‘MASS_GENE’ xT M x = 1

NORME = ‘RIGI_GENE’ xT K x = 1

Largest physical DOF equal to 1 taken within a group of DOF


NORME = ‘TRAN’ (DX,DY,DZ)
NORME = ‘TRAN_ROTA’ ( DX,DY,DZ, DRX,DRY,DRZ)
NOEUD = no and NOM_CMP=DOF DOF(no) = 1
SANS_CMP = (CMP1, ...) group without these DOFs
AVEC_CMP = (CMP1, ...) group composed of these DOFs

20 - Code_Aster and Salome-Meca course material GNU FDL Licence


Pre/post-processing command : INFO_MODE
Determine the number of frequencies in a band
INFO_MODE (
MATR_RIGI = RIGI , MATR_MASS = MASSE
FREQ = (f1, f2, f3, … )

TABLE_FREQ : input to MODE_ITER_SIMULT


Especially interesting for parallel computing

Size intervals for MACRO_MODE_MECA


Intervals : 10 to 30 frequencies

21 - Code_Aster and Salome-Meca course material GNU FDL Licence


Post-processing command : EXTR_MODE
Concatenate mode_meca data structures produced by
MODE_ITER_ *

Sort the modes by eliminating :


MASS_GENE < threshold
MASS_EFFE_UN < threshold
given NUME_ORDRE or NUME_MODE

Print the total value of MASS_ *

Detection of modes present in several mode_meca to be


concatenated

22 - Code_Aster and Salome-Meca course material GNU FDL Licence


Printing & visualization of normal modes

Within SALOME_MECA
« Sweep » to animate the modes
Magnitudes are arbitrary

Or with other tools : by example GMSH


IMPR_RESU( FORMAT='GMSH', UNITE=37,
RESU=_F(RESULTAT=modes,
NOM_CHAM='DEPL',
TYPE_CHAM='VECT_3D', NOM_CMP=('DX','DY','DZ',),),)

Printing frequencies in the .resu file


IMPR_RESU( RESU=_F(RESULTAT=modes, TOUT_CHAM='NON', NOM_PARA=('FREQ',)))

The normal modes are simple displacement fields

23 - Code_Aster and Salome-Meca course material GNU FDL Licence


Tips
Weigh the model (POST_ELEM)

Estimate the number of frequencies (INFO_MODE)

Use the ’BANDE’ option

Use MACRO_MODE_MECA if the number of frequencies is


significant

Take into account the error or alarm messages <F> or <A>


Detecting null pivot, shift change
Important norm error on a mode
Calculated number of frequencies not consistent with the STURM
verification
24 - Code_Aster and Salome-Meca course material GNU FDL Licence
End of presentation

Is something missing or unclear in this document?


Or feeling happy to have read such a clear tutorial?

Please, we welcome any feedbacks about Code_Aster training materials.


Do not hesitate to share with us your comments on the Code_Aster forum
dedicated thread.

25 - Code_Aster and Salome-Meca course material GNU FDL Licence

You might also like