You are on page 1of 23

Linear transient & harmonic analyses

Code_Aster, Salome-Meca course material


GNU FDL licence (http://www.gnu.org/copyleft/fdl.html)
Outline
What is dynamics about ? Inertia !
Transient analysis
Harmonic analysis
Eigen vectors and model reduction
Syntax examples
Some advice
Bibliography

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


What is dynamics about: an illustrative example

Statics
We seek the system’s
stationary position

k x= f

Dynamics

We seek the system’s


time history

mx + kx = f (t )

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


From continuous to discrete: Finite Elements
• Discretization → Matrix
equation

mx + kx = f (t )
M X + K X = F (t )

X (ti ) :

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


Linear analyses

Linear
analysis

Transient Harmonic
analysis analysis

Time history Steady-state


response response

Frequency-
Physical
Modal basis by-frequency
basis
computing
5 - Code_Aster and Salome-Meca course material GNU FDL Licence
Linear code_aster operators

Linear analysis

Transient analysis Harmonic analysis

Physical basis
Modal basis DYNA_LINE
DYNA_LINE
DYNA_LINE DYNA_VIBRA
DYNA_VIBRA
DYNA_VIBRA
DYNA_NON_LINE

Localized non
linearities

DYNA_LINE vs DYNA_VIBRA:
Automatic matrix assembly
Automatic projection base construction for problem resolution on generalized basis
6 - Code_Aster and Salome-Meca course material GNU FDL Licence
Transient analysis: principles
Equation of motion
Separate time and space variables

M X + C X + K X = F (t ) = E u(t )

 (t ) ; X (t ) ; X (t )
We seek time history X

Numerical time integration :



Force & Inertia balance → X (t k )  X (t ) = X (t ) + t X (t )
 k+
1
k−
1 k


2 2

Example : central differencing scheme →  X (t k +1 ) = X (t k ) + t X (t k + 1 )


 2
 t 
 
X (t ) = 
X (t ) + X (t k +1 )
k +1

1
k+ 2
2

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


Transient analysis: implementation
We need
Structural matrices M (mass) , C (damping), K (stiffness)
External loading F0 and its time evolution u(t)

Requirements
The model → AFFE_MODELE
Materials → AFFE_MATERIAU
Boundary conditions → AFFE_CHAR_MECA
Characteristics of structural elements (if needed) → AFFE_CARA_ELEM

Model assembly
Matrices M, C , K ; Loading F → ASSEMBLAGE
Time evolution ➔ FORMULE / DEFI_FONCTION

Solve using DYNA_VIBRA(TYPE_CALCUL=‘TRAN’,BASE_CALCUL=‘PHYS’)

Post-processing (same tools as in statics)


CALC_CHAMP, POST_CHAMP …
Output : IMPR_RESU

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


Harmonic Analysis: principles
Transient Steady-state
We seek the steady-state response
Transient analysis for steady-state oscillatory
excitation & response

M X + C X + K X = F0 u (t )

Alternative approach for steady-state motion

u (t ) = u0 e jt  X (t ) = X ( )e jt 0.25

 (Fourier transform) 0.2

Displacement (mm)
0.15
jt jt
[− M + j C + K ] X ( ) e
2
= F0 u0 e
0.1

0.05
Frequency-by-frequency computing
Responses to 2 different frequencies are completely independent 0
0 10 20 30 40 50 60
Frequency (Hz)

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


Harmonic analysis: implementation
We need
Structural matrices M (mass) , C (damping), K (stiffness)
External loading F0 and its frequency evolution u(ω)

Same requirements and model assembly as transient analysis

Resolution with DYNA_VIBRA(TYPE_CALCUL=‘HARM’,BASE_CALCUL=‘PHYS’)


-4
10
N1 - DX
Acceleration (m.s .N )

N1 - DY
-1

-5
10 N1 - DZ
-2

-6
10

-7
10
phase (deg)

200
10 15 20 25 30 35 40 45
0

-200
10 15 20 25 30 35 40 45
Frequency (Hz)

Post-processing (same tools as in statics)


CALC_CHAMP, POST_CHAMP …
Output : IMPR_RESU
10 - Code_Aster and Salome-Meca course material GNU FDL Licence
Why are normal modes useful ?

Modal coordinates give a “natural” description of the motion

X (t ) = 11 (t ) +  + N N (t )

Modal projection reduces the analysis cost


the number of unknowns is now equal to the number of modes (p) !

X (t )  11 (t ) +  +  p p (t ) ; p  N

Simple rule-of-thumb: use eigen frequencies up to 2 x maximal loading frequency

Warning!!! Always check the validity of the modal basis


increase the number of modes, apply static corrections

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


Static correction to modal truncation:
2 equivalent approaches

Eigenmodes
Static response
Expanded
A priori to unit
projection basis
acceleration
« Static
Static correction
modes »
Static response
A posteriori Pseudo-mode
to unit force

A priori static correction


directly integrated in projection basis
Ritz basis = eigenmodes + static responses
Ritz basis to be re-orthogonalized

A posteriori static response


Superposed to response on eigenmode basis
Pseudo-mode: calculated from static response to unit acceleration

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


Syntax example : matrix assembly (K,M,…)
Example : 3D model

DEBUT()
#-------- model description --------------------------
ma = LIRE_MAILLAGE ( )
mo = AFFE_MODELE ( MAILLAGE= ma,
AFFE = _F(TOUT = ‘OUI‘, PHENOMENE=‘MECANIQUE‘,
MODELISATION=‘3D’))
steel = DEFI_MATERIAU ( ELAS = _F( E = 2.1E+11, NU = 0.3, RHO = 7800.)
cmat = AFFE_MATERIAU ( MAILLAGE=ma, AFFE=_F(TOUT = ‘OUI’, MATER=steel ))

#-------- boundary conditions -------------------------


block = AFFE_CHAR_MECA( MODELE=mo, DDL_IMPO=_F(GROUP_MA=‘BOUND’,LIAISON=‘ENCASTRE’)

#-------- matrix assembly -----------------------------


ASSEMBLAGE( MODELE = mo, CHARGE= block, CHAM_MATER= cmat,
NUME_DDL = CO(‘nddl’),
MATR_ASSE= _F(
( MATRICE= CO(‘matrigi’), OPTION= ‘RIGI_MECA’ ),
( MATRICE= CO(‘matmass’), OPTION= ‘MASS_MECA’ )))

N.B. : nddl is a numbering concept which insures consistency between matrixes and vectors

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


Modal projection : implementation
Same requirements and model assembly as transient or harmonic
analysis

Compute normal modes → CALC_MODES

Reduced (projected) model and load assembly → PROJ_BASE

Integration of the differential (dynamic) equations of motion :


transient → DYNA_VIBRA(TYPE_CALCUL=‘TRAN’,BASE_CALCUL=‘GENE’)
harmonic → DYNA_VIBRA(TYPE_CALCUL=‘HARM’,BASE_CALCUL=‘GENE’)

Back to physical coordinates :


whole model → REST_GENE_PHYS
few points → POST_GENE_PHYS(RESU_GENE=…)=> table

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


Syntax example : normal modes computation

Computation with CALC_MODES


10 first frequencies
modes = CALC_MODES ( MATR_A= matrigi, MATR_B= matmass,
OPTION=‘PLUS_PETITE’,
CALC_FREQ=_F(NMAX_FREQ= 10) )
Frequencies between f1=0.0 Hz and f2=100.0 Hz
modes = MODE_ITER_SIMULT ( MATR_A= matrigi, MATR_B= matmass,
OPTION=‘BANDE’,
CALC_FREQ=_F(FREQ= (0.,100.) )

Printing to SALOME visual interface (‘.med’ format)


IMPR_RESU(FORMAT='MED',UNITE=80, RESU=_F(RESULTAT=modes,))

Printing frequencies in the .resu file


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

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


Syntax example:
a priori static correction computation
via DYNA_VIBRA operator
▪ Static response to unit acceleration
PSEUDO=MODE_STATIQUE( MATR_RIGI= matrigi,
MATR_MASS= matmass,
PSEUDO_MODE=_F(AXE='X', ),);
▪ Static response to unit force
MODESTAT=MODE_STATIQUE( MATR_RIGI= matrigi,
MATR_MASS= matmass,
FORCE_NODALE=_F(TOUT='OUI', AVEC_CMP='DX',) ,)

▪ Ritz basis building


RITZ=DEFI_BASE_MODALE( RITZ=( _F(MODE_MECA=MODE_EXT),
_F(MODE_INTF=PSEUDO),
_F(MODE_INTF=MODESTAT), ),
ORTHO='OUI',
MATRICE= matrigi, ), )

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


Syntax example: a priori static correction
computation via DYNA_LINE operator

Automatic by default static correction


via static modes added to modal basis
Static modes computed for every load defined by EXCIT keyword

▪ DYNA_LINE :
DYNA_LINE ( MODELE=MO,
BASE_CALCUL = 'GENE' ,
ENRI_STAT= 'OUI‘,
ORTHO=‘OUI',)

ENRI_STAT cannot be used in fluid-structure computation

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


Syntax example : a posteriori static correction
computation via DYNA_VIBRA operator

CHAM_NO=AFFE_CHAR_MECA( MODELE=mo,
PESANTEUR=_F( GRAVITE=1.,
DIRECTION=(-1., 0., 0.,),), )
MODCOR=MACRO_ELAS_MULT( CHAR_MECA_GLOBAL=block,
CAS_CHARGE=_F(NOM_CAS='CORRSTAT',
CHAR_MECA=CHAM_NO,),);

DYNA_VIBRA(EXCIT=_F( VECT_ASSE_GENE=VECT_X,
FONC_MULT=ACCELERO,
CORR_STAT='OUI',
D_FONC_DT=DERI_PRE,
D_FONC_DT2=DERI_SEC,),
MODE_CORR=MODCOR,); )

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


Syntax example: modal transient analysis
Projection
PROJ_BASE(BASE=modes,
MATR_ASSE_GENE=( _F(MATRICE=CO('maspro'), MATR_ASSE=matmass,),
_F(MATRICE=CO('ripro'), MATR_ASSE=matrigi,),
VECT_ASSE_GENE=( _F(VECTEUR=CO('fxpro'), VECT_ASSE=fx)))

Transient Analysis
DTM = DYNA_VIBRA(TYPE_CALCUL=‘TRAN’, BASE_CALCUL=‘GENE’,
SCHEMA_TEMPS=_F(SCHEMA=‘NEWMARK’),
MATR_MASS=maspro, MATR_RIGI=ripro,
INCREMENT=_F(INST_FIN=tfin, PAS=pa,),
EXCIT=_F(VECT_ASSE_GENE=fxpro, FONC_MULT=rimpuls))

The route backwards to physical coordinates


Natural way :
REPHYS=REST_GENE_PHYS(RESU_GENE=DTM, NOM_CHAM=('ACCE','DEPL'))
May be costly !

More efficiently for observing the trajectories of some nodes or elements


DXOBS=POST_GENE_PHYS(RESU_GENE=DTM,
OBSERVATION=_F(NOM_CHAM='DEPL', NOM_CMP='DX',GROUP_NO='OBS'))
=> table

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


Some advice
Read U2 & U4 documents (www.code-aster.org)
DYNA_VIBRA operator: U4.53.03
DYNA_LINE operator: U4.53.05
DYNA_NON_LINE operator: U4.53.01
U2.06.04 Building reduced models in dynamics
U2.06.09 Equipements earthquake resistance
(to go further : R for References)
Harmonic response: R5.05.03
Linear dynamic damping model: R5.05.04
Linear and nonlinear dynamic model reduction: RITZ method: R5.06.01
Shock and friction modeling in modal transient analysis: R5.06.03
Seismic time history response: R4.05.01
Validation tests are (often) good examples
A modal analysis is always the starting point
Eigenfrequencies
Check of the FE model
Indication in the choice of time step

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


Syntax example: direct time-history analysis
How to use the command
External loading
FXELEM = AFFE_CHAR_MECA(MODELE=MODELE, FORCE_NODALE=_F(GROUP_NO='BOUT', FX=1.0))
Assembly
ASSEMBLAGE(MODELE= mo, CHARGE= block, CHAM_MATER= cmat,
NUME_DDL=CO(‘nddl’),
MATR_ASSE= ( _F( MATRICE= CO(‘matrigi’) , OPTION= ‘RIGI_MECA’ ),
_F( MATRICE= CO(‘matmass’), OPTION= ‘MASS_MECA’ ),),
VECT_ASSE= _F( VECTEUR= CO(‘matrigi’), CHARGE=FXELEM, OPTION= ‘CHAR_MECA’),)
Function of time
Either FORMULE : mathematical expression of time
NB : time in Code_Aster is always noted ‘INST’
Or DEFI_FONCTION : tabulated magnitude
impuls=DEFI_FONCTION(NOM_PARA='INST',PROL_DROITE='CONSTANT',PROL_GAUCHE='CONSTANT',
VALE=(.0,.0, 0.9,.0, 1.0,g, 2.0,g, 2.1,.0,))

List of time steps


LINST=DEFI_LIST_REEL(DEBUT=0., INTERVALLE=_F(JUSQU_A=tfin, PAS=pa))
CALC_FONC_INTERP : tabulation on the time steps to optimize the computing time
rimpuls=CALC_FONC_INTERP(FONCTION=IMPULS, LIST_PARA=LINST,)
Transient analysis
DLT = DYNA_VIBRA (TYPE_CALCUL=‘TRAN’, BASE_CALCUL=‘PHYS’,
SCHEMA_TEMPS=_F(SCHEMA=‘NEWMARK’),
MATR_MASS=matmass, MATR_RIGI=matrigi,
EXCIT=_F(VECT_ASSE=fx, FONC_MULT=rimpuls,),
INCREMENT=_F(LIST_INST=LINST))

– How to chose the time step :


• Frequency content of the system
• Frequency content of the input

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


A brief bibliography

http://www.code-aster.org

Mechanical Vibrations - Theory and Application to Structural


Dynamics
M. Géradin, D. Rixen - Wiley

Vibration Problems in Engineering


S. Timoshenko - Wiley

Finite Element Analysis with Error Estimators


J.E. Akin – Elsevier

Dynamics of structure
R.W. Clough, J. Penzien – McGraw-Hill
22 - 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.

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

You might also like