Télécharger dyna_nl2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : dyna_nl2.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. complet = vrai;
  5. *
  6. *************************************************
  7. * pour calcul complet mettre complet à : vrai;
  8. *************************************************
  9. *************************************************************************
  10. *
  11. * dynamique non lineaire geometrique
  12. *
  13. * reponse forcee d'un oscillateur de type Duffing
  14. *
  15. * comparaison avec calcul explicite
  16. *
  17. *************************************************************************
  18. opti echo 0 ;
  19. graph = faux ;
  20.  
  21.  
  22. OPTI DIME 2 ELEM SEG2 MODE PLAN CONT ; ;
  23. P1 = 0. 0. ; P2 = 1. 0. ;
  24. ST = P1 D 1 P2 ;
  25.  
  26. MO = MODE ST MECANIQUE BARR ;
  27. MA1 = MATE MO YOUN 1E7 NU 0.3 RHO 0;
  28. CAR1 = CARA MO SECT 1. ;
  29. MACA= MA1 ET CAR1;
  30. MASS1 = MASS UY 250. P2 ;
  31.  
  32. CL1 = BLOQ UX uy P1 ;
  33. CL2 = BLOQ UX P2 ;
  34. cl3 = bloq uy p2 ;
  35. CL = CL1 ET CL2 ;
  36.  
  37.  
  38. * precontrainte de 500 N
  39.  
  40. RI1 = RIGI MACA MO ;
  41. f1 = force fx 500 p2 ;
  42. dep1 = reso (ri1 et cl1 et cl3) f1 ;
  43. sig1 = sigm dep1 mo maca ;
  44. *sig1 = manu 'CHML' mo 'EFFX' 500. 'TYPE' 'CONTRAIN'
  45. * 'STRESSES' ;
  46.  
  47. * calcul dynamique
  48. si complet;
  49. t1 = .4 ;
  50. sinon;
  51. t1 = .1;
  52. finsi;
  53. dt = .005 ;
  54. f1 = force fy 25000. p2 ;
  55. LIX1 = PROG 0. pas dt t1 ;
  56. LIY1 = (prog (dime lix1)*1. ) - (cos (360*lix1/4/.26479)) ;
  57. *lix1 = prog 0 8.9 100 ; liy1 = prog 0 1 1 ;
  58. EV1 = EVOL MANU 'temps' LIX1 'force' LIY1 ;
  59. CHA1 = CHAR MECA F1 EV1 ;
  60.  
  61. tab2 = table ;
  62.  
  63. tab2.grands_deplacements = vrai ;
  64. *tab2.tinit = vrai ;
  65. *tab2.acceleration = 2 ;
  66. tab2.dynamique = vrai ;
  67. tab2.masse_constante = mass1 ;
  68. TAB2.'BLOCAGES_MECANIQUES' = CL ;
  69. TAB2.'MODELE' = MO;
  70. Tab2.'K_SIGMA' = VRAI ;
  71. TAB2.'CARACTERISTIQUES' = MACA;
  72. TAB2.'CHARGEMENT' = CHA1;
  73. TAB2.'CONTRAINTES' = TABLE;
  74. TAB2.'CONTRAINTES' . 0 = SIG1 ;
  75. LIS11 = PROG 0. pas dt t1 ;
  76. TAB2.'TEMPS_CALCULES' = LIS11;
  77. PASAPAS TAB2 ;
  78.  
  79.  
  80. NDIM = (DIME ( TAB2 . DEPLACEMENTS )) ;
  81. PGY = PROG ;
  82. REPETER TBOU2 NDIM;
  83. LEDEP = TAB2 . DEPLACEMENTS. (&TBOU2 - 1);
  84. V = EXTR LEDEP UY P2 ;
  85. PGY = PGY ET ( PROG V ) ;
  86. FIN TBOU2 ;
  87. ev1 = evol manu 'temps' lis11 'depl' pgy ;
  88.  
  89. *******************************************************************
  90. **
  91. ** calcul explicite (differences centrées,
  92. ** on calcule la force de rappel analytiquement)
  93. *
  94. m = 250. ;
  95. x0 = 0. ;
  96. v0 = 0. ;
  97. si complet;
  98. npas = 400 ;
  99. sinon;
  100. npas = 100;
  101. finsi;
  102. dt = .001 ;
  103. f1 = 25000 ;
  104. LIX1 = PROG pas dt 1. ;
  105. lisf1 = f1*((prog (dime lix1)*1. ) - (cos (360*lix1/4/.26479))) ;
  106.  
  107. n = 0 ;
  108. lisx = prog x0 ;
  109. lisv = prog v0 ;
  110. repeter toto npas ;
  111. n = n + 1 ;
  112. fn = extr lisf1 n ;
  113. si (n ega 1 ) ;
  114. xn = x0 ;
  115. finT = (500*xn/((1 + (xn**2))**.5)) +
  116. (1e7*xn*(1 - (1/((1+(xn**2))**.5)))) ;
  117. xnm = x0-(dt*v0)- (((dt**2)/2.)*((fint-fn)/m)) ;
  118. finsi ;
  119. finT = (500*xn/((1 + (xn**2))**.5)) +
  120. (1e7*xn*(1 - (1/((1+(xn**2))**.5)))) ;
  121. xnp = (-1.)*((dt**2)/m*(finT - fn)) + (2*xn) - xnm ;
  122. si (n > 1) ;
  123. vn = (xnp - xnm)/2./dt ;
  124. lisv = lisv et (prog vn) ;
  125. finsi ;
  126. xnm = xn ;
  127. xn = xnp ;
  128. lisx = lisx et (prog xnp) ;
  129. fin toto ;
  130. list1 = (prog 0) et (prog pas dt (npas*dt)) ;
  131. evx = evol rouge manu 'temps' list1 'depl' lisx ;
  132. *************************************************************************
  133. *
  134. * comparaison entre les deux calculs
  135. *
  136.  
  137. si graph ;
  138. dess (evx et ev1) ;
  139. finsi ;
  140.  
  141. pgy2 = ipol list1 lis11 pgy ;
  142. ddepl = (abs (lisx - pgy2))/ (lisx + (prog (dime lisx)*1e-5)) ;
  143. err1 = maxi ddepl ;
  144. mess 'difference entre pasapas et "explicite_analytique"'(err1*100)'%';
  145.  
  146. si (err1 > 7);
  147. erre 5 ;
  148. sinon ;
  149. erre 0 ;
  150. finsi ;
  151.  
  152. fin;
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  

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