Télécharger invers.eso

Retour à la liste

Numérotation des lignes :

invers
  1. C INVERS SOURCE GOUNAND 16/05/25 21:15:05 8924
  2.  
  3. C INVERSE UN OBJET MAILLAGE ELEMENTAIRE
  4.  
  5. C IPT1 (E) MAILLAGE A INVERSER (segment ACTIF)
  6. C MELEME (S) MAILLAGE INVERSE (segment ACTIF)
  7.  
  8. SUBROUTINE INVERS(IPT1,MELEME)
  9.  
  10. IMPLICIT INTEGER(I-N)
  11. IMPLICIT REAL*8(A-H,O-Z)
  12.  
  13. -INC SMELEME
  14.  
  15. *
  16. * SG 2016/05/11
  17. *
  18. * Nouvelle programmation : INVERS est une interface à INVER4
  19. * (INVER4 est également utilisé par ORIE)
  20. *
  21. C 2) ICLE=1 (ou =2) indique que l'on inverse aussi (ou non)
  22. C l'ordre des elements dans le maillage.
  23. C Ceci est indispensable pour les lignes.
  24. C 3) Si le type de l'element n'est pas "inversable", on retourne le
  25. C maillage d'entree tel quel.
  26. ITYP=IPT1.ITYPEL
  27. IF (ITYP.EQ.2 .OR. ITYP.EQ.3) THEN
  28. ICLE=1
  29. ELSE
  30. ICLE=2
  31. ENDIF
  32. *
  33. CALL INVER4(ipt1,meleme,icle,0)
  34. RETURN
  35. *
  36. * SG 2016/05/11
  37. *
  38. * Ancienne programmation
  39. c$$$C 1) Les elements "inversables" sont les suivants :
  40. c$$$C SEG2 (2) , SEG3 (3) , TRI3 (4), QUA4 (8) , TRI6 (6) , QUA8 (10)
  41. c$$$C TRI7 (7), QUA9 (11)
  42. c$$$C 2) ICLE=1 (ou =2,3) indique que l'on inverse aussi (ou non)
  43. c$$$C l'ordre des elements dans le maillage.
  44. c$$$C Ceci est indispensable pour les lignes.
  45. c$$$C 3) Si le type de l'element n'est pas "inversable", on retourne le
  46. c$$$C maillage d'entree tel quel.
  47. c$$$
  48. c$$$ IF (ITYP.EQ.2 .OR. ITYP.EQ.3) THEN
  49. c$$$ ICLE=1
  50. c$$$ ELSE IF (ITYP.EQ.4 .OR. ITYP.EQ.8 .OR.
  51. c$$$ & ITYP.EQ.6 .OR. ITYP.EQ.10) THEN
  52. c$$$ ICLE=2
  53. c$$$ ELSE IF (ITYP.EQ.7 .OR. ITYP.EQ.11) THEN
  54. c$$$ ICLE=3
  55. c$$$ ELSE
  56. c$$$ MELEME=IPT1
  57. c$$$ RETURN
  58. c$$$ ENDIF
  59. c$$$
  60. c$$$C On choisit d'oublier le contour suite a l'inversion.
  61. c$$$ NBREF=IPT1.LISREF(/1)
  62. c$$$ IF (NBREF.EQ.1) NBREF=0
  63. c$$$ NBSOUS=0
  64. c$$$ NBNN=IPT1.NUM(/1)
  65. c$$$ NBELEM=IPT1.NUM(/2)
  66. c$$$ SEGINI MELEME
  67. c$$$ ITYPEL=IPT1.ITYPEL
  68. c$$$ IF (NBREF.NE.0) THEN
  69. c$$$ DO I=1,NBREF
  70. c$$$ LISREF(I)=IPT1.LISREF(I)
  71. c$$$ ENDDO
  72. c$$$ ENDIF
  73. c$$$ IF (ICLE.EQ.1) THEN
  74. c$$$ DO J=1,NBELEM
  75. c$$$ K=NBELEM+1-J
  76. c$$$ DO I=1,NBNN
  77. c$$$ NUM(I,J)=IPT1.NUM(NBNN+1-I,K)
  78. c$$$ ENDDO
  79. c$$$ ICOLOR(J)=IPT1.ICOLOR(K)
  80. c$$$ ENDDO
  81. c$$$ ELSEIF (ICLE.EQ.2) THEN
  82. c$$$ DO J=1,NBELEM
  83. c$$$ DO I=1,NBNN
  84. c$$$ K=MOD(NBNN+1-I,NBNN)+1
  85. c$$$ NUM(K,J)=IPT1.NUM(I,J)
  86. c$$$ ENDDO
  87. c$$$ ICOLOR(J)=IPT1.ICOLOR(J)
  88. c$$$ ENDDO
  89. c$$$ ELSE
  90. c$$$* Cas des QUAF
  91. c$$$ DO J=1,NBELEM
  92. c$$$ DO I=1,NBNN-1
  93. c$$$ K=MOD(NBNN-I,NBNN-1)+1
  94. c$$$ NUM(K,J)=IPT1.NUM(I,J)
  95. c$$$ ENDDO
  96. c$$$ NUM(NBNN,J)=IPT1.NUM(NBNN,J)
  97. c$$$ ICOLOR(J)=IPT1.ICOLOR(J)
  98. c$$$ ENDDO
  99. c$$$ ENDIF
  100. c$$$ RETURN
  101. END
  102.  
  103.  
  104.  
  105.  

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