Télécharger opchpo.eso

Retour à la liste

Numérotation des lignes :

  1. C OPCHPO SOURCE PV 20/03/30 21:21:48 10567
  2.  
  3. SUBROUTINE OPCHPO(MCHPO1,IEPS,MCHPO2)
  4.  
  5. C=======================================================================
  6. C N'EFFECTUE PLUS QUE ATAN2 SUR LES CHPOINTS
  7. C ENTREES
  8. C IPO1 (E) POINTEUR SUR UN CHPOINT.
  9. C IPO2 (E) POINTEUR SUR UN CHPOINT (2eme ARGUMENT DANS ATAN2)
  10. C IEPS = 11 ARCTANGENTE (Seule operation pas encore parallele)
  11. C
  12. C SORTIES
  13. C IPO2=POINTEUR SUR LE CHAMPOINT RESULTANT
  14. C
  15. C CODE EBERSOLT AVRIL 86
  16. C
  17. C=======================================================================
  18.  
  19. IMPLICIT INTEGER(I-N)
  20. IMPLICIT REAL*8(A-H,O-Z)
  21.  
  22. SEGMENT ICPR(nbpts)
  23. LOGICAL BATAN2
  24. REAL*8 XIN1,XIN2,XOUT
  25. INTEGER IR
  26.  
  27.  
  28. -INC PPARAM
  29. -INC CCOPTIO
  30. -INC CCREEL
  31. -INC SMCHPOI
  32. -INC TMTRAV
  33. -INC SMELEME
  34. -INC SMCOORD
  35. C
  36. BATAN2 = .FALSE.
  37.  
  38. IR =0
  39.  
  40. XIN1=XZERO
  41. XIN2=XZERO
  42. XOUT=XZERO/XPI
  43. C
  44. IF(MCHPO2.NE.0) THEN
  45. C Calcul de ATAN2 (2 arguments)
  46. BATAN2 = .TRUE.
  47. CALL TRACHP(MCHPO1,MTRAV)
  48. SEGACT MTRAV*MOD
  49. NNIN=NHAR(/1)
  50. MCHPOI=MCHPO2
  51. SEGACT MCHPOI
  52. SEGINI ICPR
  53. DO I=1,IGEO(/1)
  54. ICPR(IGEO(I))=I
  55. ENDDO
  56. DO I=1,IPCHP(/1)
  57. MSOUPO=IPCHP(I)
  58. SEGACT MSOUPO
  59. MELEME=IGEOC
  60. MPOVAL=IPOVAL
  61. DO 22 J=1,NOCOMP(/2)
  62. DO K=1,NNIN
  63. IF(NOCOMP(J).EQ.INCO(K) ) GO TO 24
  64. ENDDO
  65. GO TO 22
  66.  
  67. 24 CONTINUE
  68. SEGACT MELEME,MPOVAL
  69. DO 25 L=1,NUM(/2)
  70. IA=ICPR(NUM(1,L))
  71. IF(IA.EQ.0) GO TO 25
  72. IBIN(K,IA)=-1
  73. XIN1=BB(K,IA)
  74. XIN2=VPOCHA(L,J)
  75. CALL OPFLOT(XIN1,XIN2,IR,BATAN2,IEPS,XOUT)
  76. BB(K,IA)= XOUT
  77.  
  78. 25 CONTINUE
  79.  
  80. 22 CONTINUE
  81. ENDDO
  82.  
  83. DO I=1,IGEO(/1)
  84. DO 27 J=1,NNIN
  85. IF( IBIN(J,I) .EQ. 0 ) THEN
  86. GO TO 27
  87. ELSEIF(IBIN(J,I).EQ.1) THEN
  88. IF(BB(J,I).GT.REAL(0.D0)) THEN
  89. BB(J,I)=REAL(90.D0)
  90. ELSEIF(BB(J,I).LT.REAL(0.D0)) THEN
  91. BB(J,I)=REAL(-90.D0)
  92. ELSE
  93. Y=REAL(0.D0)
  94. GOTO 999
  95. ENDIF
  96. ELSE
  97. IBIN(J,I)=1
  98. ENDIF
  99. 27 CONTINUE
  100. ENDDO
  101.  
  102. CALL CRECHP (MTRAV,KSOLU)
  103. SEGSUP MTRAV
  104. MCHPO2 = KSOLU
  105. RETURN
  106.  
  107. ELSE
  108. C Ce cas doit passer dans OPCHP1 qui va remplacer OPCHPO lorsque
  109. C ATAN2 sera realise en parallele
  110. PRINT *,'Faire CALL OPCHP1 au lieu de OPCHPO'
  111. PRINT *,'Please CALL OPCHP1 instead of OPCHPO'
  112. CALL ERREUR(21)
  113. RETURN
  114. ENDIF
  115.  
  116. 999 CONTINUE
  117. C Nombre inacceptable %r1
  118. REAERR(1) = Y
  119. CALL ERREUR(1009)
  120.  
  121. IF( BATAN2 .EQV. .TRUE. ) THEN
  122. SEGSUP MTRAV
  123. ENDIF
  124.  
  125. END
  126.  
  127.  
  128.  

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