Télécharger opchpo.eso

Retour à la liste

Numérotation des lignes :

opchpo
  1. C OPCHPO SOURCE CB215821 23/10/18 21:15:07 11760
  2.  
  3. SUBROUTINE OPCHPO(MCHPO1,IOPERA,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 IOPERA (E) = 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. REAL*8 XVAL(3)
  26.  
  27. INTEGER IR
  28.  
  29.  
  30. -INC PPARAM
  31. -INC CCOPTIO
  32. -INC CCREEL
  33. -INC SMCHPOI
  34. -INC TMTRAV
  35. -INC SMELEME
  36. -INC SMCOORD
  37. C
  38. BATAN2 = .FALSE.
  39.  
  40. IR = 0
  41. MTRAV = 0
  42.  
  43. XIN1=XZERO
  44. XIN2=XZERO
  45. XOUT=XZERO/XPI
  46. C
  47. IF(MCHPO2.NE.0) THEN
  48. C Calcul de ATAN2 (2 arguments)
  49. BATAN2 = .TRUE.
  50. CALL TRACHP(MCHPO1,MTRAV)
  51. SEGACT MTRAV*MOD
  52. NNIN=NHAR(/1)
  53. MCHPOI=MCHPO2
  54. SEGACT MCHPOI
  55. SEGINI ICPR
  56. DO I=1,IGEO(/1)
  57. ICPR(IGEO(I))=I
  58. ENDDO
  59. DO I=1,IPCHP(/1)
  60. MSOUPO=IPCHP(I)
  61. SEGACT MSOUPO
  62. MELEME=IGEOC
  63. MPOVAL=IPOVAL
  64. DO 22 J=1,NOCOMP(/2)
  65. DO K=1,NNIN
  66. IF(NOCOMP(J).EQ.INCO(K) ) GO TO 24
  67. ENDDO
  68. GO TO 22
  69.  
  70. 24 CONTINUE
  71. SEGACT MELEME,MPOVAL
  72. DO 25 L=1,NUM(/2)
  73. IA=ICPR(NUM(1,L))
  74. IF(IA.EQ.0) GO TO 25
  75. IBIN(K,IA)=-1
  76. XIN1=BB(K,IA)
  77. XIN2=VPOCHA(L,J)
  78.  
  79. NN0 = 1
  80. XVAL(1)=XIN1
  81. XVAL(2)=XIN2
  82. CALL OPTABJ(1 ,0,IOPERA,2,
  83. & XVAL(1),XVAL(2),XVAL(3),
  84. & NN0 ,NN0 ,NN0 ,0 ,0 ,0.D0 ,IRETOU)
  85. BB(K,IA)= XVAL(3)
  86. 25 CONTINUE
  87.  
  88. 22 CONTINUE
  89. ENDDO
  90.  
  91. DO I=1,IGEO(/1)
  92. DO 27 J=1,NNIN
  93. IF( IBIN(J,I) .EQ. 0 ) THEN
  94. GO TO 27
  95. ELSEIF(IBIN(J,I).EQ.1) THEN
  96. IF(BB(J,I).GT.REAL(0.D0)) THEN
  97. BB(J,I)=REAL(90.D0)
  98. ELSEIF(BB(J,I).LT.REAL(0.D0)) THEN
  99. BB(J,I)=REAL(-90.D0)
  100. ELSE
  101. Y=REAL(0.D0)
  102. GOTO 999
  103. ENDIF
  104. ELSE
  105. IBIN(J,I)=1
  106. ENDIF
  107. 27 CONTINUE
  108. ENDDO
  109.  
  110. CALL CRECHP (MTRAV,KSOLU)
  111. SEGSUP MTRAV
  112. MCHPO2 = KSOLU
  113. RETURN
  114.  
  115. ELSE
  116. C Ce cas doit passer dans OPCHP1 qui va remplacer OPCHPO lorsque
  117. C ATAN2 sera realise en parallele
  118. PRINT *,'Faire CALL OPCHP1 au lieu de OPCHPO'
  119. PRINT *,'Please CALL OPCHP1 instead of OPCHPO'
  120. CALL ERREUR(21)
  121. RETURN
  122. ENDIF
  123.  
  124. 999 CONTINUE
  125. C Nombre inacceptable %r1
  126. REAERR(1) = Y
  127. CALL ERREUR(1009)
  128. IF(MTRAV .NE. 0) SEGSUP,MTRAV
  129. RETURN
  130.  
  131. END
  132.  
  133.  

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