Télécharger @lafail.procedur

Retour à la liste

Numérotation des lignes :

  1. * @LAFAIL PROCEDUR KK2000 99/11/30 21:15:07 3720
  2. *
  3. ************************************************************************
  4. * PROCEDURA @LAFAIL
  5. ************************************************************************
  6. *
  7. * Descrizione : permette di verificare la resistenza ultima di un
  8. * laminato annullando la proprieta' elastiche delle
  9. * lamine che man mano arrivano a rottura
  10. *
  11. * Sintassi : @LAFAIL TAB_LAM TAB_FAIL ;
  12. *
  13. *
  14. * Autore/Data : Miliozzi A. 10/04/1997
  15. *
  16. *
  17. * Revisioni :
  18. *
  19. ************************************************************************
  20. *
  21. *--- INPUT
  22. *=========
  23. *
  24. * TAB_LAM Tavola caratteristica del laminato
  25. *
  26. * TAB_FAIL Tavola caratteristica per condurre un calcolo di
  27. * resistenza per un laminato
  28. * La tavola contiene in ingresso:
  29. *
  30. * Indice Descrizione
  31. * 'SOUSTYPE' MOT di valore 'LAMINATE_FAIL'
  32. * 'TYP_FAIL' MOT identificante il tipo di verifica da
  33. * effettuare. Essa puo' valere:
  34. * 'FPF' : First Ply Failure (Default)
  35. * 'LPF' : Last Ply Failure
  36. * 'ITERMAX' ENTIER n. massimo di iterazioni per la
  37. * convergenza. (Default 10)
  38. * 'PREC' FLOTTANT indicante il valore della
  39. * precisione di convergenza. (Default 1.e-2)
  40. * 'CLIM' Oggetto RIGIDITE delle condizioni
  41. * al contorno
  42. * 'CHARG' Oggetto CHPOINT dei carichi
  43. * 'RIG2' Oggetto RIGIDITE per una rigidezza
  44. * aggiuntiva a quella del laminato (OPZIONALE)
  45. *
  46. * In uscita invece conterra':
  47. *
  48. * 'FMF' Fattore moltiplicativo del carico per
  49. * First Ply Failure
  50. * 'NPF' N. identificativo prima lamina rotta
  51. * 'NZF' N. zona di appartenenza della prima
  52. * lamina rotta
  53. * 'FML' Fattore moltiplicativo del carico per
  54. * Last Ply Failure
  55. *--- OUTPUT
  56. *==========
  57. *
  58. ************************************************************************
  59. *
  60. DEBPROC @LAFAIL TT1*TABLE TLPF*TABLE ;
  61. *---------------------------------------------------------------------
  62. * FASE DI VERIFICA DEI DATI IN INGRESSO
  63. *---------------------------------------------------------------------
  64. *
  65. * VERIFICA SULLA CORRETTEZZA DELLE TAVOLE IN INPUT
  66. *
  67. SI (EXIST TLPF 'SOUSTYPE') ;
  68. SI (NEG (TLPF.'SOUSTYPE') 'LAMINATE_FAIL' ) ;
  69. MESS ' >>> ERROR : LAMINATE FAILURE TABLE NOT FOUND ! ' ;
  70. QUITTER @LAFAIL ;
  71. FINSI;
  72. SINON ;
  73. MESS ' >>> ERROR : LAMINATE FAILURE TABLE NOT FOUND ! ' ;
  74. QUITTER @LAFAIL ;
  75. FINSI;
  76. *
  77. * VERIFICA SULLA SCELTA DEL TIPO DI FAILURE PER IL LAMINATO
  78. *
  79. MFAIL2 = 'FPF' ;
  80. SI ( EXIST TLPF 'TYP_FAIL' ) ;
  81. MFAIL1 = TLPF.'TYP_FAIL' ;
  82. SI (EGA MFAIL1 'FPF') ;
  83. MFAIL2 = MFAIL1 ;
  84. SINON ;
  85. SI (EGA MFAIL1 'LPF') ;
  86. MFAIL2 = MFAIL1 ;
  87. SINON ;
  88. MESS '>>> ERROR : LAMINATE FAILURE TYPE INCORRECT ! ' ;
  89. QUITTER @LAFAIL ;
  90. FINSI ;
  91. FINSI ;
  92. FINSI ;
  93. *
  94. * VERIFICA SULLA SCELTA DEL CRITERIO DI ROTTURA PER LA LAMINA
  95. *
  96. SI (EXIST TLPF 'CRIT') ;
  97. MCR1 = TLPF.'CRIT' ;
  98. SI ( (NEG MCR1 'MAXSTRESS') ET (NEG MCR1 'MAXSTRAIN') ET
  99. (NEG MCR1 'TSAI-WU') ET (NEG MCR1 'TSAI-HILL') ET
  100. (NEG MCR1 'HOFFMANN') ) ;
  101. MESS '>>> ERROR : LAMINA FAILURE CRITERIA DESCRIPTOR INCORRECT !' ;
  102. QUITTER @LAFAIL ;
  103. FINSI ;
  104. SINON ;
  105. MESS '>>> ERROR : LAMINA FAILURE CRITERIA DESCRIPTOR NOT FOUND !' ;
  106. QUITTER @LAFAIL ;
  107. FINSI ;
  108. *
  109. * DETERMINAZIONE DEL NUMERO DI ITERAZIONI MASSIMO PER LA CONVERGENZA
  110. *
  111. NITMAX = 10 ;
  112. SI (EXIST TLPF 'ITERMAX') ; NITMAX = TLPF.'ITERMAX' ; FINSI ;
  113. *
  114. * DETERMINAZIONE DELLA PRECISIONE DA RAGGIUNGERE DURANTE LA ITERAZIONI
  115. * PER LA CONVERGENZA
  116. *
  117. DELTA = 1.E-2 ;
  118. SI (EXIST TLPF 'PREC') ; DELTA = TLPF.'PREC' ; FINSI ;
  119. *
  120. * VERIFICA DELL'ESISTENZA DELL'OGGETTO RIGIDITE CONTENENTE LE CONDIZIONI
  121. * AL CONTORNO PER LA STRUTTURA
  122. *
  123. SI (EXIST TLPF 'CLIM') ;
  124. VTOT = TLPF.'CLIM' ;
  125. SINON ;
  126. MESS '>>> ERROR : RIGIDITE OBJET (LIMIT CONDITIONS) NOT FOUND !' ;
  127. QUITTER @LAFAIL ;
  128. FINSI ;
  129. *
  130. * VERIFICA DELL'ESISTENZA DELL'OGGETTO CHPOINT CONTENENTE IL CARICO CUI
  131. * E' SOGGETTA LA STRUTTURA
  132. *
  133. SI (EXIST TLPF 'CHARG') ;
  134. FFT = TLPF.'CHARG' ;
  135. SINON ;
  136. MESS '>>> ERROR : CHPOINT OBJET (LOADS) NOT FOUND !' ;
  137. QUITTER @LAFAIL ;
  138. FINSI ;
  139. *
  140. * VERIFICA DELL'ESISTENZA DELL'OGGETTO RIGIDITE CONTENENTE UNA
  141. * RIGIDEZZA AGGIUNTIVA RAPPRESENTATIVA DI UN PARTE DELLA STRUTTURA
  142. * NON COMPOSTA DI MATERIALE COMPOSITO LAMINATO
  143. *
  144. LOG1 = EXIST TLPF 'RIG2' ;
  145. *
  146. *--------------------------------------------------------------------
  147. * FASE DI VERIFICA DELLA RESISTENZA DI UN LAMINATO
  148. *--------------------------------------------------------------------
  149. *
  150. * CALCOLO N. DEGLI STRATI COMPLESSIVI
  151. *
  152. NZON = (DIME TT1) - 2 ;
  153. NITER = 0 ;
  154. NZ = 0 ;
  155. REPETER LOOPX NZON ;
  156. NZ = NZ + 1 ;
  157. NITER = NITER + (DIME TT1.NZ) - 6 ;
  158. FIN LOOPX ;
  159. *
  160. FM_PREV = 0. ;
  161. FMC0 = 0. ; RCT0 = 0. ; FMC1 = 1. ;
  162. NL1 = 0 ;
  163. REPETER ITER1 NITER ;
  164. NL1 = NL1 + 1 ;
  165. MESS '========================================================' ;
  166. MESS ' CHECK FOR FAILURE OF LAMINA N. ' NL1 ;
  167. MESS '========================================================' ;
  168. MESS ' ' ;
  169. MESS ' ITER FAILURE FM ZONE PLY ' ;
  170. MESS ' N. RATE FACTOR NUMBER NUMBER';
  171. MESS ' ' ;
  172. *
  173. * CALCOLO DEGLI SPOSTAMENTI
  174. *
  175. SI LOG1 ; DEP1 = @LACALC TT1 VTOT FFT (TLPF . 'RIG2') ; SINON ;
  176. DEP1 = @LACALC TT1 VTOT FFT ; FINSI ;
  177. *
  178. NIT = 0 ;
  179. *
  180. REPETER LOOP0 ;
  181. *
  182. NIT = NIT + 1 ;
  183. RCT1 = -1. ; NPT1 = 0 ; NZT1 = 0 ;
  184. NZ1 = 0 ;
  185. REPETER LOOP1 NZON ;
  186. *
  187. NZ1 = NZ1 + 1 ;
  188. *
  189. SI (EGA MCR1 'MAXSTRAIN') ;
  190. TSIEP = @LASIEP TT1 NZ1 DEP1 'EPS' ;
  191. SINON ;
  192. TSIEP = @LASIEP TT1 NZ1 DEP1 'SIG' ;
  193. FINSI ;
  194. *
  195. TCRIT = @LACRIT TT1 NZ1 TSIEP FMC1 MCR1 ;
  196. *
  197. NPL = (DIME TT1 . NZ1) - 6 ;
  198. NP1 = 0. ;
  199. NP2 = 0 ;
  200. RC1 = -1. ;
  201. REPETER LOOP2 NPL ;
  202. NP2 = NP2 + 1 ;
  203. RC2 = MAXI (TCRIT . NP2) ;
  204. SI (RC2 > RC1) ; RC1 = RC2 ; NP1 = NP2 ; FINSI ;
  205. FIN LOOP2 ;
  206. *
  207. SI (RC1 > RCT1) ; RCT1 = RC1 ; NPT1 = NP1 ; NZT1 = NZ1 ; FINSI ;
  208. *
  209. FIN LOOP1 ;
  210. *
  211. MESS NIT RCT1 FMC1 NZT1 NPT1 ;
  212. *
  213. DRC1 = ABS ( RCT1 - 1.) ;
  214. SI (DRC1 <EG DELTA) ; QUITTER LOOP0 ; FINSI ;
  215. SI (NIT EGA NITMAX) ;
  216. MESS '----- ATTENTION !! -----';
  217. MESS 'Maximum Iterations Number Reached.';
  218. MESS ' Forced Convergency Assumed ';
  219. MESS '----------------------------------';
  220. QUITTER LOOP0 ;
  221. FINSI ;
  222. *
  223. FMC2 = FMC0 + ( (FMC1 - FMC0) / (RCT1 - RCT0) * (1. - RCT0) ) ;
  224. *
  225. FMC0 = FMC1 ; FMC1 = FMC2 ;
  226. RCT0 = RCT1 ;
  227. *
  228. FIN LOOP0 ;
  229. *
  230. FMCX = ABS FMC1 ;
  231. *
  232. SI (NL1 EGA 1) ;
  233. TLPF . 'FMF' = FMCX ;
  234. TLPF . 'RCF' = RCT1 ;
  235. TLPF . 'NPF' = NPT1 ;
  236. TLPF . 'NZF' = NZT1 ;
  237. FM_PREV = FMC1 ;
  238. SINON ;
  239. SI (FM_PREV <EG FMCX) ; FM_PREV = FMCX ; FINSI ;
  240. FINSI ;
  241. *
  242. SI (EGA MFAIL2 'FPF') ; QUITTER @LAFAIL ; FINSI ;
  243. *
  244. * AZZERAMENTO PROPRIETA' ELASTICHE DELLA LAMINA GIUNTA A ROTTURA
  245. *
  246. TT = TT1 . MCLOL . (TT1 . NZT1 . NPT1 . IDM ) ;
  247. YYG1 = TT . YG1 ;
  248. YYG2 = TT . YG2 ;
  249. YG12 = TT . G12 ;
  250. TT . YG1 = 1.E-10 * YYG1 ;
  251. TT . YG2 = 1.E-10 * YYG2 ;
  252. TT . G12 = 1.E-10 * YG12 ;
  253. *
  254. FMC0 = 0. ; RCT0 = 0. ; FMC1 = FMCX ;
  255. *
  256. FIN ITER1 ;
  257. *
  258. TLPF.'FML' = FM_PREV ;
  259. *
  260. ************************************************************************
  261. * FINE PROCEDURA @LAFAIL
  262. ************************************************************************
  263. FINPROC TLPF ;
  264. *
  265.  
  266.  

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