Télécharger usure.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : usure.dgibi
  2. *
  3. *
  4. * Cas-test gracieusement mis a disposition par le LTDS
  5. * Ecole Centrale Lyon (S.Fouvry et S.Garcin)
  6. *
  7. * Ce cas-test appelle les procedures :
  8. *
  9. * @CHCOTAE : initialisation des tables de stockage de resultats
  10. * @CHREP : procedure realisant un changement de repere
  11. * @PCPT : decoupage des pas de temps
  12. * @PRCA1 : Acquisition des donnees de contact
  13. * @PRCA2 : Calcul de la densite d'energie dissipee
  14. * @PRCA3 : Calcul du profil d'usure a appliquer
  15. * @PRCA4 : Calcul du taux d'application et application du profil
  16. * d'usure reparti en profondeur
  17. * @PRCA5 : Calcul des donnees scalaires associees au contact
  18. * @EVN_MNG : identificateur d'evenements
  19. * @EVN_IDT : manageur d'evenements
  20. *______________________________________________________________________
  21.  
  22. * DEFINITION D'UNE BOITE D USURE
  23. *______________________________________________________________________
  24. *
  25. * Dans le jeu de donnees, l'utilisateur doit definir les indices
  26. * suivant pour chaque boite d'usure :
  27.  
  28. * BOX1 = TABL 'BOITE_USURE' ;
  29. * -> Creation de la boite d'usure a stocker dans la table PASAPAS
  30.  
  31. * BOX1.'VOLUME_REPARTITION'
  32. * -> Volume sous la surface usee pour "repartir" l'usure.
  33.  
  34. * BOX1.'SURFACE_APPLICATION'
  35. * -> Surface usee (ou sera appliquee l'usure).
  36.  
  37. * BOX1.'SURFACE_VOISINE'
  38. * -> Surface qui use (en contact avec la surface usee).
  39.  
  40. * BOX1.'SURFACE_APPUI'
  41. * -> Surface delimitant avec 'SUR_APPL' le 'VOLUME_REPARTITION'.
  42.  
  43. * BOX1.'POINT_O_U'
  44. * -> Point servant de reference pour deplacer le maillage.
  45.  
  46. * BOX1.'DIRECTION_APPLICATION'
  47. * -> Vecteur donnant la direction d'application de l'usure.
  48.  
  49. * BOX1.'COEFFICIENT_USURE'
  50. * -> Valeur du coefficient d'usure (en mJ/mm3).
  51.  
  52. * BOX1.'COEFFICIENT_FROTTEMENT'
  53. * -> Valeur du coefficient de frottement.
  54.  
  55. * BOX1.'FACTEUR_ACCELERATION'
  56. * -> Valeur du coefficient d'acceleration (sans unite).
  57.  
  58. * BOX1.'T_INI_US'
  59. * -> Temps ou demarre l'usure.
  60.  
  61. * BOX1.'T_FIN_US'
  62. * -> Temps ou s'arrete l'usure.
  63.  
  64. * BOX1.'PERIODCY'
  65. * -> Periode d'un cycle d'usure.
  66.  
  67. * BOX1.'USURE_CYCLIQUE'
  68. * -> Booleen qui indique le type d'usure.
  69. * Si vrai -> usure cyclique sinon incrementale.
  70.  
  71. * BOX1.'POINT_REF_DELTA'
  72. * -> Point ou l'on recupere les valeurs de glissement et de force
  73. * pour les traces.
  74.  
  75. * Remarques :
  76.  
  77. * 1/ On parle de SURFACE et de VOLUME mais puisqu'il s'agit d'un
  78. * cas-test bidimensionnel, il convient de remplacer ces termes
  79. * respectivement par ligne et surface.
  80.  
  81. * 2/ Les indices 'SURFACE_APPLICATION' et 'SURFACE_VOISINE' contiennent
  82. * les lignes ayant permis de definir le maillage de contact.
  83.  
  84. * 3/ Un indice 'BOITES_USURES' de la table de PASAPAS sera defini
  85. * comme etant un objet de type TABLE. Ainsi dans cette table
  86. * on stockera au bon indice la table BOX1 creee.
  87. * Soit TAB1, la table de PASAPAS, alors
  88. * TAB1.'BOITES_USURES' = 'TABL' ;
  89. * TAB1.'BOITES_USURES'. 1 = BOX1
  90. * .
  91. * .
  92. *
  93. * 4/ Les dimensions sont a donner en mm
  94. *
  95. *
  96. * Presentation du cas-test:
  97. * -------------------------
  98. *
  99. * Modelisation du contact-frottement entre un cylindre et un plan
  100. * Probleme 2D avec prise en compte d'un profil d'usure
  101. * Choix d'un contact de type Maitre-Esclave
  102. * Modele de frottement de Coulomb
  103. * Materiau elastique
  104. *
  105. * Comparaison code a code avec code WearBox du LTDS
  106. * Code Matlab - Abaqus - Python
  107. * Fretting Team - LTDS - Ecole Centrale Lyon
  108. *
  109. *______________________________________________________________________
  110. *
  111. * OPTION DE CALCUL
  112. *______________________________________________________________________
  113. *
  114. * Definition des options de calcul
  115. OPTI DIME 2 ELEM QUA4;
  116. OPTI MODE 'PLAN' 'DEFO';
  117. * Pieces massives => Deformations planes
  118. * OPTI DEBU 1 ;
  119. OPTI SAUV TAILLE 2.e9 8 ;
  120. OPTI TRAC PSC ;
  121. *
  122. VALPI = pi ;
  123. * Booleen pour n'effectuer que le trace du maillage (pas de resolution)
  124. OnlyMesh = FAUX ;
  125. * Maillage grossier (en dehors de la zone WearBox, elle non modifiee)
  126. YESFATMS = FAUX ;
  127. * Prendre en compte l'usure du plan ?
  128. OuiUsPla = VRAI ;
  129. * Prendre en compte l'usure du cylindre ?
  130. OuiUsCyl = FAUX ;
  131. *______________________________________________________________________
  132. *
  133. * MAILLAGE
  134. *______________________________________________________________________
  135. *
  136. * - DIMENSIONS GEOMETRIQUES DU MODELE (en mm !!!!!)
  137. * CT -> Cylindre Total BUC -> Boite Usure Cylindre
  138. * PT -> Plan Total BUP -> Boite Usure Plan
  139. * FineMS correspond a la taille des elements
  140. FineMS = 0.010 ;
  141. rayon = 4.8 ;
  142. LgrCT = 0.75 ;
  143. EprCT = 0.25 ;
  144. LgrPT = 0.75 ;
  145. EprPT = 0.25 ;
  146. LgrBUC = 0.4 ;
  147. EprBUC = 0.125 ;
  148. LgrBUP = 0.4 ;
  149. EprBUP = 0.125 ;
  150. * FCYL et FPLA sont des facteurs permettant de jouer sur la densite du
  151. * maillage dans la boite d'usure. Ils ne sont pas necessairement egaux
  152. * Ce sont des facteurs multiplicatifs de FineMS.
  153. FCYL = 1.0 ; FPLA = 1.0 ;
  154. *
  155. * - MAILLAGE DU CYLINDRE
  156. * -> Dimensions, nombre et taille des elements pour le cylindre
  157. LgrBU = (( ENTI 'SUPERIEUR' (LgrBUC/FineMS/2) ) * FineMS * 2) ;
  158. EprBU = (( ENTI 'SUPERIEUR' (EprBUC/FineMS ) ) * FineMS ) ;
  159. NLgrBU = 2* (ENTI 'PROCHE' (LgrBU / FineMS / 2)) ;
  160.  
  161. * -> Dimensions du cylindre totale
  162. AlphaCT = ASIN ((LgrCT/2.)/rayon) ;
  163. GapCT = (1. - (COS AlphaCT) ) * rayon ;
  164. HtrCT = GapCT + EprCT ;
  165.  
  166. * -> Dimensions de la boite d usure, partie cylindre
  167. AlphaBU = ASIN ((LgrBU/2.)/rayon) ;
  168. GapBU = (1. - (COS AlphaBU) ) * rayon ;
  169. HtrBU = GapBU + EprBU ;
  170.  
  171. * -> Points
  172. P0 = 0.0 0.0 ;
  173. PCEN = 0.0 rayon ;
  174. PA = (-1*LgrCT/2) GapCT ;
  175. PB = (-1*LgrBU/2) GapBU ;
  176. PC = ( LgrBU/2) GapBU ;
  177. PD = ( LgrCT/2) GapCT ;
  178. PE = ( LgrCT/2) HtrCT ;
  179. PF = (-1*LgrCT/2) HtrCT ;
  180. PG = ( LgrBU/2) HtrBU ;
  181. PH = (-1*LgrBU/2) HtrBU ;
  182.  
  183. * -> Lignes
  184. CBC = CERC NLgrBU PB PCEN PC ;
  185. LCG = DROI PC PG 'DINI' FineMS 'DFIN' (FCYL*FineMS) ;
  186. LGH = DROI NLgrBU PG PH ;
  187. LHB = DROI PH PB 'DINI' (FCYL*FineMS) 'DFIN' FineMS ;
  188. * -> Contour interieur (identique que le maillage soit grossier ou non)
  189. CntrInt = LCG ET LGH ET LHB ;
  190.  
  191. * -> Surface boite d'usure (partie en contact-frottement)
  192. SrfBUC = 'DALL' CBC LCG LGH LHB 'PLAN' ;
  193.  
  194. SI YESFATMS ;
  195. NEprBU = ENTI 'PROCHE' (EprBU / FineMS) ;
  196. GrosMSVC = (EprCT / NEprBU) * 2. ;
  197. CAB = CERC 'DINI' GrosMSVC 'DFIN' FineMS PA PCEN PB ;
  198. CCD = CERC 'DINI' FineMS 'DFIN' GrosMSVC PC PCEN PD ;
  199. LDE = DROI PD PE 'DINI' GrosMSVC 'DFIN' GrosMSVC ;
  200. LEF = DROI PE PF 'DINI' GrosMSVC 'DFIN' GrosMSVC ;
  201. LFA = DROI PF PA 'DINI' GrosMSVC 'DFIN' GrosMSVC ;
  202. SINON ;
  203. NBE = 'NBEL' LCG ;
  204. 'SI' ('>EG' FCYL 1.51) ;
  205. RCYL = ((LgrCT - LgrBU) / 2.)/ EprBU ;
  206. 'SINON' ;
  207. RCYL = 2.0 ;
  208. 'FINSI' ;
  209. CAB = CERC 'DINI' (RCYL*FCYL*FineMS) 'DFIN' FineMS PA PCEN PB ;
  210. CCD = CERC 'DINI' FineMS 'DFIN' (RCYL*FCYL*FineMS) PC PCEN PD ;
  211. LDE = DROI NBE PD PE ;
  212. LEF = DROI NLgrBU PE PF ;
  213. LFA = DROI NBE PF PA ;
  214. FINSI ;
  215.  
  216. * -> Contour exterieur (depend si le maillage est grossier ou non)
  217. CntrExt = LDE ET LEF ET LFA ;
  218.  
  219. * -> Surface du reste du cylindre ( contour interieur et exterieur)
  220. SI YESFATMS ;
  221. SrfCT = SURF ((INVE CntrInt) ET CCD ET CntrExt ET CAB) ;
  222. SINON ;
  223. SrfCT = DALL (INVE CntrInt) CCD CntrExt CAB 'PLAN' ;
  224. FINSI ;
  225.  
  226. * -> Surface totale du cylindre
  227. SurfCyl = SrfBUC ET SrfCT ;
  228. ELIM SurfCyl 1.e-8 ;
  229.  
  230. * - MAILLAGE DU PLAN
  231. * -> Dimensions, nombre et taille des elements pour le plan
  232. LgrBU = (( ENTI 'SUPERIEUR' (LgrBUP/FineMS/2) ) * FineMS * 2) ;
  233. EprBU = (( ENTI 'SUPERIEUR' (EprBUP/FineMS ) ) * FineMS ) ;
  234. NLgrBU = 2* (ENTI 'PROCHE' (LgrBU / FineMS / 2)) ;
  235.  
  236. * -> Points
  237. PI = (-1*LgrPT/2) 0.0 ;
  238. PJ = (-1*LgrBU/2) 0.0 ;
  239. PK = ( LgrBU/2) 0.0 ;
  240. PK = ( LgrBU/2) -0.00 ;
  241. PL = ( LgrPT/2) 0.0 ;
  242. PM = ( LgrPT/2) (-1.*EprPT) ;
  243. PN = (-1*LgrPT/2) (-1.*EprPT) ;
  244. PO = ( LgrBU/2) (-1.*EprBU) ;
  245. PP = (-1*LgrBU/2) (-1.*EprBU) ;
  246.  
  247. * -> Lignes
  248. LJK = DROI NLgrBU PJ PK ;
  249. LKO = DROI PK PO 'DINI' FineMS 'DFIN' (FPLA*FineMS) ;
  250. LOP = DROI NLgrBU PO PP ;
  251. LPJ = DROI PP PJ 'DINI' (FPLA*FineMS) 'DFIN' FineMS ;
  252.  
  253. * -> Contour interieur (identique que le maillage soit grossier ou non)
  254. CntrInt = LKO ET LOP ET LPJ ;
  255.  
  256. * -> Surface boite d'usure (partie en contact-frottement)
  257. SrfBUP = 'DALL' LOP (INVE LKO) LJK (INVE LPJ) 'PLAN' ;
  258.  
  259. SI YESFATMS ;
  260. NEprBU = ENTI 'PROCHE' (EprBU / FineMS) ;
  261. GrosMSVP = (EprPT / NEprBU) * 4. ;
  262. LIJ = DROI 'DINI' GrosMSVP 'DFIN' FineMS PI PJ ;
  263. LKL = DROI 'DINI' FineMS 'DFIN' GrosMSVP PK PL ;
  264. LLM = DROI PL PM 'DINI' GrosMSVP 'DFIN' GrosMSVP ;
  265. LMN = DROI PM PN 'DINI' GrosMSVP 'DFIN' GrosMSVP ;
  266. LNI = DROI PN PI 'DINI' GrosMSVP 'DFIN' GrosMSVP ;
  267. SINON ;
  268. NBE = 'NBEL' LPJ ;
  269. 'SI' ('>EG' FPLA 1.51) ;
  270. RPLA = ((LgrPT - LgrBU) / 2.)/ (HtrBU - GapBU) ;
  271. 'SINON' ;
  272. RPLA = 2.0 ;
  273. 'FINSI' ;
  274. LIJ = DROI 'DINI' (RPLA*FPLA*FineMs) 'DFIN' FineMS PI PJ ;
  275. LKL = DROI 'DINI' FineMS 'DFIN' (RPLA*FPLA*FineMS) PK PL ;
  276. LLM = DROI NBE PL PM ;
  277. LMN = DROI NLgrBU PM PN ;
  278. LNI = DROI NBE PN PI ;
  279. FINSI ;
  280.  
  281. * -> Contour exterieur (depend si le maillage est grossier ou non)
  282. CntrExt = LLM ET LMN ET LNI;
  283.  
  284. * -> Surface du reste du plan
  285. SI YESFATMS ;
  286. SrfPT = SURF ((INVE CntrInt) ET LKL ET CntrExt ET LIJ ) ;
  287. SINON ;
  288. SrfPT = DALL (INVE CntrInt) LKL CntrExt LIJ 'PLAN' ;
  289. FINSI ;
  290.  
  291. * -> Surface totale du plan
  292. SurfPlan = SrfBUP ET SrfPT ;
  293. ELIM SurfPlan 1.e-8 ;
  294. *SrfBUP = SurfPlan INTE SrfBUP ;
  295. *
  296. * RECUPERATION DES ZONES DE MAILLAGE UTILES
  297. * -> Cylindre
  298. CntrCyl = CONT SurfCyl 'COUL' 'BLEU' ;
  299. PtsHautC = SurfCyl POIN 'DROIT' PF PE 1.e-8 ;
  300. PtsCrbeC = SurfCyl POIN 'SPHE' PCEN P0 1.e-8 ;
  301. SetHautC = CntrCyl ELEM 'APPU' 'STRI' PtsHautC ;
  302. SetCrbeC = CntrCyl ELEM 'APPU' 'STRI' PtsCrbeC ;
  303. SetCrbeC = ORIE SetCrbeC ;
  304.  
  305. * -> Plan
  306. CntrPlan = CONT SurfPlan 'COUL' 'BLEU' ;
  307. PtsHautP = SurfPlan POIN 'DROIT' PI PL 1.e-8 ;
  308. PtsBasP = SurfPlan POIN 'DROIT' PM PN 1.e-8 ;
  309. PtsGaucP = SurfPlan POIN 'DROIT' PI PN 1.e-8 ;
  310. PtsDroiP = SurfPlan POIN 'DROIT' PL PM 1.e-8 ;
  311. SetHautP = CntrPlan ELEM 'APPU' 'STRI' PtsHautP ;
  312. SetBasP = CntrPlan ELEM 'APPU' 'STRI' PtsBasP ;
  313. SetGaucP = CntrPlan ELEM 'APPU' 'STRI' PtsGaucP ;
  314. SetDroiP = CntrPlan ELEM 'APPU' 'STRI' PtsDroiP ;
  315. SetHautP = ORIE SetHautP ;
  316. *
  317. SI OnlyMesh ;
  318. TRAC ((CntrCyl ET CntrPlan) ET (SurfCyl ET SurfPlan))
  319. TITR 'Maillage Cylindre et Plan' ;
  320. FINSI ;
  321. *
  322. * Creation du maillage de contact
  323. MeshCntc ='IMPO' 'MAIL' 'MESC' SetCrbeC (INVE SetHautP) ;
  324. MeshCntc = MeshCntc 'COUL' 'JAUN' ;
  325.  
  326. SI OnlyMesh ;
  327. TRAC (MeshCntc ET (CntrCyl ET CntrPlan) ET (SurfCyl ET SurfPlan))
  328. TITR 'Maillages Cylindre, Plan et Zone Contact' ;
  329. FIN ;
  330. FINSI ;
  331. *______________________________________________________________________
  332. *
  333. * MODELES ET MATERIAUX
  334. *______________________________________________________________________
  335. *
  336. * ATTENTION LES DIMENSIONS DE NOS PIECES SONT EN MM
  337. YoungCyl = 200000 ; NuCyl = 0.3 ;
  338. YoungPln = 200000 ; NuPlan = 0.3 ;
  339. MuContac = 0.9;
  340. *
  341. ModeCyl = MODE SurfCyl 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE' ;
  342. MateCyl = MATE ModeCyl 'YOUN' YoungCyl 'NU' NuCyl ;
  343. *
  344. ModePlan = MODE SurfPlan 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE' ;
  345. MatePlan = MATE ModePlan 'YOUN' YoungPln 'NU' NuPlan ;
  346. *
  347. ModeCntc = MODE MeshCntc 'CONTACT' 'FROTTANT' 'COULOMB';
  348. MateCntc = MATE ModeCntc 'MU' MuContac;
  349. MFRO = 'EXTR' ModeCntc 'MAIL' 'FROT' ;
  350. *
  351. *
  352. * Etablir une correspondance entre mult de cont et de fro
  353. * Attention si renumerotation ne marchera plus ...
  354. MUFRO = 'VIDE' 'MAILLAGE' ;
  355. LVALF = 'PROG' ;
  356. NODEF = 'NBNO' (MFRO 'ELEM' 1) ;
  357. 'SI' ('EGA' NODEF 5) ;
  358. NOTOT = 'NBNO' SetHautP ;
  359. 'SINON' ;
  360. 'SI' ('EGA' NODEF 6) ;
  361. NOTOT = 'NBEL' SetHautP ;
  362. 'SINON' ;
  363. 'MESS' 'Le nombre de noeud par element dans le maillage de ' ;
  364. 'MESS' 'contact-frottement semble errone ' ;
  365. 'ERRE' 5 ;
  366. 'FINSI' ;
  367. 'FINSI' ;
  368. *
  369. REPE BCL NOTOT ;
  370. 'SI' ('EGA' NODEF 5) ;
  371. ELZ = 'CHAN' (MFRO 'ELEM' &BCL) 'POI1' ;
  372. 'SINON' ;
  373. INDZ = NOTOT*(&BCL-1) + 1 ;
  374. ELZ = 'CHAN' (MFRO 'ELEM' INDZ) 'POI1' ;
  375. 'FINSI' ;
  376. PTZ = ELZ 'POIN' 1 ;
  377. VAL = 'NOEU' (ELZ 'POIN' NODEF) ;
  378. MUFRO = MUFRO ET PTZ ;
  379. LVALF = LVALF ET VAL ;
  380. FIN BCL ;
  381. *
  382. TESTEL = ('NBEL' SetCrbeC) * NOTOT ;
  383.  
  384. 'SI' (('NEG' TESTEL ('NBEL' MFRO)) 'ET' ('EGA' NODEF 5));
  385. NOTOT = 'NBNO' SetCrbeC ;
  386. REPE BCL NOTOT ;
  387. ELZ = 'CHAN' (MFRO 'ELEM' (TESTEL + &BCL)) 'POI1' ;
  388. PTZ = ELZ 'POIN' 1 ;
  389. VAL = 'NOEU' (ELZ 'POIN' NODEF) ;
  390. MUFRO = MUFRO ET PTZ ;
  391. LVALF = LVALF ET VAL ;
  392. FIN BCL ;
  393. 'FINSI' ;
  394. CHPZ = 'MANU' 'CHPO' MUFRO 1 'CORR' LVALF ;
  395. *______________________________________________________________________
  396. *
  397. * CONDITIONS AUX LIMITES
  398. *______________________________________________________________________
  399. *
  400. BlcXPlan = (SetGaucP ET SetDroiP) BLOQ 'UX' ;
  401. BlcYPlan = SetBasP BLOQ 'UY' ;
  402. BlocPlan = (BlcXPlan ET BlcYPlan) ;
  403.  
  404. LinkHauC = BLOQ SetHautC 'UX' ;
  405. YcommunC = RELA ENSE SetHautC 'UY';
  406. BlocCyl = LinkHauC ET YcommunC ;
  407.  
  408. BloTot = BlocPlan ET BlocCyl ;
  409. *______________________________________________________________________
  410. *
  411. * CHARGEMENT
  412. *______________________________________________________________________
  413. *
  414. * Donnees necessaires a @PCPT pour determiner les pas de calcul
  415. DltEtoil = 0.004 ;
  416. Delta_t = 0.001 ;
  417. N_DemiPe = 3 ;
  418. N_DemiPl = 3 ;
  419. N_cyclFr = 20.25 ;
  420. N_cyclFr = 5.25 ;
  421. t_0 = 1.0 ;
  422. T_INI_US = 1.25 ;
  423. period = 1. ;
  424. T_FIN_US = T_0 + (N_cyclFr * period) ;
  425.  
  426. * EVOLution de chargement
  427. ListT_Fn = PROG 0. 1. T_FIN_US ;
  428. ListF_Fn = PROG 0. 1. 1. ;
  429.  
  430. ListT_De = PROG 0. 1. ;
  431. ListA_De = PROG 0. 0. ;
  432.  
  433. REPE BRLDe ((ENTI 'SUPERIEUR' N_cyclFr ) ) ;
  434. T_DebCyc = FLOT &BRLDe ;
  435. ListT_De = ET ListT_De (PROG (T_DebCyc+0.25) (T_DebCyc+0.75)) ;
  436. ListA_De = ET ListA_De (PROG 1. -1) ;
  437. FIN BRLDE ;
  438.  
  439. Evol_Fn = EVOL 'VERT' 'MANU' ListT_Fn 'Temps' ListF_Fn 'F_n' ;
  440. Evol_De = EVOL 'BLAN' 'MANU' ListT_De 'Temps' ListA_De 'Delta' ;
  441.  
  442. * Chargement normal -> vient mettre le plan et le cylindre en contact
  443. ForceN = 60. ;
  444. ValPresN = ForceN / LgrCT;
  445. PressNod = PRES 'MASS' ModeCyl ValPresN SetHautC ;
  446. CharNorm = CHAR 'MECA' Evol_Fn PressNod ;
  447.  
  448. * Fretting -> vient faire frotter le cylindre et le plan
  449. DeplFret = DEPI LinkHauC DltEtoil ;
  450. CharFret = CHAR 'DIMP' Evol_De DeplFret ;
  451.  
  452. * Definition des instants de calcul
  453. Distrib = @PCPT delta_t DltEtoil t_0 period N_cyclFr N_DemiPe
  454. N_DemiPl ;
  455.  
  456. * Pas de calcul Globaux : Sauve et Calcul
  457. PasGlob = ET (PROG 0. PAS 0.125 1.) Distrib ;
  458. PasSVGD = PROG T_INI_US PAS period T_FIN_US ;
  459. *______________________________________________________________________
  460. *
  461. * DEFINITION DE LA BOITE D USURE
  462. *______________________________________________________________________
  463. *
  464. * Coefficient pour l'usure (alpha en mm3/mJ)
  465. ALPHA = 1.e-8 ;
  466. BETA = 500. ;
  467. *
  468. * -> Boite d usure relative au plan
  469. BOX1 = TABL 'BOITE_USURE' ;
  470. BOX1.'VOLUME_REPARTITION' = SrfBUP ;
  471. BOX1.'SURFACE_APPLICATION' = LJK ;
  472. BOX1.'SURFACE_VOISINE' = CBC ;
  473. BOX1.'SURFACE_APPUI' = LOP ;
  474. BOX1.'POINT_O_U' = PJ ;
  475. BOX1.'DIRECTION_APPLICATION' = (0. -1.) ;
  476. BOX1.'COEFFICIENT_USURE' = ALPHA ;
  477. BOX1.'COEFFICIENT_FROTTEMENT' = MuContac ;
  478. BOX1.'FACTEUR_ACCELERATION' = BETA ;
  479. BOX1.'T_INI_US' = T_INI_US ;
  480. BOX1.'T_FIN_US' = T_FIN_US ;
  481. BOX1.'PERIODCY' = period ;
  482. BOX1.'USURE_CYCLIQUE' = VRAI ;
  483. BOX1.'USURE_INCREMENTALE' = FAUX ;
  484. BOX1.'POINT_REF_DELTA' = SurfCyl POIN 'PROC' PF ;
  485.  
  486. * -> Boite d usure relative au cylindre
  487. BOX2 = TABL 'BOITE_USURE' ;
  488. BOX2.'VOLUME_REPARTITION' = SrfBUC ;
  489. BOX2.'SURFACE_APPLICATION' = ('INVE' CBC) ;
  490. BOX2.'SURFACE_VOISINE' = LJK ;
  491. BOX2.'SURFACE_APPUI' = LGH ;
  492. BOX2.'POINT_O_U' = PB ;
  493. BOX2.'DIRECTION_APPLICATION' = (0. 1.) ;
  494. BOX2.'COEFFICIENT_USURE' = ALPHA ;
  495. BOX2.'COEFFICIENT_FROTTEMENT' = MuContac ;
  496. BOX2.'FACTEUR_ACCELERATION' = BETA ;
  497. BOX2.'T_INI_US' = T_INI_US ;
  498. BOX2.'T_FIN_US' = T_FIN_US ;
  499. BOX2.'PERIODCY' = period ;
  500. BOX2.'USURE_CYCLIQUE' = VRAI ;
  501. BOX2.'USURE_INCREMENTALE' = FAUX ;
  502. BOX2.'POINT_REF_DELTA' = SurfCyl POIN 'PROC' PF ;
  503.  
  504. **************************************
  505. ** ENCAPSULAGE DES BOITES D'USURE **
  506. **************************************
  507. NbBoxUs = 0 ;
  508. YesUsur = VRAI ;
  509.  
  510. SI OuiUsCyl ; NbBoxUs = NbBoxUs + 1 ; FINSI ;
  511. SI OuiUsPla ; NbBoxUs = NbBoxUs + 1 ; FINSI ;
  512.  
  513. BOX_USUR = TABL ;
  514. BOX_USUR.'N_BOITES' = NbBoxUs ;
  515. SI (NbBoxUs EGA 2) ;
  516. BOX_USUR. 1 = BOX1 ;
  517. BOX_USUR. 2 = BOX2 ;
  518. SINON ; SI OuiUsCyl ;
  519. BOX_USUR. 1 = BOX2 ;
  520. SINON ; SI OuiUsPla ;
  521. BOX_USUR. 1 = BOX1 ;
  522. SINON ;
  523. YesUsur = FAUX ;
  524. FINSI ; FINSI ; FINSI ;
  525. *______________________________________________________________________
  526. *
  527. * DEFINTION DE LA TABLE DE PASAPAS
  528. *______________________________________________________________________
  529. *
  530. TAB1 = TABL 'PASAPAS' ;
  531. TAB1.'MODELE' = ModeCyl ET ModePlan ET ModeCntc ;
  532. TAB1.'CARACTERISTIQUES' = MateCyl ET MatePlan ET MateCntc ;
  533. TAB1.'CHARGEMENT' = CharFret ET CharNorm ;
  534. TAB1.'BLOCAGES_MECANIQUES' = BloTot ;
  535. TAB1.'GRANDS_DEPLACEMENTS' = VRAI ;
  536. TAB1.'TEMPS_CALCULES' = PasGlob ;
  537. TAB1.'TEMPS_SAUVES' = PasGlob ;
  538. *TAB1.'TEMPS_SAUVEGARDES' = PasSVGD ;
  539. TAB1.'ECONOMIQUE' = VRAI ;
  540. TAB1.'BOITES_USURES' = BOX_USUR ;
  541. SI YesUsur ;
  542. TAB1.'PROCEDURE_PERSO1' = VRAI ;
  543. SINON ;
  544. TAB1.'PROCEDURE_PERSO1' = FAUX ;
  545. FINSI ;
  546. * Booleen utilise pour afficher le temps de calcul par cycle
  547. TAB1.'FIN_CYCLE' = FAUX ;
  548. *
  549. TAB1.'MESH-MFRO' = MFRO ;
  550. TAB1.'MESH-CON' = MUFRO ;
  551. TAB1.'MESH-CORR' = CHPZ ;
  552. TAB1.'MESH1' = SetHautP ;
  553. TAB1.'MESH2' = SetCrbeC ;
  554. *
  555. Tmp = TEMPS 'ENTI' 'HORL' ;
  556. *______________________________________________________________________
  557. *
  558. * PROCEDURE UTILISATEUR PERSO1
  559. *______________________________________________________________________
  560. *
  561. DEBP PERSO1 T1*'TABLE' ;
  562. N_BOITES = T1.'BOITES_USURES'.'N_BOITES' ;
  563. *
  564. * Boucle sur les boites a user
  565. 'REPE' BU N_BOITES ;
  566. ID_BU = &BU ;
  567. * Appel de l'identificateur d'evenements
  568. T1 = @EVN_IDT T1 ID_BU ;
  569. * Appel du manageur d'evenements
  570. T1 = @EVN_MNG T1 ID_BU ;
  571. 'FIN' BU ;
  572. *
  573. * Affichage des temps de calcul par cycle :
  574. 'SI' T1.'FIN_CYCLE' ;
  575. T1.'FIN_CYCLE' = FAUX ;
  576. RunTimeE = TEMPS 'ENTI' 'HORL' ;
  577. CyclTime = (FLOT RunTimeE)/ 1000. ;
  578. 'SI' ('EXIS' T1 'LISTE_RUN_TIME') ;
  579. DILRT = 'DIME' T1.'LISTE_RUN_TIME' ;
  580. RunTimeP = 'EXTR' T1.'LISTE_RUN_TIME' DILRT ;
  581. RunTimeF = RunTimeP + CyclTime ;
  582. T1.'LISTE_RUN_TIME' = T1.'LISTE_RUN_TIME' 'ET' RunTimeF ;
  583. T1.'LISTE_CYCLE_TIME' = T1.'LISTE_CYCLE_TIME' 'ET' CyclTime;
  584. 'SINON' ;
  585. RunTimeF = CyclTime ;
  586. T1.'LISTE_RUN_TIME' = 'PROG' RunTimeF ;
  587. T1.'LISTE_CYCLE_TIME' = 'PROG' CyclTime ;
  588. 'FINSI' ;
  589. MESS ' ' ;
  590. MESS ' ' ; MESS ' - CyclTime = ' CyclTime ' secondes - ';
  591. MESS ' ' ; MESS ' - RunTime = ' RunTimeF ' secondes - ';
  592. MESS ' ' ; MESS ' ' ;
  593. 'FINSI' ;
  594. *
  595. FINP T1;
  596. *
  597. PASAPAS Tab1 ;
  598. OPTI ECHO 0 ;
  599. *______________________________________________________________________
  600. *
  601. * VALIDATION CODE A CODE
  602. *______________________________________________________________________
  603. *
  604. * Comparaison des resultats obtenus avec Cast3M a la reference WearBox :
  605. * Code Matlab - Abaqus - Python
  606. * Fretting Team - LTDS - Ecole Centrale Lyon
  607. *
  608. * Une premiere version du cas test comportait 20 cycles numeriques,
  609. * qui dure environ 7 minutes.
  610. * La seconde version du cas test comporte 5 cycles numeriques, qui
  611. * dure environ 1.5 minutes. Celle-ci a ete mise en place par soucis
  612. * de rapidite.
  613. *
  614. BOITE_US = TAB1.'BOITES_USURES'. 1 ;
  615. EvUC_N20 = BOITE_US . 'EVO_USURE_CUMULEE' . 1 ;
  616. EvUC_N5 = BOITE_US . 'EVO_USURE_CUMULEE' . 5 ;
  617.  
  618. x_C3M20 = EXTR EvUC_N20 'ABSC' ;
  619. hu_C3M20 = EXTR EvUC_N20 'ORDO' ;
  620.  
  621. x_C3M5 = EXTR EvUC_N5 'ABSC' ;
  622. hu_C3M5 = EXTR EvUC_N5 'ORDO' ;
  623.  
  624. * Valeurs de reference provenant du code WearBox
  625. hu_R20_1 = PROG 0 0 0 0 0 0 0 0 0 0 0 ;
  626. hu_R20_2 = PROG -0.00000622 -0.00011182 -0.00022604 -0.00031499
  627. -0.00039416 -0.00045657 -0.0005048 -0.00053816 -0.00055841
  628. -0.00056512 -0.00055841 -0.00053816 -0.0005048 -0.00045657
  629. -0.00039416 -0.00031499 -0.00022609 -0.00011182 -0.00000622 ;
  630. hu_R20_3 = PROG 0 0 0 0 0 0 0 0 0 0 0 ;
  631.  
  632. hu_R5_1 = PROG 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
  633. hu_R5_2 = PROG -0.00000319 -0.00004986 -0.0000968 -0.0001257
  634. -0.00014598 -0.00015885 -0.00016597 -0.00016829 -0.00016597
  635. -0.00015885 -0.00014598 -0.0001257 -0.0000968 -0.00004986
  636. -0.00000319 ;
  637. hu_R5_3 = PROG 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
  638.  
  639. hu_R5 = hu_R5_1 ET hu_R5_2 ET hu_R5_3 ;
  640. hu_R20 = hu_R20_1 ET hu_R20_2 ET hu_R20_3 ;
  641. errHU_20 = (ABS hu_R20) - (ABS hu_C3M20) ;
  642. errHU_5 = (ABS hu_R5 ) - (ABS hu_C3M5) ;
  643.  
  644. EvEr_N20 = EVOL 'MANU' x_C3M20 errHU_20 ;
  645. EvHU_R20 = EVOL 'MANU' x_C3M20 hu_R20 ;
  646.  
  647. EvEr_N5 = EVOL 'MANU' x_C3M5 errHU_5 ;
  648. EvHU_R5 = EVOL 'MANU' x_C3M5 hu_R5 ;
  649.  
  650. MyEvos = (ABS EvUC_N20) ET (ABS EvHU_R20) ;
  651.  
  652. VolEr20 = INTG EvEr_N20 'ABSO' ;
  653. VolR20 = INTG EvHU_R20 'ABSO' ;
  654. PCT_Er20 = MAXI (VolEr20 / VolR20 * 100.) ;
  655.  
  656. VolEr5 = INTG EvEr_N5 'ABSO' ;
  657. VolR5 = INTG EvHU_R5 'ABSO' ;
  658. PCT_Er5 = MAXI (VolEr5 / VolR5 * 100.) ;
  659.  
  660. * Critere de validite du code d'usure Cast3M : moins de 1% d'erreur par
  661. * rapport a la reference WearBox (Matlab Abaqus Python)
  662. MESS ' ' ; MESS ' ' ;
  663. MESS '***************************' ;
  664. MESS '** CAS TEST CODE USURE **' ;
  665. MESS '***************************' ;
  666. MESS ' ' ; MESS ' ' ;
  667.  
  668. SI (PCT_Er5 <EG 1.) ;
  669. MESS ' CAS TEST DU CODE D USURE VALIDE' ;
  670. SINON ;
  671. MESS ' ERREUR SEUIL DEPASSEE POUR LE CAS TEST DU CODE D USURE' ;
  672. MESS ' ERREUR SEUIL TOLEREE : 1%' ;
  673. MESS ' ERREUR CONSTATEE : ' PCT_Er5 '%' ;
  674. ERRE 5 ;
  675. FINSI ;
  676. FIN ;
  677.  
  678.  
  679.  

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