Télécharger changs.eso

Retour à la liste

Numérotation des lignes :

changs
  1. C CHANGS SOURCE CB215821 26/08/24 21:15:29 12622
  2. C TRANSFORME LES T3 ENGENDRES PAR SURF EN T6 SUR LE PLAN LOCAL
  3. C TRANSFORME AUSSI LES Q4 EN Q8 ET LES T3 EN Q4 ET LES T3 EN Q8
  4. C
  5. SUBROUTINE CHANGS(NUMNP,NUMELG,ITY,IPT1,XPROJ,IPT5)
  6. IMPLICIT INTEGER(I-N)
  7. IMPLICIT REAL*8 (A-H,O-Z)
  8. -INC SMELEME
  9. SEGMENT XPROJ(N,1)
  10.  
  11. -INC PPARAM
  12. -INC CCOPTIO
  13. SEGMENT NKON(IKOUR)
  14. SEGMENT KON(IKOUR,NKMAX,2)
  15. IF (IPT1.ITYPEL.EQ.ITY) RETURN
  16. IF (ITY.EQ.8) RETURN
  17. IF ((ITY.EQ.6.AND.IPT1.ITYPEL.EQ.4).OR.
  18. # (ITY.EQ.10.AND.IPT1.ITYPEL.EQ.4).OR.
  19. # (ITY.EQ.10.AND.IPT1.ITYPEL.EQ.8)) GOTO 10
  20. C ON CHANGE DES Q4 EN COUPLES DE T3
  21. NBELEM=2*NUMELG
  22. NUMELG=NBELEM
  23. NBNN=3
  24. NBSOUS=0
  25. NBREF=0
  26. SEGINI IPT2
  27. IPT2.ITYPEL=4
  28. DO 3 I=1,IPT1.NUM(/2),2
  29. J=2*I-1
  30. IPT2.NUM(1,J)=IPT1.NUM(1,I)
  31. IPT2.NUM(2,J)=IPT1.NUM(2,I)
  32. IPT2.NUM(3,J)=IPT1.NUM(3,I)
  33. J=J+1
  34. IPT2.NUM(1,J)=IPT1.NUM(1,I)
  35. IPT2.NUM(2,J)=IPT1.NUM(3,I)
  36. IPT2.NUM(3,J)=IPT1.NUM(4,I)
  37. J=J+1
  38. IF (J.GT.IPT2.NUM(/2)) GOTO 3
  39. IPT2.NUM(1,J)=IPT1.NUM(1,I+1)
  40. IPT2.NUM(2,J)=IPT1.NUM(2,I+1)
  41. IPT2.NUM(3,J)=IPT1.NUM(4,I+1)
  42. J=J+1
  43. IPT2.NUM(1,J)=IPT1.NUM(2,I+1)
  44. IPT2.NUM(2,J)=IPT1.NUM(3,I+1)
  45. IPT2.NUM(3,J)=IPT1.NUM(4,I+1)
  46. 3 CONTINUE
  47. SEGSUP IPT1
  48. IPT1=IPT2
  49. IF (IPT1.ITYPEL.EQ.ITY) RETURN
  50. 10 CONTINUE
  51. C ON CHANGE LES T3 EN T6 OU LES Q4 EN Q8
  52. IKOUR=NUMNP
  53. SEGINI NKON
  54. DO 23 I=1,IKOUR
  55. NKON(I)=0
  56. 23 CONTINUE
  57. DO 2001 I=1,IPT1.NUM(/1)
  58. DO 24 J=1,NUMELG
  59. IKL=IPT1.NUM(I,J)
  60. IF (IKL.EQ.0) GOTO 24
  61. NKON(IKL)=NKON(IKL)+1
  62. 24 CONTINUE
  63. 2001 CONTINUE
  64. NKMAX=0
  65. DO 25 I=1,IKOUR
  66. NKMAX=MAX(NKMAX,NKON(I))
  67. 25 CONTINUE
  68. 62 CONTINUE
  69. SEGINI KON
  70. DO 26 I=1,IKOUR
  71. DO 27 J=1,NKMAX
  72. KON(I,J,1)=0
  73. KON(I,J,2)=0
  74. 27 CONTINUE
  75. 26 CONTINUE
  76. IF (IPT5.EQ.0) GOTO 40
  77. SEGACT IPT5
  78. DO 31 J=1,IPT5.NUM(/2)
  79. I1=IPT5.NUM(1,J)
  80. I3=IPT5.NUM(3,J)
  81. J1=MIN(I1,I3)
  82. J3=MAX(I1,I3)
  83. ITF=0
  84. 32 ITF=ITF+1
  85. IF (ITF.GT.NKMAX) GOTO 61
  86. IF (KON(J1,ITF,1).EQ.0) GOTO 33
  87. IF (KON(J1,ITF,1).EQ.J3) GOTO 33
  88. GOTO 32
  89. 33 KON(J1,ITF,1)=J3
  90. KON(J1,ITF,2)=IPT5.NUM(2,J)
  91. 31 CONTINUE
  92. 40 CONTINUE
  93. NBELEM=NUMELG
  94. NBNN=IPT1.NUM(/1)*2
  95. NBSOUS=0
  96. NBREF=0
  97. SEGINI IPT2
  98. IPT2.ITYPEL=IPT1.ITYPEL+2
  99. NBNN1=NBNN/2
  100. DO 34 J=1,NBELEM
  101. DO 35 I=1,NBNN1
  102. IF (IPT1.NUM(I,J).EQ.0) GOTO 38
  103. IFI=I+1
  104. IF (IFI.EQ.NBNN1+1) IFI=1
  105. IF (IPT1.NUM(IFI,J).EQ.0) IFI=1
  106. IPT2.NUM(2*I-1,J)=IPT1.NUM(I,J)
  107. I1=IPT1.NUM(I,J)
  108. I2=IPT1.NUM(IFI,J)
  109. J1=MIN(I1,I2)
  110. J2=MAX(I1,I2)
  111. ITF=0
  112. 36 ITF=ITF+1
  113. IF (ITF.GT.NKMAX) GOTO 61
  114. IF (KON(J1,ITF,1).EQ.J2) GOTO 37
  115. IF (KON(J1,ITF,1).NE.0) GOTO 36
  116. KON(J1,ITF,1)=J2
  117. NUMNP=NUMNP+1
  118. IF (NUMNP.GT.XPROJ(/2)) CALL ERREUR(31)
  119. IF (IERR.NE.0) GOTO 1000
  120. XPROJ(1,NUMNP)=0.5*(XPROJ(1,I1)+XPROJ(1,I2))
  121. XPROJ(2,NUMNP)=0.5*(XPROJ(2,I1)+XPROJ(2,I2))
  122. XPROJ(3,NUMNP)=0.5*(XPROJ(3,I1)+XPROJ(3,I2))
  123. IF (XPROJ(/1).EQ.4)
  124. # XPROJ(4,NUMNP)=0.5*(XPROJ(4,I1)+XPROJ(4,I2))
  125. KON(J1,ITF,2)=NUMNP
  126. 37 IPT2.NUM(2*I,J)=KON(J1,ITF,2)
  127. GOTO 35
  128. 38 IPT2.NUM(2*I-1,J)=0
  129. IPT2.NUM(2*I,J)=0
  130. 35 CONTINUE
  131. 34 CONTINUE
  132. SEGSUP IPT1
  133. IPT1=IPT2
  134. 1000 SEGSUP KON,NKON,IPT5
  135. RETURN
  136. 61 SEGSUP KON
  137. NKMAX=NKMAX+1
  138. IF (IIMPI.NE.0) WRITE (IOIMP,2000) NKMAX
  139. 2000 FORMAT(/,' NOUVELLE VALEUR DE NKMAX TENTEE DANS CHANGS',I4)
  140. GOTO 62
  141. END
  142.  
  143.  
  144.  
  145.  

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