Télécharger fronabs.procedur

Retour à la liste

Numérotation des lignes :

  1. * FRONABS PROCEDUR WANG 96/09/17 21:16:10 2279
  2. 'DEBPROC' FRONABS TAB_VAL*'TABLE ' TYP_FRON/'MOT '
  3. NHARM/'ENTIER ';
  4. ************************************************************************
  5. *
  6. * F R O N A B S
  7. * -------------
  8. *
  9. * FONCTION:
  10. * ---------
  11. *
  12. * Calcule la matrice d'amortissement d'une frontière absorbante.
  13. *
  14. * PHRASE D'APPEL (EN GIBIANE):
  15. * ----------------------------
  16. *
  17. * RIG1 = FRONABS TAB1 ( TYP_FRON ) NHARM ;
  18. *
  19. * OPERANDES:
  20. * ----------
  21. *
  22. * TAB1 'TABLE ' indice 'FRONTIERE' : frontière.
  23. * indice 'MASSE_VOLUMIQUE' : masse volumique.
  24. * indice 'POISSON' : coef de poisson.
  25. * indice 'YOUNG' : module d'young.
  26. * TTYP_FRON 'MOT ' type de la frontière utilisée
  27. * type WHITE
  28. * type LYSMER (par défaut)
  29. * NHARM 'ENTIER' numéro du mode FOURIER ( en MODE FOUR )
  30. *
  31. * RESULTATS:
  32. * ----------
  33. *
  34. * RIG1 'RIGIDITE' matrice d'amortissement.
  35. *
  36. *
  37. *
  38. * REMARQUE:
  39. * ---------
  40. * On ne traite pas les modèles tridimensionnels ni les frontières
  41. * obliques.
  42. *
  43. *
  44. *
  45. * AUTEUR, DATE DE CREATION:
  46. * -------------------------
  47. *
  48. * L. V. 13 février 1989
  49. *
  50. * MODIFICATION:
  51. * -------------
  52. *
  53. * F. WANG 12 mai 1992
  54. *
  55. * - Modification de la matrice d'amortissement de la frontière
  56. * horizontale de l'option axisymetrique 'AXIS' ;
  57. *
  58. * - Creation de frontière absorbante pour le mode de calcul
  59. * déformation plane 'PLANDEFO' .
  60. *
  61. *
  62. ************************************************************************
  63. *
  64. SI = 'MOT' 'SI' ; SINON = 'MOT' 'SINON' ;
  65. FINSI = 'MOT' 'FINSI' ;
  66. REPETER = 'MOT' 'REPETER'; FIN = 'MOT' 'FIN';
  67. EXISTE = 'MOT' 'EXISTE' ;
  68. *
  69. MAIL = TAB_VAL.'FRONTIERE' ;
  70. YO = TAB_VAL.'YOUNG' ;
  71. RHO = TAB_VAL.'MASSE_VOLUMIQUE' ;
  72. NU = TAB_VAL.'POISSON' ;
  73. DEUXPI = 2.0 * PI ;
  74. L_NU = 'PROG' 0. 0.05 0.1 0.15 0.2 0.25 0.3
  75. 0.35 0.4 0.45 ;
  76. L_COEFA = 'PROG' 0.959 0.967 0.975 0.982 0.986 0.986 0.986
  77. 0.992 1.007 1.011 ;
  78. L_COEFB = 'PROG' 0.769 0.761 0.756 0.751 0.747 0.744 0.742
  79. 0.740 0.746 0.773 ;
  80. *
  81. G = YO / ( 2.0 * ( 1.0 + NU ) ) ;
  82. CS = ( G / RHO ) ** 0.5 ;
  83. CP = ( ( 2.0 * (1.0 - NU) ) / ( 1.0 - ( 2.0 * NU ) ) ) ** 0.5 ;
  84. CP = CP * CS ;
  85. *
  86. TYP_MODE = 'MOT' ('VALEUR' 'MODE') ;
  87. SI ('EGA' TYP_MODE 'FOUR') ;
  88. LIST_MOT = 'MOTS' 'UR' 'UZ' 'UT' ;
  89. ITYP = 1 ;
  90. SINON ; SI ('EGA' TYP_MODE 'AXIS') ;
  91. LIST_MOT = 'MOTS' 'UR' 'UZ' ;
  92. ITYP = 2 ;
  93. SINON ; SI ('EGA' TYP_MODE 'PLANDEFO') ;
  94. LIST_MOT = 'MOTS' 'UX' 'UY' ;
  95. ITYP = 3 ;
  96. SINON ;
  97. MESSAGE ' ***** ERREUR *****' ;
  98. MESSAGE ' On ne traite pas les modèles tridimensionnels.'
  99. MESSAGE ' Arrêt de la procédure.' ;
  100. QUITTER BOUCERR ;
  101. FINSI ; FINSI ; FINSI ;
  102. SI (EXISTE TYP_FRON) ;
  103. SI ('EGA' TYP_FRON 'WHITE') ;
  104. MESSAGE ' Type de frontière : WHITE' ;
  105. SI (NU '<EG' 0.45) ;
  106. COEF_A = 'IPOL' NU L_NU L_COEFA ;
  107. COEF_B = 'IPOL' NU L_NU L_COEFB ;
  108. SINON ;
  109. S2 = ( 1.0 - (2.0 * NU) ) / ( 2.0 * (1.0 - NU) ) ;
  110. S = S2 ** 0.5 ;
  111. RAP = 8.0 / (15.0 * PI) ;
  112. COEF_A = RAP * ( 5.0 + (2.0 * S) - (2.0 * S2) ) ;
  113. COEF_B = RAP * ( 3.0 + (2.0 * S) ) ;
  114. FINSI ;
  115. SINON ;
  116. MESSAGE ' Type de frontière : LYSMER' ;
  117. COEF_A = 1. ;
  118. COEF_B = 1. ;
  119. FINSI ;
  120. SINON ;
  121. MESSAGE ' Type de frontière : LYSMER' ;
  122. COEF_A = 1. ;
  123. COEF_B = 1. ;
  124. FINSI ;
  125. CP = COEF_A * CP ;
  126. CS = COEF_B * CS ;
  127. *
  128. * Boucle sur les éléments
  129. *
  130. NB_ELEM = 'NBEL' MAIL ;
  131. I_EL = 0 ;
  132. REPETER BOUCELE NB_ELEM ;
  133. I_EL = I_EL + 1 ;
  134. ELEM_I = MAIL 'ELEMENT' I_EL ;
  135. ELEM_B = 'CHANGER' ELEM_I 'POI1' ;
  136. NOEU1 = ELEM_B 'POINT' 1 ;
  137. NOEU2 = ELEM_B 'POINT' 2 ;
  138. NOEU3 = ELEM_B 'POINT' 3 ;
  139. R1 = 'COOR' NOEU1 1 ;
  140. R3 = 'COOR' NOEU3 1 ;
  141. Z1 = 'COOR' NOEU1 2 ;
  142. Z3 = 'COOR' NOEU3 2 ;
  143. *
  144. * Paroi verticale
  145. *
  146. SI ( ('ABS' (R3 - R1)) '<' 1.E-5 ) ;
  147. LONG = 'ABS' (Z3 - Z1) ;
  148. AV = RHO * R1 * LONG * 4.0 / 30. ;
  149. BV = RHO * R1 * LONG * 2.0 / 30. ;
  150. CV = RHO * R1 * LONG * 16.0 / 30. ;
  151. DV = RHO * R1 * LONG * -1.0 / 30. ;
  152. EV = RHO * R1 * LONG * 2.0 / 30. ;
  153. FV = RHO * R1 * LONG * 4.0 / 30. ;
  154. SI ('EGA' ITYP 1) ;
  155. LIST_REE = 'PROG' (AV * CP) 0. (AV * CS) 0. 0. (AV * CS)
  156. (BV * CP) 0. 0. (CV * CP) 0. (BV * CS) 0. 0.
  157. (CV * CS) 0. 0. (BV * CS) 0. 0. (CV * CS)
  158. (DV * CP) 0. 0. (EV * CP) 0. 0. (FV * CP) 0.
  159. (DV * CS) 0. 0. (EV * CS) 0. 0. (FV * CS) 0. 0.
  160. (DV * CS) 0. 0. (EV * CS) 0. 0. (FV * CS) ;
  161.  
  162. SI ( NHARM EGA 0 ) ;
  163. C_HARM = 2.0 * PI ;
  164. FINSI ;
  165. SI ( NHARM EGA 1 ) ;
  166. C_HARM = PI ;
  167. FINSI ;
  168.  
  169. LIST_REE = LIST_REE * C_HARM ;
  170.  
  171. SINON ; SI ('EGA' ITYP 2) ;
  172. LIST_REE = 'PROG' (AV * CP) 0. (AV * CS)
  173. (BV * CP) 0. (CV * CP) 0. (BV * CS) 0. (CV * CS)
  174. (DV * CP) 0. (EV * CP) 0. (FV * CP) 0.
  175. (DV * CS) 0. (EV * CS) 0. (FV * CS) ;
  176. LIST_REE = LIST_REE * 2.0 * PI ;
  177.  
  178. ******************** Modification 12 mai 92 **********************
  179.  
  180. SINON ; SI ('EGA' ITYP 3) ;
  181. LIST_REE = ( 'PROG' (AV * CP) 0. (AV * CS)
  182. (BV * CP) 0. (CV * CP) 0. (BV * CS) 0. (CV * CS)
  183. (DV * CP) 0. (EV * CP) 0. (FV * CP) 0.
  184. (DV * CS) 0. (EV * CS) 0. (FV * CW) ) / R1 ;
  185. FINSI ;
  186. **********************************************************************
  187. FINSI ; FINSI ;
  188. *
  189. * Paroi horizontale
  190. *
  191. SINON ; SI ( ('ABS' (Z3 - Z1)) '<' 1.E-5 ) ;
  192. LONG = 'ABS' (R3 - R1) ;
  193. AH = RHO * LONG * (( 7.0 * R1) + R3) / 60.0 ;
  194. BH = RHO * LONG * ( 4.0 * R1 ) / 60.0 ;
  195. CH = RHO * LONG * ((16.0 * R1) + (16.0 * R3)) / 60.0 ;
  196. DH = RHO * LONG * ((-1.0 * R1) + (-1.0 * R3)) / 60.0 ;
  197. EH = RHO * LONG * ( 4.0 * R3 ) / 60.0 ;
  198. FH = RHO * LONG * ( R1 + ( 7.0 * R3)) / 60.0 ;
  199.  
  200. SI ('EGA' ITYP 1) ;
  201. LIST_REE = 'PROG' (AH * CS) 0. (AH * CP) 0. 0. (AH * CS)
  202. (BH * CS) 0. 0. (CH * CS) 0. (BH * CP) 0. 0.
  203. (CH * CP) 0. 0. (BH * CS) 0. 0. (CH * CS)
  204. (DH * CS) 0. 0. (EH * CS) 0. 0. (FH * CS) 0.
  205. (DH * CP) 0. 0. (EH * CP) 0. 0. (FH * CP) 0. 0.
  206. (DH * CS) 0. 0. (EH * CS) 0. 0. (FH * CS) ;
  207.  
  208. SI ( NHARM EGA 0 ) ;
  209. C_HARM = 2.0 * PI ;
  210. FINSI ;
  211. SI ( NHARM EGA 1 ) ;
  212. C_HARM = PI ;
  213. FINSI ;
  214.  
  215. LIST_REE = LIST_REE * C_HARM ;
  216.  
  217. ******************* Modification 12 mai 92 **********************
  218.  
  219. SINON ; SI ('EGA' ITYP 2) ;
  220. LIST_REE = 'PROG' (AH * CS) 0. (AH * CP)
  221. (BH * CS) 0. (CH * CS) 0. (BH * CP) 0. (CH * CP)
  222. (DH * CS) 0. (EH * CS) 0. (FH * CS) 0.
  223. (DH * CP) 0. (EH * CP) 0. (FH * CP) ;
  224. LIST_REE = LIST_REE * 2.0 * PI ;
  225.  
  226. SINON ; SI ('EGA' ITYP 3) ;
  227. AH = RHO * LONG * 4.0 / 30. ;
  228. BH = RHO * LONG * 2.0 / 30. ;
  229. CH = RHO * LONG * 16.0 / 30. ;
  230. DH = RHO * LONG * -1.0 / 30. ;
  231. EH = RHO * LONG * 2.0 / 30. ;
  232. FH = RHO * LONG * 4.0 / 30. ;
  233.  
  234. LIST_REE = 'PROG' (AH * CS) 0. (AH * CP)
  235. (BH * CS) 0. (CH * CS) 0. (BH * CP) 0. (CH * CP)
  236. (DH * CS) 0. (EH * CS) 0. (FH * CS) 0.
  237. (DH * CP) 0. (EH * CP) 0. (FH * CP) ;
  238. FINSI ;
  239. ***********************************************************************
  240.  
  241. FINSI ; FINSI ;
  242. SINON ;
  243. MESSAGE ' ***** ERREUR *****' ;
  244. MESSAGE ' On ne traite pas des frontières obliques.' ;
  245. MESSAGE ' Arrêt de la procèdure.' ;
  246. QUITTER BOUCELE ;
  247. FINSI ; FINSI ;
  248.  
  249. SI ('EGA' I_EL 1) ;
  250. RIGT = 'MANUEL' 'RIGIDITE' 'TYPE' 'AMORTISSEMENT' ELEM_I
  251. LIST_MOT LIST_REE ;
  252. SINON ;
  253. RIGT = RIGT 'ET' ('MANUEL' 'RIGIDITE' 'TYPE' 'AMORTISSEMENT'
  254. ELEM_I LIST_MOT LIST_REE) ;
  255. FINSI ;
  256. FIN BOUCELE ;
  257.  
  258. 'FINPROC' RIGT ;
  259.  
  260. ***********************************************************************
  261.  
  262.  

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