Télécharger uscalc.procedur

Retour à la liste

Numérotation des lignes :

  1. * USCALC PROCEDUR MB234859 24/02/06 21:15:03 11833
  2. ************************************************************************
  3. * PROCEDURE USCALC
  4. *
  5. * Procedure qui determine, pour chaque surface a user, le cisaillement,
  6. * la pression de contact et la densite d'energie dissipee sur le pas de
  7. * temps, sur le cycle courant et totale.
  8. * Au dernier increment de chaque cycle, elle determine si les pas de
  9. * temps doivent etre recalcules a partir du cycle d'usure obtenu.
  10. *
  11. * Entrees :
  12. * T1 : Table de PASAPAS
  13. *
  14. * Appelee par USURE
  15. *
  16. ************************************************************************
  17. 'DEBP' USCALC T1*'TABLE' ;
  18. *
  19. BOITE_US = T1.'BOITES_USURE' ;
  20. IncActu = BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL' ;
  21. DTps = T1.'WTABLE'.'DT' ;
  22. *-----------------------------------------------------------------------
  23. * - LIEN ENTRE MULT. DE LAGRANGE DE CONTACT ET DE FROTTEMENT
  24. *-----------------------------------------------------------------------
  25. 'SI' ('NON' ('EXIS' BOITE_US.'INFOS' 'MULT_CONT'));
  26. *
  27. * Maillage de contact-frottement
  28. MODC = 'EXTR' T1.'MODELE' 'FORM' 'CONTACT' ;
  29. MFRO = 'EXTR' MODC 'MAIL' ;
  30. *
  31. NODEF = 'NBNO' (MFRO 'ELEM' 1) ;
  32. NBELT = 'NBEL' MFRO ;
  33. *
  34. MLIEN = 'VIDE' 'MAILLAGE'/'SEG2' ;
  35. MCONT = 'VIDE' 'MAILLAGE'/'POI1' ;
  36. 'REPE' BCL NBELT ;
  37. ELZ = MFRO 'ELEM' &BCL ;
  38. PCONT = ELZ 'POIN' 1 1 ;
  39. PFROT = ELZ 'POIN' NODEF 1 ;
  40. MAIZ = 'MANU' 'SEG2' PCONT PFROT ;
  41. 'SI' (BOITE_US.'INFOS'.'ITRID') ;
  42. PFRO2 = ELZ 'POIN' (NODEF - 1) 1 ;
  43. MAIZ = MAIZ 'ET' ('MANU' 'SEG2' PCONT PFRO2) ;
  44. 'FINSI' ;
  45. MLIEN = MLIEN 'ET' MAIZ ;
  46. MCONT = MCONT 'ET' PCONT ;
  47. 'FIN' BCL ;
  48. *
  49. MLIEN = 'UNIQ' MLIEN ;
  50. MCONT = 'UNIQ' MCONT ;
  51. *
  52. BOITE_US.'INFOS'.'MULT_CONT' = MCONT ;
  53. BOITE_US.'INFOS'.'CONT_FROT' = MLIEN ;
  54. *******************************************************
  55. BOITE_US.'INFOS'.'DELTA_T' = 0 ;
  56. *******************************************************
  57. 'FINSI';
  58. *
  59. MCONT = BOITE_US.'INFOS'.'MULT_CONT' ;
  60. MLIEN = BOITE_US.'INFOS'.'CONT_FROT' ;
  61. *-----------------------------------------------------------------------
  62. * - STATUT DES CONDITIONS UNILATERALES (CONTACT ET FROTTEMENT)
  63. *-----------------------------------------------------------------------
  64. * Resultats issus de UNPAS
  65. WCOF = T1.'WTABLE'.'POST_COFR';
  66. * Mult. de Lagrange associes aux CL unil actives (contact et frottement)
  67. CLUA = 'EXTR' WCOF.'MULT_SOLUT' 'MAIL' ;
  68. * Mult. de Lagrange associes aux CL de contact actives
  69. MLCA = CLUA 'INTE' MCONT ;
  70. *
  71. * Mult. de Lagrange de frottement associes a ceux de contact actifs
  72. MLFR = 'VIDE' 'MAILLAGE'/'POI1';
  73. 'REPE' BCL ('NBNO' MLCA) ;
  74. PZ = MLCA 'POIN' &BCL ;
  75. ELZ = MLIEN 'ELEM' 'APPUYE' 'LARGEMENT' PZ ;
  76. 'REPE' BCL2 ('NBEL' ELZ) ;
  77. ELTMP = ELZ 'ELEM' &BCL2 ;
  78. PFROT = ELTMP 'POIN' 2 1 ;
  79. MLFR = MLFR 'ET' PFROT ;
  80. 'FIN' BCL2 ;
  81. 'FIN' BCL ;
  82. *
  83. * Mult. de Lagrange associes aux CL de frottement actives
  84. **MLFRA = MLFR 'INTE' CLUA ;
  85. * Mult. de Lagrange de frottement inactifs avec mult. de contact actif
  86. * MUGL = 'DIFF' MLFR MLFRA ;
  87. *-----------------------------------------------------------------------
  88. DEPZ = 'ENLE' T1.'ESTIMATION'.'DEPLACEMENTS' 'FLX' ;
  89. LXZ = WCOF.'MULT_SOLUT' ;
  90. LCOMPF = BOITE_US.'INFOS'.'LFORCE' ;
  91. LZERO = BOITE_US.'INFOS'.'LVALE0' ;
  92. LUN = BOITE_US.'INFOS'.'LVALE1' ;
  93. LSCAL = BOITE_US.'INFOS'.'LSCAL' ;
  94. *
  95. 'REPE' BU BOITE_US.'INFOS'.'N_BOITES' ;
  96. *
  97. * --------------------------------------------------------------------
  98. * Initialisation au debut de chaque nouveau cycle
  99. 'SI' ('EGA' IncActu 1) ;
  100. BOITE_US. &BU .'GLISSEMENT' = 'TABLE' 'ESCLAVE' ;
  101. BOITE_US. &BU .'CISAILLEMENT' = 'TABLE' 'ESCLAVE' ;
  102. BOITE_US. &BU .'PRESSION_CONTACT' = 'TABLE' 'ESCLAVE' ;
  103. BOITE_US. &BU .'PRESSION_MAX_INC' = 'PROG' ;
  104. BOITE_US. &BU .'CISAILLEMENT_MAX_INC' = 'PROG' ;
  105. CHPINI = 'CHAN' 'COMP' BOITE_US. &BU .'CZERO' 'ED' ;
  106. BOITE_US. &BU .'DENS_ENER_DISS_CYCLE' = CHPINI ;
  107. 'FINSI' ;
  108. *
  109. * --------------------------------------------------------------------
  110. * Reactions normale et tangentielle et glissement
  111. SUR_APPL = BOITE_US. &BU .'SURFACE_APPLICATION' ;
  112. CHPTUN = 'MANU' 'CHPO' SUR_APPL LCOMPF LUN 'NATURE' 'DISCRET' ;
  113. ForceN = 'MANU' 'CHPO' SUR_APPL LCOMPF LZERO 'NATURE' 'DISCRET' ;
  114. ForceT = 'MANU' 'CHPO' SUR_APPL LCOMPF LZERO 'NATURE' 'DISCRET' ;
  115. Glismt = 'MANU' 'CHPO' SUR_APPL LCOMPF LZERO 'NATURE' 'DISCRET' ;
  116. Chpres = 'MANU' 'CHPO' SUR_APPL LCOMPF LZERO 'NATURE' 'DISCRET' ;
  117. MTMP = 'VIDE' 'MAILLAGE' ;
  118. 'REPE' BCL ('NBNO' MLFR) ;
  119. PFROT = MLFR 'POIN' &BCL ;
  120. ELTCF = MLIEN 'ELEM' 'APPUYE' 'LARGEMENT' PFROT ;
  121. PCONT = ELTCF 'POIN' 1 1 ;
  122. WCL = WCOF.'RIGI_UNILA' ;
  123. *- Reaction tangentielle
  124. Rtang = 'REDU' ('REAC' WCL ('REDU' LXZ PFROT)) SUR_APPL ;
  125. ForceT = ForceT 'ET' Rtang ;
  126. *- Reaction normale
  127. Rnorm = 'REDU' ('REAC' WCL ('REDU' LXZ PCONT)) SUR_APPL ;
  128. ForceN = ForceN 'ET' Rnorm ;
  129. MTMP = MTMP 'ET' ('EXTR' Rnorm 'MAIL') ;
  130. *- Glissement eventuel
  131. PscRtang = 'PSCA' Rtang Rtang LCOMPF LCOMPF ;
  132. NorRtang = PscRtang ** 0.5 ;
  133. Dirgliss = Rtang '/' NorRtang LCOMPF LSCAL LCOMPF;
  134. Valgliss = Dirgliss '*' ('EXTR' WCOF.'GLISSEMENT' 'FLX' PFROT) ;
  135. Valgliss = 'CHAN' 'ATTRIBUT' Valgliss 'NATURE' 'DISCRET' ;
  136. *
  137. * Certains noeuds apparaissent dans plusieurs conditions de contact/
  138. * frottement, il faut alors moyenner les valeurs de glissement
  139. Mglis = 'EXTR' Rtang 'MAIL' ;
  140. CHMZ = 'MANU' 'CHPO' Mglis LCOMPF LUN 'NATURE' 'DISCRET' ;
  141. Chpres = Chpres 'ET' CHMZ ;
  142. Glismt = Glismt 'ET' Valgliss ;
  143. 'FIN' BCL ;
  144. *
  145. **MTM2 = 'UNIQ' MTMP ;
  146. **CNBF = 'MANU' 'CHPO' MTM2 1 'SCAL' 1. 'NATURE' 'DISCRET' ;
  147. **'SI'('EGA' (BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL') 1) ;
  148. ** BOITE_US. &BU .'PRESSION_NBF' = CNBF ;
  149. **'SINON' ;
  150. ** BOITE_US. &BU .'PRESSION_NBF' = BOITE_US. &BU .'PRESSION_NBF' + CNBF ;
  151. **'FINSI' ;
  152. **EVT = evol vert chpo (BOITE_US. &BU .'PRESSION_NBF') sur_appl;
  153. **EVY = evol turq chpo CNBF sur_appl;
  154. *
  155. * Moyenner les valeurs de Glismt
  156. Chmoye = ('MASQ' Chpres 'EGAL' 0.) 'ET' Chpres ;
  157. Glismt = Glismt '/' Chmoye LCOMPF LCOMPF LCOMPF ;
  158. *
  159. * Usure bilaterale : equireparition de l'energie dissipee
  160. * -> a prendre en compte sur le coefficient d'usure
  161. * pas de coefficient ajoute sur les valeurs de glissement
  162. *
  163. * --------------------------------------------------------------------
  164. * Pression de contact et cisaillement
  165. XX = 1. '/' 2 ;
  166. 'SI' BOITE_US.'INFOS'.'ITRID' ;
  167. XX = 1. '/' 4. ;
  168. 'FINSI' ;
  169. CONF0 = 'FORM' ;
  170. 'FORM' DEPZ ;
  171. SurfElt = 'MANU' 'CHPO' SUR_APPL 1 'SCAL' 0. 'NATURE' 'DISCRET' ;
  172. 'REPE' BCL ('NBEL' SUR_APPL) ;
  173. ELTZ = SUR_APPL 'ELEM' &BCL ; SELT = 'MESU' ELTZ ;
  174. CHPZ = 'MANU' 'CHPO' ELTZ 1 'SCAL' (SELT '*' XX) 'NATURE' 'DISCRET';
  175. SurfElt = SurfElt 'ET' CHPZ ;
  176. 'FIN' BCL ;
  177. 'FORM' CONF0 ;
  178. BOITE_US. &BU .'LELT' = 'MINI' SurfElt ;
  179. *
  180. * Pression de contact
  181. FNsurf = ForceN '/' SurfElt LCOMPF LSCAL LCOMPF ;
  182. PscFNsur = 'PSCA' FNsurf FNsurf LCOMPF LCOMPF ;
  183. Cpress = PscFNsur ** 0.5 ;
  184. CPress = 'CHAN' 'ATTRIBUT' Cpress 'NATURE' 'DISCRET' ;
  185. *
  186. * Cisaillement
  187. FTsurf = ForceT '/' SurfElt LCOMPF LSCAL LCOMPF ;
  188. PscFTsur = 'PSCA' FTsurf FTsurf LCOMPF LCOMPF ;
  189. Cshear = PscFTsur ** 0.5 ;
  190. CShear = 'CHAN' 'ATTRIBUT' CShear 'NATURE' 'DISCRET' ;
  191. *
  192. * Glissement
  193. PscGlis = 'PSCA' Glismt Glismt LCOMPF LCOMPF ;
  194. NorGlis = PscGlis ** 0.5 ;
  195. NorGlis = 'CHAN' 'ATTRIBUT' NorGlis 'NATURE' 'DISCRET' ;
  196. *
  197. * --------------------------------------------------------------------
  198. * Densite d energie dissipee sur le pas de temps
  199. EnDisInc = 'PSCA' FTsurf Glismt LCOMPF LCOMPF ;
  200. EnDisInc = 'CHAN' 'COMP' ('ABS' EnDisInc) 'ED' ;
  201. EnDisInc = 'CHAN' 'ATTRIBUT' EnDisInc 'NATURE' 'DISCRET' ;
  202. *
  203. * Densite d energie dissipee sur le cycle
  204. EnDisCyc = BOITE_US. &BU .'DENS_ENER_DISS_CYCLE' ;
  205. EnDisCyc = EnDisCyc + EnDisInc ;
  206. *
  207. * Densite d energie dissipee totale (ensemble des cycles)
  208. EnDisTot = BOITE_US. &BU .'DENS_ENER_DISS_TOTALE' ;
  209. EnDisTot = EnDisTot + EnDisInc ;
  210. *
  211. * --------------------------------------------------------------------
  212. * Trace d evolutions le long de la zone de contact
  213. 'SI' BOITE_US.'INFOS'.'TRACE_DEBUG' ;
  214. 'SI' ('NON' BOITE_US.'INFOS'.'ITRID') ;
  215. *
  216. EvCPress = 'EVOL' 'BLEU' 'CHPO' CPress SUR_APPL ;
  217. EvCPress = 'EXTR' EvCPress 'COUR' 1 ;
  218. EvCPress = 'CHAN' EvCPress 'LEGE' 'Pressure' ;
  219. *
  220. EvCShear = 'EVOL' 'ROUG' 'CHPO' CShear SUR_APPL ;
  221. EvCShear = 'EXTR' EvCShear 'COUR' 1 ;
  222. EvCShear = 'CHAN' EvCShear 'LEGE' 'Shear' ;
  223. *
  224. EvGlisse = 'EVOL' 'VERT' 'CHPO' NorGlis SUR_APPL ;
  225. EvGlisse = 'EXTR' EvGlisse 'COUR' 1 ;
  226. EvGlisse = 'CHAN' EvGlisse 'LEGE' 'Glissement' ;
  227. *
  228. EvDltEnD = 'EVOL' 'JAUN' 'CHPO' EnDisInc SUR_APPL ;
  229. EvDltEnD = 'EXTR' EvDltEnD 'COUR' 1 ;
  230. EvDltEnD = 'CHAN' EvDltEnD 'LEGE' 'Energie_dis_Inc' ;
  231. *
  232. EvEnDCyc = 'EVOL' 'GRIS' 'CHPO' EnDisCyc SUR_APPL ;
  233. EvEnDCyc = 'EXTR' EvEnDCyc 'COUR' 1 ;
  234. EvEnDCyc = 'CHAN' EvEnDCyc 'LEGE' 'Energie_dis_Cyc' ;
  235. *
  236. 'DESS' (EvCPress 'ET' EvCShear 'ET' (500000. * EvGlisse)
  237. 'ET' (100. * EvDltEnD) 'ET' (100. * EvEnDCyc)) 'LEGE' 'NCLK' ;
  238. *
  239. 'FINSI' ;
  240. 'FINSI' ;
  241. *
  242. * --------------------------------------------------------------------
  243. * Cycle d'usure (force_tangentielle en fonction du deplacement)
  244. LstDelta = BOITE_US. &BU .'DELTAS' ;
  245. Delta_ii = 'EXTR' DEPZ BOITE_US.'INFOS'.'COMP_DEPI'
  246. BOITE_US.'INFOS'.'PTSZ_DEPI' ;
  247. LstDelta = LstDelta 'ET' Delta_ii ;
  248. *
  249. LstFTang = BOITE_US. &BU .'FORCES_TANGENTIELLES' ;
  250. FtangRes = 'PSCA' ForceT BOITE_US. &BU .'DIRE_REACTION'
  251. LCOMPF LCOMPF ;
  252. FTangRes = 'SOMT' FTangRes ;
  253. LstFTang = LstFTang 'ET' FTangRes ;
  254. *
  255. * --------------------------------------------------------------------
  256. * Dernier instant du cycle actuel
  257. 'SI' ('EGA' IncActu BOITE_US.'INFOS'.'NB_INCREMENTS_PAR_CYCLE') ;
  258. *
  259. * Vitesse d'usure sur le cycle (utilise dans USEXPL/USIMPL)
  260. ALPHA = BOITE_US. &BU .'COEFFICIENT_USURE' ;
  261. VitUsure = 'CHAN' 'COMP' (ALPHA '*' EnDisCyc) 'SCAL' ;
  262. BOITE_US. &BU .'VITESSE_USURE' = VitUsure ;
  263.  
  264. CycActu = BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL' ;
  265. CyclFret = 'EVOL' 'ROUG' 'MANU' 'Deplacement' LstDelta
  266. 'Force_Tangentielle' LstFTang ;
  267. EnteteCF = 'CHAI' 'Cycle_de_fretting_n: ' CycActu FORMAT '(I2)' ;
  268. CyclFret = 'CHAN' CyclFret 'LEGE' EnteteCF ;
  269. BOITE_US. &BU .'CYCLE_DE_FRETTING'. CycActu = CyclFret ;
  270. *
  271. * FAUT-IL REDETERMINER LES PAS DE TEMPS
  272. Ampl_F_N = ('MAXI' LstFTang) '-' ('MINI' LstFTang) ;
  273. Ampl_Dlt = ('MAXI' LstDelta) '-' ('MINI' LstDelta) ;
  274. ECycFret = 'ABS' ('INTG' CyclFret) ;
  275. DltG_Est = ECycFret / 2. / Ampl_F_N ;
  276. DltT_Est = (Ampl_Dlt / 2.) - DltG_Est ;
  277. BOITE_US.'INFOS'.'DELTAP' = BOITE_US.'INFOS'.'DELTA_T' ;
  278. BOITE_US.'INFOS'.'DELTA_T' = DltT_Est ;
  279. *
  280. 'SI' (('EGA' &BU 1) 'ET' BOITE_US.'INFOS'.'CALCUL_PAS');
  281. ECycGtot = Ampl_F_N * Ampl_Dlt ;
  282. BOITE_US.'INFOS'.'AJUSTE_PAS' = FAUX ;
  283. * Uniquement si regime de glissement total
  284. 'SI' ((ECycFret / ECycGtot) '>' 0.2) ;
  285. BOITE_US.'INFOS'.'AJUSTE_PAS' = VRAI ;
  286. 'SI' ('NEG' CycActu 1) ;
  287. ******** LDltTPre = BOITE_US. &BU .'DELTA_T' ;
  288. ******** DltTPre = 'EXTR' LDltTPre ('DIME' LDltTPre) ;
  289. DltTPre = BOITE_US.'INFOS'.'DELTAP' ;
  290. VarDltT = 'ABS' ((DltT_Est - DltTPre) / DltTPre) ;
  291. BOITE_US.'INFOS'.'AJUSTE_PAS' = (VarDltT '>' 0.1) ;
  292. 'FINSI' ;
  293. CHAZ = 'CHAI' 'Pas de temps recalcules :' ;
  294. CHAZ = 'CHAI' CHAZ BOITE_US.'INFOS'.'AJUSTE_PAS' ;
  295. 'MESS' CHAZ ;
  296. 'FINSI' ;
  297. 'FINSI' ;
  298. *
  299. * Reinitialisation (le dernier point est aussi premier cycle suivant)
  300. LstDelta = 'PROG' Delta_ii ;
  301. LstFTang = 'PROG' FTangRes ;
  302. *
  303. 'SI' BOITE_US.'INFOS'.'TRACE_DEBUG' ;
  304. TabDess = TABL ;
  305. TabDess. 1 = 'TIRC MARQ CROI' ;
  306. 'DESS' CyclFret TabDess 'GRIL' 'LEGE' ;
  307. 'FINSI' ;
  308. 'FINSI' ;
  309. *
  310. * --------------------------------------------------------------------
  311. * Stockage des resultats
  312. BOITE_US. &BU .'GLISSEMENT'. IncActu = 'ABS' NorGlis ;
  313. BOITE_US. &BU .'PRESSION_CONTACT'. IncActu = DTps '*' CPress ;
  314. BOITE_US. &BU .'CISAILLEMENT'. IncActu = DTps '*' ('ABS' CShear);
  315. BOITE_US. &BU .'DENS_ENER_DISS_CYCLE' = EnDisCyc ;
  316. BOITE_US. &BU .'DENS_ENER_DISS_TOTALE' = EnDisTot ;
  317. BOITE_US. &BU .'DELTAS' = LstDelta ;
  318. BOITE_US. &BU .'FORCES_TANGENTIELLES' = LstFTang ;
  319. *
  320. BOITE_US. &BU .'PRESSION_MAX_INC' =
  321. BOITE_US. &BU .'PRESSION_MAX_INC' 'ET' ('MAXI' CPress) ;
  322. BOITE_US. &BU .'CISAILLEMENT_MAX_INC' =
  323. BOITE_US. &BU .'CISAILLEMENT_MAX_INC' 'ET' ('MAXI' CShear 'ABS') ;
  324. 'FIN' BU ;
  325. *-----------------------------------------------------------------------
  326. 'FINP' ;
  327.  
  328.  

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