Télécharger unilater.procedur

Retour à la liste

Numérotation des lignes :

  1. * UNILATER PROCEDUR PV 20/07/28 21:15:01 10665
  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. *
  16. 'DEBP' UNILATER MATAB*'TABLE' FFF*'CHPOINT' MCLE/'MOT' FL/'CHPOINT';
  17.  
  18. * Si il y a lieu,nbnegs est le nombre de multiplicateurs de lagrange contenus da
  19. nbnegs = 0;
  20. nbnegt = 0;
  21. mostab ='MOT' 'NOSTAB';
  22.  
  23. LOG_FL='EGA' ('TYPE' FL) 'CHPOINT' ;
  24. LOG_ITER = 'EGA' ('VALE' 'RESO') 'ITER';
  25.  
  26. 'SI' ('EGA' 'INIB' MCLE);
  27. 'ARGU' TEMP*'RIGIDITE';
  28. MATAB.7 = TEMP;
  29. 'ARGU' TEMP*'LISTENTI';
  30. MATAB.6 = TEMP;
  31. MATAB.'OK' = VRAI ;
  32. 'FINSI';
  33.  
  34. * RRR = MATAB.1 ;
  35. BBB = MATAB.2 ;
  36.  
  37. 'SI' LOG_FL ;
  38. FADZ ='EXCO' FL 'FADH' 'NOID' 'LX' ;
  39. FL ='EXCO' FL 'LX' 'NOID' 'LX' ;
  40. chp2 = BBB * FADZ ;
  41. chp_z = BBB * FL ;
  42. FFF = FFF + chp_z + chp2 ;
  43. 'DETR' chp_z ;
  44. 'DETR' chp2 ;
  45. 'FINSI';
  46.  
  47. STAT = MATAB.3 ;
  48.  
  49. 'SI' STAT ;
  50. 'SI' MATAB.'VRAISUP';
  51. SUP = MATAB.4 ;
  52. 'SINON';
  53. RISUP= MATAB.4 ;
  54. 'FINSI';
  55. 'SINON' ;
  56.  
  57. ************************************************************************
  58. * CALCUL DU SUPER ELEMENT (SI BESOIN)
  59. ************************************************************************
  60. MMM ='EXTR' MATAB.1 'MAILLAGE';
  61. MMB ='EXTR' BBB 'MAILLAGE';
  62. ** MMU = MMM 'ELEM' 'APPU' 'LARG' MMB;
  63. NTOT='NBNO' MMM ;
  64. NAPP='NBEL' MMB;
  65. ** MESS ' unilater napp ntot' ' ' NAPP ' ' NTOT ;
  66. ** MESS ' comparaison' ' ' (NAPP ** 2.) ' ' (2 * 6 * NTOT ** 1.333333333) ;
  67. * Le super element est suppose etre en n^2 alors que la matrice est en n ^4/3
  68. 'SI' (((NAPP ** 2.) > (( 9 *NTOT) ** 1.333333)) 'OU' MATAB.'NSYM' 'OU' LOG_ITER);
  69. * MESS ' unilater pas de super element' napp ntot;
  70. RISUP = MATAB.1 ;
  71. MATAB.4 = MATAB.1 ;
  72. MATAB.'VRAISUP'= FAUX ;
  73.  
  74. 'SINON';
  75. * mess ' on calcule le super element';
  76. * je remets l'option NOMU car il y a un problème de normalisation avec les mults
  77. * A voir si elle ne pose pas des problèmes de surcontraintes.
  78. SUP ='SUPER' 'RIGI' MATAB.1 BBB ;
  79. MATAB.4 = SUP ;
  80. MATAB.'VRAISUP'= VRAI ;
  81. 'FINSI';
  82. 'FINSI' ;
  83. **
  84. ** sauver le souci courant pour le reinjecter au dernier resou
  85. souc_co = 'VALE' 'SOUCI';
  86. **
  87. ISUP = MATAB.'VRAISUP' ;
  88. MATAB.3= VRAI;
  89.  
  90. ************************************************************************
  91. * AU CAS OU IL N'Y AURAIT PAS DE DEPIMP
  92. ************************************************************************
  93. FA = FFF + ('DEPI' BBB 0.);
  94. DEPTOT = FA 'EXCO' 'FLX' 'FLX' ;
  95. 'SI' ISUP ;
  96. RISUP= ('EXTRAI' SUP 'RIGI') ;
  97. ** list resu risup;
  98. ** risup = cano risup;
  99. ** list resu risup;
  100. MASUP= 'EXTRAI' RISUP 'MAIL' ;
  101. DEPTOT = DEPTOT - (DEPTOT REDU MASUP);
  102. F = 'SUPER' 'CHAR' SUP FA ;
  103. f_lx = f 'EXCO' 'FLX' 'NOID';
  104. f_lx_m = f_lx 'EXTR' 'MAIL';
  105. 'SI' ('NEG' ('TYPE' F_LX_m) 'ENTIER');
  106. nbnegs = f_lx_m nbno;
  107. 'FINSI';
  108. 'SINON';
  109. RISUP = MATAB.1 * 1;
  110. F=FA 'ENLE' 'FLX';
  111. 'FINSI';
  112. 'SI' ('NON' MATAB.'VRAISUP');
  113. nbnegs = 0;
  114. 'FINSI';
  115. FDEPTO=F + DEPTOT ;
  116.  
  117. ************************************************************************
  118. * INITIALISATION
  119. ************************************************************************
  120. 'SI' ('NON' STAT);
  121. MATAB.'OK' = VRAI;
  122. 'FINSI';
  123. 'SI' (STAT 'ET' MATAB.'OK') ;
  124. RITOU = MATAB.5 ;
  125. LISEA = MATAB.6 ;
  126. *** BLOINI = BBB ;
  127. FDEPTOT=FDEPTO;
  128. 'SINON' ;
  129. 'SI' ('EXISTE' MATAB 7) ;
  130. BLOINI = MATAB.7;
  131. RITOU = RISUP 'ET' MATAB.7 ;
  132. LISEA = MATAB.6 'ET' ('LECT') ;
  133. FDEPTOT=FDEPTO;
  134. 'SINON';
  135. BLOINI = BBB ;
  136. * RITOU = RISUP * 1.;
  137. RITOU = RISUP 'ET' BLOINI ;
  138. * INITIALISER LISEA A UNE VALEUR IMPOSSIBLE
  139. LISEA ='LECT' -1 ;
  140. FDEPTOT= F ;
  141. 'FINSI';
  142. ** 'MESS' 'on est bien la ';
  143. ** RITOU = RISUP 'ET' BLOINI ;
  144. ** RITOU = RISUP * 1. ;
  145. 'FINSI' ;
  146. *
  147. MATAB.'OK' = VRAI;
  148. matab.5 = 1 ;
  149. matab.6 = 1 ;
  150.  
  151. LITOT ='LECT' ;
  152. BLOTOT = BBB ;
  153.  
  154. nbe = 0;
  155. MAFREIN = 'VIDE' 'MAILLAGE' / 'POI1';
  156. ************************************************************************
  157. * RECHERCHE DES BLOQUAGES ACTIFS
  158. ************************************************************************
  159. OPTION ='MOT' 'RAPIDE';
  160. 'SI' ('EXIS' FL) ;
  161. OPTIO2='MOT' 'INIT';
  162. 'SINON';
  163. OPTIO2='MOT' 'CONT';
  164. 'FINSI';
  165.  
  166. I = 0 ;
  167. NCONV = VRAI ;
  168.  
  169. 'REPETER' BOUCL1 ;
  170. I = I + 1 ;
  171. * oublier les soucis des iterations precedentes
  172. 'SOUC' souc_co;
  173. 'SI' LOG_ITER;
  174. DE = 'RESO' 'NOID' 'NOUNIL' RITOU FDEPTOT;
  175. 'SINON';
  176. MAFREIN*'MAILLAGE' NBE*'ENTIER' DE = 'RESO' 'NOID' 'ENSE' 'NOUNIL' MOSTAB RITOU FDEPTOT ;
  177. nbnegt = 'DIAG' ritou;
  178. 'FINSI';
  179. 'SI' LOG_FL;
  180. BLOTO LISEN LOG1 = BLOTOT 'EXCITER' DEPTOT DE MAFREIN OPTION FL ;
  181. 'SINON';
  182. BLOTO LISEN LOG1 = BLOTOT 'EXCITER' DEPTOT DE MAFREIN OPTION ;
  183. 'FINSI';
  184. 'SI' ('NON' ('VERI' DE));
  185. DE = 'VIDE' 'CHPOINT'/'DIFFUS';
  186. 'MESS' 'mise a zero des deplacements';
  187. 'QUIT' boucl1;
  188. 'FINSI';
  189. * list lisen;
  190. 'SI' ((I 'EGA' 5) 'ET' ('EGA' OPTION 'RAPIDE'));
  191. OPTION ='MOT' 'MOYEN';
  192. 'FINSI';
  193.  
  194. 'SI' (('NEG' 'INIB' MCLE) 'OU' (I 'NEG' 1));
  195. 'SI' ((LISEN 'EGA' LISEA) 'OU' LOG1) ;
  196. 'SI' (I 'NEG' 1) ;
  197. 'SI' ((NBE 'EGA' 0) 'OU' ('EGA' OPTION 'QAPIDE'));
  198. NCONV= FAUX ;
  199. 'QUIT' BOUCL1;
  200. 'SINON';
  201. M1 = 'EXTR' (RISUP ET BLOTO) 'MAIL';
  202. M2 = 'EXTR' RITOU 'MAIL';
  203. M3 = M1 'DIFF' M2;
  204. 'SI' (('NBEL' M3) 'EGA' 0) ;
  205. NCONV= FAUX ;
  206. 'QUIT' BOUCL1 ;
  207. 'FINSI';
  208. 'FINSI';
  209. 'FINSI';
  210. 'FINSI';
  211.  
  212. 'SI' ((LISEN 'DANS' LITOT) 'OU' (('MULT' &BOUCL1 100) 'ET' ('NEG' OPTION 'LENT'))) ;
  213. 'SI' ('EGA' OPTION 'LENT');
  214. 'SI' ('EGA' OPTIO2 'CONT');
  215. OPTIO2= 'MOT' 'INIT';
  216. OPTION= 'MOT' 'RAPIDE';
  217. BLOTO=BBB;
  218.  
  219. LITOT= 'LECT' ;
  220. LISEN=LISEN * -1;
  221. 'MESS' ' *** UNILATER strategie alternative a la' ' ' I ' eme iteration';
  222. mostab = 'MOT' 'STAB';
  223. I=0;
  224. 'SINON';
  225. 'QUIT' BOUCL1;
  226. 'FINSI';
  227. 'SINON';
  228. OPTION = 'MOT' 'LENT';
  229. LITOT = 'LECT';
  230. 'MESS' ' *** UNILATER strategie lente a la' ' ' I ' eme iteration';
  231. 'FINSI';
  232. 'FINSI';
  233. 'FINSI';
  234. LITAN=LITOT;
  235. LITOT=LITOT 'ET' LISEN;
  236. 'DETR' LITAN;
  237. 'DETR' DE ;
  238. * 'SI' ('EXISTE' MATAB 5);
  239. * 'SI' ('NEG' RITOU (MATAB.5)); 'DETR' RITOU; 'FINSI';
  240. * 'SINON';
  241. 'DETR' RITOU;
  242. * 'FINSI';
  243. * 'SI' (I 'NEG' 1);GEO='EXTRAI' BLOT 'MAIL';'DETR' GEO 'TOUT';
  244. * 'DETR' BLOT 'ELEM' ;'FINSI';
  245.  
  246. RITOU = RISUP 'ET' BLOTO ;
  247. BLOT = BLOTO ;
  248. LISEA = LISEN ;
  249. FDEPTOT= FDEPTO;
  250. 'FIN' BOUCL1;
  251.  
  252. * CFBUG = 'CHAINE' ' *** UNILATER convergence a l''iteration ';
  253. * 'MESS' CFBUG ' ' I;
  254. 'SI' (NBE 'NEG' 0) ;
  255. MATAB.'OK' = FAUX;
  256. 'FINSI';
  257.  
  258. MATAB.5 = RITOU ;
  259. MATAB.6 = LISEA ;
  260. MATAB.7 = BLOTO ;
  261. MATAB.13 = nbnegt - nbnegs;
  262.  
  263. 'SI' NCONV ;
  264. NCONV =FAUX;
  265. MATAB.'OK'=FAUX;
  266. 'FINSI';
  267.  
  268. 'SI' NCONV ;
  269. 'MESS' ' *** UNILATER il n y a pas de solution au systeme ';
  270. RITOU = RISUP 'ET' BBB ;
  271. LISEA = 'LECT' 0;
  272. MATAB.5 = RITOU ;
  273. MATAB.6 = LISEA ;
  274. MATAB.7 = BLOTO;
  275. 'SOUCI' 2345;
  276.  
  277. 'SINON';
  278. * CFBUG = 'CHAINE' ' *** UNILATER convergence a l''iteration ';
  279. 'SI' ('NON' MATAB.'OK');
  280. CFBUG = 'CHAINE' ' *** UNILATER non convergence a l''iteration ';
  281. 'MESS' CFBUG I ' ' nbe;
  282. MATAB.13 = 1234 ;
  283. 'SOUCI' 1234;
  284. 'FINSI';
  285. MATAB.'NITER' = I;
  286.  
  287. ************************************************************************
  288. * CALCUL SUR TOUTE LA STRUCTURE
  289. ************************************************************************
  290. 'SI' ISUP;
  291. DE1 ='SUPER' 'DEPL' SUP DE FFF;
  292. DE2 = DE1 'ET' (DE 'ENLE' 'LX') 'NOER';
  293. 'DETR' DE1;
  294. 'DETR' DE ;
  295. 'DETR' FA ;
  296. 'SINON';
  297. DE2 = DE ;
  298. 'FINSI' ;
  299.  
  300. 'SI' LOG_FL;
  301. DE2 = DE2 - FADZ ;
  302. FL = FL 'REDU' (BBB 'EXTR' 'MAIL' 'MULT');
  303. DE3 = DE2 - FL ;
  304. 'DETR' DE2 ;
  305. DE2 = DE3 ;
  306. 'FINSI';
  307. 'FINSI' ;
  308. nbcand = dime lisen;
  309. nbact = somm lisen;
  310. * mess 'unilater convergence a:' ' ' i ' candidats:' ' ' nbcand ' actifs:' ' ' nbact;
  311.  
  312.  
  313.  
  314. 'DETR' F ;
  315. 'DETR' DEPTOT ;
  316. 'DETR' FDEPTOT ;
  317.  
  318. 'SI' ( 'EXISTE' MATAB 50) ;
  319. DE3 = 'MREM' DE2 matab.50 matab.10 matab.11;
  320. 'RESPRO' DE3;
  321. 'SINON' ;
  322. * mess ' dans unilater de2 ';list de2;
  323. 'RESPRO' DE2 ;
  324. 'FINSI' ;
  325.  
  326. 'SI' ('EGA' 'INIB' MCLE);
  327. 'SI' LOG_FL ;
  328. 'RESP' 'bid' 'bid' 'bid' 'bid';
  329. 'SINON';
  330. 'RESP' 'bid' 'bid' 'bid' ;
  331. 'FINSI';
  332. 'FINSI';
  333. 'FINP' ;
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  

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