Télécharger @USURE.procedur

Retour à la liste

Numérotation des lignes :

  1. * @USURE PROCEDUR MB234859 21/10/21 21:15:02 11111
  2. ***********************************************************************
  3. * PROCEDURE @USURE
  4. *
  5. * Procedure principale pour les calculs d'usure qui determine si :
  6. * - les grandeurs necessaires au calcul de la profoondeur usee
  7. * - le profil d'usure doit etre applique (AppUsure = VRAI)
  8. *
  9. * Entrees :
  10. * T1 : Table de PASAPAS
  11. *
  12. * Sortie :
  13. * T1 : Table de PASAPAS avec les resultats propres a l'usure
  14. *
  15. * Appelee par PERSO1
  16. *
  17. ************************************************************************
  18. 'DEBP' @USURE T1*'TABLE' ;
  19. *
  20. BOITE_US = T1.'BOITES_USURE' ;
  21. *
  22. *----------------------------------------------------------------------*
  23. * - PREMIER APPEL - INITIALISATIONS TABLE ET PAS DE TEMPS *
  24. *----------------------------------------------------------------------*
  25. 'SI' ('EGA' T1.'PERSO1_APPEL' 1) ;
  26. *
  27. 'REPE' BU (BOITE_US.'DONNEES'.'N_BOITES') ;
  28. @USINIB T1 &BU ;
  29. 'FIN' BU ;
  30. *
  31. 'SI' (BOITE_US.'INFOS'.'CALCUL_PAS') ;
  32. @USTMPS T1 ;
  33. 'FINSI' ;
  34. *
  35. 'FINSI' ;
  36. *
  37. *----------------------------------------------------------------------*
  38. * - DOIT-ON CALCULER OU APPLIQUER L'USURE *
  39. *----------------------------------------------------------------------*
  40. T_inc = T1.'ESTIMATION'.'TEMPS' ;
  41. DELTT = T_inc - BOITE_US.'DONNEES'.'T_DEBUT_USURE' ;
  42. 'SI' (DELTT '<EG' 1.E-15) ;
  43. 'QUIT' @USURE ;
  44. 'FINSI' ;
  45. *
  46. CycActu = BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL' ;
  47. IncActu = BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL' ;
  48. NbIncCy = BOITE_US.'INFOS'.'NB_INCREMENTS_PAR_CYCLE' ;
  49. NCycle = BOITE_US.'DONNEES'.'NB_CYCLES' ;
  50. NbCycRe = BOITE_US.'INFOS'.'NB_CYCLES_RESTANTS' ;
  51. *
  52. AppUsure = 'EGA' IncActu NbIncCy ;
  53. BOITE_US.'INFOS'.'FINCYCLE' = AppUsure ;
  54. *
  55. * Affichage
  56. 'MESS' ' ' ;
  57. 'MESS' 'Cycles a calculer : ' ' ' NCycle ' / Cycles restants : ' ' ' NbCycRe ;
  58. 'MESS' ' -> Increment' ' ' IncActu ' sur' ' ' NbIncCy ;
  59. *
  60. *----------------------------------------------------------------------*
  61. * - GLISSEMENT, CISAILLEMENT, PRESSION DE CONTACT ET ENERGIE DISSIPEE *
  62. *----------------------------------------------------------------------*
  63. 'REPE' BU (BOITE_US.'DONNEES'.'N_BOITES') ;
  64. T1 = @USCALC T1 &BU;
  65. 'FIN' BU ;
  66. *
  67. *----------------------------------------------------------------------*
  68. * - APPLICATION DU PROFIL D'USURE *
  69. *----------------------------------------------------------------------*
  70. 'SI' AppUsure ;
  71. T1 = @USPROF T1 ;
  72. 'REPE' BU (BOITE_US.'DONNEES'.'N_BOITES') ;
  73. *
  74. * Post-traitement supplementaire
  75. T1 = @USPOST T1 &BU;
  76. * Application du profil d'usure au maillage
  77. @USDEPL T1 &BU ;
  78. *
  79. * Nombre de cycle restants maintenant a calculer
  80. NbResMaj = BOITE_US.'INFOS'.'NB_CYCLES_RESTANTS' ;
  81. 'SI' ('EGA' &BU BOITE_US.'DONNEES'.'N_BOITES') ;
  82. 'MESS' ' ' ;
  83. 'MESS' 'Apres application du profil d usure ' ;
  84. 'MESS' 'Cycles a calculer : ' ' ' NCycle ' / Cycles restants : ' ' ' NbResMaj ;
  85. 'FINSI' ;
  86. *
  87. 'SI' ('NEG' NbResMaj 0) ;
  88. 'SI' ('EGA' &BU BOITE_US.'DONNEES'.'N_BOITES') ;
  89. * Liste des pas de temps pour le prochain cycle
  90. 'SI' (BOITE_US.'INFOS'.'CALCUL_PAS') ;
  91. @USTMPS T1 ;
  92. 'FINSI' ;
  93. BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL' = 1 ;
  94. BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL' =
  95. BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL' + 1 ;
  96. 'FINSI' ;
  97. * Reinitialisation de certains indices de table
  98. @USINIB T1 &BU;
  99. 'SINON' ;
  100. * Menage de fin de calcul - Suppression d'indices
  101. 'OTER' (BOITE_US. &BU) 'GLISSEMENT' ;
  102. 'OTER' (BOITE_US. &BU) 'CISAILLEMENT' ;
  103. 'OTER' (BOITE_US. &BU) 'PRESSION_CONTACT' ;
  104. 'OTER' (BOITE_US. &BU) 'DENS_ENER_DISS_CYCLE' ;
  105. 'OTER' (BOITE_US. &BU) 'DELTAS' ;
  106. 'OTER' (BOITE_US. &BU) 'FORCES_TANGENTIELLES' ;
  107. 'OTER' (BOITE_US. &BU) 'MAIL_PSIP' ;
  108. 'FINSI' ;
  109. *
  110. 'FIN' BU ;
  111. *
  112. * Affichage du temps de calcul
  113. RunTimeE = 'TEMPS' 'HORL' ;
  114. 'TEMP' 'ZERO' ;
  115. CyclTime = 'FLOT' RunTimeE / 1000. ;
  116. 'SI' ('EXIS' T1 'RUN_TIME') ;
  117. DILRT = 'DIME' T1.'RUN_TIME' ;
  118. RunTimeP = 'EXTR' T1.'RUN_TIME' DILRT ;
  119. RunTimeF = RunTimeP + CyclTime ;
  120. T1.'RUN_TIME' = T1.'RUN_TIME' 'ET' RunTimeF ;
  121. T1.'CYCLE_TIME' = T1.'CYCLE_TIME' 'ET' CyclTime;
  122. 'SINON' ;
  123. RunTimeF = CyclTime ;
  124. T1.'RUN_TIME' = 'PROG' RunTimeF ;
  125. T1.'CYCLE_TIME' = 'PROG' CyclTime ;
  126. 'FINSI' ;
  127. MESS ' ' ;
  128. MESS ' ' ; MESS ' - CyclTime = ' CyclTime ' secondes - ';
  129. MESS ' ' ; MESS ' - RunTime = ' RunTimeF ' secondes - ';
  130. MESS ' ' ; MESS ' ' ;
  131. *
  132. 'SINON' ;
  133. BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL' =
  134. BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL' + 1 ;
  135. 'FINSI' ;
  136. *
  137. *----------------------------------------------------------------------*
  138. * - Indices de debut et fin de cycle - Fin de calcul *
  139. *----------------------------------------------------------------------*
  140. IndPas = T1.'WTABLE'.'NSOR' ;
  141. 'SI' (('EGA' CycActu 1) 'ET' ('EGA' IncActu 1)) ;
  142. LIndCyc = 'LECT' IndPas ;
  143. BOITE_US.'POST'.'INDICES_CYCLE'. CycActu = LIndCyc ;
  144. 'SINON' ;
  145. * NSOR+1 car la sauvegarde s'effectue apres (on anticipe le numero)
  146. IProc = IndPas + 1 ;
  147. ISAUV = 'DANS' (T1.'WTABLE'.'IPRESU') (T1.'WTABLE'.'TEMPS0') ;
  148. 'SI' ISAUV ;
  149. BOITE_US.'POST'.'INDICES_CYCLE'. CycActu =
  150. BOITE_US.'POST'.'INDICES_CYCLE'. CycActu 'ET' IProc ;
  151. 'SI' ('EGA' NbResMaj 0) ;
  152. T1.'ARRET' = VRAI ;
  153. 'SINON' ;
  154. * T_inc est le dernier instant de CycActu et le premier de CycSuiv
  155. 'SI' AppUsure ;
  156. LIndCyc = 'LECT' IProc ;
  157. CycSuiv = BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL' ;
  158. BOITE_US.'POST'.'INDICES_CYCLE'. CycSuiv = LIndCyc ;
  159. 'FINSI' ;
  160. 'FINSI' ;
  161. 'FINSI' ;
  162. 'FINSI' ;
  163. *
  164. 'FINP' T1;
  165.  
  166.  

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