Télécharger @massmod.procedur

Retour à la liste

Numérotation des lignes :

  1. * @MASSMOD PROCEDUR FD218221 26/06/11 21:15:06 12572
  2. *---------------------------------------------------------------------*
  3. * NOM : @MASSMOD *
  4. * *
  5. * DESCRIPTION : CALCUL DES MASSES MODALES EFFECTIVES MOBILISEES *
  6. * SELON LES DIRECTIONS DE MOUVEMENT (X, Y, Z) POUR *
  7. * CHAQUE MODE PROPRE, SUITE A UNE ANALYSE MODALE *
  8. * REALISEE PAR L'OPERATEUR VIBR. *
  9. * *
  10. * SYNTAXE : TABRESU = @MASSMOD TAB_VIBR MASS1 ; *
  11. * *
  12. * *
  13. * LANGAGE : GIBIANE-CAST3M *
  14. * AUTEUR : Abdelhafid NOUALI (SIMCO - SIAME - UPPA) *
  15. * COURRIEL : a.nouali@univ-pau.fr *
  16. *---------------------------------------------------------------------*
  17. *
  18. DEBPROC @MASSMOD TAB1*'TABLE' MASS1*'RIGIDITE' ;
  19. *
  20. *----------------------------------------------------------------------
  21. * 1. INITIALISATIONS
  22. *----------------------------------------------------------------------
  23. *
  24. NB_MODE = (DIME TAB1 . 'MODES') - 2 ;
  25. STRU1 = EXTR MASS1 'MAIL' ;
  26. *
  27. * Masse totale = resultante des forces FX obtenues en multipliant
  28. * la matrice de masse par un champ de translation rigide unitaire
  29. * selon X.
  30. TMAS = RESU (MASS1 * (MANU 'CHPO' STRU1 'UX' 1.)) ;
  31. TMAS = EXTR (EXTR (EXCO TMAS 'FX') 'VALE' 'SCAL') 1 ;
  32. *
  33. * Listes destinees a recevoir les resultats mode par mode
  34. L_MODE = LECT ;
  35. L_FREQ = PROG ;
  36. L_MX = PROG ;
  37. L_MY = PROG ;
  38. L_MZ = PROG ;
  39. *
  40. *----------------------------------------------------------------------
  41. * 2. DETECTION DES DIRECTIONS DE TRANSLATION ACTIVES
  42. *----------------------------------------------------------------------
  43. *
  44. * On teste sur le premier mode la presence des composantes duales
  45. * FX, FY, FZ apres produit deformee * matrice de masse.
  46. TEST = ((TAB1 . 'MODES' . 1) . 'DEFORMEE_MODALE') * MASS1 ;
  47. SI (EXIS TEST 'FX') ; DIR_X = VRAI ; SINON ; DIR_X = FAUX ; FINSI ;
  48. SI (EXIS TEST 'FY') ; DIR_Y = VRAI ; SINON ; DIR_Y = FAUX ; FINSI ;
  49. SI (EXIS TEST 'FZ') ; DIR_Z = VRAI ; SINON ; DIR_Z = FAUX ; FINSI ;
  50. *
  51. *----------------------------------------------------------------------
  52. * 3. BOUCLE SUR LES MODES PROPRES
  53. *----------------------------------------------------------------------
  54. *
  55. REPETER BOU1 NB_MODE ;
  56. *
  57. BASE_M = TAB1 . 'MODES' . &BOU1 ;
  58. F_MODALE = BASE_M . 'FREQUENCE' ;
  59. D_MODALE = BASE_M . 'DEFORMEE_MODALE' ;
  60. M_GENER = BASE_M . 'MASSE_GENERALISEE' ;
  61. *
  62. L_MODE = INSE L_MODE &BOU1 &BOU1 ;
  63. L_FREQ = INSE L_FREQ &BOU1 F_MODALE ;
  64. *
  65. * Masses modales effectives : m_eff_i,j = L_i,j^2 / M_gen,i
  66. * avec L_i,j = facteur de participation = somme nodale du produit
  67. * (matrice de masse * deformee), projete sur la direction j.
  68. MM = ((RESU (D_MODALE * MASS1)) ** 2) / M_GENER ;
  69. *
  70. SI DIR_X ;
  71. MMX = 100. * (EXTR (EXTR (EXCO MM 'FX') 'VALE' 'SCAL') 1) / TMAS ;
  72. L_MX = INSE L_MX &BOU1 MMX ;
  73. FINSI ;
  74. *
  75. SI DIR_Y ;
  76. MMY = 100. * (EXTR (EXTR (EXCO MM 'FY') 'VALE' 'SCAL') 1) / TMAS ;
  77. L_MY = INSE L_MY &BOU1 MMY ;
  78. FINSI ;
  79. *
  80. SI DIR_Z ;
  81. MMZ = 100. * (EXTR (EXTR (EXCO MM 'FZ') 'VALE' 'SCAL') 1) / TMAS ;
  82. L_MZ = INSE L_MZ &BOU1 MMZ ;
  83. FINSI ;
  84. *
  85. FIN BOU1 ;
  86. *
  87. *----------------------------------------------------------------------
  88. * 4. CONSTRUCTION DE LA TABLE RESULTAT
  89. *----------------------------------------------------------------------
  90. *
  91. * On ajoute la somme cumulee en fin de chaque liste de masses.
  92. TABRESU = TABLE ;
  93. TABRESU . ' MODE' = L_MODE ;
  94. TABRESU . ' FREQ_(Hz)'= L_FREQ ;
  95. *
  96. SI DIR_X ;
  97. L_MX = L_MX ET (SOMM L_MX) ;
  98. TABRESU . ' MASSE-X_(%)' = L_MX ;
  99. FINSI ;
  100. SI DIR_Y ;
  101. L_MY = L_MY ET (SOMM L_MY) ;
  102. TABRESU . ' MASSE-Y_(%)' = L_MY ;
  103. FINSI ;
  104. SI DIR_Z ;
  105. L_MZ = L_MZ ET (SOMM L_MZ) ;
  106. TABRESU . ' MASSE-Z_(%)' = L_MZ ;
  107. FINSI ;
  108. *
  109. TABRESU . ' MASSE-T_(kg)' = PROG TMAS ;
  110. *
  111. *----------------------------------------------------------------------
  112. * 5. AFFICHAGE DES RESULTATS DANS LE TERMINAL
  113. *----------------------------------------------------------------------
  114. *
  115. IND = INDEX TABRESU ;
  116. D_IND = DIME IND ;
  117. *
  118. MESS '-------------- MASSES MOBILISEES PAR MODE ET PAR DIRECTION ----------------------' ;
  119. *
  120. * Ligne d'en-tete : noms des colonnes de la table
  121. TETE = CHAI IND.1 * 5 ;
  122. REPETER BOU3 (D_IND - 2) ;
  123. TETE = CHAI TETE IND.(&BOU3 + 1) < 14 ;
  124. FIN BOU3 ;
  125. MESS TETE ;
  126. *
  127. * Lignes : une par mode
  128. REPETER BOU2 NB_MODE ;
  129. INTER = CHAI &BOU2 * 5 ;
  130. REPETER BOU3 (D_IND - 2) ;
  131. VAL = EXTR (TABRESU . (IND . (&BOU3 + 1))) &BOU2 ;
  132. INTER = CHAI INTER 'FORMAT' '(F10.5)' VAL < 14 ;
  133. FIN BOU3 ;
  134. MESS INTER ;
  135. FIN BOU2 ;
  136. *
  137. *
  138. * Ligne de cumul : somme par direction (derniere valeur de chaque liste)
  139. TOT1 = CHAI 'MASSE TOTALE PAR DIRECTION (%):' ;
  140. REPETER BOU3 (D_IND - 3) ;
  141. VAL = EXTR (TABRESU . (IND . (&BOU3 + 2))) (NB_MODE + 1) ;
  142. TOT1 = CHAI TOT1 'FORMAT' '(F12.5)' VAL ' %' ;
  143. FIN BOU3 ;
  144. MESS TOT1 ;
  145. *
  146. MESS 'MASSE TOTALE DE LA STRUCTURE =' (EXTR (TABRESU.' MASSE-T_(kg)') 1) ' kg' ;
  147. MESS '--------------------------------------------------------------------------------' ;
  148. *
  149. *----------------------------------------------------------------------
  150. *
  151. FINPROC TABRESU ;
  152.  
  153.  

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