Télécharger unilater.procedur

Retour à la liste

Numérotation des lignes :

  1. * UNILATER PROCEDUR PV090527 25/05/28 21:15:02 12274
  2. * MODIF JUILLET 1987 POUR PERMETTRE DES JEUX DANS LES LES 2 DIRECTIONS
  3. *
  4. * CETTE PROCEDURE EST APPELER PAR RESOU
  5. * LES ARGUMENTS SONT : MATAB TABLE CONTENANT LES INFORMATIONS UTILES
  6. * C'EST A DIRE RRR BBB STAT SUP RITOU ET LISEA
  7. * FFF FORCE A METTRE AU SECOND MEMBRE
  8. *
  9. * RRR MATRICE DE RIGIDITE SANS LES APPUIS
  10. * BBB MATRICE DE RIGIDITE DES APPUIS
  11. * STAT LOGIQUE INDIQUANT SI C'EST LE PREMIER PASSAGE
  12. * SUP SUPER ELEMENT EQUIVALENT
  13. * RITOU DERNIERE RAIDEUR UTILISEE DANS LA RESOLUTION
  14. * LISEA DESCRIPTEUR DES APPUIS COURAMMENT ACTIFS
  15. * FL CHAMPS DE FORCES LIMITES DE FROTTEMENT
  16. *
  17. 'DEBP' UNILATER MATAB*'TABLE' FFF*'CHPOINT' MCLE/'MOT' FL/'CHPOINT';
  18.  
  19. * Si il y a lieu,nbnegs est le nombre de multiplicateurs de lagrange contenus da
  20. ** nbnegs = 0;
  21. ** nbnegt = 0;
  22. mostab ='MOT' 'NOSTAB';
  23.  
  24. 'SI' ('EGA' 'INIB' MCLE);
  25. 'ARGU' TEMP*'RIGIDITE';
  26. MATAB.7 = TEMP;
  27. 'ARGU' TEMP*'LISTENTI';
  28. MATAB.6 = TEMP;
  29. MATAB.'OK' = VRAI ;
  30. 'FINSI';
  31. *
  32. * en cas de frottement on lit le champs de force limite de frottement, et eventuellement
  33. * la partie non symetrique de la matrice de frottement
  34. * et la matrice de transfert du multiplicateur de contact au multiplicateur de frottement
  35. * pour avoir les bonnes reactions
  36. *
  37. LOG_RF = FAUX;
  38. LOG_FL='EGA' ('TYPE' FL) 'CHPOINT' ;
  39. 'SI' LOG_FL;
  40. 'ARGU' RFROT/'RIGIDITE';
  41. LOG_RF='EGA' ('TYPE' RFROT) 'RIGIDITE' ;
  42. 'SI' LOG_RF;
  43. 'ARGU' RTRSF*'RIGIDITE';
  44. 'SI' ('VIDE' RFROT); LOG_RF = FAUX;
  45. ** 'MESS' 'rfrot vide dans unilater';
  46. 'FINSI';
  47. 'FINSI';
  48. 'FINSI';
  49. LOG_ITER = 'EGA' ('VALE' 'RESO') 'ITER';
  50. RRR = MATAB.1 ;
  51. BBB = MATAB.2 ;
  52.  
  53. 'SI' LOG_FL ;
  54. FADZ ='EXCO' FL 'FADH' 'NOID' 'LX' ;
  55. FL ='EXCO' FL 'LX' 'NOID' 'LX' ;
  56. chp2 = BBB * FADZ ;
  57. FFF = FFF + chp2;
  58. 'DETR' chp2 ;
  59. *1 'SI' LOG_RF;
  60. *1 'SINON';
  61. chp_z = BBB * FL ;
  62. FFF = FFF + chp_z ;
  63. 'DETR' chp_z ;
  64. *1 'FINSI';
  65. 'FINSI';
  66.  
  67. STAT = MATAB.3 ;
  68. 'SI' STAT ;
  69. 'SI' MATAB.'VRAISUP';
  70. SUP = MATAB.4 ;
  71. 'SINON';
  72. RISUP= MATAB.4 ;
  73. 'FINSI';
  74. 'SINON' ;
  75.  
  76. ************************************************************************
  77. * CALCUL DU SUPER ELEMENT (SI BESOIN)
  78. **** Le choix de calculer le super element est maintenant fait dans SUPE
  79. ************************************************************************
  80. ** MMM ='EXTR' MATAB.1 'MAILLAGE';
  81. ** MMB ='EXTR' BBB 'MAILLAGE';
  82. ** MMU = MMM 'ELEM' 'APPU' 'LARG' MMB;
  83. ** NTOT='NBNO' MMM ;
  84. ** NAPP='NBNO' MMB;
  85. ** MESS ' unilater napp ntot' ' ' NAPP ' ' NTOT ;
  86. ** MESS ' comparaison' ' ' (NAPP ** 2.) ' ' (2 * 6 * NTOT ** 1.333333333) ;
  87. * Le super element est suppose etre en n^2 alors que la matrice est en n ^4/3
  88. * test reporte dans supri
  89. ** 'SI' (((NAPP ** 2.) > ((30 *NTOT) ** 1.333333)) 'OU' MATAB.'NSYM' 'OU' LOG_ITER 'ET' FAUX);
  90. ** MESS ' unilater pas de super element' napp ntot;
  91. ** RISUP = MATAB.1 ;
  92. ** MATAB.4 = MATAB.1 ;
  93. ** MATAB.'VRAISUP'= FAUX ;
  94. **
  95. ** 'SINON';
  96. ** mess ' on calcule le super element';
  97. * je remets l'option NOMU car il y a un problème de normalisation avec les mults
  98. * A voir si elle ne pose pas des problèmes de surcontraintes.
  99. SUP ='SUPER' 'RIGI' MATAB.1 BBB ;
  100. MATAB.4 = SUP ;
  101. MATAB.'VRAISUP'= VRAI ;
  102. ** 'FINSI';
  103. 'FINSI' ;
  104. **
  105. ** sauver le souci courant pour le reinjecter au dernier resou
  106. souc_co = 'VALE' 'SOUCI';
  107. **
  108. ISUP = MATAB.'VRAISUP' ;
  109. MATAB.3= VRAI;
  110.  
  111. ************************************************************************
  112. * AU CAS OU IL N'Y AURAIT PAS DE DEPIMP
  113. ************************************************************************
  114. FA = FFF + ('DEPI' BBB 0.);
  115. DEPTOT = FA 'EXCO' 'FLX' 'FLX' ;
  116. 'SI' ISUP ;
  117. RISUP= 'EXTRAI' SUP 'RIGI' ;
  118. MASUP= 'EXTRAI' RISUP 'MAIL' ;
  119. F = 'SUPER' 'CHAR' SUP FA ;
  120. F=F 'ENLE' 'FLX';
  121. ** DEPTOT = DEPTOT - (DEPTOT REDU MASUP);
  122. 'SINON';
  123. RISUP = MATAB.1 * 1;
  124. F=FA 'ENLE' 'FLX';
  125. 'FINSI';
  126.  
  127. FDEPTO=F + DEPTOT ;
  128.  
  129. ************************************************************************
  130. * INITIALISATION
  131. ************************************************************************
  132. conva1 = vrai;
  133. 'SI' ('NON' STAT);
  134. MATAB.'OK' = VRAI;
  135. 'FINSI';
  136. 'SI' (STAT 'ET' MATAB.'OK' 'ET' ('NON' LOG_RF)) ;
  137. RITOU = MATAB.5 ;
  138. LISEA = MATAB.6 ;
  139. FDEPTOT=FDEPTO;
  140. 'SINON' ;
  141. 'SI' ('EXISTE' MATAB 7) ;
  142. BLOINI = MATAB.7;
  143. 'DETR' RITOU;
  144. RITOU = RISUP 'ET' MATAB.7 ;
  145. LISEA = MATAB.6 'ET' ('LECT') ;
  146. FDEPTOT=FDEPTO;
  147. 'SINON';
  148. BLOINI = BBB ;
  149. 'DETR' RITOU;
  150. RITOU = RISUP 'ET' BLOINI ;
  151. * INITIALISER LISEA A UNE VALEUR IMPOSSIBLE
  152. LISEA ='LECT' -1 ;
  153. FDEPTOT= F ;
  154. conva1 = faux;
  155. 'FINSI';
  156. 'FINSI' ;
  157. *
  158. MATAB.'OK' = VRAI;
  159. matab.5 = 1 ;
  160. matab.6 = 1 ;
  161.  
  162. LITOT ='LECT' ;
  163. BLOTOT = BBB ;
  164.  
  165. nbe = 0;
  166. MAFREIN = 'VIDE' 'MAILLAGE' / 'POI1';
  167. ************************************************************************
  168. * RECHERCHE DES BLOQUAGES ACTIFS
  169. ************************************************************************
  170. OPTION ='MOT' 'RAPIDE';
  171. 'SI' ('EXIS' FL) ;
  172. OPTIO2='MOT' 'INIT';
  173. 'SINON';
  174. OPTIO2='MOT' 'CONT';
  175. 'FINSI';
  176.  
  177. I = 0 ;
  178. NCONV = VRAI ;
  179.  
  180. 'SI' LOG_RF ;
  181. BLOTOT = BLOTOT et rfrot;
  182. 'FINSI';
  183. 'REPETER' BOUCL1 ;
  184. I = I + 1 ;
  185. * oublier les soucis des iterations precedentes
  186. 'SOUC' souc_co;
  187. 'SI' LOG_ITER;
  188. NBE = 0;
  189. CHFREIN = 'VIDE' CHPOINT;
  190. DE = 'RESO' 'SOUCI' 'NOID' 'NOUNIL' RITOU FDEPTOT;
  191. 'SINON';
  192. NBE*'ENTIER' DE*CHPOINT CHFREIN*CHPOINT = 'RESO' 'SOUCI' 'NOID' 'ENSE' 'NOUNIL' MOSTAB RITOU FDEPTOT ;
  193. 'FINSI';
  194. maens = (chFrein 'EXCO' 'LX' 'LX') 'EXTR' 'MAILLAGE';
  195. 'SI' ('>' ('NBNO' maens) 0) ;
  196. fens = 'MANU' 'CHPO' maens 1 'FLX' 1. 'NATURE' 'DISCRET' ;
  197. NBF*'ENTIER' CHFREIN*CHPOINT BID*CHPOINT = 'RESO' 'SOUCI' 'NOID' 'ENSE' 'NOUNIL' MOSTAB RITOU FENS ;
  198. mess 'unilater correction mode d ensemble iteration' ' ' I ;
  199. 'FINSI';
  200.  
  201. 'SI' LOG_FL;
  202. BLOTO LISEN LOG1 = BLOTOT 'EXCITER' DEPTOT DE CHFREIN OPTION FL ;
  203. 'SINON';
  204. BLOTO LISEN LOG1 = BLOTOT 'EXCITER' DEPTOT DE CHFREIN OPTION ;
  205. 'FINSI';
  206. ** list lisen;
  207. 'SI' ('NON' ('VERI' DE));
  208. DE = 'VIDE' 'CHPOINT'/'DIFFUS';
  209. 'MESS' 'mise a zero des deplacements';
  210. 'QUIT' boucl1;
  211. 'FINSI';
  212. *
  213. 'SI' ((I 'EGA' 5) 'ET' ('EGA' OPTION 'RAPIDE'));
  214. OPTION ='MOT' 'MOYEN';
  215. 'FINSI';
  216. *
  217. 'SI' (('NEG' 'INIB' MCLE) 'OU' (I 'NEG' 1));
  218. 'SI' ((LISEN 'EGA' LISEA) 'OU' LOG1) ;
  219. 'SI' conva1 ;
  220. 'SI' (NBE 'EGA' 0) ;
  221. NCONV= FAUX ;
  222. 'QUIT' BOUCL1;
  223. 'SINON';
  224. 'SI' ('NEG' OPTION 'RAPIDE') ;
  225. M1 = 'EXTR' (RISUP ET BLOTO) 'MAIL';
  226. M2 = 'EXTR' RITOU 'MAIL';
  227. M3 = M1 'DIFF' M2;
  228. 'SI' (('NBEL' M3) 'EGA' 0) ;
  229. NCONV= FAUX ;
  230. 'QUIT' BOUCL1 ;
  231. 'FINSI';
  232. 'FINSI';
  233. 'FINSI';
  234. 'FINSI';
  235. 'FINSI';
  236. conva1 = vrai;
  237.  
  238. 'SI' ((LISEN 'DANS' LITOT) 'OU' (('MULT' &BOUCL1 100) 'ET' ('NEG' OPTION 'LENT'))) ;
  239. 'SI' ('EGA' OPTION 'LENT');
  240. 'SI' ('EGA' OPTIO2 'CONT');
  241. OPTIO2= 'MOT' 'INIT';
  242. OPTION= 'MOT' 'RAPIDE';
  243. BLOTO=BBB;
  244.  
  245. LITOT= 'LECT' ;
  246. LISEN=LISEN * -3;
  247. 'MESS' ' *** UNILATER strategie alternative a la' ' ' I ' eme iteration';
  248. mostab = 'MOT' 'STAB';
  249. I=0;
  250. 'SINON';
  251. 'QUIT' BOUCL1;
  252. 'FINSI';
  253. 'SINON';
  254. OPTION = 'MOT' 'LENT';
  255. LITOT = 'LECT';
  256. 'MESS' ' *** UNILATER strategie lente a la' ' ' I ' eme iteration';
  257. 'FINSI';
  258. 'FINSI';
  259. 'FINSI';
  260. LITAN=LITOT;
  261. LITOT=LITOT 'ET' LISEN;
  262. 'DETR' LITAN;
  263. 'DETR' DE ;
  264. **'SI' (I 'NEG' 1);
  265. 'DETR' RITOU;
  266. **'FINSI';
  267.  
  268. RITOU = RISUP 'ET' BLOTO ;
  269. BLOT = BLOTO ;
  270. LISEA = LISEN ;
  271. FDEPTOT= FDEPTO;
  272. 'FIN' BOUCL1;
  273.  
  274. * CFBUG = 'CHAINE' ' *** UNILATER convergence a l''iteration ';
  275. * 'MESS' CFBUG ' ' I;
  276. 'SI' (NBE 'NEG' 0) ;
  277. MATAB.'OK' = FAUX;
  278. 'FINSI';
  279.  
  280. MATAB.5 = RITOU ;
  281. MATAB.6 = LISEA ;
  282. MATAB.7 = BLOTO ;
  283. ** MATAB.13 = nbnegt - nbnegs;
  284.  
  285. 'SI' NCONV ;
  286.  
  287. NCONV =FAUX;
  288. MATAB.'OK'=FAUX;
  289. 'FINSI';
  290.  
  291. 'SI' NCONV ;
  292.  
  293. 'MESS' ' *** UNILATER il n y a pas de solution au systeme ';
  294. RITOU = RISUP 'ET' BBB ;
  295. LISEA = 'LECT' 0;
  296. MATAB.5 = RITOU ;
  297. MATAB.6 = LISEA ;
  298. MATAB.7 = BLOTO;
  299. 'SOUCI' 2345;
  300.  
  301. 'SINON';
  302. * CFBUG = 'CHAINE' ' *** UNILATER convergence a l''iteration ';
  303. 'SI' ('NON' MATAB.'OK');
  304. CFBUG = 'CHAINE' ' *** UNILATER non convergence a l''iteration ';
  305. 'MESS' CFBUG ' ' I ' ' nbe;
  306. MATAB.13 = 1119 ;
  307. 'SOUCI' 1119;
  308. 'FINSI';
  309. MATAB.'NITER' = I;
  310.  
  311. ************************************************************************
  312. * CALCUL SUR TOUTE LA STRUCTURE
  313. ************************************************************************
  314. 'SI' ISUP;
  315. DE1 ='SUPER' 'DEPL' SUP DE FFF;
  316. DE2 = DE1 'ET' (DE 'ENLE' 'LX') 'NOER';
  317. 'DETR' DE1;
  318. 'DETR' DE ;
  319. 'DETR' FA ;
  320. 'SINON';
  321. DE2 = DE ;
  322. 'FINSI' ;
  323.  
  324. 'SI' LOG_FL;
  325. DE3 = DE2 - FADZ ;
  326. 'DETR' DE2;
  327. DE2 = DE3;
  328. 'SI' LOG_RF;
  329. * transfert de la reaction de contact sur la reaction de frottement
  330. DE3 = RTRSF * DE2 ;
  331. DE3 = DE3 CHAN ATTRIBUT NATURE DIFFUS;
  332. ****** DE3 = DE3 'REDU' (BBB 'EXTR' 'MAIL' 'MULT');
  333. DE2 = DE2 + DE3;
  334. 'DETR' DE3;
  335. DE3 = DE2;
  336. 'FINSI';
  337. *1 'SINON';
  338. FL = FL 'REDU' (BBB 'EXTR' 'MAIL' 'MULT');
  339. DE2 = DE3 - FL;
  340. 'DETR' DE3 ;
  341. *1 'FINSI';
  342. 'FINSI';
  343. 'FINSI' ;
  344.  
  345. 'DETR' F ;
  346. 'DETR' DEPTOT ;
  347. 'DETR' FDEPTOT ;
  348.  
  349. 'SI' ( 'EXISTE' MATAB 50) ;
  350. DE3 = 'MREM' DE2 matab.50 matab.10 matab.11;
  351. 'RESPRO' DE3;
  352. 'SINON' ;
  353. * mess ' dans unilater de2 ';list de2;
  354. 'RESPRO' DE2 ;
  355. 'FINSI' ;
  356.  
  357. 'SI' ('EGA' 'INIB' MCLE);
  358. 'SI' LOG_FL ;
  359. 'RESP' 'bid' 'bid' 'bid' 'bid';
  360. 'SINON';
  361. 'RESP' 'bid' 'bid' 'bid' ;
  362. 'FINSI';
  363. 'FINSI';
  364. 'FINP' ;
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  

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