Télécharger @ustmps.procedur

Retour à la liste

Numérotation des lignes :

  1. * @USTMPS PROCEDUR MB234859 21/10/21 21:15:02 11111
  2. ************************************************************************
  3. * PROCEDURE @USTMPS
  4. *
  5. * Cette procedure determine la liste des instants a calculer pour le
  6. * prochain cycle.
  7. * Si AJUSTE_PAS = VRAI, les pas de temps sont recalcules
  8. * Si AJUSTE_PAS = FAUX, les pas de temps sont ceux du cycle precedent
  9. * qui ont ete conserves dans BOITE_US.'INFOS'.'INSTANTS_CYCLE'.
  10. *
  11. * Entree :
  12. * T1 : TABLE transmise a PASAPAS
  13. *
  14. * Appelee par @USURE
  15. *
  16. ************************************************************************
  17. 'DEBP' @USTMPS T1*'TABLE' ;
  18. *
  19. BOITE_US = T1.'BOITES_USURE' ;
  20. NbIncDC = BOITE_US.'INFOS'.'NB_INCREMENTS_PAR_CYCLE' / 2 ;
  21. NCycle = BOITE_US.'DONNEES'.'NB_CYCLES' ;
  22. *
  23. Periode = BOITE_US.'DONNEES'.'PERIODE' ;
  24. DemiPer = Periode / 2. ;
  25. QuartPer = Periode / 4. ;
  26. *
  27. *----------------------------------------------------------------------*
  28. * - DEFINITION "STANDARD" D'UN CYCLE *
  29. *----------------------------------------------------------------------*
  30. 'SI' ('NEG' T1.'PERSO1_APPEL' 1) ;
  31. Tactu = BOITE_US.'INFOS'.'T_DEBUT_DEPI' ;
  32. Tactu = (Periode * BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL') + Tactu ;
  33. *
  34. 'SI' (BOITE_US.'INFOS'.'AJUSTE_PAS') ;
  35. DltaTMin = 'VALE' 'GRAN' ; LElmtMin = 'VALE' 'GRAN' ;
  36. 'REPE' BU (BOITE_US.'DONNEES'.'N_BOITES') ;
  37. LDeltaT = BOITE_US. &BU .'DELTA_T' ;
  38. DltaTca = 'EXTR' LDeltaT ('DIME' LDeltaT) ;
  39. 'SI' ('<' DltaTca DltaTMin) ;
  40. DltaTMin = DltaTca ;
  41. 'FINSI' ;
  42. LElmt = BOITE_US. &BU .'LELT' ;
  43. 'SI' ('<' LElmt LElmtMin) ;
  44. LElmtMin = LElmt ;
  45. 'FINSI' ;
  46. 'FIN' BU ;
  47. TauxGlPa = DltaTMin '/' BOITE_US.'INFOS'.'DEPLA_IMPOSE' ;
  48. TauxElCo = LElmtMin '/' BOITE_US.'INFOS'.'DEPLA_IMPOSE' ;
  49. *
  50. * NbIncPe points sur la pente soit ]Tactu;T_Pente[
  51. NbIncPe = 'ENTI' 'SUPE' (TauxGlPa * NbIncDC) ;
  52. T_Pente = DemiPer * TauxGlPa ;
  53. DT_Pent = T_Pente / NbIncPe ;
  54. *
  55. * NbIncPl points sur le plateau soit [T_pente;DemiPer]
  56. * -> -1 pour avoir le bon nombre de pas de temps car on ajoute
  57. * QuartPer a la liste.
  58. NbIncPl = NbIncDC - NbIncPe - 1 ;
  59. T_Plate = DemiPer - T_Pente ;
  60. DT_Plat = T_Plate / NbIncPl ;
  61. *
  62. 'SI' ('&lt;EG' NbIncPe 1) ;
  63. DemiCyc = 'PROG' T_Pente 'PAS' DT_Plat DemiPer ;
  64. 'SINON' ;
  65. DemiCyc = 'PROG' DT_Pent 'PAS' DT_Pent T_Pente
  66. 'PAS' DT_Plat DemiPer ;
  67. 'FINSI' ;
  68. DemiCyc = 'ORDO' (DemiCyc 'ET' QuartPer) 'CROI' ;
  69. CycleStd = DemiCyc 'ET' (DemiCyc '+' DemiPer) ;
  70. DimeCycl = 'DIME' CycleStd ;
  71. NbIncCyc = BOITE_US.'INFOS'.'NB_INCREMENTS_PAR_CYCLE' ;
  72. 'SI' ('NEG' DimeCycl NbIncCyc) ;
  73. 'MESS' 'Incoherence entre :' ;
  74. CHA1 = 'CHAI' ' le nombre d instants a calculer : ' DimeCycl ;
  75. CHA2 = 'CHAI' ' le nombre d instants demandes : ' NbIncCyc ;
  76. 'MESS' CHA1 ; 'MESS' CHA2 ;
  77. 'ERRE' 5 ;
  78. 'FINSI' ;
  79. BOITE_US.'INFOS'.'INSTANTS_CYCLE' = CycleStd ;
  80. 'SINON' ;
  81. CycleStd = BOITE_US.'INFOS'.'INSTANTS_CYCLE' ;
  82. 'FINSI' ;
  83. *
  84. 'SINON' ;
  85. *
  86. * Instants a calculer (premier appel a PERSO1)
  87. Tactu = BOITE_US.'INFOS'.'T_DEBUT_DEPI' ;
  88. T_Pente = DemiPer ;
  89. DT_Pent = T_Pente / NbIncDC ;
  90. CycleStd = 'PROG' DT_Pent 'PAS' DT_Pent DemiPer
  91. 'PAS' DT_Pent Periode ;
  92. BOITE_US.'INFOS'.'INSTANTS_CYCLE' = CycleStd ;
  93. 'FINSI' ;
  94. *
  95. *----------------------------------------------------------------------*
  96. * - MISE A JOUR DES INSTANTS A CALCULER/SAUVEGARDER *
  97. *----------------------------------------------------------------------*
  98. Distrib = CycleStd '+' Tactu ;
  99. PasCalc = T1.'TEMPS_CALCULES' 'ET' Distrib ;
  100. T1.'TEMPS_CALCULES' = PasCalc ;
  101. T1.'WTABLE'.'TEMPS_CALCULES' = PasCalc ;
  102. *
  103. * Instants ou les resulats sont conserves
  104. TfinCyc = 'EXTR' Distrib ('DIME' Distrib) ;
  105. PasSvgd = 'PROG' TfinCyc ;
  106. T1.'TEMPS_SAUVES' = T1.'TEMPS_SAUVES' 'ET' PasSvgd ;
  107. T1.'WTABLE'.'IPRESU' = T1.'WTABLE'.'IPRESU' 'ET' PasSvgd ;
  108. *
  109. * Instants pour une sauvegarde sur disque
  110. **'SI' (T1.'WTABLE'.'ISAUVEGL') ;
  111. ** T1.'TEMPS_SAUVEGARDES' = T1.'TEMPS_SAUVEGARDES' 'ET' PasSvgd ;
  112. ** T1.'WTABLE'.'ISAUVEGA' = T1.'WTABLE'.'ISAUVEGA' 'ET' PasSvgd ;
  113. **'SINON' ;
  114. ** T1.'TEMPS_SAUVEGARDES' = PasSvgd ;
  115. ** T1.'WTABLE'.'ISAUVEGA' = PasSvgd ;
  116. **'FINSI' ;
  117. **T1.'WTABLE'.'ISAUVEGL' = VRAI ;
  118. *
  119. 'FINP' ;
  120.  

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