Télécharger excel2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : excel2.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. optio echo 0;
  5. * excel2.dgibi
  6. *
  7. * deux methode sont proposees dans l'opérateur exce :
  8. * la methode standard ( minimisation convexe) avec t0 = 0.6;
  9. * la methode move limite;
  10. * analyse de fiabilite. on est deja passe dans l'espace centre reduit
  11. * et on cherche le min de la distance a l'origine sur les variables
  12. *
  13. * la contrainte est que f0-vonmises<0
  14. *
  15. *
  16. * min de ( (SOMME ( Ui**2) )**0.5)
  17. * avec Ui =( Xi - mxi) /sxi et xi = P0 r0 r1 f0
  18. * sachant que f0 -VMISES(p0 ,r0,r1) =<0
  19. *
  20. message ' fichier de donnees : excel2.dgibi';
  21. xr0 = 55.;
  22. xr1 = 95.;
  23. xf0 = 290.;
  24. xp0 = 180.;
  25. *
  26. * donnée des constantes
  27. *
  28. graph=faux;
  29. mr0= 50.; sr0=2.5;
  30. mr1=100.; sr1=5.;
  31. mf0=300.; sf0=20.;
  32. mp0=130.; sp0=8.;
  33. *
  34. * procedur e de maillage
  35. *
  36. debproc cunu r0*flottant r1*flottant p0*flottant desine*logique;
  37. opti dime 2 elem qua8 mode axis;
  38. p1 = r0 0; p2 = r1 0;
  39. li= p1 droi 4 p2;
  40. su = li rota 4 90. ( 0. 0.);
  41. lip = cote 4 su;
  42. mo = model su mecanique elastique ;
  43. ma = mate mo young 200000. nu 0.3;
  44. ri = rigi mo ma;
  45. bl = bloquer uz li;
  46. ff = pression massif mo lip p0;
  47. de = resou ( ri et bl) ff;
  48. ss = sigma de mo ma;
  49. se = changer noeud mo ss;
  50. vm = vmis se mo ;
  51. sr = maxi vm;
  52. si desine;
  53. trac su vm mo;
  54. finsi;
  55. finproc sr;
  56. *
  57. * petite procedur pour calculer les conditions et les derivees
  58. * les inconnues r0 r1 f0 p0 sont dans la table tvx0
  59. debproc intmci tmci txv0;
  60. desi = faux; si graph;desi=vrai;finsi;
  61.  
  62. tmci . 0 = txv0 . 3 - (cunu txv0.1 tvx0.2 tvx0.4 desi );
  63. tmci . 3 = 1.;desi=faux;
  64. tmci . 1 =(( cunu (txv0.1 - 1.) tvx0.2 tvx0.4 desi) -
  65. ( cunu (txv0.1 + 1.) tvx0.2 tvx0.4 desi )) / 2.;
  66. tmci . 2 =(( cunu txv0.1 (tvx0.2 - 1.) tvx0.4 desi) -
  67. ( cunu txv0.1 ( tvx0.2 + 1.) tvx0.4 desi )) / 2.;
  68. tmci . 4 =(( cunu txv0.1 tvx0.2( tvx0.4 - 1.) desi) -
  69. ( cunu txv0.1 tvx0.2 (tvx0.4 + 1.) desi)) / 2.;
  70. finproc;
  71. *
  72. * procedur pour calculer la fonction et ses derivees
  73. * les inconnues X1 et X2 sont dans la table tvx0
  74. * 1=r0 2=r1 3=f0 4=P0
  75. debpro intvf tvf*table tvx0*table;
  76. xx = ( tvx0 . 1 - mr0 )*( tvx0 . 1 - mr0 ) /sr0 /sr0
  77. +( ( tvx0 . 2 - mr1 )*( tvx0 . 2 - mr1 ) /sr1 /sr1)
  78. +( ( tvx0 . 3 - mf0 )*( tvx0 . 3 - mf0 ) /sf0 /sf0)
  79. +( ( tvx0 . 4 - mp0 )*( tvx0 . 4 - mp0 ) /sp0 /sp0);
  80. yy = 2. * ( tvx0 . 1 - mr0 )/ Sr0/Sr0;
  81. zz = 2. * ( tvx0 . 2 - mr1 )/ Sr1 / sr1;
  82. vv = 2. * ( tvx0 . 3 - mf0 )/ Sf0 / sf0;
  83. ww = 2. * ( tvx0 . 4 - mp0 )/ Sp0 / sp0;
  84. tvf . 0 = xx ** 0.5;
  85. tvf . 1 = 0.5 * yy / tvf . 0;
  86. tvf. 2 = zz * 0.5 / tvf . 0;
  87. tvf. 3 = vv * 0.5 / tvf . 0;
  88. tvf. 4 = ww * 0.5 / tvf . 0;
  89. finproc;
  90.  
  91. *
  92. * debut de l'optimisation
  93. * boucle pour les 2 methodes
  94. repeter met 2;
  95. ta = table;
  96. * definition d'un point de depart
  97. tvx0 = table vecteur;
  98. tvx0.1 = xr0;
  99. tvx0 . 2 = xr1;
  100. tvx0 . 3 = xf0;
  101. tvx0 . 4 = xp0;
  102. *
  103. * tvf contiendra la valeur de la fonction et les derivees
  104. * calculées au point de depart
  105. *
  106. tvf = table vecteur;
  107. *
  108. * tmci contient la ieme condition et les derivees calculees
  109. * au point de départ
  110. *
  111. tmc = table ; tmci=table vecteur; tmc . 1 = tmci;
  112. *
  113. * def de la valeur min des variables dans tvxmin
  114. *
  115. tvxmin = table vecteur;
  116. tvxmin . 1 =1.;
  117. tvxmin . 2 = 1.;
  118. tvxmin . 3 = 1.;
  119. tvxmin . 4 = 1.;
  120. *
  121. * def de la valeur max des variables dans tvxmax
  122. *
  123. tvxmax = table vecteur;
  124. tvxmax. 1 = 1000.;
  125. tvxmax . 2 = 1000.;
  126. tvxmax . 3 = 1000.;
  127. tvxmax . 4 = 1000.;
  128. *
  129. * definition des valeurs au second membre des conditions
  130. *
  131. tvcmax= table vecteur; tvcmax . 1 = 0.;
  132. *
  133. * choix de la méthode et remplissage de la table argument de exce
  134. *
  135. ta . mc = tmc;
  136. ta.vxmin = tvxmin; ta . vxmax = tvxmax;
  137. ta.vcmax = tvcmax;
  138. si (ega &met 1) ;
  139. ta . methode = sta; ta . t0 = 0.6;
  140. titi = mot 'cas 3 methode sta';
  141. sinon;
  142. ta.methode = mov;
  143. titi = mot 'cas 3 methode mov';
  144. finsi;
  145. titre titi ' point de depart';
  146. * calcul de la fonction et de ses derivees
  147. intvf tvf tvx0;
  148. * calcul des conditions et de leurs dérivées
  149. intmci tmci tvx0;
  150. *
  151. * preparation des listreel pour stocker les résultats
  152. * intermediaires de la fonction est des variables
  153. ff = prog tvf.0; x1 = prog tvx0.1; x2 = prog tvx0.2;
  154. x3=prog tvx0.3; x4 = prog tvx0.4;
  155. *
  156. * boucle d'optimisation
  157. *
  158.  
  159. repeter bouc 6;
  160.  
  161. * on remplit la partie changeante de ta
  162. ta . vx0 = tvx0;
  163. ta. vf = tvf;
  164. ta . mc . 1 = tmci;
  165. *
  166. * appel à exce
  167. *
  168. *opti impi 1799;
  169. ta = exce ta;
  170. *
  171. * recuperation des variables dans ta.VX0
  172. tvx0 = ta . vx0;
  173. * calcul de la fonction et des dérivées
  174. intvf tvf tvx0;
  175. titre titi ' iteration ' &bouc;
  176. * calcul des conditions et de leurs dérivées
  177. intmci tmci tvx0;
  178.  
  179. * remplissage des listreels pour visualition des itérations
  180. ff = ff et ( prog tvf.0);
  181. x1 = x1 et ( prog tvx0 . 1);
  182. x2 = x2 et ( prog tvx0 . 2);
  183. x3 = x3 et ( prog tvx0 . 3);
  184. x4 = x4 et ( prog tvx0 . 4);
  185. fin bouc;
  186.  
  187. *opti donn 5;
  188. *
  189. * visualisation des résultats
  190. *
  191. aa = dime ff;
  192. ll = prog 0 pas 1 (aa - 1) ;
  193. titre titi 'fonction :' ( extr ff ( dime ff));
  194. ev1 = evol manu iteration ll ffff ff;
  195. si graph; dess ev1;finsi;
  196. titre titi ' r01 final :'( extr x1 ( dime x1));
  197. ev2 = evol manu iteration ll xxx1 x1;
  198. si graph; dess ev2;finsi;
  199. ch = chain titi ' r1 final :'( extr x2 ( dime x2));
  200. titre ch;
  201. ev3 = evol manu iteration ll xxx2 x2;
  202. si graph; dess ev3;finsi;
  203. ch = chain titi ' f0 final :'( extr x3 ( dime x3));
  204. titre ch;
  205. ev4 = evol manu iteration ll 'F0' x3;
  206. si graph; dess ev4;finsi;
  207. ch = chain titi ' P0 final :'( extr x4 ( dime x4));
  208. titre ch;
  209. ev5 = evol manu iteration ll 'P0' x4;
  210. si graph; dess ev5; finsi;
  211.  
  212.  
  213. fin met;
  214. aa = ( extr ff ( dime ff));
  215. *
  216. *on ne fait les terst que sur resultat des move limits car
  217. * l'autre n'est pas stabilise
  218. *
  219. si ( ( (aa - 3.1604 ) / 3.1604) > 0.001 );
  220. mess ' on trouve ' aa 'au lieu de 3.1603' ;
  221. erreur 5;
  222. sinon;
  223. mess ' le cas test est correct';
  224. finsi;
  225.  
  226. fin;
  227.  
  228.  
  229.  

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