Télécharger @ana_lim.procedur

Retour à la liste

Numérotation des lignes :

  1. * @ANA_LIM PROCEDUR KK2000 00/12/18 21:15:33 4049
  2. 'DEBPROC' @ANA_LIM PRECED*'TABLE';
  3. *VERSION 04/96
  4. *
  5. *******************initialisation et recapitulation des donnees
  6. *
  7. *
  8. LIG='MOT' '************************';
  9. 'MESSAGE' LIG;
  10. 'MESSAGE' 'PROCEDURE ANALYSE LIMITE';
  11. 'MESSAGE' LIG;
  12. *
  13. PRECED.'TESTURG'=FAUX;
  14. *
  15. ***critere de plasticite?
  16. *
  17. 'SI'( 'NON' ('EXISTE' PRECED 'CRITERE'));
  18. PRECED.'CRITERE'=VONMISES;
  19. 'FINSI';
  20. 'MESSAGE' 'critere de plasticite ' PRECED.'CRITERE';
  21. *
  22. ***limite d'ecoulement?
  23. *
  24. 'SI'( 'NON' ('EXISTE' PRECED 'SIGLIM'));
  25. PRECED.'SIGLIM'=1.;
  26. 'FINSI';
  27. *
  28. ***precision?
  29. *
  30. 'SI'( 'NON' ('EXISTE' PRECED 'PRECISION'));
  31. PRECED.'PRECISION'=1E-3;
  32. 'FINSI';
  33. 'MESSAGE' 'precision' PRECED.'PRECISION';
  34. *
  35. ****nombre d'iterations maximum?
  36. *
  37. 'SI'( 'NON' ('EXISTE' PRECED 'MAXITERATION'));
  38. PRECED.'MAXITERATION'=50;
  39. 'FINSI';
  40. 'MESSAGE' 'maxiterations' PRECED.'MAXITERATION';
  41. *
  42. ****pas d"affichage des resultats?
  43. *
  44. 'SI'( 'NON' ('EXISTE' PRECED 'PAS'));
  45. PRECED.'PAS'=1;
  46. 'FINSI';
  47. *
  48. ****est ce un calcul coque?
  49. *
  50. 'SI' ('NON' ('EXISTE' PRECED 'CALCUL_COQUE'));
  51. 'SI' ('EXISTE' (PRECED.'MODELE') 'ELEM' 'COQ2'
  52. 'COQ3' 'COQ4' 'COQ6' 'COQ8' 'DKT' 'DST');
  53. 'MESSAGE' LIG;
  54. 'MESSAGE' 'Il manque les caracteristiques de la coque';
  55. 'QUITTER' @ANA_LIM;
  56. 'FINSI';
  57. 'SINON';
  58. 'MESSAGE' 'calcul coque';
  59. 'FINSI';
  60. *
  61. *
  62. ****procedure personnelle?
  63. *
  64. 'SI'( 'NON' ('EXISTE' PRECED 'PROCEDURE_PERSO1'));
  65. PRECED.'PROCEDURE_PERSO1'=FAUX;
  66. 'FINSI';
  67. *
  68. *
  69. ****reprise?
  70. 'SI'( 'NON' ('EXISTE' PRECED 'REPRISE'));
  71. PRECED.'ITER'=0;
  72. PRECED.'YOUNG'=2.e5;
  73. PRECED.'RESCL'=1.;
  74. 'SINON';
  75. 'MESSAGE' 'reprise';
  76. 'FINSI';
  77. 'MESSAGE' LIG;
  78. *
  79. ****definition de l'element si calcul coque pour calcul de ENER
  80. *
  81. TSET1=FAUX;
  82. 'SI' ( 'EXISTE' ('EXTR' PRECED.'MODELE' GEOM) 'ALFA');
  83. TSET1=VRAI;
  84. 'FINSI';
  85. ********************************
  86. **********resolution
  87. ********************************
  88. *
  89. 'REPETER' BOUC1 PRECED.'MAXITERATION';
  90. *
  91. *****************test d'iteration
  92. *
  93. PRECED.'ITER'= ((PRECED.'ITER') + 1);
  94. *
  95. *****************definition du materiau
  96. *
  97. MA = 'MATE' PRECED.'MODELE' 'YOUN' PRECED.'YOUNG' 'NU' .49 ;
  98. *
  99. ***************cas d'une coque
  100. *
  101. 'SI'('EXISTE' PRECED 'CALCUL_COQUE');
  102.  
  103. 'SI'( ('DIME' ('EXTRAIRE' PRECED.'CALCUL_COQUE' COMP) 'EGA' 4)
  104. 'ET' (EXISTE ('EXTRAIRE' PRECED.'CALCUL_COQUE' COMP) EPAI)
  105. 'ET' (EXISTE ('EXTRAIRE' PRECED.'CALCUL_COQUE' COMP) ALFA) );
  106.  
  107. MA1 = 'MATE' PRECED.'MODELE' 'YOUN' 0. 'NU' 0. 'EPAI' 1. 'ALFA' 1.;
  108. MA2 = MA1 '*' PRECED.'CALCUL_COQUE' ;
  109. MA = MA '+' MA2 ;
  110.  
  111. 'SINON';
  112. 'MESSAGE' 'Les carac. de la coque doivent etre YOUN NU EPAI ALFA' ;
  113. 'QUITTER' @ANA_LIM;
  114.  
  115. 'FINSI';
  116. 'FINSI';
  117.  
  118. *****************calcul de la matrice de rigidite
  119. *
  120. RIGI1 = (('RIGI' PRECED.'MODELE' MA) ET PRECED.'BLOCAGES_MECANIQUES');
  121. *
  122. *****************resolution
  123. *
  124. PRECED.'DEPLA' = 'RESO' RIGI1 (PRECED.'RESCL'*PRECED.'CHARGEMENT');
  125. *
  126. ******************calcul des contraintes et des contraintes equivalentes
  127. *
  128. PRECED.'CONTRAINTES'='SIGMA' PRECED.'MODELE' MA
  129. PRECED.'DEPLA';
  130. 'SI'( 'NON' ('EXISTE' PRECED 'CALCUL_COQUE'));
  131. 'SI' ('EGA' PRECED.'CRITERE' VONMISES);
  132. PRECED.'MECARUINE'='CHAN' TYPE ('VMISE' PRECED.'MODELE'
  133. PRECED.'CONTRAINTES') SCALAIRE;
  134. 'FINSI';
  135. 'SI'('EGA' PRECED.'CRITERE' TRSCA);
  136. PRECED.'MECARUINE'='CHAN' TYPE ('TRESCA' PRECED.'MODELE'
  137. PRECED.'CONTRAINTES') SCALAIRE;
  138. 'FINSI';
  139. 'SINON';
  140. 'SI' ('EGA' PRECED.'CRITERE' VONMISES);
  141. PRECED.'MECARUINE'='CHAN' TYPE ('VMISE' PRECED.'MODELE'
  142. PRECED.'CONTRAINTES' PRECED.'CALCUL_COQUE') SCALAIRE;
  143. 'FINSI';
  144. 'SI'('EGA' PRECED.'CRITERE' TRSCA);
  145. PRECED.'MECARUINE'='CHAN' TYPE ('TRESCA' PRECED.'MODELE'
  146. PRECED.'CONTRAINTES' PRECED.'CALCUL_COQUE')
  147. SCALAIRE;
  148. 'FINSI';
  149. 'FINSI';
  150. SMAX1='MAXI' PRECED.'MECARUINE';
  151. *
  152. *******************mise en place du retour et adimensionnement avec
  153. * chargement elastique
  154. *
  155. 'SI' ( (PRECED.'ITER') 'EGA' 1);
  156. PRECED.'CONTINI'=PRECED.'CONTRAINTES';
  157. 'SI' ( 'EGA' ('TYPE' (PRECED.'SIGLIM')) FLOTTANT);
  158. PRECED.'CELAS'=(PRECED.'SIGLIM')/SMAX1;
  159. 'SINON';
  160. PRECED.'CELAS'=('MAXI' (PRECED.'SIGLIM'))/SMAX1;
  161. 'FINSI';
  162. 'MESSAGE' ' ';
  163. 'MESSAGE'' ratio elastique:' PRECED.'CELAS';
  164. 'MESSAGE' ' ';
  165. 'MESSAGE' ' iter critere charge limite baro';
  166. 'FINSI';
  167. *
  168. *
  169. *****************adaptation des modules d'young
  170. *
  171. PRECED.'YOUNG'=((PRECED.'SIGLIM')*
  172. ((PRECED.'MECARUINE')**(-1.)))*PRECED.'YOUNG';
  173. *ajout version anterieur: pbs si Ymax/Ymin trop grand
  174. *Ymax/Ymin bride a 1.e4. A voir ...
  175. 'SI' ( (PRECED.'ITER') '>EG' 3);
  176. YMAX='MAXI' PRECED.'YOUNG';
  177. YMIN='MINI' PRECED.'YOUNG';
  178. YTEST=YMAX/YMIN;
  179. 'SI' ( (YTEST) '>EG' 1E4);
  180. PRECED.'BRIDE'=YMIN*1E4;
  181. 'FINSI';
  182. 'SI'('EXISTE' PRECED 'BRIDE');
  183. MASQSUP=PRECED.'YOUNG' 'MASQUE' 'SUPERIEUR' PRECED.'BRIDE';
  184. MASQINF= PRECED.'YOUNG' 'MASQUE' 'EGINF' PRECED.'BRIDE';
  185. PRECED.'YOUNG'=(((PRECED.'YOUNG')*MASQINF) +
  186. (((PRECED.'BRIDE')*MASQSUP)));
  187. 'FINSI';
  188. 'FINSI';
  189. *
  190. *******calcul du numerateur
  191. *
  192. 'SI'( 'NON' ('EXISTE' PRECED 'CALCUL_COQUE'));
  193. EPS1='EPSI' PRECED.'MODELE' PRECED.'DEPLA';
  194. 'SINON';
  195. EPS1='EPSI' PRECED.'MODELE' PRECED.'DEPLA' PRECED.'CALCUL_COQUE';
  196. 'FINSI';
  197. EPS=(PRECED.'SIGLIM'*(
  198. ('ENER' PRECED.'MODELE' PRECED.'CONTRAINTES'
  199. EPS1)*((PRECED.'MECARUINE')**(-1.))));
  200. 'SI' ( (TSET1) 'OU' ( 'NON' ('EXISTE' PRECED 'CALCUL_COQUE')));
  201. NUM='INTG' PRECED.'MODELE' EPS;
  202. 'SINON';
  203. NUM='INTG' PRECED.'MODELE' EPS PRECED.'CALCUL_COQUE';
  204. 'FINSI';
  205. *
  206. *******calcul du denominateur
  207. *
  208. MLPRIM = 'MOTS' 'UX' 'UY' 'UZ' 'RX' 'RY' 'RZ' 'UR' 'UT' 'LX';
  209. MLDUAL = 'MOTS' 'FX' 'FY' 'FZ' 'MX' 'MY' 'MZ' 'FR' 'FT' 'FLX';
  210. 'SI' ( PRECED.'ITER' 'EGA' 1 );
  211. 'SI'( 'NON' ('EXISTE' PRECED 'CALCUL_COQUE'));
  212. PRECED.'REA1'='BSIG' PRECED.'MODELE' PRECED.'CONTINI';
  213. 'SINON';
  214. PRECED.'REA1'='BSIG' PRECED.'MODELE' PRECED.'CONTINI'
  215. PRECED.'CALCUL_COQUE';
  216. 'FINSI';
  217. 'FINSI';
  218. DENO='XTY' PRECED.'REA1' PRECED.'DEPLA' MLDUAL MLPRIM;
  219. *
  220. ******charge limite
  221. *
  222. CL=(NUM/DENO);
  223. *
  224. ******criteres de convergence
  225. *
  226. 'SI' ( 'EGA' ('TYPE' (PRECED.'SIGLIM')) FLOTTANT);
  227. BAROM=((SMAX1 - (PRECED.'SIGLIM'))/(PRECED.'SIGLIM'));
  228. 'SINON';
  229. BAROM1=((PRECED.'MECARUINE') + ((-1.)*(PRECED.'SIGLIM')));
  230. BAROM1=(BAROM1*((PRECED.'SIGLIM')**(-1.)));
  231. BAROM='MAXI' BAROM1;
  232. 'FINSI';
  233. *
  234. CRITERE=ABS(CL - PRECED.'RESCL')/cl;
  235. *
  236. *******************sortie des donnees
  237. *
  238. 'SI' ((((PRECED.'ITER') + 1)/(1+((PRECED.'ITER')/PRECED.'PAS')))
  239. 'EGA' (PRECED.'PAS'));
  240. 'MESSAGE' PRECED.'ITER' CRITERE CL BAROM;
  241. 'FINSI';
  242. *
  243. 'SI' ( PRECED.'ITER' > 3 );
  244. PRECED.'RUINE'=PRECED.'MECARUINE' ELEM
  245. COMPRIS PRECED.'SIGLIM' SMAX1;
  246. NBRUINE='NBEL' PRECED.RUINE;
  247. 'MESSAGE' ' nb d"elements ruines' nbruine;
  248. 'FINSI';
  249.  
  250. *
  251. *******************evolution de la charge
  252. *
  253. 'SI' (( PRECED.'ITER' > 0 ) 'ET' ( PRECED.'ITER' < 2 ));
  254. PRECED.'LISTCL'='PROG' (CL);
  255. 'FINSI';
  256. 'SI' ('NON' (( PRECED.'ITER' > 0 ) 'ET' ( PRECED.'ITER' < 2 )));
  257. PRECED.'LISTCL'=(PRECED.'LISTCL' 'ET' ('PROG' (CL)));
  258. 'FINSI';
  259. *
  260. *******************test de comportement de l'algorithme
  261. *
  262. 'SI' (((PRECED.'ITER' '>EG' 2) 'ET' (SMAX1 < 1.)) 'ET' (SMAX1 > 0.));
  263. 'MESSAGE' ' ';
  264. 'MESSAGE' ' ***avert1: SIGEQMAX < SIGY***';
  265. 'MESSAGE' '***verifiez la bonne convergence***';
  266. 'MESSAGE' ' ';
  267. 'FINSI';
  268. *
  269. BOOL4= PRECED.'ITER' > 1;
  270. BOOL6= (PRECED.RESCL < CL);
  271. 'SI' (BOOL4 ET (BOOL6 ET ('NON' (PRECED.'TESTURG'))));
  272. 'MESSAGE' ' ';
  273. 'MESSAGE' '***avert2: parametre de charge croissant***';
  274. 'MESSAGE' '***verifiez la bonne convergence***';
  275. 'MESSAGE' ' ';
  276. 'FINSI';
  277. *
  278. 'SI' ((PRECED.'ITER' 'EGA' (PRECED.'MAXITERATION'))
  279. ET ('NON' (PRECED.'TESTURG')));
  280. 'MESSAGE' '****************************************************';
  281. 'MESSAGE' '***AVERT3: AUGMENTER LE NB D"ITERATIONS***';
  282. 'MESSAGE' ' ***CONVERGENCE NON ATTEINTE***';
  283. 'MESSAGE' ' iter critere charge limite barometre';
  284. 'MESSAGE' PRECED.'ITER' CRITERE CL BAROM;
  285. 'MESSAGE' '****************************************************';
  286. PRECED.'TESTURG'=VRAI;
  287. 'FINSI';
  288. PRECED.RESCL=CL;
  289. *
  290. *
  291. ********************procedures perso
  292. *
  293. 'SI'( PRECED.'PROCEDURE_PERSO1' );
  294. 'MESSAGE' ' ';
  295. 'MESSAGE' '---debut de la procedure PERSO1---';
  296. 'MESSAGE' ' ';
  297. PERSO1 PRECED;
  298. 'MESSAGE' ' ';
  299. 'MESSAGE' '---fin de la procedure PERSO1---';
  300. 'MESSAGE' ' ';
  301. 'FINSI';
  302. *
  303. *
  304. ********************verification de la convergence
  305. *
  306. BOOLERR1= CRITERE '&lt;EG' PRECED.PRECISION;
  307. 'SI' (BOOLERR1 ET ('NON' (PRECED.'TESTURG')));
  308. 'MESSAGE' '****************************************************';
  309. 'MESSAGE' '***CONVERGENCE ATTEINTE***';
  310. 'MESSAGE' ' iter critere charge limite barometre';
  311. 'MESSAGE' PRECED.'ITER' CRITERE CL BAROM;
  312. 'MESSAGE' '****************************************************';
  313. PRECED.'TESTURG'=VRAI;
  314. 'FINSI';
  315. *
  316. *********************destruction
  317. *
  318. MENAGE;
  319. *
  320. ********************test d'arrets d'urgence du programme
  321. *
  322. 'SI' (PRECED.'TESTURG');
  323. 'QUITTER' BOUC1;
  324. 'FINSI';
  325. *
  326. 'FIN' BOUC1;
  327. *
  328. *********sortie de resultats
  329. *
  330. PRECED.'LISTITER'='PROG' 1 'PAS' 1 PRECED.'ITER' ;
  331. MOT1 = 'MOT' 'CHARGE LIMITE';
  332. PRECED.'EVOLCL'='EVOL' TURQUOISE MANU ITERATIONS PRECED.LISTITER
  333. MOT1 PRECED.LISTCL;
  334. PRECED.'CADIM'=(PRECED.RESCL)/(PRECED.CELAS);
  335. 'MESSAGE' 'J"AI TERMINE - A.PONTER/D.PLANCQ';
  336. 'MESSAGE' 'VERSION 04/96 DER/SERA';
  337. 'MESSAGE' 'RENSEIGNEMENTS 42.25.74.92';
  338. *
  339. 'FINPROC' PRECED;
  340.  

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