Télécharger vari-youn-1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : vari-youn-1.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. **************************************************************
  5. *
  6. * C'est un k-test dont le but est de tester le fonctionnement
  7. * de PASAPAS avec la variation des données matérielles.
  8. *
  9. * Il s'agit d'une barre en traction simple. Son module de Young
  10. * dépend linéairement du déplacement u de son extrémité :
  11. *
  12. * E = E_0 + E_1 * u
  13. *
  14. * Pour résoudre ce problème, on remet à jour le chargement
  15. * dans la procédure PERSO1. Étant donné que PERSO1 est appelé
  16. * une fois par incrément (dans PASAPAS) et non pour chaque
  17. * incrément d'incrément (dans INCREME) la précision dépend
  18. * du nombre de pas.
  19. *
  20. * Voici les résultats obtenus avec la version de développement
  21. * (avril '96) :
  22. *
  23. * Nombre d'itérations | Erreur maxi en déplacement
  24. * ------------------------------------------------
  25. * 1 | 0.40500
  26. * ------------------------------------------------
  27. * 2 | 0.33509
  28. * ------------------------------------------------
  29. * 5 | 0.25095
  30. * ------------------------------------------------
  31. * 10 | 0.19571
  32. * ------------------------------------------------
  33. * 20 | 0.14850
  34. * ------------------------------------------------
  35. * 50 | 9.83953E-02
  36. * ------------------------------------------------
  37. * 100 | 6.91983E-02
  38. * ------------------------------------------------
  39. * 200 | 4.67212E-02
  40. * ------------------------------------------------
  41. * 500 | 2.58769E-02
  42. * ------------------------------------------------
  43. * 1000 | 1.56041E-02
  44. * ------------------------------------------------
  45. * 2000 | 8.94707E-03
  46. * ------------------------------------------------
  47. * 5000 | 4.01039E-03
  48. * ------------------------------------------------
  49. *
  50. * Cette solution peut être comparéee avec une solution
  51. * analytique et (si l'utilisateur le désire, voir la variable
  52. * calc_nl) avec un calcul itératif utilisant la méthode de
  53. * substitution.
  54. *
  55. **************************************************************
  56.  
  57. *** Options ...
  58.  
  59. opti dime 2 mode plan defo elem seg2 echo 1 ;
  60.  
  61. graph = faux ;
  62. calc_nl = faux ;
  63.  
  64. *** Paramètres ...
  65.  
  66. L = 10. ;
  67. H = 1. ;
  68. S = H * 1. ;
  69.  
  70. E_0 = 2.E+11 ;
  71. * E_1 = (2.0 * E_0) / (0.01 * L) ;
  72. E_1 = (-0.5 * E_0) / (0.1 * L) ;
  73.  
  74. * F = 1.E+10 ;
  75. F = 9.9E+9 ;
  76.  
  77. nbdiv = 1 ;
  78.  
  79. *** Critère d'existence de la solution ...
  80.  
  81. delta = (E_0 * E_0) + (4 * E_1 * F * L / S) ;
  82. deltan = delta / (E_0 * E_0) ;
  83. mess 'Delta "normalisé" vaut ' deltan ;
  84. si(deltan < 0) ;
  85. mess 'Pas de soltution envisageable !!!' ;
  86. opti donn 5 ;
  87. finsi ;
  88.  
  89. *** Points ...
  90.  
  91. dens (L / nbdiv) ;
  92.  
  93. p1 = 0 0 ;
  94. p2 = 0 H ;
  95.  
  96. *** Ligne ...
  97.  
  98. li1 = p1 d 1 p2 ;
  99.  
  100. *** Surface ...
  101.  
  102. opti elem qua4 ;
  103.  
  104. vectx = L 0 ;
  105. su1 = li1 tran nbdiv vectx ;
  106. pu = su1 poin proc vectx ;
  107.  
  108. titr 'Le maillage du modele' ;
  109. si(graph) ;
  110. trac su1 ;
  111. finsi ;
  112.  
  113. *** Modèle ...
  114.  
  115. listdepl = prog (-0.1 * L) (0.1 * L) ;
  116. listyoun = prog ;
  117. lon = dime listdepl ;
  118. repeter surdpl lon ;
  119. valdep = extr listdepl &surdpl ;
  120. valyou = E_0 + (E_1 * valdep) ;
  121. listyoun = listyoun et (prog valyou) ;
  122. fin surdpl ;
  123. titr 'Module de Young (deplacement)' ;
  124. evyou = evol manu LDPL listdepl YOUN listyoun ;
  125. si(graph) ;
  126. dess evyou ;
  127. finsi ;
  128.  
  129. mo1 = mode su1 mecanique elastique ;
  130. ma1 = mate mo1 NU 0.0 YOUN evyou ;
  131.  
  132. *** Préparation de la table pour PASAPAS ...
  133.  
  134. tabnl = table ;
  135. * tabnl . GRANDS_DEPLACEMENTS = vrai ;
  136. tabnl . MODELE = mo1 ;
  137. tabnl . CARACTERISTIQUES = ma1 ;
  138. cl1 = (bloq ux li1) et (bloq uy p1) ;
  139. tabnl . BLOCAGES_MECANIQUES = cl1 ;
  140.  
  141.  
  142. ldpl0 = manu CHML mo1 LDPL 0.0 STRESSES ;
  143. evconst = evol manu 't' (prog 0. 1000.)
  144. 'f(t)' (prog 1. 1.) ;
  145. chavar0 = char LDPL ldpl0 evconst ;
  146.  
  147. fobid = forc fx F (cote 3 su1) ;
  148. lr1 = prog 0. 1. ;
  149. lr2 = prog 0. 1. ;
  150. evbid = evol manu 't' lr1 'f(t)' lr2 ;
  151. chabid = char fobid evbid MECA ;
  152. tabnl . CHARGEMENT = chavar0 et chabid ;
  153. tabnl . CHAR0 = chabid ;
  154.  
  155. tabnl . PROCEDURE_PERSO1 = vrai ;
  156. debp perso1 tabnl*table ;
  157. depact = tabnl . 'ESTIMATION'.'DEPLACEMENTS' ;
  158. ledepl = extr depact UX pu ;
  159. ldepl1 = manu CHML mo1 LDPL ledepl STRESSES ;
  160. chavar = char LDPL ldepl1 evconst ;
  161. tabnl . 'WTABLE'.CHARGEMENT = (tabnl . CHAR0) et chavar ;
  162. tabnl . 'WTABLE'.CHARGEMENT_I = (tabnl . CHAR0) et chavar ;
  163. finp ;
  164.  
  165. nb_dt = 5 ;
  166. dt = 1.0 / nb_dt ;
  167. tabnl . TEMPS_CALCULES = prog 0. PAS dt 1. ;
  168.  
  169. *** Le calcul ...
  170.  
  171. pasapas tabnl ;
  172.  
  173. *** Petit post-traitement ...
  174.  
  175. listt = prog ;
  176. listux = prog ;
  177. listuxt = prog ;
  178. listuxs = prog ;
  179. listfx = prog ;
  180. nbpas = dime (tabnl . TEMPS) ;
  181. repeter surpas nbpas ;
  182. lindice = &surpas - 1 ;
  183. listt = listt et (prog (tabnl . TEMPS . lindice)) ;
  184. laforc = F * (tabnl . TEMPS . lindice) ;
  185. listfx = listfx et (prog laforc) ;
  186. uxbid = racp (-1*laforc*L/S) E_0 E_1 ;
  187. uxbid = uxbid extr 1;
  188. listuxt = listuxt et (prog uxbid) ;
  189. depact = tabnl . DEPLACEMENTS . lindice ;
  190. ledepl = extr depact UX pu ;
  191. listux = listux et (prog ledepl) ;
  192. chtit = chai 'Contrainte XX fournie par PASAPAS,'
  193. ' temps ' (tabnl . TEMPS . lindice) ;
  194. titr chtit ;
  195. * trac (exco smxx (tabnl . CONTRAINTES . lindice)) mo1 ;
  196. *------------- calcul nonlin à la main -------------------------------------
  197. si(calc_nl) ;
  198. critconv = 1. ;
  199. * omega = 0.7 ;
  200. omega = 1.2 ;
  201. mate0 = mate mo1 YOUN E_0 NU 0.0 ;
  202. rigin = rigi mo1 mate0 ;
  203. forc0 = forc fx laforc (cote 3 su1) ;
  204. residu = 1.0 * forc0 ;
  205. deptot = manu chpo su1 2 UX 0 UY 0 nature DIFFUS ;
  206. mess 'On va chercher la soln pour F = ' laforc ;
  207. repeter tanqrnn ;
  208. depln = reso (rigin et cl1) residu ;
  209. deptot = deptot + (omega * depln) ;
  210. deptst = extr deptot ux pu ;
  211. * mess 'deptot au bout = ' deptst ;
  212. E_n = E_0 + (E_1 * deptst) ;
  213. maten = mate mo1 YOUN E_n NU 0.0 ;
  214. rigin = rigi mo1 maten ;
  215. residu = forc0 - ((rigin * deptot) - (reac cl1 deptot)) ;
  216. normres = (xtx residu) ** 0.5 ;
  217. mess 'Itération ' &tanqrnn ', ||résidu|| = ' normres ;
  218. si(normres < critconv) ;
  219. mess ' => Convergence, déplt obtenu = ' deptst ;
  220. quit tanqrnn ;
  221. finsi ;
  222. fin tanqrnn ;
  223. listuxs = listuxs et (prog deptst) ;
  224. sitst = sigm mo1 maten deptot ;
  225. chtit = chai 'Contrainte XX fournie par ma méthode,'
  226. ' temps ' (tabnl . TEMPS . lindice) ;
  227. titr chtit ;
  228. * trac (exco smxx sitst) mo1 ;
  229. finsi;
  230. *---------------------------------------------------------------------------
  231. fin surpas ;
  232.  
  233. titr 'La deformee' ;
  234. defo0 = defo su1 depact 0.0 ;
  235. defo1 = defo su1 depact ROUG ;
  236. si(graph) ;
  237. trac (defo0 et defo1) ;
  238. finsi ;
  239.  
  240. titr 'Courbe de traction provenant de PASAPAS' ;
  241. courbetr = evol manu 'FX' listfx 'UX' listux ;
  242. si(graph) ;
  243. dess courbetr ;
  244. finsi ;
  245.  
  246. titr 'Courbes de traction PASAPAS + théorique' ;
  247. courbteo = evol ROUG manu 'FX' listfx 'UX' listuxt ;
  248. si(graph) ;
  249. dess (courbetr et courbteo) ;
  250. finsi ;
  251.  
  252. si(calc_nl) ;
  253. titr 'Courbe obtenue par calc nonlin a la main' ;
  254. courbs = evol BLEU manu 'FX' listfx 'UX' listuxs ;
  255. si(graph) ;
  256. dess (courbetr et courbteo et courbs) ;
  257. finsi ;
  258. finsi ;
  259.  
  260. *** Vérification de la précision du calcul ...
  261.  
  262. chtit = chai 'Difference entre le depl. fourni par PASAPAS'
  263. ' et le depl. analytique' ;
  264. titr chtit ;
  265. ladiff = courbetr - courbteo ;
  266. ladiff = evol manu (extr ladiff ABSC) (abs (extr ladiff ORDO)) ;
  267. si(graph) ;
  268. dess ladiff ;
  269. finsi ;
  270. precis = maxi (extr ladiff ORDO) ;
  271. mess 'Écart maxi = ' precis ;
  272.  
  273. listpas = prog 1 2 5 10 20 50 100 200 500 1000 2000 5000 ;
  274. listprec = prog 0.40500 0.33509 0.25095 0.19571 0.14850
  275. 9.83953E-02 6.91983E-02 4.67212E-02 2.58769E-02 1.56041E-02
  276. 8.94707E-03 4.01039E-03 ;
  277. titr 'Precision en fonction du nombre de pas' ;
  278. evprec = evol manu 'nb_pas' listpas 'prec' listprec ;
  279. si(graph) ;
  280. dess evprec LOGX ;
  281. finsi ;
  282.  
  283. prec_att = ipol nb_dt listpas listprec ;
  284. mess 'Valeur attendue de la précision = ' prec_att ;
  285.  
  286. * On se donne 10% de tolérance ...
  287.  
  288. si(precis > (1.1 * prec_att)) ;
  289. erre 5 ;
  290. finsi ;
  291.  
  292. *** Bye ...
  293.  
  294. fin ;
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  

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