Télécharger chglim.eso

Retour à la liste

Numérotation des lignes :

chglim
  1. C CHGLIM SOURCE CHAT 05/01/12 21:56:40 5004
  2. SUBROUTINE CHGLIM(IVX0,IVXMIN,IVXMAX,IVXPR1,IVXPR2,N,IP,
  3. * IVLL,IVUL,IVMIN,IVMAX,IMETH,IT0,IS0,XSMAX)
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8(A-H,O-Z)
  6.  
  7. -INC PPARAM
  8. -INC CCOPTIO
  9. -INC SMLREEL
  10. -INC SMTABLE
  11. -INC CCREEL
  12. POINTEUR MLREE4.MLREEL
  13. *
  14. * CALCUL DES VALEURS L(I,J) & U(I,J)
  15. *
  16. * en sortie ivmin et ivmax contiennent les nouvelles bornes de x
  17. * c'est a dire les anciens ivxmin et ivxmax
  18. *
  19. * methode normale avec t0
  20. *
  21. IF(IMETH.EQ.1) THEN
  22. MLREEL=IVX0
  23. MLREE1=IVLL
  24. MLREE2=IT0
  25. SEGACT MLREEL*MOD,MLREE1*MOD,MLREE2*MOD
  26. NN=PROG(/1)
  27. DO 1 K=1,NN-1
  28. MLREE1.PROG(K)=MLREE2.PROG(K)*PROG(K)
  29. 1 CONTINUE
  30. MLREE1.PROG(NN)=0.00
  31. IF(IIMPI.EQ.1799) WRITE(IOIMP,11)(MLREE1.PROG(K),K=1,N)
  32. 11 FORMAT(' VALEUR DE IVLL ',/,(1X,5E12.5))
  33. MLREE1=IVUL
  34. SEGACT MLREE1*MOD
  35. DO 2 K=1,NN-1
  36. MLREE1.PROG(K)=PROG(K)/MLREE2.PROG(K)
  37. 2 CONTINUE
  38. MLREE1.PROG(NN)=XSMAX+1.
  39. IF(IIMPI.EQ.1799) WRITE(IOIMP,12)(MLREE1.PROG(K),K=1,N)
  40. 12 FORMAT(' VALEUR DE IVUL ',/,(1X,5E12.5))
  41. *
  42. * methode MOVLIM sur s0
  43. *
  44. ELSEIF(IMETH.EQ.2) THEN
  45. IF(IP.LT.3) THEN
  46. MLREEL=IVX0
  47. MLREE1=IVXMAX
  48. MLREE2=IVXMIN
  49. MLREE3=IVLL
  50. SEGACT MLREEL*MOD,MLREE1*MOD,MLREE2*MOD,MLREE3*MOD
  51. DO 20 K=1,N-1
  52. MLREE3.PROG(K)=PROG(K)* 0.7
  53. 20 CONTINUE
  54. MLREE3.PROG(N)=0.00
  55. IF(IIMPI.EQ.1799) WRITE(IOIMP,31)(MLREE3.PROG(K),K=1,N)
  56. 31 FORMAT(' VALEUR DE IVLL ',/,(1X,5E12.5))
  57. MLREE3=IVUL
  58. SEGACT MLREE3*MOD
  59. DO 22 K=1,N
  60. MLREE3.PROG(K)=MLREE1.PROG(K)-MLREE2.PROG(K)
  61. MLREE3.PROG(K)=PROG(K)+MLREE3.PROG(K)
  62. MLREE3.PROG(K)=PROG(K)/ 0.7
  63. 22 CONTINUE
  64. MLREE3.PROG(N)=XSMAX +1.
  65. IF(IIMPI.EQ.1799) WRITE(IOIMP,32)(MLREE3.PROG(K),K=1,N)
  66. 32 FORMAT(' VALEUR DE IVUL ',/,(1X,5E12.5))
  67. ELSE
  68. MLREEL=IVX0
  69. MLREE1=IVXPR1
  70. MLREE2=IVXPR2
  71. MLREE4=IS0
  72. SEGACT MLREEL*MOD,MLREE1*MOD,MLREE2*MOD,MLREE4*MOD
  73. JG=N
  74. SEGINI MLREE3
  75. DO 23 K=1,N-1
  76. OSCIL=(PROG(K)-MLREE1.PROG(K))*(MLREE1.PROG(K)-MLREE2.PROG(K))
  77. IF(OSCIL.LT.0) THEN
  78. MLREE3.PROG(K)=MLREE4.PROG(K)
  79. ELSE
  80. MLREE3.PROG(K)=1./MLREE4.PROG(K)
  81. ENDIF
  82. 23 CONTINUE
  83. MLREE1=IVLL
  84. MLREE2=IVXPR1
  85. SEGACT MLREE1*MOD,MLREE2*MOD
  86. DO 24 K=1,N-1
  87. MLREE1.PROG(K)=PROG(K) - MLREE3.PROG(K)*
  88. * (MLREE2.PROG(K)-MLREE1.PROG(K))
  89. 24 CONTINUE
  90. MLREE1.PROG(N)=0.00
  91. MLREE1=IVUL
  92. MLREE2=IVXPR1
  93. SEGACT MLREE1*MOD,MLREE2*MOD
  94. DO 25 K=1,N-1
  95. MLREE1.PROG(K)=PROG(K) + MLREE3.PROG(K)*
  96. * (MLREE1.PROG(K)-MLREE2.PROG(K))
  97. 25 CONTINUE
  98. MLREE1.PROG(N)=XSMAX + 1.
  99. SEGSUP MLREE3
  100. ENDIF
  101. *
  102. * methode lineaire
  103. *
  104. ELSEIF(IMETH.EQ.3) THEN
  105. MLREEL=IVLL
  106. MLREE1=IVUL
  107. MLREE2=IVX0
  108. SEGACT MLREEL*MOD,MLREE1*MOD,MLREE2*MOD
  109. NN1 = MLREE2.PROG(/1)-1
  110. DO 41 K=1,NN1
  111. PROG(K)=0.
  112. MLREE1.PROG(K)=1000.*MLREE2.PROG(K)
  113. 41 CONTINUE
  114. PROG(N)=0.D0
  115. MLREE1.PROG(N)=XSMAX+1.
  116. IF(IIMPI.EQ.1799) WRITE(IOIMP,51)(PROG(K),K=1,N)
  117. 51 FORMAT(' VALEUR DE IVLL ',/,(1X,5E12.5))
  118. IF(IIMPI.EQ.1799) WRITE(IOIMP,52)(MLREE1.PROG(K),K=1,N)
  119. 52 FORMAT(' VALEUR DE IVUL ',/,(1X,5E12.5))
  120. ENDIF
  121. *
  122. * partie commune au trois methode : calcul de bornes inf et sup
  123. *
  124. MLREEL=IVX0
  125. MLREE1=IVLL
  126. MLREE3=IVXMIN
  127. SEGACT MLREEL*MOD,MLREE1*MOD,MLREE3*MOD
  128. JG=N
  129. SEGINI MLREE2
  130. IVMIN=MLREE2
  131. DO 3 K=1,N
  132. MLREE2.PROG(K)=MLREE3.PROG(K)
  133. CTE=0.95*MLREE1.PROG(K) + 0.05* PROG(K)
  134. IF( MLREE2.PROG(K).LE.CTE) MLREE2.PROG(K)=CTE
  135. 3 CONTINUE
  136. MLREE2.PROG(N)=1.
  137. MLREE1=IVUL
  138. MLREE3=IVXMAX
  139. SEGACT MLREE1*MOD,MLREE3*MOD
  140. JG=N
  141. SEGINI MLREE2
  142. IVMAX=MLREE2
  143. DO 4 K=1,N
  144. CTE=0.95*MLREE1.PROG(K) + 0.05 *PROG(K)
  145. MLREE2.PROG(K)=MLREE3.PROG(K)
  146. IF(MLREE2.PROG(K).GE.CTE) MLREE2.PROG(K)=CTE
  147. 4 CONTINUE
  148. MLREEL=IVMIN
  149. MLREE1=IVXMIN
  150. SEGACT MLREEL*MOD,MLREE1*MOD
  151. DO 6 K=1,N
  152. IF(MLREE1.PROG(K).GT.PROG(K))PROG(K)=MLREE1.PROG(K)
  153. 6 CONTINUE
  154. MLREEL=IVMAX
  155. MLREE1=IVXMAX
  156. SEGACT MLREEL*MOD,MLREE1*MOD
  157. DO 7 K=1,N
  158. IF(MLREE1.PROG(K).LT.PROG(K))PROG(K)=MLREE1.PROG(K)
  159. 7 CONTINUE
  160. RETURN
  161. END
  162.  
  163.  
  164.  
  165.  
  166.  

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