Exemples ======== Calcul des 5 modes propres les plus proches d’une fréquence donnée ------------------------------------------------------------------ .. code-block:: text mode=CALC_MODES( MATR_RIGI=rigid, MATR_MASS=masse, OPTION =‘CENTRE’, CALC_FREQ=_F( FREQ=100., NMAX_FREQ=5 ) ); Calcul des charges critiques contenues dans une bande ----------------------------------------------------- .. code-block:: text 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)) ); Chaînage INFO_MODE+CALC_MODES (extrait de SDLS504a) --------------------------------------------------- .. code-block:: text 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)), ) Calcul des fréquences propres contenues dans la bande [:ref:`50 ; 150 <50 ; 150>`] Hz ------------------------------------------------------------------------------------- avec la méthode des puissances inverses .. code-block:: text mode=CALC_MODES( MATR_RIGI=rigidite, MATR_MASS=masse, OPTION=’AJUSTE’, CALC_FREQ=_F( FREQ=(50.,150.)) ) 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 .. code-block:: text mode= CALC_MODES( MATR_RIGI=rigidite, MATR_MASS=masse, OPTION=’PROCHE’, CALC_FREQ=_F( FREQ=(50.,150.)), SOLVEUR_MODAL=_F(OPTION_INV=’RAYLEIGH’) ) Découpage en plusieurs sous-bandes ---------------------------------- Soit la séquence suivante: .. code-block:: text 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 :math:`[1.,5.]` Hz en la découpant en deux sous-bandes fréquentielles: :math:`[1.,3.]` et :math:`[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 .. code-block:: text table1=INFO_MODE( MATR_RIGI=rigi, MATR_MASS=masse, FREQ=(1.,3.,5.)) [:ref:`16 <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 .. code-block:: text [:ref:`17 <17>`]_ et, par défaut, on ne fait pas localement à chaque sous-bande le test de Sturm de post-vérification. .. code-block:: text # 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: :math:`[\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. .. code-block:: text 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'), ); .. [1] On somme juste les nombres de fréquences calculés précédemment et stockés dans table1. .. [2] Pour ne pas refaire le test de Sturm de prétraitement propre à chaque sous-bande.