Télécharger trjcub.eso

Retour à la liste

Numérotation des lignes :

trjcub
  1. C TRJCUB SOURCE CHAT 05/01/13 03:49:28 5004
  2. SUBROUTINE TRJCUB(IZNOEU,IZTRAV,IZAPAR,NPAPAR,J,IEL,INOELO,TLI)
  3. C**********************************************************************
  4. C
  5. C OBJET : CE SOUS-PROGRAMME CALCULE L'APPARTENANCE DE POINTS A UN
  6. C ----- ELEMENT CUBE D'UN MAILLAGE M1.
  7. C
  8. C ARGUMENTS:
  9. C ---------
  10. C
  11. C ENTREE : IZNOEU = POINTEUR DU SEGMENT CONTENANT LES COORDONNEES
  12. C ET LES NUMEROS DES NOEUDS DE L ELLAGE M1
  13. C IZTRAV = POINTEUR DU SEGMENT CONTENANT LES COORDONNEES
  14. C DES POINTS DONT ON CHERCHE L'APPARTENANCE
  15. C IZAPAR = POINTEUR DU SEGMENT QUI CONTIENDRA LES
  16. C APPARTENANCES
  17. C NPAPAR = NOMBRE DE POINTS APPARTENANT A UN ELEMENT
  18. C IEL = NUMERO GLOBAL DE L'ELEMENT DANS LE MAILLAGE
  19. C J = NUMERO DU POINT TRAITE
  20. C
  21. C***********************************************************************
  22. IMPLICIT INTEGER(I-N)
  23. IMPLICIT REAL*8 (A-H,O-Z)
  24. DIMENSION TLI(*)
  25. DIMENSION XELTET(3,4),IDECUB(4,5),
  26. * NUFACE(4,5),NUARET(6,5),X(3),NFACAR(6,5),NOEARE(8)
  27. C
  28. SEGMENT IZAPAR
  29. INTEGER IAPAR(4,NPT2)
  30. ENDSEGMENT
  31. C
  32. SEGMENT IZTRAV
  33. REAL*8 COOR(NDIM,NPART)
  34. ENDSEGMENT
  35. SEGMENT IZNOEU
  36. REAL*8 XELE(IDIM,NOEL)
  37. INTEGER NOEGLO(NOEL)
  38. ENDSEGMENT
  39. C
  40. C
  41. C
  42. C
  43. DATA IDECUB/8,7,5,4, 1,2,4,5, 5,2,4,7, 6,5,7,2, 3,2,7,4/
  44. DATA NUFACE/5,2,0,6, 3,1,0,6, 0,0,0,0, 3,2,0,4, 1,4,0,5/
  45. DATA NUARET/7,4,12,0,0,0, 5,1,9,0,0,0, 0,0,0,0,0,0,
  46. * 8,3,10,0,0,0, 2,11,6,0,0,0/
  47. DATA NFACAR/5,6,6,2,6,5, 3,6,6,1,6,3, 3,6,2,1,5,4,
  48. * 3,4,4,2,4,3, 4,4,5,4,5,1/
  49. C DATA NOEARE/1,2,6,12,4,5,11,7/
  50. DATA NOEARE/1,2,6,12,4,8,11,7/
  51. C
  52. IDIM=XELE(/1)
  53. NOEL=XELE(/2)
  54. INOELO=0
  55. C
  56. C*** DECOUPAGE DU CUBE EN 5 TETRAEDRES ET RECHERCHE DE L'APPARTENANCE
  57. C*** DES POINTS A CHACUN DES TETRAEDRES.
  58. C
  59. DO 40 I=1,5
  60. ITRI=I
  61. C
  62. DO 20 K=1,4
  63. IN=IDECUB(K,ITRI)
  64. DO 10 L=1,3
  65. XELTET(L,K)=XELE(L,IN)
  66. 10 CONTINUE
  67. 20 CONTINUE
  68. C
  69. C
  70. IF(IAPAR(1,J).NE.0) GO TO 9999
  71. X(1)=COOR(1,J)
  72. X(2)=COOR(2,J)
  73. X(3)=COOR(3,J)
  74. CALL APATET(X,XELTET,IELEM,IFATET,IARTET,INOTET,TLI)
  75. IF(IELEM.EQ.0) GO TO 40
  76. C
  77. C--- LE POINT APPARTIENT A L'ELEMENT
  78. C
  79. NPAPAR=NPAPAR+1
  80. IAPAR(1,J)=IEL
  81. C
  82. C--- APPARTENANCE A UNE FACE DU CUBE
  83. C
  84. IF(IFATET.EQ.0) GO TO 9999
  85. IAPAR(2,J)=NUFACE(IFATET,ITRI)
  86. C
  87. C--- APPARTENANCE A UNE ARETE DU CUBE
  88. C
  89. IF(IARTET.EQ.0) GO TO 9999
  90. IARCUB=NUARET(IARTET,ITRI)
  91. IF(IAPAR(2,J).EQ.0.AND.IARTET.NE.0)
  92. * IAPAR(2,J)=NFACAR(IARTET,ITRI)
  93. IAPAR(3,J)=IARCUB
  94. C
  95. C--- APPARTENANCE A UN NOEUD DU CUBE
  96. C
  97. IF(INOTET.EQ.0) GO TO 9999
  98. INOELO=IDECUB(INOTET,ITRI)
  99. IF(IAPAR(3,J).EQ.0) IAPAR(3,J)=NOEARE(INOELO)
  100. IARCUB=IAPAR(3,J)
  101. IF(IAPAR(2,J).EQ.0) IAPAR(2,J)=NFACAR(IARTET,ITRI)
  102. IAPAR(4,J)=NOEGLO(INOELO)
  103. GO TO 9999
  104. 40 CONTINUE
  105. 9999 CONTINUE
  106. RETURN
  107. END
  108.  
  109.  

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