Télécharger uscalc.procedur

Retour à la liste

Numérotation des lignes :

  1. * USCALC PROCEDUR MB234859 24/10/30 21:15:06 12059
  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 .'DENS_ENER_DISS' = 'TABLE' 'ESCLAVE' ;
  103. BOITE_US. &BU .'PRESSION_CONTACT' = 'TABLE' 'ESCLAVE' ;
  104. BOITE_US. &BU .'PRESSION_MAX_INC' = 'PROG' ;
  105. BOITE_US. &BU .'CISAILLEMENT_MAX_INC' = 'PROG' ;
  106. CHPINI = 'CHAN' 'COMP' BOITE_US. &BU .'CZERO' 'ED' ;
  107. BOITE_US. &BU .'DENS_ENER_DISS_CYCLE' = CHPINI ;
  108. 'FINSI' ;
  109. *
  110. * --------------------------------------------------------------------
  111. * Reactions normale et tangentielle et glissement
  112. SUR_APPL = BOITE_US. &BU .'SURFACE_APPLICATION' ;
  113. CHPTUN = 'MANU' 'CHPO' SUR_APPL LCOMPF LUN 'NATURE' 'DISCRET' ;
  114. ForceN = 'MANU' 'CHPO' SUR_APPL LCOMPF LZERO 'NATURE' 'DISCRET' ;
  115. ForceT = 'MANU' 'CHPO' SUR_APPL LCOMPF LZERO 'NATURE' 'DISCRET' ;
  116. Glismt = 'MANU' 'CHPO' SUR_APPL LCOMPF LZERO 'NATURE' 'DISCRET' ;
  117. Chpres = 'MANU' 'CHPO' SUR_APPL LCOMPF LZERO 'NATURE' 'DISCRET' ;
  118. MTMP = 'VIDE' 'MAILLAGE' ;
  119. 'REPE' BCL ('NBNO' MLFR) ;
  120. PFROT = MLFR 'POIN' &BCL ;
  121. ELTCF = MLIEN 'ELEM' 'APPUYE' 'LARGEMENT' PFROT ;
  122. PCONT = ELTCF 'POIN' 1 1 ;
  123. WCL = WCOF.'RIGI_UNILA' ;
  124. *- Reaction tangentielle
  125. Rtang = 'REDU' ('REAC' WCL ('REDU' LXZ PFROT)) SUR_APPL ;
  126. ForceT = ForceT 'ET' Rtang ;
  127. *- Reaction normale
  128. Rnorm = 'REDU' ('REAC' WCL ('REDU' LXZ PCONT)) SUR_APPL ;
  129. ForceN = ForceN 'ET' Rnorm ;
  130. MTMP = MTMP 'ET' ('EXTR' Rnorm 'MAIL') ;
  131. *- Glissement eventuel
  132. PscRtang = 'PSCA' Rtang Rtang LCOMPF LCOMPF ;
  133. NorRtang = PscRtang ** 0.5 ;
  134. Dirgliss = Rtang '/' NorRtang LCOMPF LSCAL LCOMPF;
  135. Valgliss = Dirgliss '*' ('EXTR' WCOF.'GLISSEMENT' 'FLX' PFROT) ;
  136. Valgliss = 'CHAN' 'ATTRIBUT' Valgliss 'NATURE' 'DISCRET' ;
  137. *
  138. * Certains noeuds apparaissent dans plusieurs conditions de contact/
  139. * frottement, il faut alors moyenner les valeurs de glissement
  140. Mglis = 'EXTR' Rtang 'MAIL' ;
  141. CHMZ = 'MANU' 'CHPO' Mglis LCOMPF LUN 'NATURE' 'DISCRET' ;
  142. Chpres = Chpres 'ET' CHMZ ;
  143. Glismt = Glismt 'ET' Valgliss ;
  144. 'FIN' BCL ;
  145. *
  146. **MTM2 = 'UNIQ' MTMP ;
  147. **CNBF = 'MANU' 'CHPO' MTM2 1 'SCAL' 1. 'NATURE' 'DISCRET' ;
  148. **'SI'('EGA' (BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL') 1) ;
  149. ** BOITE_US. &BU .'PRESSION_NBF' = CNBF ;
  150. **'SINON' ;
  151. ** BOITE_US. &BU .'PRESSION_NBF' = BOITE_US. &BU .'PRESSION_NBF' + CNBF ;
  152. **'FINSI' ;
  153. **EVT = evol vert chpo (BOITE_US. &BU .'PRESSION_NBF') sur_appl;
  154. **EVY = evol turq chpo CNBF sur_appl;
  155. *
  156. * Moyenner les valeurs de Glismt
  157. Chmoye = ('MASQ' Chpres 'EGAL' 0.) 'ET' Chpres ;
  158. Glismt = Glismt '/' Chmoye LCOMPF LCOMPF LCOMPF ;
  159. *
  160. * Usure bilaterale : equireparition de l'energie dissipee
  161. * -> a prendre en compte sur le coefficient d'usure
  162. * pas de coefficient ajoute sur les valeurs de glissement
  163. *
  164. * --------------------------------------------------------------------
  165. * Pression de contact et cisaillement
  166. XX = 1. '/' 2 ;
  167. 'SI' BOITE_US.'INFOS'.'ITRID' ;
  168. XX = 1. '/' 4. ;
  169. 'FINSI' ;
  170. CONF0 = 'FORM' ;
  171. 'FORM' DEPZ ;
  172. SurfElt = 'MANU' 'CHPO' SUR_APPL 1 'SCAL' 0. 'NATURE' 'DISCRET' ;
  173. 'REPE' BCL ('NBEL' SUR_APPL) ;
  174. ELTZ = SUR_APPL 'ELEM' &BCL ; SELT = 'MESU' ELTZ ;
  175. CHPZ = 'MANU' 'CHPO' ELTZ 1 'SCAL' (SELT '*' XX) 'NATURE' 'DISCRET';
  176. SurfElt = SurfElt 'ET' CHPZ ;
  177. 'FIN' BCL ;
  178. 'FORM' CONF0 ;
  179. BOITE_US. &BU .'LELT' = 'MINI' SurfElt ;
  180. *
  181. * Pression de contact
  182. FNsurf = ForceN '/' SurfElt LCOMPF LSCAL LCOMPF ;
  183. PscFNsur = 'PSCA' FNsurf FNsurf LCOMPF LCOMPF ;
  184. Cpress = PscFNsur ** 0.5 ;
  185. CPress = 'CHAN' 'ATTRIBUT' Cpress 'NATURE' 'DISCRET' ;
  186. *
  187. * Cisaillement
  188. FTsurf = ForceT '/' SurfElt LCOMPF LSCAL LCOMPF ;
  189. PscFTsur = 'PSCA' FTsurf FTsurf LCOMPF LCOMPF ;
  190. Cshear = PscFTsur ** 0.5 ;
  191. CShear = 'CHAN' 'ATTRIBUT' CShear 'NATURE' 'DISCRET' ;
  192. *
  193. * Glissement
  194. PscGlis = 'PSCA' Glismt Glismt LCOMPF LCOMPF ;
  195. NorGlis = PscGlis ** 0.5 ;
  196. NorGlis = 'CHAN' 'ATTRIBUT' NorGlis 'NATURE' 'DISCRET' ;
  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. * --------------------------------------------------------------------
  204. * Trace d evolutions le long de la zone de contact
  205. 'SI' BOITE_US.'INFOS'.'TRACE_DEBUG' ;
  206. 'SI' ('NON' BOITE_US.'INFOS'.'ITRID') ;
  207. *
  208. EvCPress = 'EVOL' 'BLEU' 'CHPO' CPress SUR_APPL ;
  209. EvCPress = 'EXTR' EvCPress 'COUR' 1 ;
  210. EvCPress = 'CHAN' EvCPress 'LEGE' 'Pressure' ;
  211. *
  212. EvCShear = 'EVOL' 'ROUG' 'CHPO' CShear SUR_APPL ;
  213. EvCShear = 'EXTR' EvCShear 'COUR' 1 ;
  214. EvCShear = 'CHAN' EvCShear 'LEGE' 'Shear' ;
  215. *
  216. EvGlisse = 'EVOL' 'VERT' 'CHPO' NorGlis SUR_APPL ;
  217. EvGlisse = 'EXTR' EvGlisse 'COUR' 1 ;
  218. EvGlisse = 'CHAN' EvGlisse 'LEGE' 'Glissement' ;
  219. *
  220. EvDltEnD = 'EVOL' 'JAUN' 'CHPO' EnDisInc SUR_APPL ;
  221. EvDltEnD = 'EXTR' EvDltEnD 'COUR' 1 ;
  222. EvDltEnD = 'CHAN' EvDltEnD 'LEGE' 'Energie_dis_Inc' ;
  223. *
  224. 'DESS' (EvCPress 'ET' EvCShear 'ET' (500000. * EvGlisse)
  225. 'ET' (100. * EvDltEnD)) 'LEGE' 'NCLK' ;
  226. *
  227. 'FINSI' ;
  228. 'FINSI' ;
  229. *
  230. * --------------------------------------------------------------------
  231. * Cycle d'usure (force_tangentielle en fonction du deplacement)
  232. LstDelta = BOITE_US. &BU .'DELTAS' ;
  233. Delta_ii = 'EXTR' DEPZ BOITE_US.'INFOS'.'COMP_DEPI'
  234. BOITE_US.'INFOS'.'PTSZ_DEPI' ;
  235. LstDelta = LstDelta 'ET' Delta_ii ;
  236. *
  237. LstFTang = BOITE_US. &BU .'FORCES_TANGENTIELLES' ;
  238. FtangRes = 'PSCA' ForceT BOITE_US. &BU .'DIRE_REACTION'
  239. LCOMPF LCOMPF ;
  240. FTangRes = 'SOMT' FTangRes ;
  241. LstFTang = LstFTang 'ET' FTangRes ;
  242. *
  243. * --------------------------------------------------------------------
  244. * Stockage des resultats
  245. BOITE_US. &BU .'GLISSEMENT'. IncActu = 'ABS' NorGlis ;
  246. BOITE_US. &BU .'PRESSION_CONTACT'. IncActu = DTps '*' CPress ;
  247. BOITE_US. &BU .'CISAILLEMENT'. IncActu = DTps '*' ('ABS' CShear);
  248. BOITE_US. &BU .'DENS_ENER_DISS'. IncActu = EnDisInc ;
  249. *
  250. BOITE_US. &BU .'DELTAS' = LstDelta ;
  251. BOITE_US. &BU .'FORCES_TANGENTIELLES' = LstFTang ;
  252. BOITE_US. &BU .'PRESSION_MAX_INC' =
  253. BOITE_US. &BU .'PRESSION_MAX_INC' 'ET' ('MAXI' CPress) ;
  254. BOITE_US. &BU .'CISAILLEMENT_MAX_INC' =
  255. BOITE_US. &BU .'CISAILLEMENT_MAX_INC' 'ET' ('MAXI' CShear 'ABS') ;
  256. *
  257. * --------------------------------------------------------------------
  258. * Dernier instant du cycle actuel
  259. 'SI' ('EGA' IncActu BOITE_US.'INFOS'.'NB_INCREMENTS_PAR_CYCLE') ;
  260. *
  261. * Cumul des densites d'energie dissipee par frottement
  262. EnDisCyc = 'ETG' BOITE_US. &BU .'DENS_ENER_DISS' ;
  263. BOITE_US. &BU .'DENS_ENER_DISS_CYCLE' = EnDisCyc ;
  264. BOITE_US. &BU .'DENS_ENER_DISS_TOTALE' =
  265. BOITE_US. &BU .'DENS_ENER_DISS_TOTALE' + EnDisCyc ;
  266. *
  267. * Vitesse d'usure sur le cycle (utilise dans USEXPL/USIMPL)
  268. ALPHA = BOITE_US. &BU .'COEFFICIENT_USURE' ;
  269. VitUsure = 'CHAN' 'COMP' (ALPHA '*' EnDisCyc) 'SCAL' ;
  270. BOITE_US. &BU .'VITESSE_USURE' = VitUsure ;
  271.  
  272. CycActu = BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL' ;
  273. CyclFret = 'EVOL' 'ROUG' 'MANU' 'Deplacement' LstDelta
  274. 'Force_Tangentielle' LstFTang ;
  275. EnteteCF = 'CHAI' 'Cycle_de_fretting_n: ' CycActu FORMAT '(I2)' ;
  276. CyclFret = 'CHAN' CyclFret 'LEGE' EnteteCF ;
  277. BOITE_US. &BU .'CYCLE_DE_FRETTING'. CycActu = CyclFret ;
  278. *
  279. 'SI' BOITE_US.'INFOS'.'TRACE_DEBUG' ;
  280. TabDess = TABL ;
  281. TabDess. 1 = 'TIRC MARQ CROI' ;
  282. 'DESS' CyclFret TabDess 'GRIL' 'LEGE' ;
  283. 'FINSI' ;
  284. *
  285. * Faut-il redeterminer les pas de temps
  286. Ampl_F_N = ('MAXI' LstFTang) '-' ('MINI' LstFTang) ;
  287. Ampl_Dlt = ('MAXI' LstDelta) '-' ('MINI' LstDelta) ;
  288. ECycFret = 'ABS' ('INTG' CyclFret) ;
  289. DltG_Est = ECycFret / 2. / Ampl_F_N ;
  290. DltT_Est = (Ampl_Dlt / 2.) - DltG_Est ;
  291. BOITE_US.'INFOS'.'DELTAP' = BOITE_US.'INFOS'.'DELTA_T' ;
  292. BOITE_US.'INFOS'.'DELTA_T' = DltT_Est ;
  293. *
  294. 'SI' (('EGA' &BU 1) 'ET' BOITE_US.'INFOS'.'CALCUL_PAS');
  295. ECycGtot = Ampl_F_N * Ampl_Dlt ;
  296. BOITE_US.'INFOS'.'AJUSTE_PAS' = FAUX ;
  297. * Uniquement si regime de glissement total
  298. 'SI' ((ECycFret / ECycGtot) '>' 0.2) ;
  299. BOITE_US.'INFOS'.'AJUSTE_PAS' = VRAI ;
  300. 'SI' ('NEG' CycActu 1) ;
  301. ******** LDltTPre = BOITE_US. &BU .'DELTA_T' ;
  302. ******** DltTPre = 'EXTR' LDltTPre ('DIME' LDltTPre) ;
  303. DltTPre = BOITE_US.'INFOS'.'DELTAP' ;
  304. VarDltT = 'ABS' ((DltT_Est - DltTPre) / DltTPre) ;
  305. BOITE_US.'INFOS'.'AJUSTE_PAS' = (VarDltT '>' 0.1) ;
  306. 'FINSI' ;
  307. CHAZ = 'CHAI' 'Pas de temps recalcules :' ;
  308. CHAZ = 'CHAI' CHAZ BOITE_US.'INFOS'.'AJUSTE_PAS' ;
  309. 'MESS' CHAZ ;
  310. 'FINSI' ;
  311. 'FINSI' ;
  312. *
  313. * Reinitialisation (le dernier point est aussi premier cycle suivant)
  314. BOITE_US. &BU .'DELTAS' = 'PROG' Delta_ii ;
  315. BOITE_US. &BU .'FORCES_TANGENTIELLES' = 'PROG' FTangRes ;
  316. 'FINSI' ;
  317. *
  318. 'FIN' BU ;
  319. *-----------------------------------------------------------------------
  320. 'FINP' ;
  321.  
  322.  

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