Télécharger @USURE.procedur

Retour à la liste

Numérotation des lignes :

  1. * @USURE PROCEDUR MB234859 19/11/27 21:15:01 10399
  2. ***********************************************************************
  3. * PROCEDURE @USURE
  4. *
  5. * Procedure principale pour les calculs d'usure qui determine si :
  6. * - le profil d'usure doit etre applique (AppliUsu=VRAI)
  7. * - T_inc correspond a un instant de debut de cycle (DebCycle=VRAI)
  8. * - T_inc correspond a un instant de fin de cycle (FinCycle=VRAI)
  9. *
  10. * Entrees :
  11. * T1 : Table de PASAPAS
  12. * ID_BU : Entier donnant le numero de la BOITE D'USURE a considerer
  13. *
  14. * Sortie :
  15. * T1 : Table de PASAPAS avec les booleens mis a jour
  16. *
  17. * Appelee par PERSO1
  18. * [Collaboration LTDS - These E. Marc]
  19. *
  20. ************************************************************************
  21. 'DEBP' @USURE T1*'TABLE' ;
  22. *
  23. * Pas de temps pour les cycles d'usure et initialisation boite(s)
  24. BOITE_US = T1.'BOITES_USURE' ;
  25. 'SI' ('EGA' T1.'PERSO1_APPEL' 1) ;
  26. *
  27. 'REPE' BCL (BOITE_US.'N_BOITES') ;
  28. @USINIB T1 &BCL ;
  29. 'FIN' BCL ;
  30. *
  31. 'SI' (BOITE_US.'INFOS'.'CALCUL_PAS') ;
  32. Distrib PasSVGD = @USTMPS T1 ;
  33. Distri0 = T1.'TEMPS_CALCULES' ;
  34. Distrib = Distri0 'ET' Distrib ;
  35. T1.'TEMPS_CALCULES' = Distrib ;
  36. T1.'WTABLE'.'TEMPS_CALCULES' = Distrib ;
  37. T1.'TEMPS_SAUVES' = Distrib ;
  38. T1.'WTABLE'.'IPRESU' = Distrib ;
  39. * T1.'TEMPS_SAUVEGARDES' = PasSVGD ;
  40. * T1.'WTABLE'.'ISAUVEGA' = PasSVGD ;
  41. * T1.'WTABLE'.'ISAUVEGL' = VRAI ;
  42. 'FINSI' ;
  43. 'FINSI' ;
  44. *
  45. * Instant de calcul T_inc
  46. T_inc = T1.'ESTIMATION'.'TEMPS' ;
  47. DELTT = T_inc - BOITE_US.'DONNEES'.'T_DEBUT_USURE' ;
  48. 'SI' (DELTT '<EG' 1.E-15) ;
  49. 'QUIT' @USURE ;
  50. 'FINSI' ;
  51. *
  52. * Informations sur le pas calcule
  53. CycActu = BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL' ;
  54. IncActu = BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL' ;
  55. NbIncCy = BOITE_US.'INFOS'.'NB_INCREMENTS_PAR_CYCLE' ;
  56. NCyNum = BOITE_US.'INFOS'.'NB_CYCLES_NUM' ;
  57. IndPas = T1.'WTABLE'.'PAS' ;
  58. IndEvo = T1.'WTABLE'.'ICHG' ;
  59. *
  60. * A t-on T_inc qui correspond a un instant de debut ou de fin de cycle
  61. DebCycle = FAUX ; FinCycle = FAUX ; AppliUsu = FAUX ;
  62. 'SI' ('EGA' IncActu 1) ;
  63. DebCycle = VRAI ;
  64. 'SINON' ;
  65. 'SI' ('EGA' IncActu NbIncCy) ;
  66. AppliUsu = VRAI ;
  67. FinCycle = VRAI ;
  68. 'SI' ('NEG' CycActu NCyNum) ;
  69. DebCycle = VRAI ;
  70. 'FINSI' ;
  71. 'FINSI' ;
  72. 'FINSI' ;
  73. BOITE_US.'INFOS'.'FINCYCLE' = FinCycle ;
  74. *
  75. * Affichage
  76. 'MESS' ' ' ;
  77. 'MESS' 'Calcul du cycle ' CycActu ' sur ' NCyNum ;
  78. 'MESS' ' -> Increment ' IncActu ' sur ' NbIncCy ;
  79. *
  80. * Cas de l'entree dans un nouveau cycle (sauf premier)
  81. * => T_inc est le dernier instant de CycActu et le premier de CycActu+1
  82. * => Creation de la liste du CycActu + 1 cycle
  83. 'SI' (DebCycle 'ET' FinCycle) ;
  84. LstIncNC = LECT IndPas ;
  85. LstTpsNC = PROG T_inc ;
  86. NXTCYC = CycActu + 1 ;
  87. BOITE_US.'POST'.'LISTE_INDICES_CYCLE'. NXTCYC = LstIncNC ;
  88. BOITE_US.'POST'.'LISTE_TEMPS_CYCLE' . NXTCYC = LstTpsNC ;
  89. 'FINSI' ;
  90. *
  91. 'SI' (('EGA' CycActu 1) 'ET' ('EGA' IncActu 1)) ;
  92. LstIncNC = 'LECT' IndPas ;
  93. LstTpsNC = 'PROG' T_inc ;
  94. BOITE_US.'POST'.'LISTE_INDICES_CYCLE'. CycActu = LstIncNC ;
  95. BOITE_US.'POST'.'LISTE_TEMPS_CYCLE' . CycActu = LstTpsNC ;
  96. 'SINON' ;
  97. LstIncCC = BOITE_US.'POST'.'LISTE_INDICES_CYCLE'. CycActu ;
  98. LstTpsCC = BOITE_US.'POST'.'LISTE_TEMPS_CYCLE' . CycActu ;
  99. LstIncCC = LstIncCC 'ET' IndPas ;
  100. LstTpsCC = LstTpsCC 'ET' T_inc ;
  101. BOITE_US.'POST'.'LISTE_INDICES_CYCLE'. CycActu = LstIncCC ;
  102. BOITE_US.'POST'.'LISTE_TEMPS_CYCLE' . CycActu = LstTpsCC ;
  103. 'FINSI' ;
  104. *
  105. * Traitement de chaque boite d'usure
  106. 'REPE' BU (BOITE_US.'N_BOITES') ;
  107. ID_BU = &BU ;
  108. *
  109. * Glissement, cisaillement, pression de contact, energie dissipee
  110. T1 = @USCALC T1 ID_BU;
  111. *
  112. 'SI' AppliUsu ;
  113. * Calcul du profil d'usure
  114. T1 = @USPROF T1 ID_BU;
  115. * Post-traitement supplementaire
  116. T1 = @USPOST T1 ID_BU;
  117. * Application du profil d'usure au maillage
  118. @USDEPL T1 ID_BU ;
  119. *
  120. 'SI' DebCycle ;
  121. 'SI' ('EGA' ID_BU BOITE_US.'N_BOITES') ;
  122. * Doit-on redeterminer les instants a calculer?
  123. 'SI' ((BOITE_US.'INFOS'.'AJUSTE_PAS') 'ET'
  124. (BOITE_US.'INFOS'.'CALCUL_PAS')) ;
  125. Distrib PasSVGD = @USTMPS T1 ;
  126. Distri0 = 'EXTR' (T1.'TEMPS_CALCULES') ('LECT' 1 'PAS' 1 IndEvo) ;
  127. Distrib = Distri0 'ET' Distrib ;
  128. T1.'TEMPS_CALCULES' = Distrib ;
  129. T1.'WTABLE'.'TEMPS_CALCULES' = Distrib ;
  130. T1.'TEMPS_SAUVES' = Distrib ;
  131. T1.'WTABLE'.'IPRESU' = Distrib ;
  132. 'FINSI' ;
  133. BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL' = 1 ;
  134. NCyActu = BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL' ;
  135. BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL' = NCyActu + 1 ;
  136. 'FINSI' ;
  137. *
  138. * Reinitialisation de certains indices de table
  139. @USINIB T1 ID_BU;
  140. 'FINSI' ;
  141. *
  142. * Affichage du temps de calcul
  143. 'SI' ('EGA' ID_BU BOITE_US.'N_BOITES') ;
  144. RunTimeE = TEMPS 'ENTI' 'HORL' ;
  145. CyclTime = (FLOT RunTimeE)/ 1000. ;
  146. 'SI' ('EXIS' T1 'LISTE_RUN_TIME') ;
  147. DILRT = 'DIME' T1.'LISTE_RUN_TIME' ;
  148. RunTimeP = 'EXTR' T1.'LISTE_RUN_TIME' DILRT ;
  149. RunTimeF = RunTimeP + CyclTime ;
  150. T1.'LISTE_RUN_TIME' = T1.'LISTE_RUN_TIME' 'ET' RunTimeF ;
  151. T1.'LISTE_CYCLE_TIME' = T1.'LISTE_CYCLE_TIME' 'ET' CyclTime;
  152. 'SINON' ;
  153. RunTimeF = CyclTime ;
  154. T1.'LISTE_RUN_TIME' = 'PROG' RunTimeF ;
  155. T1.'LISTE_CYCLE_TIME' = 'PROG' CyclTime ;
  156. 'FINSI' ;
  157. MESS ' ' ;
  158. MESS ' ' ; MESS ' - CyclTime = ' CyclTime ' secondes - ';
  159. MESS ' ' ; MESS ' - RunTime = ' RunTimeF ' secondes - ';
  160. MESS ' ' ; MESS ' ' ;
  161. 'FINSI' ;
  162. *
  163. 'SINON' ;
  164. 'SI' ('EGA' ID_BU BOITE_US.'N_BOITES') ;
  165. NUMINC = BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL' ;
  166. BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL' = NUMINC + 1 ;
  167. 'FINSI' ;
  168. 'FINSI' ;
  169. *
  170. 'FIN' BU ;
  171. *
  172. 'FINP' T1;
  173.  
  174.  
  175.  

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