Télécharger chdite.eso

Retour à la liste

Numérotation des lignes :

chdite
  1. C CHDITE SOURCE CB215821 20/11/25 13:19:23 10792
  2. SUBROUTINE CHDITE(IPCH,IPT1,IPT2,ICPR,IARG,ISENS)
  3.  
  4. *PM 05/07/2007
  5. * Il faut éviter de fermer accidentellement le maillage à transformer
  6. * si par malheur c'est le même que celui support du champ-point
  7.  
  8. IMPLICIT INTEGER(I-N)
  9. implicit real*8 (a-h,o-z)
  10.  
  11. -INC PPARAM
  12. -INC CCOPTIO
  13. -INC SMELEME
  14. -INC SMCOORD
  15. -INC SMCHPOI
  16. SEGMENT/MTRAV/(VA(max(2,NIN),NMIL),IPASS(KPOI))
  17. SEGMENT ICPR(nbpts)
  18. CHARACTER*(LOCOMP) NAMEU(4),NOMIN(3)
  19. DATA NAMEU(1),NAMEU(2),NAMEU(3)/'UX ','UY ','UZ '/
  20. DATA NAMEU(4)/'UR '/
  21.  
  22. SEGACT MCOORD*mod
  23. NBSOUS=0
  24. NBREF=IPT1.LISREF(/1)
  25. IF (IARG.EQ.0) NBREF=0
  26. NBNN=IPT1.NUM(/1)
  27. NBELEM=IPT1.NUM(/2)
  28. SEGINI IPT2
  29. IPT2.ITYPEL=IPT1.ITYPEL
  30. DO 10 I=1,NBELEM
  31. 10 IPT2.ICOLOR(I)=IPT1.ICOLOR(I)
  32. C
  33. C ON FABRIQUE LA LISTE DES INCONNUES POSSIBLES
  34. C
  35. C Cas 3D :
  36. IF (IFOMOD.EQ.2) THEN
  37. NOMIN(1) = NAMEU(1)
  38. NOMIN(2) = NAMEU(2)
  39. NOMIN(3) = NAMEU(3)
  40. C Cas 2D PLAN :
  41. ELSE IF (IFOMOD.EQ.-1) THEN
  42. NOMIN(1) = NAMEU(1)
  43. NOMIN(2) = NAMEU(2)
  44. C Cas 2D AXIS/ FOUR :
  45. ELSE IF (IFOMOD.EQ.0 .OR. IFOMOD.EQ.1) THEN
  46. NOMIN(1) = NAMEU(4)
  47. NOMIN(2) = NAMEU(3)
  48. C Cas 1D PLAN :
  49. ELSE IF (IFOMOD.EQ.3) THEN
  50. NOMIN(1) = NAMEU(1)
  51. C Cas 1D AXIS / SPHE :
  52. ELSE IF (IFOMOD.EQ.4 .OR. IFOMOD.EQ.5) THEN
  53. NOMIN(1) = NAMEU(4)
  54. C Cas Frequentiel ???
  55. ELSE IF (IFOMOD.EQ.6) THEN
  56. NOMIN(1) = NAMEU(1)
  57. NOMIN(2) = NAMEU(2)
  58. IF (IDIM.EQ.3) NOMIN(3) = NAMEU(3)
  59. C Autres cas : non prevus !
  60. ELSE
  61. CALL ERREUR(5)
  62. RETURN
  63. ENDIF
  64. C
  65. C ON RECUPERE LE CHPOINT
  66. C
  67. MCHPOI=IPCH
  68. SEGACT MCHPOI
  69. C
  70. KPOI=0
  71. DO 1 I = 1,IPCHP(/1)
  72. MSOUPO=IPCHP(I)
  73. SEGACT MSOUPO
  74. KPOI1=NOCOMP(/2)
  75. KPOI=MAX(KPOI,KPOI1)
  76. ** SEGDES MSOUPO
  77. 1 CONTINUE
  78.  
  79. NMIL = nbpts
  80. NIN = IDIM
  81. SEGINI MTRAV
  82.  
  83. DO 70 I=1,IPCHP(/1)
  84. MSOUPO=IPCHP(I)
  85. ** SEGACT MSOUPO
  86. JCOMP=0
  87. DO 71 K=1,NOCOMP(/2)
  88. IPASS(K)=0
  89. DO 710 KN=1,NIN
  90. IF(NOMIN(KN).EQ.NOCOMP(K)) GO TO 73
  91. 710 CONTINUE
  92. GO TO 71
  93. 73 CONTINUE
  94. IPASS(K)=KN
  95. JCOMP=JCOMP+1
  96. 71 CONTINUE
  97. IF(JCOMP.EQ.0) GO TO 770
  98. MELEME=IGEOC
  99. SEGACT MELEME
  100. MPOVAL=IPOVAL
  101. SEGACT MPOVAL
  102. DO 78 K=1,NUM(/2)
  103. K2= NUM(1,K)
  104. IF(K2.EQ.0) GO TO 78
  105. DO 74 KK=1,NOCOMP(/2)
  106. K1=IPASS(KK)
  107. IF(K1.EQ.0) GO TO 74
  108. VA(K1,K2)=VPOCHA(K,KK)
  109. 74 CONTINUE
  110. 78 CONTINUE
  111. SEGDES MPOVAL
  112. *PM
  113. IF(MELEME.NE.IPT1) SEGDES MELEME
  114. 770 SEGDES MSOUPO
  115. 70 CONTINUE
  116. *
  117. NBPTB=nbpts
  118. NBPTS=NBPTB+NBNN*NBELEM
  119. SEGADJ MCOORD
  120. NBPTS=NBPTB
  121. DO 11 J=1,NBELEM
  122. DO 11 I=1,NBNN
  123. IF (ICPR(IPT1.NUM(I,J)).NE.0) GOTO 3
  124. IREF=IPT1.NUM(I,J)*(IDIM+1)
  125. XCOOR(NBPTS*(IDIM+1)+1)
  126. . = VA(1,IPT1.NUM(I,J))*ISENS + XCOOR(IREF-IDIM)
  127. XCOOR(NBPTS*(IDIM+1)+2)
  128. . = VA(2,IPT1.NUM(I,J))*ISENS + XCOOR(IREF-IDIM+1)
  129. IF (IDIM.GE.3) XCOOR(NBPTS*(IDIM+1)+3)
  130. . = VA(3,IPT1.NUM(I,J))*ISENS+XCOOR(IREF-IDIM+2)
  131. XCOOR(NBPTS*(IDIM+1)+(IDIM+1))=XCOOR(IREF)
  132. NBPTS=NBPTS+1
  133. IPT2.NUM(I,J)=NBPTS
  134. ICPR(IPT1.NUM(I,J))=IPT2.NUM(I,J)
  135. GOTO 11
  136. 3 IPT2.NUM(I,J)=ICPR(IPT1.NUM(I,J))
  137. 11 CONTINUE
  138. SEGADJ MCOORD
  139.  
  140. SEGSUP MTRAV
  141. SEGDES MCHPOI
  142.  
  143. RETURN
  144. END
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  

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