10. Exemples#
10.1. Calcul des 5 modes propres les plus proches d’une fréquence donnée#
mode=CALC_MODES( MATR_RIGI=rigid,
MATR_MASS=masse,
OPTION =‘CENTRE’,
CALC_FREQ=_F( FREQ=100., NMAX_FREQ=5 ) );
10.2. Calcul des charges critiques contenues dans une bande#
mode=CALC_MODES( TYPE_RESU=‘MODE_FLAMB’,
MATR_RIGI=rigid, MATR_RIGI_GEOM=riggeo,
OPTION=‘BANDE’,
CALC_FREQ=_F(
CHAR_CRIT=(-1.E8,1.5E8))
);
10.3. Chaînage INFO_MODE+CALC_MODES (extrait de SDLS504a)#
nbmod1 = INFO_MODE( TYPE_MODE='MODE_FLAMB',
...
CHAR_CRIT=(-1.E+6,-5.E+5,0.0,1.E+5,1.1E+6),)
RESULT0=CALC_MODES( TYPE_RESU='MODE_FLAMB',
...,
OPTION='BANDE',
CALC_CHAR_CRIT=_F( TABLE_CHAR_CRIT=nbmod1,
CHAR_CRIT=(-1.E+06,1.E+05)),
)
10.4. Calcul des fréquences propres contenues dans la bande [50 ; 150] Hz#
avec la méthode des puissances inverses
mode=CALC_MODES( MATR_RIGI=rigidite, MATR_MASS=masse,
OPTION=’AJUSTE’,
CALC_FREQ=_F( FREQ=(50.,150.)) )
10.5. Calcul des fréquences propres les plus proches de 20 et 50 Hz#
avec la méthode des puissances inverses, avec accélération de convergence par le coefficient de Rayleigh
mode= CALC_MODES( MATR_RIGI=rigidite, MATR_MASS=masse,
OPTION=’PROCHE’,
CALC_FREQ=_F( FREQ=(50.,150.)), SOLVEUR_MODAL=_F(OPTION_INV=’RAYLEIGH’) )
10.6. Découpage en plusieurs sous-bandes#
Soit la séquence suivante:
mode=CALC_MODES( MATR_RIGI=rigi,
MATR_MASS=masse,
OPTION=”BANDE”,
CALC_FREQ=_F( FREQ=(1.,3.,5.),) VERI_MODE=_F(),
NORM_MODE=_F(NORME=”TRAN_ROTA”,),
FILTRE_MODE=_F(CRIT_EXTR=”MASS_EFFE_UN”),
IMPRESSION=_F(CUMUL=”OUI”, CRIT_EXTR=”MASS_EFFE_UN”) );
On veut donc chercher tous les modes compris dans la bande globale \([1.,5.]\) Hz en la découpant en deux sous-bandes fréquentielles: \([1.,3.]\) et \([3.,5.]\) .
Une fois interprétée, la macro-commande consiste en l’enchaînement de commandes usuelles décrit ci-dessous.
Etape 1: Détermination du nombre de fréquences dans chaque sous-bandes
table1=INFO_MODE( MATR_RIGI=rigi,
MATR_MASS=masse,
FREQ=(1.,3.,5.))
[16]_ : nbmodeth
# Si la bande globale est vide: ALARME ou ERREUR_FATALE suivant la valeur de CALC_FREQ/STOP_BANDE_VIDE.
Etape 2: Calcul et normalisation des modes dans chaque sous-bande
[17]_ et, par défaut, on ne fait pas localement à chaque sous-bande le test de Sturm de post-vérification.
# Si la sous-bande locale est vide: ALARMEou ERREUR_FATALE suivant la valeur de CALC_FREQ/STOP_BANDE_VIDE.
mode_1=CALC_MODES(MATR_RIGI=rigi,
MATR_MASS=masse,
OPTION=”BANDE”,
CALC_FREQ=_F( FREQ=(1.,3.),
TABLE_FREQ=table1),),
VERI_MODE(STURM=”NON”)); mode_1=NORM_MODE( MODE=mode_1,
reuse=mode1,
NORME=”TRAN_ROTA”,); mode_2=CALC_MODES(MATR_RIGI=rigi,
MATR_MASS=masse,
OPTION=”BANDE”,
CALC_FREQ=_F( FREQ=(3.,5.),
TABLE_FREQ=table1),),
VERI_MODE(STURM=”NON”)); mode_2=NORM_MODE( MODE=mode_2,
reuse=mode2,
NORME=”TRAN_ROTA”,);
# Vérification par un test de Sturm global du bon nombre de fréquences calculées
# Détermination de la plus petite (resp. grande) fréquence de la première (resp. dernière) sous-bande non vide: freq_ini(resp. freq_fin).
# Calcul du nombre de fréquences comprises dans l’intervalle: \([\text{freq\_ini},\text{freq\_fin}]\): nbmodeef.
table2=INFO_MODE( MATR_RIGI=rigi,
MATR_MASS=masse,
FREQ=(freq_ini,freq_fin))
# Si ce nombre de modes est différent du nombre de modes prévu initialement: ERREUR_FATALE .
Étape 3: Filtrage, concaténation et impression des modes calculés.
mode=EXTR_MODE( FILTRE_MODE=_F( MODE=mode_1, CRIT_EXTR=”MASS_EFFE_UN”), FILTRE_MODE=_F( MODE=mode_2, CRIT_EXTR=”MASS_EFFE_UN”), IMPRESSION=_F( CUMUL=”OUI”, CRIT_EXTR=”MASS_EFFE_UN”),
);