Télécharger triso.eso

Retour à la liste

Numérotation des lignes :

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

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