Télécharger triso.eso

Retour à la liste

Numérotation des lignes :

triso
  1. C TRISO SOURCE PV 21/11/09 21:15:08 11184
  2. C
  3. SUBROUTINE TRISO(VCHC,XX,YY,ZZ,VV,NPT,NISO)
  4. C
  5. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  6. C C
  7. C TRACER DES ISOVALEURS D UN CHAMPOINT C
  8. C PAR COLORIAGE DE ZONE C
  9. C OU PAR TRACE DE LIGNE EN COULEUR (SELON ISOTYP C
  10. C C
  11. C C
  12. C AOUT 85 C
  13. C C
  14. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  15. C
  16. REAL VCHC
  17. C
  18.  
  19. -INC PPARAM
  20. -INC CCOPTIO
  21. -INC CCREEL
  22. -INC CCGEOME
  23. -INC CCTRACE
  24. C
  25. PARAMETER (NTR=10)
  26. LOGICAL RANGE,IDEP
  27. DIMENSION VCHC(*),XTR(NTR),YTR(NTR),ZTR(NTR)
  28. dimension xx(*),yy(*),vv(*),zz(*),vvn(8)
  29. real*8 vdiff,up,upos,xxx
  30. *
  31. * RANGE(XXX)= XXX.GE.-0.000001.AND.XXX.LE.1.000001
  32. RANGE(XXX)= XXX.GE.(-xszpre).AND.XXX.LE.(1.+xszpre)
  33.  
  34. * write(ioimp,*) 'coucou triso, npt,niso=',npt,niso
  35. VSTART=-xsgran
  36. VFINAL= xsgran
  37. VALHAU=VSTART
  38. if (iogra.eq.6) then
  39. valbas=vchc(1)
  40. *goo valhau=vchc(niso)
  41. valhau=vchc(max(niso-1,1))
  42. do 300 i=1,npt
  43. vvn(i)=(vv(i)-valbas)/(valhau-valbas)
  44. 300 continue
  45. call ogltriso(xx,yy,zz,vvn,npt)
  46. endif
  47. IF (ISOTYP.GT.0.and.iogra.ne.6) THEN
  48. DO 50 KK=1,NISO
  49. VALBAS=VALHAU
  50. VALHAU=VFINAL
  51. * IF (KK.NE.NISO) VALHAU=(VCHC(KK)+VCHC(KK+1))/2
  52. * TOLL=ABS(VCHC(min(niso,KK+1))-VCHC(max(1,KK-1)))/1e+2
  53. IF (KK.NE.NISO) VALHAU=VCHC(KK)
  54. * TOLL=ABS(VCHC(min(niso-1,KK+1))-VCHC(max(1,KK-1)))/1e+2
  55. TOLL=ABS(VCHC(min(niso-1,KK+1))-VCHC(max(1,KK-1)))*xszpre
  56. toll=max(xspeti,toll)
  57. NP=0
  58. C VALBAS ET VALHAU SONT LES FRONTIERES DE LA ZONE A COLORIER
  59. C JE CRAINS QU'IL FAILLE RECENSER LES CAS POSSIBLES
  60. C LE POINT EST IL DANS LA ZONE ?
  61. do 10 ipt=1,npt
  62. iptn=ipt+1
  63. if (iptn.gt.npt) iptn=1
  64. IF (VALBAS-toll.LE.VV(IPT).AND.VALHAU+toll.GE.VV(IPT))
  65. $ THEN
  66. NP=NP+1
  67. if (npt.eq.2.and.np.gt.2) np=2
  68. XTR(NP)=XX(IPT)
  69. YTR(NP)=YY(IPT)
  70. ZTR(NP)=ZZ(IPT)
  71. ENDIF
  72. if (npt.eq.2.and.ipt.eq.2) goto 10
  73. C RENCONTRE-T-ON VALHAU OU VALBAS EN ALLANT VERS le point suivant
  74. vdiff=sign(max(toll,abs(vv(iptn)-vv(ipt))),vv(iptn)
  75. $ -vv(ipt))
  76. UPOSH=(VALHAU-VV(ipt))*sign(1.d0,vdiff)
  77. UPOSB=(VALBAS-VV(ipt))*sign(1.d0,vdiff)
  78. UP=MIN(UPOSH,UPOSB)
  79. up=max(-2*abs(vdiff),up)
  80. up=min(2*abs(vdiff),up)
  81. UP=UP/abs(VDIFF)
  82. IF (RANGE(UP)) THEN
  83. NP=NP+1
  84. if (npt.eq.2.and.np.gt.2) np=2
  85. XTR(NP)=XX(ipt)+UP*(XX(iptn)-XX(ipt))
  86. YTR(NP)=YY(ipt)+UP*(YY(iptn)-YY(ipt))
  87. ZTR(NP)=ZZ(ipt)+UP*(ZZ(iptn)-ZZ(ipt))
  88. ENDIF
  89. UP=MAX(UPOSH,UPOSB)
  90. up=max(-2*abs(vdiff),up)
  91. up=min(2*abs(vdiff),up)
  92. UP=UP/abs(VDIFF)
  93. IF (RANGE(UP)) THEN
  94. NP=NP+1
  95. if (npt.eq.2.and.np.gt.2) np=2
  96. XTR(NP)=XX(ipt)+UP*(XX(iptn)-XX(ipt))
  97. YTR(NP)=YY(ipt)+UP*(YY(iptn)-YY(ipt))
  98. ZTR(NP)=ZZ(ipt)+UP*(ZZ(iptn)-ZZ(ipt))
  99. ENDIF
  100. C ON TRACE LE RESULTAT
  101. 10 continue
  102. IF (NP.NE.0) THEN
  103. if (niso.lt.16) then
  104. c CALL TRAISO(NP,XTR,YTR,ICOTAB(KK*(2-NISO/8)))
  105. CALL TRAISO(NP,XTR,YTR,ICOTAB(ISOTAB(KK,NISO)))
  106. else
  107. CALL TRAISO(NP,XTR,YTR,KK)
  108. endif
  109. ENDIF
  110. 50 CONTINUE
  111. IF (ISOTYP.EQ.2) THEN
  112. * call chcoul(8)
  113. call chcoul(IDNOIR)
  114. DO 250 KK=1,NISO-1
  115. * TOLL=ABS(VCHC(min(niso,KK+1))-VCHC(max(1,KK-1)))/1e+3
  116. * VALDES = (VCHC(KK)+VCHC(KK+1))/2
  117. * TOLL=ABS(VCHC(min(niso-1,KK+1))-VCHC(max(1,KK-1)))/1e+3
  118. TOLL=ABS(VCHC(min(niso-1,KK+1))-VCHC(max(1,KK-1)))*xszpre
  119. VALDES = VCHC(KK)
  120. IDEP=.TRUE.
  121. do 220 ipt=1,npt
  122. iptn=ipt+1
  123. if (iptn.gt.npt) iptn=1
  124. UPOS=-1.
  125. IF (ABS(VV(iptn)-VV(ipt)).GT.TOLL)
  126. * UPOS=(VALDES-VV(ipt))/(VV(iptn)-VV(ipt))
  127. IF (RANGE(UPOS)) THEN
  128. IF (IDEP) THEN
  129. XTR(1)=XX(ipt)+UPOS*(XX(iptn)-XX(ipt))
  130. YTR(1)=YY(ipt)+UPOS*(YY(iptn)-YY(ipt))
  131. ZTR(1)=ZZ(ipt)+UPOS*(ZZ(iptn)-ZZ(ipt))
  132. IDEP=.FALSE.
  133. ELSE
  134. XTR(2)=XX(ipt)+UPOS*(XX(iptn)-XX(ipt))
  135. YTR(2)=YY(ipt)+UPOS*(YY(iptn)-YY(ipt))
  136. ZTR(2)=ZZ(ipt)+UPOS*(ZZ(iptn)-ZZ(ipt))
  137. CALL POLRL(2,XTR,YTR,ZTR)
  138. * GOTO 150
  139. ENDIF
  140. ENDIF
  141. 220 continue
  142. 250 CONTINUE
  143. ENDIF
  144. ELSEIF (iogra.ne.6) THEN
  145. DO 150 KK=1,NISO
  146. * TOLL=ABS(VCHC(min(niso,KK+1))-VCHC(max(1,KK-1)))/1e+3
  147. TOLL=ABS(VCHC(min(niso,KK+1))-VCHC(max(1,KK-1)))*xszpre
  148. VALDES = VCHC(KK)
  149. IDEP=.TRUE.
  150. do 20 ipt=1,npt
  151. iptn=ipt+1
  152. if (iptn.gt.npt) iptn=1
  153. UPOS=-1.
  154. IF (ABS(VV(iptn)-VV(ipt)).GT.TOLL)
  155. * UPOS=(VALDES-VV(ipt))/(VV(iptn)-VV(ipt))
  156. IF (RANGE(UPOS)) THEN
  157. IF (IDEP) THEN
  158. if (niso.lt.13) then
  159. *sg if (niso.lt.16) then
  160. *sg CALL CHCOUL(ICOTAB(KK*(2-NISO/8)))
  161. CALL CHCOUL(ICOTAB(ISOTA0(KK,NISO)))
  162. else
  163. CALL CHCOUL(ICOTAB(MOD(KK,12)+1))
  164. *sg CALL CHCOUL(KK)
  165. endif
  166. XTR(1)=XX(ipt)+UPOS*(XX(iptn)-XX(ipt))
  167. YTR(1)=YY(ipt)+UPOS*(YY(iptn)-YY(ipt))
  168. ZTR(1)=ZZ(ipt)+UPOS*(ZZ(iptn)-ZZ(ipt))
  169. IDEP=.FALSE.
  170. ELSE
  171. XTR(2)=XX(ipt)+UPOS*(XX(iptn)-XX(ipt))
  172. YTR(2)=YY(ipt)+UPOS*(YY(iptn)-YY(ipt))
  173. ZTR(2)=ZZ(ipt)+UPOS*(ZZ(iptn)-ZZ(ipt))
  174. CALL POLRL(2,XTR,YTR,ZTR)
  175. * GOTO 150
  176. ENDIF
  177. ENDIF
  178. 20 continue
  179. 150 CONTINUE
  180. ENDIF
  181. RETURN
  182. END
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  

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