Télécharger dyne02.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : dyne02.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. *
  5. ************************************************************************
  6. *
  7. * Impact d'une barre elastique sur un plan rigide :
  8. * p1 p2 p2b
  9. * +--------------+ +
  10. * -> <->
  11. * P=M*g JeuLiai=0.01
  12. *
  13. * Calcul sur base modale via l'operateur DYNE
  14. *
  15. * Creation, modifs :
  16. * D. Combescure, Aout 2006
  17. * BP, 2018-12-19 : Test des differents algorithme d'integration
  18. * et de l'option K et M PLEINE
  19. *
  20. ************************************************************************
  21. *
  22. GRAPH_boucle = FAUX;
  23. GRAPH = VRAI; opti trac PSC EPTR 5 POTR HELVETICA_16;
  24. *GRAPH = FAUX;
  25. *
  26. opti dime 3 elem seg2;
  27. OPTI EPSI LINEAIRE;
  28. *
  29. ************************************************************************
  30. *
  31. * MAILLAGE, MODELE, MATRICES ET BASE MODALE
  32. *
  33. ************************************************************************
  34.  
  35. L1 = 1.;
  36. n1 = 10;
  37. L = 2.;
  38. n2 = 10;
  39. *
  40. p1 = 0. 0. 0.;
  41. p2 = L1 0. 0.;
  42. p2b = L1 0. 0.;
  43. p3 = L 0. 0.;
  44. lig1 = d n1 p1 p2;
  45. lig2 = d n2 p2b p3;
  46. mesh = lig1;
  47. *
  48. S1 = 0.1;
  49. *
  50. E1 = 2000.;
  51. nu1 =0.2;
  52. ro1 = 7.8D-3;
  53. *
  54. mod1 = MODE mesh mecanique elastique BARR;
  55. mat1 = MATE mod1 YOUN E1 NU nu1 RHO ro1
  56. SECT S1;
  57. *
  58. rig1 = RIGI mod1 mat1;
  59. mas1 = MASS mod1 mat1;
  60. bl1 = (BLOQ lig1 UY) et (BLOQ lig1 UZ);
  61. bl2 = (BLOQ lig2 UY) et (BLOQ lig2 UZ);
  62. bl2b = (BLOQ p2b DEPL);
  63. *
  64. For1 = MAS1 * (MANU CHPO mesh 1 UX (-9.81));
  65. *
  66. nmode = 2;
  67. TMOD = VIBR 'PROCHE' (PROG nmode) (LECT nmode)
  68. (RIG1 et bl1 et bl2b) MAS1 ;
  69. *
  70. SI GRAPH_boucle;
  71. oeil = 0. 0. 100.;
  72. Repeter bou1 nmode;
  73. FIFI = TMOD . MODES . &Bou1 . 'FREQUENCE' ;
  74. TT = TMOD . MODES . &Bou1 . 'DEFORMEE_MODALE' ;
  75. DEf1 = DEFO mesh TT;
  76. titre (CHAIN 'Frequence=' Fifi);
  77. trac oeil def1;
  78. fin bou1;
  79. FINSI;
  80.  
  81.  
  82. ************************************************************************
  83. *
  84. * CALCUL NON-LINEAIRE : Appel à DYNE
  85. *
  86. ************************************************************************
  87.  
  88. *************************
  89. * TEMPS
  90. *************************
  91. *
  92. * DT = 1.E-4 ; NTT = 5000 ; NSORT = 1;
  93. *--> resultats non converges !
  94. * DT = 2.E-5 ; NTT = 25000; NSORT = 5;
  95. *--> convergence sur 1er rebond mais pas sur le 2eme
  96. DT = 1.E-5 ; NTT = 50000; NSORT = 10;
  97. *--> convergence jusqu'au 3eme rebond : suffisant pour le TNR
  98. * DT = 1.E-6 ; NTT = 500000; NSORT = 50;
  99. * *--> convergence jusqu'au 5eme rebond
  100. *
  101. *************************
  102. * TABLE AMORTISSEMENT
  103. *************************
  104. *
  105. TAMOR = TABLE 'AMORTISSEMENT' ;
  106. AMO = PROG NMODE*0.0 ;
  107. TAMOR . 'AMORTISSEMENT' = AMOR TMOD AMO ;
  108. *
  109. ***************************************************
  110. * TABLE CHARGEMENT (CHARG1 CHARG2 CHARG3)
  111. ***************************************************
  112. TCHAR = TABLE 'CHARGEMENT' ;
  113. *
  114. Ampl = 1.0;
  115. Evotime = evol manu (prog 0. 0.01 100.)
  116. (Ampl*(prog 0. 1. 1.));
  117. CHA1 = CHAR For1 Evotime;
  118. CHAP1 = PJBA TMOD CHA1;
  119. TCHAR.'BASE_A' = CHAP1;
  120.  
  121. ***********************************************************
  122. * LIAISONS
  123. ***********************************************************
  124. *
  125. TILIA = TABLE 'LIAISON' ;
  126. TTLB = TABLE 'LIAISON_B' ;
  127. TILIA.'LIAISON_B' = TTLB ;
  128.  
  129. * LIAISON POINT POINT
  130. Kliai = 30.0*E1*S1/L1;
  131. mess Kliai;
  132. Jeuliai = .01;
  133. TLA12 = TABLE 'LIAISON_ELEMENTAIRE' ;
  134. TTLB . 1 = TLA12 ;
  135. TLA12 . 'TYPE_LIAISON' = MOT 'POINT_POINT';
  136. TLA12 . 'POINT_A' = P2 ;
  137. TLA12 . 'POINT_B' = P2b ;
  138. TLA12. 'NORMALE' = ( -1. 0. 0.);
  139. TLA12 . 'RAIDEUR' = Kliai ;
  140. TLA12 . 'JEU' = JeuLiai ;
  141. TLA12 . 'AMORTISSEMENT' = 0. ;
  142.  
  143. *************************
  144. * TABLE SORTIE
  145. *************************
  146. *
  147. TABSOR = TABLE 'SORTIE';
  148. *
  149. TABSOR2 = TABLE 'LIAISON_B' ;
  150. TABSOR.'LIAISON_B' = TABSOR2 ;
  151. *
  152. TVARPP = TABLE 'VARIABLE' ;
  153. TVARPP.'FORCE_DE_CHOC_POINT_A' = VRAI ;
  154. TVARPP.'FORCE_DE_CHOC_POINT_B' = VRAI ;
  155. TVARPP.'UY_POINT_A' = VRAI ;
  156. TVARPP.'UY_POINT_B' = VRAI ;
  157. TVARPP.'VITESSE' = VRAI ;
  158. *
  159. TVARGD = TABLE 'VARIABLE' ;
  160. TVARGD.'FORCE_DE_CHOC' = VRAI ;
  161. TVARGD.'VITESSE' = VRAI ;
  162. TVARGD.'UY' = VRAI ;
  163. *
  164. TABSOR2. TLA12 = TVARPP;
  165.  
  166. liste_coul = MOTS 'MARI' 'BLEU' 'BOUT' 'VERT' 'BRIQ' 'ROUG';
  167. Tdess1 = tabl;
  168. Tdess1 . 'TITRE' = tabl;
  169. *=======================================================================
  170. *======> BOUCLE SUR DIVERSES SYNTAXES ET ALGO POUR LES TESTER
  171.  
  172. *on a le droit a des nom de variables jusqu'a 24 caracteres
  173. prog_ERR1 = PROG ;
  174. prog_ERR2 = PROG ;
  175. prog_ERR3 = PROG ;
  176. UXP2_TOT = VIDE 'EVOLUTIO';
  177. EVFchoA_tot = VIDE 'EVOLUTIO';
  178.  
  179. REPE BTEST 6;
  180.  
  181. * choix algo
  182. si ((EGA &BTEST 1) ou (EGA &BTEST 2));
  183. mot_algo = MOT 'DE_VOGELAERE'; mot_algo_court=mot 'DV';
  184. finsi;
  185. si ((EGA &BTEST 3) ou (EGA &BTEST 4));
  186. mot_algo = MOT 'DIFFERENCES_CENTREES'; mot_algo_court=mot 'CD';
  187. finsi;
  188. si ((EGA &BTEST 5) ou (EGA &BTEST 6));
  189. mot_algo = MOT 'ACCELERATION_MOYENNE';mot_algo_court=mot 'AA';
  190. finsi;
  191. Tdess1 . 'TITRE' . &BTEST = mot_algo_court;
  192.  
  193. * choix syntaxe (base modale / table raideur et masse)
  194. BPAIR = MULT &BTEST 2;
  195.  
  196. ************************************************
  197. * CALCUL TEMPOREL PROPREMENT DIT
  198. ***********************************************
  199.  
  200. si BPAIR;
  201. * SYNTAXE BASE_MODALE :
  202. titre1 = chai 'DYNE ' ' ' mot_algo ' (syntaxe base_modale)' ;
  203. TRESU = DYNE mot_algo TMOD TAMOR TCHAR TILIA
  204. NTT DT NSORT TABSOR ;
  205. sinon;
  206. * SYNTAXE TABLE K ET M
  207. titre1 = chai 'DYNE ' ' ' mot_algo ' (syntaxe table K et M)' ;
  208. si (&BTEST &lt;eg 2);
  209. TKETM = TABL 'RAIDEUR_ET_MASSE';
  210. TKETM . 'RAIDEUR' = PJBA RIG1 TMOD;
  211. TKETM . 'MASSE' = PJBA MAS1 TMOD;
  212. TKETM . 'NATURE_RAIDEUR' = MOT 'PLEINE';
  213. TKETM . 'NATURE_MASSE' = MOT 'PLEINE';
  214. TKETM . 'BASE_MODALE' = TMOD;
  215. finsi;
  216. TRESU = DYNE mot_algo TKETM TAMOR TCHAR TILIA
  217. NTT DT NSORT TABSOR ;
  218. finsi;
  219.  
  220.  
  221. ************************************************
  222. * TRACE DES DEPLACEMENTS EN FONCTION DU TEMPS
  223. **********************************************
  224. COUL1 = EXTR liste_coul &BTEST ;
  225.  
  226. UXP2 = EVOL COUL1 RECO TRESU TMOD 'DEPL' P2 UX ;
  227. UXP3 = EVOL COUL1 RECO TRESU TMOD 'DEPL' P3 UX ;
  228. UXP3 = evol COUL1 manu (extr UXP3 absc)
  229. ((extr UXP3 ordo) + (PROG (dime (extr UXP3 ordo) )*(-1.*JeuLiai)));
  230. VXP2 = EVOL COUL1 RECO TRESU TMOD 'VITE' P2 UX ;
  231. VXP3 = EVOL COUL1 RECO TRESU TMOD 'VITE' P3 UX ;
  232. *
  233. TDS = TRESU . 'TEMPS_DE_SORTIE' ;
  234. RESCHOC = TRESU . TLA12;
  235. FchocB = RESCHOC. FORCE_DE_CHOC_POINT_B;
  236. FchocA = RESCHOC. FORCE_DE_CHOC_POINT_A;
  237. *
  238. EVFchoA = 'EVOL' COUL1 'MANU' TDS FChocA;
  239. EVFchoB = 'EVOL' COUL1 'MANU' TDS FChocB;
  240. *
  241. UXP2_TOT = UXP2_TOT ET UXP2;
  242. EVFchoA_tot = EVFchoA_tot ET EVFchoA;
  243. SI GRAPH_boucle;
  244. ta = table;
  245. ta.2 = 'TIRR';
  246. DESS (UXP2 ET UXP3) ta XBORD 0. 0.20 TITRE titre1 ;
  247. DESS (VXP2 ET VXP3) ta XBORD 0. 0.20 TITRE titre1 ;
  248. * DESS EVFchoA XBORD 0. 0.20 ;
  249. * DESS EVFchoB XBORD 0. 0.20 ;
  250. FINSI;
  251.  
  252.  
  253. ***********************************************
  254. * TEST DE NON REGRESSION (TNR)
  255. * par rapport a une precedente execution du cas test
  256. ***********************************************
  257. * on teste le deplacement à t=0.1s (fin du 1er rebond)
  258. tt = 0.1;
  259.  
  260. * ref pour DT=1.E-4 : uref = -6.71056E-03;
  261. * nouvelle ref. (BP, 2018-12-12)
  262. uref = -6.63459E-03;
  263. uevol = IPOL UXP2 tt;
  264. * test du fonctionnement de RECO
  265. uphys = RECO TRESU TMOD 'DEPL' tt;
  266. ureco = EXTR uphys P2 'UX';
  267.  
  268. * on compare le resultat de RECO et de EVOL RECO
  269. MESS 'valeur calculee : ' uref ureco uevol;
  270. ERR1 = ABS ((ureco - uref) / uref);
  271. ERR2 = ABS ((uevol - uref) / uref);
  272. ERR3 = ABS ((ureco - uevol) / uref);
  273. MESS 'erreur relative : ' ERR1 ERR2 ERR3;
  274. MESS '----------------------------------------------------------------';
  275.  
  276. *on a le droit a des nom de variables jusqu'a 24 caracteres
  277. prog_ERR1 = prog_ERR1 et ERR1 ;
  278. prog_ERR2 = prog_ERR2 et ERR2 ;
  279. prog_ERR3 = prog_ERR3 et ERR3 ;
  280.  
  281. FIN BTEST;
  282. *<====== FIN DE BOUCLE SUR DIVERSES SYNTAXES ET ALGO POUR LES TESTER
  283. *=======================================================================
  284.  
  285. ERR1 = maxi prog_ERR1 ;
  286. ERR2 = maxi prog_ERR2 ;
  287. ERR3 = maxi prog_ERR3 ;
  288.  
  289. SI GRAPH;
  290. DESS UXP2_TOT XBORD 0. 0.5 TITRE 'dyne02' LEGE Tdess1;
  291. DESS UXP2_TOT XBORD 0. 0.20 TITRE 'dyne02' LEGE 'NE' Tdess1;
  292. DESS UXP2_TOT XBORD 0.2 0.3 TITRE 'dyne02' LEGE 'NO' Tdess1;;
  293. DESS UXP2_TOT XBORD 0.44 0.5 XGRA 0.01 TITRE 'dyne02' LEGE 'NO' Tdess1;;
  294. DESS EVFchoA_tot XBORD 0. 0.5 TITRE 'dyne02' LEGE Tdess1;;
  295. DESS EVFchoA_tot XBORD 0. 0.20 TITRE 'dyne02';;
  296. DESS EVFchoA_tot XBORD 0.2 0.30 TITRE 'dyne02';;
  297. FINSI;
  298.  
  299. SI ((ERR1 > 0.005) OU (ERR2 > 0.005) OU (ERR3 > 0.0001));
  300. ERRE 5;
  301. FINSI;
  302.  
  303. * OPTI DONN 5 TRAC 'X';
  304. FIN ;
  305.  
  306.  
  307.  
  308.  

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