Télécharger vibr12.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : vibr12.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ***********************************************************
  5. *
  6. * VIBR12.DGIBI
  7. * CALCUL DE MODE COMPLEXE AVEC L OPERATEUR VIBR
  8. *
  9. * Resolution du pb aux valeurs propres : [K-w²M]x = 0
  10. * Modes COMPLEXEs car matrice(s) (K et/ou M) non symetrique(s)
  11. *
  12. * Matrices 3x3
  13. *
  14. ***********************************************************
  15. opti echo 0 ;
  16. OPTI EPSI LINEAIRE;
  17.  
  18.  
  19. ***********************************************************
  20. * Maillage ************************************************
  21. opti dime 3 elem cub8 ;
  22. pt1 = poin 0. 0. 0.;
  23. geo1 = MANU POI1 pt1;
  24.  
  25.  
  26. ***********************************************************
  27. * qq tables et listes pour tester
  28. terr1 = tabl;
  29. err1tot = prog ; err2tot = prog ; err3tot = prog ; err4tot = prog ;
  30.  
  31.  
  32. ***********************************************************
  33. * BOUCLE SUR DES MINI CAS TEST ***************************
  34. icas = 0;
  35. REPE BCAS 4;
  36. icas = icas + 1 ;
  37.  
  38. errtot = prog ;
  39.  
  40. * definition du cas *********************************************
  41. si(ega icas 1);
  42. mess 'Cas 1 : tout est symetrique *****************************';
  43. lm1 = (prog 0.5 0. 0. 0. 1. 0. 0. 0. 0.5);
  44. lk1 = (prog 2. -1. 0. -1. 4. -1. 0. -1. 2.) ;
  45. frq1th = (prog 2. 4. 6.)**0.5 / (2.*pi);
  46. frq1thI = (prog 0. 0. 0.);
  47. finsi;
  48.  
  49. si(ega icas 2);
  50. mess 'Cas 2 : K et M nonsym mais a valeur propres reelles ******';
  51. lm1 = (prog 1. 2. 3. 0. 1. 0. 3. 2. 1. ) ;
  52. lk1 = (prog 4. 5. 6. -1. 4. -1. 6. 5. 4. ) ;
  53. frq1th = (prog 1. 2.5 5.)**0.5 / (2.*pi);
  54. frq1thI = (prog 0. 0. 0.);
  55. finsi;
  56.  
  57. si(ega icas 3);
  58. mess 'Cas 3 : K et M nonsym mais a valeur p Lambda reelles ******';
  59. lm1 = (prog 1. 0. 0. 0. 1. 0. 0. 0. 1.);
  60. lk1 = (prog 7. -9. -3. 0. -60. 0. 0. 0. -6.);
  61. frq1th = (prog 0. 0. 7.)**0.5 / (2.*pi);
  62. frq1thI = (prog 60. 6. 0.)**0.5 / (2.*pi);
  63. inum3p = lect 2 3 1;
  64. finsi;
  65.  
  66. si(ega icas 4);
  67. mess 'Cas 4 : K et M nonsym -> Lambda= 1vp R et 2vp C conj ******';
  68. lm1 = (prog 1. 2. 3. 4. 5. 6. 7. 0. 19. );
  69. lk1 = (prog 4. 5. 6. -1. 4. -1. 6. 5. 4. );
  70. frq1th = (prog 0.03392052 0.03392052 0.19340464);
  71. frq1thI= (prog -0.14983744 0.14983744 0. );
  72. finsi;
  73.  
  74.  
  75. * Matrices ************************************************
  76. M1 = manu 'RIGIDITE' 'TYPE' 'MASSE' geo1
  77. (mots UX UY UZ ) 'DUAL' (mots FX FY FZ ) 'QUEL' lm1;
  78. K1 = manu 'RIGIDITE' 'TYPE' 'RIGIDITE' geo1
  79. (mots UX UY UZ ) 'DUAL' (mots FX FY FZ ) 'QUEL' lk1;
  80.  
  81.  
  82. * VIBR sur 1 mode *****************************************
  83. Tmod1 = VIBR 'PROC' K1 M1 (prog 0.) (lect 1) 'TBAS' VRAI 'IMPR';
  84. frq1 = Tmod1 . 'MODES' . 1 . frequence_reelle;
  85. frq1I = Tmod1 . 'MODES' . 1 . frequence_imaginaire;
  86. * mess frq1 '+ i' frq1I 'Hz'
  87. * ' soit lambda=' ((2.*pi*frq1)**2) '+' (-1.*((2.*pi*frq1I)**2));
  88. si(icas < 3);
  89. err1 = (abs(1. - (frq1/(extr frq1th 1))));
  90. sino;
  91. err1 = (abs(1. - (abs(frq1I/(extr frq1thI 2)))));
  92. si(icas ega 4);
  93. err1 = err1 + (abs(1. - (frq1/(extr frq1th 1))));
  94. finsi;
  95. finsi;
  96. * mess 'VIBR 1 ecart rel=' err1;
  97.  
  98. * VIBR sur 1 mode avec shift ******************************
  99. fshi2 = (0.2*(extr frq1th 2)) + (0.8*(extr frq1th 3));
  100. Tmod2 = VIBR 'PROC' K1 M1 (prog fshi2) (lect 1) 'TBAS' VRAI 'IMPR';
  101. frq2 = Tmod2 . 'MODES' . 1 . frequence_reelle;
  102. frq2I = Tmod2 . 'MODES' . 1 . frequence_imaginaire;
  103. * mess frq2 '+ i' frq2I 'Hz'
  104. * ' soit lambda=' ((2.*pi*frq2)**2) '+' (-1.*((2.*pi*frq2I)**2));
  105. err2 = (abs(1. - (frq2/(extr frq1th 3))));
  106. * mess 'VIBR 2 ecart rel=' err2;
  107.  
  108.  
  109. * VIBR sous espace ****************************************
  110. nbmod = 3 ;
  111. Tmod3 = VIBR 'PROC' K1 M1 (prog 0.) (lect nbmod)
  112. 'TBAS' VRAI 'IMPR';
  113. ibou1 = 0;
  114. frq3se = prog;
  115. err3 = 0.;
  116. repe bou3 nbmod;
  117. ibou1 = ibou1 + 1 ;
  118. frq3 = Tmod3 . 'MODES' . ibou1 . frequence_reelle;
  119. frq3I = Tmod3 . 'MODES' . ibou1 . frequence_imaginaire;
  120. frq3se = frq3se et (prog frq3) ;
  121. si(icas < 3);
  122. inumod1 = ibou1;
  123. err3tmp = abs (1. - (frq3/(extr frq1th inumod1)));
  124. finsi;
  125. si(icas ega 3);
  126. inumod1 = extr inum3p ibou1;
  127. si(ega inumod1 3);
  128. err3tmp = abs (1. - (frq3/(extr frq1th inumod1)));
  129. sino;
  130. err3tmp = abs (1. - (frq3I/(extr frq1thI inumod1)));
  131. finsi;
  132. finsi;
  133. si(icas ega 4);
  134. inumod1 = ibou1;
  135. err3tmp = abs (1. - (frq3/(extr frq1th inumod1)));
  136. si(inumod1 neg 3);
  137. err3tmp = err3tmp
  138. + (abs (1. - (abs(frq3I/(extr frq1thI inumod1)))));
  139. finsi;
  140. finsi;
  141. * mess 'VIBR' ibou1 inumod1 'frq1=' frq3 'ecart rel=' err3tmp;
  142. err3 = maxi (prog err3tmp err3);
  143. fin bou3;
  144.  
  145.  
  146.  
  147. * VIBR sous espace avec shift *****************************
  148. Tmod4 = VIBR 'PROC' K1 M1 (prog fshi2) (lect nbmod)
  149. 'TBAS' VRAI 'IMPR';
  150. ibou1 = 0;
  151. err4 = 0.;
  152. frq4se = prog;
  153. repe bou4 nbmod;
  154. ibou1 = ibou1 + 1 ;
  155. frq4 = Tmod4 . 'MODES' . ibou1 . frequence_reelle;
  156. frq4I = Tmod4 . 'MODES' . ibou1 . frequence_imaginaire;
  157. frq4se = frq4se et (prog frq4) ;
  158. inumod1 = nbmod - ibou1 + 1;
  159. si(icas < 3);
  160. err4tmp = abs (1. - (frq4/(extr frq1th inumod1)));
  161. finsi;
  162. si(icas ega 3);
  163. si(ega inumod1 3);
  164. err4tmp = abs (1. - (frq4/(extr frq1th inumod1)));
  165. sino;
  166. err4tmp = abs (1. - (abs(frq4I/(extr frq1thI inumod1))));
  167. finsi;
  168. finsi;
  169. si(icas ega 4);
  170. err4tmp = abs (1. - (frq4/(extr frq1th inumod1)));
  171. si(neg inumod1 3);
  172. err4tmp = err4tmp
  173. + (abs (1. - (abs(frq4I/(extr frq1thI inumod1)))));
  174. finsi;
  175. finsi;
  176. finsi;
  177. * mess 'VIBR' ibou1 inumod1 'frq1=' frq4 'ecart rel=' err4tmp;
  178. err4 = maxi (prog err4tmp err4);
  179. fin bou4;
  180.  
  181.  
  182. * stockage des resultats
  183. errtot = errtot et (prog err1 err2 err3 err4) ;
  184. terr1 . icas = errtot;
  185. err1tot = err1tot et (prog err1);
  186. err2tot = err2tot et (prog err2);
  187. err3tot = err3tot et (prog err3);
  188. err4tot = err4tot et (prog err4);
  189. *saut lign ;
  190.  
  191. fin BCAS;
  192. ************************************************************************
  193.  
  194. mess '*** erreur relative (selon appel a vibr) ***';
  195. icas = 0;
  196. repe BCAS2 4;
  197. icas= icas + 1 ;
  198. mess (chai '*** Cas ' icas ' ***') ;
  199. list (terr1 . icas);
  200. fin BCAS2;
  201.  
  202. *opti donn 5 ;
  203. *fin;
  204. ****************************************************************
  205. * test de bon deroulement *
  206. ****************************************************************
  207. *
  208. TEST1234 = ((maxi err1tot) &lt;eg 1.E-2)
  209. et ((maxi err2tot) &lt;eg 1.E-3)
  210. et ((maxi err3tot) &lt;eg 1.E-5)
  211. et ((maxi err4tot) &lt;eg 1.E-5);
  212. *
  213. SI (TEST1234);
  214. ERRE 0;
  215. SINO;
  216. ERRE 5;
  217. FINS;
  218. *
  219. TEMPS;
  220. *
  221. FIN;
  222. *
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales