Télécharger limemeca.procedur

Retour à la liste

Numérotation des lignes :

  1. * LIMEMECA PROCEDUR AM 96/12/23 21:42:40 2448
  2. 'DEBPROC' limemeca mod1*'MMODEL' tab1*'TABLE' tab2*'TABLE'
  3. mch1*'MCHAML' chp1*'CHPOINT'
  4. chp2/'CHPOINT' coeff/'FLOTTANT';
  5. *
  6. * Analyse limite par l'approche cinematique de structure de poutre
  7. *
  8. * P.Pegon, Aout 90
  9. *
  10. nbmeca1='DIME' tab1;
  11. 'SI' ('NEG' nbmeca1 ('DIME' tab2));
  12. 'MESS' 'LIMEMECA: input tables without the same dimension';
  13. lok=faux;
  14. 'SINON';
  15. lok=vrai;
  16. 'FINSI';
  17. nbmeca1=nbmeca1-1;
  18. *
  19. 'SI' lok;
  20. 'SI' ('EXISTE' tab1 'SOUSTYPE');
  21. 'SI' ('EGA' tab1 . 'SOUSTYPE' 'MECANISMES_PAR_NOEUDS');
  22. lok=vrai;
  23. 'SINON';
  24. lok=faux;
  25. 'MESS' 'LIMEMECA: input table 1 without the right "SOUSTYPE"';
  26. 'FINSI';
  27. 'FINSI';
  28. 'SI' ('EXISTE' tab2 'SOUSTYPE');
  29. 'SI' ('EGA' tab2 . 'SOUSTYPE' 'MECANISMES_PAR_ELEMENTS');
  30. lok=lok 'ET' vrai;
  31. 'SINON';
  32. lok=faux;
  33. 'MESS' 'LIMEMECA: input table 2 without the right "SOUSTYPE"';
  34. 'FINSI';
  35. 'FINSI';
  36. 'FINSI';
  37. *
  38. 'SI' lok;
  39. chlm1=tab2 . 1;
  40. comp1='EXTR' chlm1 'COMP';
  41. laxi1=faux; ndonn1=4;
  42. 'SI' (('DIME' comp1) > 2);
  43. 'SI' ('EGA' ('EXTR' comp1 3) 'UP2 ');
  44. laxi1=vrai; ndonn1=6;
  45. 'FINSI';
  46. 'FINSI';
  47. *
  48. comp1='EXTR' mch1 'COMP';
  49. 'SI' ('NEG' ('DIME' comp1) ndonn1);
  50. 'MESS' 'LIMEMECA: characteristic field without ' ndonn1
  51. ' components';
  52. lok=faux;
  53. 'FINSI';
  54. 'OUBL' comp1;
  55. *
  56. 'FINSI';
  57. *
  58. 'SI' lok;
  59. mot1='MOTS' 'UX' 'UY' 'RZ'; mot2='MOTS' 'FX' 'FY' 'MZ';
  60. *
  61. me1='EXTR' mod1 'MAIL'; nbme1='NBEL' me1;
  62. nbthet2=ndonn1*nbme1;
  63. *
  64. 'SI' ('NON' ('EXISTE' coeff));
  65. coeff=1.d0;
  66. 'FINSI';
  67. *
  68. tabf1='TABLE' 'VECTEUR';
  69. 'REPE' lab1 nbme1;
  70. elemj0='ELEM' me1 &lab1;
  71. chelmk='REDU' mch1 elemj0;
  72. ind0=nbmeca1+((&lab1-1)*ndonn1);
  73. ind0=ind0+1;
  74. tabf1 . ind0=(-1.d0)*('EXTR' chelmk 1 1 1 'MZ1+');
  75. ind0=ind0+1;
  76. tabf1 . ind0=(-1.d0)*('EXTR' chelmk 1 1 1 'MZ1-');
  77. ind0=ind0+1;
  78. tabf1 . ind0=(-1.d0)*('EXTR' chelmk 1 1 1 'MZ2+');
  79. ind0=ind0+1;
  80. tabf1 . ind0=(-1.d0)*('EXTR' chelmk 1 1 1 'MZ2-');
  81. 'SI' laxi1;
  82. ind0=ind0+1;
  83. tabf1 . ind0=(-1.d0)*('EXTR' chelmk 1 1 1 'F2+ ');
  84. ind0=ind0+1;
  85. tabf1 . ind0=(-1.d0)*('EXTR' chelmk 1 1 1 'F2- ');
  86. 'FINSI';
  87. 'FIN' lab1;
  88. *
  89. 'SI' ('EXISTE' chp2);
  90. tabf10=0.d0;
  91. 'REPE' lab1 nbmeca1;
  92. aa1='XTY' tab1 . &lab1 chp2 mot1 mot2;
  93. tabf1 . &lab1=aa1;
  94. tabf10=tabf10 - (coeff*aa1);
  95. 'FIN' lab1;
  96. tabf1 . 0=tabf10;
  97. 'FINSI';
  98. *
  99. tabi1=tabl;
  100. *
  101. nchp1='XTY' chp1 chp1 mot2 mot2; nchp1=(nchp1**0.5d0)/2.d0;
  102. chp1=chp1/nchp1;
  103. *
  104. tabe1='TABLE'; tdum1='TABLE' 'VECTEUR';
  105. tabe1 . 1=tdum1;
  106. tdum10=1.d0;
  107. 'REPE' lab1 nbmeca1;
  108. aa1='XTY' tab1 . &lab1 chp1 mot1 mot2;
  109. tdum1 . &lab1=aa1;
  110. tdum10=tdum10 + (coeff*aa1);
  111. 'FIN' lab1;
  112. tdum1 . 0=tdum10;
  113. 'OUBL' mot1; 'OUBL' mot2;
  114. *
  115. 'REPE' lab1 nbme1;
  116. elemj0='ELEM' me1 &lab1;
  117. ind0=1+((ndonn1/2)*(&lab1-1));
  118. **
  119. ind0=ind0+1;
  120. tdum1='TABLE' 'VECTEUR';
  121. tabe1 . ind0=tdum1;
  122. tdum10=0.d0;
  123. 'REPE' lab2 nbmeca1;
  124. chelmk='REDU' tab2 . &lab2 elemj0;
  125. rzp1='EXTR' chelmk 1 1 1 'RZP1';
  126. tdum1 . &lab2=rzp1;
  127. tdum10=tdum10 + (coeff*rzp1);
  128. fin lab2;
  129. tdum1 . 0=tdum10;
  130. jnd0=nbmeca1+(ndonn1*(&lab1-1));
  131. tdum1 . (jnd0 + 1)=-1.d0;
  132. tdum1 . (jnd0 + 2)=1.d0;
  133. **
  134. ind0=ind0+1;
  135. tdum1='TABLE' 'VECTEUR';
  136. tabe1 . ind0=tdum1;
  137. tdum10=0.d0;
  138. 'REPE' lab2 nbmeca1;
  139. chelmk='REDU' tab2 . &lab2 elemj0;
  140. rzp2='EXTR' chelmk 1 1 1 'RZP2';
  141. tdum1 . &lab2=rzp2;
  142. tdum10=tdum10 + (coeff*rzp2);
  143. fin lab2;
  144. tdum1 . 0=tdum10;
  145. jnd0=nbmeca1+(ndonn1*(&lab1-1));
  146. tdum1 . (jnd0 + 3)=-1.d0;
  147. tdum1 . (jnd0 + 4)=1.d0;
  148. **
  149. 'SI' laxi1;
  150. ind0=ind0+1;
  151. tdum1='TABLE' 'VECTEUR';
  152. tabe1 . ind0=tdum1;
  153. tdum10=0.d0;
  154. 'REPE' lab2 nbmeca1;
  155. chelmk='REDU' tab2 . &lab2 elemj0;
  156. up2='EXTR' chelmk 1 1 1 'UP2 ';
  157. tdum1 . &lab2=up2;
  158. tdum10=tdum10 + (coeff*up2);
  159. fin lab2;
  160. tdum1 . 0=tdum10;
  161. jnd0=nbmeca1+(ndonn1*(&lab1-1));
  162. tdum1 . (jnd0 + 5)=-1.d0;
  163. tdum1 . (jnd0 + 6)=1.d0;
  164. 'FINSI';
  165. **
  166. 'FIN' lab1;
  167. 'OUBL' me1;
  168. *
  169. iok tabp1 tabs1='SIMP' tabf1 tabi1 tabe1;
  170. 'OUBL' tabs1; 'OUBL' tabf1; 'OUBL' tabi1; 'OUBL' tabe1; 'OUBL' tdum1;
  171. 'SI' ('NEG' iok 0);
  172. lok=faux;
  173. 'MESS' 'LIMEMECA: simplex error code' iok;
  174. 'SI' ('EGA' iok 1);
  175. 'MESS' 'LIMEMECA: unbounded objective function';
  176. 'SINON';
  177. 'MESS' 'LIMEMECA: no solution for the given constraints';
  178. 'FINSI';
  179. 'FINSI';
  180. *
  181. 'FINSI';
  182. *
  183. 'SI' lok;
  184. colim1=(-1.d0)/nchp1*tabp1 . 0;
  185. *
  186. tx1='TABL';
  187. 'REPE' lab1 nbmeca1;
  188. xlab1=(-1.d0)*coeff;
  189. lok='EXISTE' tabp1 &lab1;
  190. 'SI' lok;
  191. 'SI' ('EGA' tabp1 . &lab1 0.d0);
  192. lok=faux;
  193. 'FINSI';
  194. 'FINSI';
  195. 'SI' lok;
  196. xlab1=xlab1+tabp1 . &lab1;
  197. 'SINON';
  198. 'MESS' 'LIMEMECA: the mechanism number'
  199. &lab1 'is not activated --> increase coeff';
  200. 'OUBL' tx1;
  201. 'QUITTER' lab1;
  202. 'FINSI';
  203. tx1 . &lab1=xlab1;
  204. 'FIN' lab1;
  205. *
  206. 'FINSI';
  207. *
  208. 'SI' lok;
  209. 'REPE' lab1 nbmeca1;
  210. 'SI' ('EGA' &lab1 1);
  211. chdlim1=(tx1 . &lab1)*(tab1 . &lab1);
  212. chrlim1=(tx1 . &lab1)*(tab2 . &lab1);
  213. 'SINON';
  214. chdlim1=chdlim1+((tx1 . &lab1)*(tab1 . &lab1));
  215. chrlim1=chrlim1+((tx1 . &lab1)*(tab2 . &lab1));
  216. 'FINSI';
  217. 'FIN' lab1;
  218. 'OUBL' tx1;
  219. 'SINON';
  220. colim1=''; chdlim1=''; chrlim1='';
  221. 'FINSI';
  222. *
  223. 'FINPROC' lok colim1 chdlim1 chrlim1;
  224.  
  225.  

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