Télécharger plan.eso

Retour à la liste

Numérotation des lignes :

  1. C PLAN SOURCE JC220346 16/11/29 21:15:27 9221
  2. C---------------------------------------------------------------------|
  3. C |
  4. LOGICAL FUNCTION PLAN(JF)
  5. C |
  6. C CETTE SUBROUTINE TESTE SI LA FACETTE JF EST PLANE OU NON |
  7. C |
  8. C PLAN EST VRAI SI JF EST PLANE |
  9. C PLAN EST FAUX SI JF N'EST PAS PLANE |
  10. C |
  11. C ELLE VERIFIE AUSSI QUE LES DIAGONALES NE SONT PAS DANS |
  12. C D'AUTRES ELEMENTS |
  13. C |
  14. C---------------------------------------------------------------------|
  15. C
  16. IMPLICIT INTEGER(I-N)
  17. IMPLICIT REAL*8(A-H,O-Z)
  18.  
  19. -INC PPARAM
  20. -INC CCOPTIO
  21. -INC TDEMAIT
  22. DIMENSION V1(3),V2(3),V3(3),V4(3),VN1(3),VN2(3)
  23. *
  24. C SI LA FACETTE A ETE SUPPRIME ELLE EST CONSIDEREE COMME BONNE
  25. DO 10 I=1,NFACET
  26. IF (IFUT(I).EQ.JF) GOTO 20
  27. 10 CONTINUE
  28. PLAN=.TRUE.
  29. RETURN
  30. 20 CONTINUE
  31. C
  32. I1=NFC(1,JF)
  33. I2=NFC(2,JF)
  34. I3=NFC(3,JF)
  35. I4=NFC(4,JF)
  36. C VERIFICATION LES POINTS SONT DIFFERENTS ENTRE EUX
  37. IF (I1.EQ.I2.OR.I1.EQ.I3.OR.I1.EQ.I4.OR.
  38. # I2.EQ.I3.OR.I2.EQ.I4.OR.
  39. # I3.EQ.I4 ) THEN
  40. IF (IVERB.EQ.1) WRITE (6,*) ' PLAN FACE DEGENEREE ',I4
  41. PLAN=.FALSE.
  42. RETURN
  43. ENDIF
  44. C
  45. DO 100 I=1,3
  46. V1(I)=XYZ(I,I2)-XYZ(I,I1)
  47. V2(I)=XYZ(I,I3)-XYZ(I,I2)
  48. V3(I)=XYZ(I,I4)-XYZ(I,I3)
  49. V4(I)=XYZ(I,I1)-XYZ(I,I4)
  50. 100 CONTINUE
  51. C
  52. * VV1=SQRT(V1(1)**2+V1(2)**2+V1(3)**2)
  53. * VV2=SQRT(V2(1)**2+V2(2)**2+V2(3)**2)
  54. * VV3=SQRT(V3(1)**2+V3(2)**2+V3(3)**2)
  55. * VV4=SQRT(V4(1)**2+V4(2)**2+V4(3)**2)
  56. C
  57. * DO 110 I=1,3
  58. * V1(I)=V1(I)/VV1
  59. * V2(I)=V2(I)/VV2
  60. * V3(I)=V3(I)/VV3
  61. * V4(I)=V4(I)/VV4
  62. 110 CONTINUE
  63. C
  64. VN1(1)=V1(2)*V2(3)-V1(3)*V2(2)
  65. VN1(2)=V1(3)*V2(1)-V1(1)*V2(3)
  66. VN1(3)=V1(1)*V2(2)-V1(2)*V2(1)
  67. VVN1=SQRT(VN1(1)**2+VN1(2)**2+VN1(3)**2)
  68. C
  69. VN2(1)=V3(2)*V4(3)-V3(3)*V4(2)
  70. VN2(2)=V3(3)*V4(1)-V3(1)*V4(3)
  71. VN2(3)=V3(1)*V4(2)-V3(2)*V4(1)
  72. VVN2=SQRT(VN2(1)**2+VN2(2)**2+VN2(3)**2)
  73. C
  74. SCAL=(VN1(1)*VN2(1)+VN1(2)*VN2(2)+VN1(3)*VN2(3))/(vvn1*vvn2)
  75. * WRITE(6,1000)JF,SCAL
  76. 1000 FORMAT(' FACETTE :',I3,' PLAN:',F7.2)
  77. C
  78. PLAN=.TRUE.
  79. IF (SCAL.LT.0.85) PLAN=.FALSE.
  80. C
  81. IF (.NOT.PLAN) RETURN
  82. C VERIFICATION I1 I3 ET I2 I4 PAS DANS UN AUTRE ELEMENT
  83. DO 200 I=1,40
  84. IF=NPF(I,I1)
  85. IF (IF.EQ.JF) GOTO 200
  86. IF (IF.EQ.0) GOTO 220
  87. DO 210 J=1,40
  88. IF (NPF(J,I3).EQ.0) GOTO 200
  89. IF (IF.NE.NPF(J,I3)) GOTO 210
  90. PLAN=.FALSE.
  91. RETURN
  92. 210 CONTINUE
  93. 200 CONTINUE
  94. 220 CONTINUE
  95. DO 230 I=1,40
  96. IF=NPF(I,I2)
  97. IF (IF.EQ.JF) GOTO 230
  98. IF (IF.EQ.0) GOTO 250
  99. DO 240 J=1,40
  100. IF (NPF(J,I4).EQ.0) GOTO 230
  101. IF (IF.NE.NPF(J,I4)) GOTO 240
  102. PLAN=.FALSE.
  103. RETURN
  104. 240 CONTINUE
  105. 230 CONTINUE
  106. 250 CONTINUE
  107. C FIN DE LA SUBROUTINE FACE3
  108. END
  109.  
  110.  
  111.  
  112.  

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