Télécharger coplan.eso

Retour à la liste

Numérotation des lignes :

coplan
  1. C COPLAN SOURCE CB215821 16/11/21 21:15:00 9196
  2. SUBROUTINE COPLAN(XO,XA,XB,XC,IFLIG)
  3. C NORA DAVIDOVICH JUIN 89-
  4. C FORTRAN PUR. APPELE PAR ANGSOL. SERVE A TROUVER LES POINTS
  5. C SUR LA FRONTIERE DES ELEMENTS MASSIVES 3-DIM (SI IFLIG=1 LE POINT A
  6. C SE TROUVE SUR LA FRONTIERE DE L'ELEMENT)
  7. IMPLICIT INTEGER(I-N)
  8. IMPLICIT REAL*8 (A-H,O-Z)
  9. -INC CCREEL
  10. DIMENSION XO(3),XA(3),XB(3),XC(3),XX(3,3),XV(3),YV(3),ZV(3)
  11.  
  12. IFLIG=0
  13. ZERO =REAL(XZERO)
  14. X1=XA(1)
  15. X2=XB(1)
  16. X3=XC(1)
  17. Y1=XA(2)
  18. Y2=XB(2)
  19. Y3=XC(2)
  20. Z1=XA(3)
  21. Z2=XB(3)
  22. Z3=XC(3)
  23. DO 1 J=1,3
  24. XX(1,J)=XA(J)
  25. XX(2,J)=XB(J)
  26. XX(3,J)=XC(J)
  27. 1 CONTINUE
  28.  
  29. XNORM=(Y2-Y1)*(Z2-Z3)-(Z2-Z1)*(Y2-Y3)
  30. YNORM=(Z2-Z1)*(X2-X3)-(X2-X1)*(Z2-Z3)
  31. ZNORM=(X2-X1)*(Y2-Y3)-(Y2-Y1)*(X2-X3)
  32.  
  33. DNORM=SQRT(XNORM**2+YNORM**2+ZNORM**2)
  34.  
  35. IF (DNORM .GE. XPETIT) THEN
  36. XNORM=XNORM/DNORM
  37. YNORM=YNORM/DNORM
  38. ZNORM=ZNORM/DNORM
  39. ELSE
  40. XATA = ZERO
  41. ENDIF
  42.  
  43. ANG=ZERO
  44. XV1=X1-XO(1)
  45. YV1=Y1-XO(2)
  46. ZV1=Z1-XO(3)
  47. DO 63 IS=1,3
  48. XV(IS)=XX(IS,1)-XO(1)
  49. YV(IS)=XX(IS,2)-XO(2)
  50. ZV(IS)=XX(IS,3)-XO(3)
  51. XV2=XV(IS)
  52. YV2=YV(IS)
  53. ZV2=ZV(IS)
  54. XATA=XNORM*(YV1*ZV2-ZV1*YV2)+
  55. # YNORM*(ZV1*XV2-XV1*ZV2)+
  56. # ZNORM*(XV1*YV2-YV1*XV2)
  57. YATA=XV1*XV2+
  58. # YV1*YV2+
  59. # ZV1*ZV2
  60.  
  61. IF (XATA.EQ.ZERO.AND.YATA.EQ.ZERO) GOTO 100
  62.  
  63. IF (ABS(ABS(ATAN2(XATA,YATA))-XPI).LT.REAL(1D-3)) GOTO 100
  64. ANG=ANG+ATAN2(XATA,YATA)
  65. XV1=XV2
  66. YV1=YV2
  67. ZV1=ZV2
  68. 63 CONTINUE
  69. IF (ABS(ABS(ANG)-XPI).LT.REAL(1D-3)) GOTO 100
  70. IF (ABS(ANG).GT.XPI) GOTO 100
  71. RETURN
  72. 100 IFLIG=1
  73. RETURN
  74. END
  75.  
  76.  
  77.  

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