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

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