Examples ==== Calculation of the 5 natural modes closest to a given frequency ---- .. code-block:: text fashion= CALC_MODES (MATR_RIGI =rigid, MATR_MASS =mass, OPTION =' CENTRE ', CALC_FREQ =_F (FREQ =100. , NMAX_FREQ =5) ); Calculation of the critical loads contained in a band ---- .. 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)) ); Chaining INFO_MODE + CALC_MODES (excerpt from 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)), ) Calculation of the natural frequencies contained in the [:ref:`50 ; 150 <50 ; 150>`] Hz band ---- with the inverse power method .. code-block:: text mode=CALC_MODES( MATR_RIGI=rigidite, MATR_MASS=masse, OPTION =' AJUSTE ', CALC_FREQ =_F (FREQ =( 50.,150.)) )))) Calculation of the natural frequencies closest to 20 and 50 Hz ---- with the inverse power method, with convergence acceleration by the Rayleigh coefficient .. 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 ') )))) Dividing into several sub-bands ---- Consider the following sequence: .. code-block:: text mode=CALC_MODES( MATR_RIGI=rigi, MATR_MASS =mass, 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 ') ); We therefore want to search for all the modes included in the global :math:`\mathrm{[}1.,5.\mathrm{]}` Hz band by dividing it into two frequency sub-bands: :math:`\mathrm{[}1.,3.\mathrm{]}` and :math:`\mathrm{[}3.,5.\mathrm{]}`. Once interpreted, the macro-command consists of the sequence of usual commands described below. * Step 1: Determining the number of frequencies in each sub-band .. code-block:: text table1= INFO_MODE (MATR_RIGI =rigi, MATR_MASS =mass, FREQ =( 1.,3.,5.)) [:ref:`16 <16>`] _ : nbmodeth # If the global band is empty: ALARME or ERREUR_FATALE depending on the value of CALC_FREQ/STOP_BANDE_VIDE. * Step 2: Calculation and normalization of the modes in each sub-band .. 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 # If the local sub-band is empty: ALARMEou ERREUR_FATALE according to the value of CALC_FREQ/STOP_BANDE_VIDE. mode_1= CALC_MODES (MATR_RIGI =rigi, MATR_MASS =mass, 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 =mass, 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 ',); # Verification by a global Sturm test of the correct number of frequencies calculated # Determination of the smallest (resp. large) frequency of the first (resp. last) non-empty sub-band: freq_ini (resp. freq_fin). # Calculate the number of frequencies in the interval: :math:`\mathrm{[}\text{freq\_ini},\text{freq\_fin}\mathrm{]}`: nbmodeef. table2= INFO_MODE (MATR_RIGI =rigi, MATR_MASS =mass, FREQ =( freq_ini, freq_end)) # If this number of modes is different from the number of modes originally planned: ERREUR_FATALE. * Step 3: Filtering, concatenating, and printing calculated modes. .. 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] We just sum up the frequency numbers calculated previously and stored in table1. .. [2] To avoid redoing the Sturm pretreatment test specific to each sub-band.