Télécharger @usure.procedur

Retour à la liste

Numérotation des lignes :

  1. * @USURE PROCEDUR MB234859 22/03/23 21:15:04 11320
  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) 'DENS_ENER_DISS_TOTALE' ;
  106. 'OTER' (BOITE_US. &BU) 'DELTAS' ;
  107. 'OTER' (BOITE_US. &BU) 'FORCES_TANGENTIELLES' ;
  108. 'OTER' (BOITE_US. &BU) 'MAIL_PSIP' ;
  109. 'OTER' (BOITE_US. &BU) 'CZERO' ;
  110. 'OTER' (BOITE_US. &BU) 'PRESSION_MAX_INC' ;
  111. 'OTER' (BOITE_US. &BU) 'CISAILLEMENT_MAX_INC' ;
  112. 'OTER' (BOITE_US. &BU) 'MODINTG' ;
  113. 'OTER' (BOITE_US. &BU) 'VNORM_INTE' ;
  114. 'OTER' (BOITE_US. &BU) 'DIRE_REACTION' ;
  115. 'SI' (BOITE_US.'INFOS'.'ITRID') ;
  116. 'OTER' (BOITE_US. &BU) 'VTANGEN1' ;
  117. 'OTER' (BOITE_US. &BU) 'VTANGEN2' ;
  118. 'SINON' ;
  119. 'OTER' (BOITE_US. &BU) 'VTANGENT' ;
  120. 'FINSI' ;
  121. 'FINSI' ;
  122. *
  123. 'FIN' BU ;
  124. *
  125. * Affichage du temps de calcul
  126. RunTimeE = 'TEMPS' 'HORL' ;
  127. 'TEMP' 'ZERO' ;
  128. CyclTime = 'FLOT' RunTimeE / 1000. ;
  129. 'SI' ('EXIS' T1 'RUN_TIME') ;
  130. DILRT = 'DIME' T1.'RUN_TIME' ;
  131. RunTimeP = 'EXTR' T1.'RUN_TIME' DILRT ;
  132. RunTimeF = RunTimeP + CyclTime ;
  133. T1.'RUN_TIME' = T1.'RUN_TIME' 'ET' RunTimeF ;
  134. T1.'CYCLE_TIME' = T1.'CYCLE_TIME' 'ET' CyclTime;
  135. 'SINON' ;
  136. RunTimeF = CyclTime ;
  137. T1.'RUN_TIME' = 'PROG' RunTimeF ;
  138. T1.'CYCLE_TIME' = 'PROG' CyclTime ;
  139. 'FINSI' ;
  140. MESS ' ' ;
  141. MESS ' ' ; MESS ' - CyclTime = ' CyclTime ' secondes - ';
  142. MESS ' ' ; MESS ' - RunTime = ' RunTimeF ' secondes - ';
  143. MESS ' ' ; MESS ' ' ;
  144. *
  145. 'SINON' ;
  146. BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL' =
  147. BOITE_US.'INFOS'.'INDICE_INCREMENT_ACTUEL' + 1 ;
  148. 'FINSI' ;
  149. *
  150. *----------------------------------------------------------------------*
  151. * - Indices de debut et fin de cycle - Fin de calcul *
  152. *----------------------------------------------------------------------*
  153. IndPas = T1.'WTABLE'.'NSOR' ;
  154. 'SI' (('EGA' CycActu 1) 'ET' ('EGA' IncActu 1)) ;
  155. LIndCyc = 'LECT' IndPas ;
  156. BOITE_US.'POST'.'INDICES_CYCLE'. CycActu = LIndCyc ;
  157. 'SINON' ;
  158. * NSOR+1 car la sauvegarde s'effectue apres (on anticipe le numero)
  159. IProc = IndPas + 1 ;
  160. ISAUV = 'DANS' (T1.'WTABLE'.'IPRESU') (T1.'WTABLE'.'TEMPS0') ;
  161. 'SI' ISAUV ;
  162. BOITE_US.'POST'.'INDICES_CYCLE'. CycActu =
  163. BOITE_US.'POST'.'INDICES_CYCLE'. CycActu 'ET' IProc ;
  164. 'SI' ('EGA' NbResMaj 0) ;
  165. T1.'ARRET' = VRAI ;
  166. 'SINON' ;
  167. * T_inc est le dernier instant de CycActu et le premier de CycSuiv
  168. 'SI' AppUsure ;
  169. LIndCyc = 'LECT' IProc ;
  170. CycSuiv = BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL' ;
  171. BOITE_US.'POST'.'INDICES_CYCLE'. CycSuiv = LIndCyc ;
  172. 'FINSI' ;
  173. 'FINSI' ;
  174. 'FINSI' ;
  175. 'FINSI' ;
  176. *
  177. 'FINP' T1;
  178.  
  179.  

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