Télécharger chdite.eso

Retour à la liste

Numérotation des lignes :

chdite
  1. C CHDITE SOURCE CB215821 26/08/24 21:15:29 12622
  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. IPT2.ICOLOR(I)=IPT1.ICOLOR(I)
  32. 10 CONTINUE
  33. C
  34. C ON FABRIQUE LA LISTE DES INCONNUES POSSIBLES
  35. C
  36. C Cas 3D :
  37. IF (IFOMOD.EQ.2) THEN
  38. NOMIN(1) = NAMEU(1)
  39. NOMIN(2) = NAMEU(2)
  40. NOMIN(3) = NAMEU(3)
  41. C Cas 2D PLAN :
  42. ELSE IF (IFOMOD.EQ.-1) THEN
  43. NOMIN(1) = NAMEU(1)
  44. NOMIN(2) = NAMEU(2)
  45. C Cas 2D AXIS/ FOUR :
  46. ELSE IF (IFOMOD.EQ.0 .OR. IFOMOD.EQ.1) THEN
  47. NOMIN(1) = NAMEU(4)
  48. NOMIN(2) = NAMEU(3)
  49. C Cas 1D PLAN :
  50. ELSE IF (IFOMOD.EQ.3) THEN
  51. NOMIN(1) = NAMEU(1)
  52. C Cas 1D AXIS / SPHE :
  53. ELSE IF (IFOMOD.EQ.4 .OR. IFOMOD.EQ.5) THEN
  54. NOMIN(1) = NAMEU(4)
  55. C Cas Frequentiel ???
  56. ELSE IF (IFOMOD.EQ.6) THEN
  57. NOMIN(1) = NAMEU(1)
  58. NOMIN(2) = NAMEU(2)
  59. IF (IDIM.EQ.3) NOMIN(3) = NAMEU(3)
  60. C Autres cas : non prevus !
  61. ELSE
  62. CALL ERREUR(5)
  63. RETURN
  64. ENDIF
  65. C
  66. C ON RECUPERE LE CHPOINT
  67. C
  68. MCHPOI=IPCH
  69. SEGACT MCHPOI
  70. C
  71. KPOI=0
  72. DO 1 I = 1,IPCHP(/1)
  73. MSOUPO=IPCHP(I)
  74. SEGACT MSOUPO
  75. KPOI1=NOCOMP(/2)
  76. KPOI=MAX(KPOI,KPOI1)
  77. ** SEGDES MSOUPO
  78. 1 CONTINUE
  79.  
  80. NMIL = nbpts
  81. NIN = IDIM
  82. SEGINI MTRAV
  83.  
  84. DO 70 I=1,IPCHP(/1)
  85. MSOUPO=IPCHP(I)
  86. ** SEGACT MSOUPO
  87. JCOMP=0
  88. DO 71 K=1,NOCOMP(/2)
  89. IPASS(K)=0
  90. DO 710 KN=1,NIN
  91. IF(NOMIN(KN).EQ.NOCOMP(K)) GO TO 73
  92. 710 CONTINUE
  93. GO TO 71
  94. 73 CONTINUE
  95. IPASS(K)=KN
  96. JCOMP=JCOMP+1
  97. 71 CONTINUE
  98. IF(JCOMP.EQ.0) GO TO 770
  99. MELEME=IGEOC
  100. SEGACT MELEME
  101. MPOVAL=IPOVAL
  102. SEGACT MPOVAL
  103. DO 78 K=1,NUM(/2)
  104. K2= NUM(1,K)
  105. IF(K2.EQ.0) GO TO 78
  106. DO 74 KK=1,NOCOMP(/2)
  107. K1=IPASS(KK)
  108. IF(K1.EQ.0) GO TO 74
  109. VA(K1,K2)=VPOCHA(K,KK)
  110. 74 CONTINUE
  111. 78 CONTINUE
  112. SEGDES MPOVAL
  113. *PM
  114. IF(MELEME.NE.IPT1) SEGDES MELEME
  115. 770 SEGDES MSOUPO
  116. 70 CONTINUE
  117. *
  118. NBPTB=nbpts
  119. NBPTS=NBPTB+NBNN*NBELEM
  120. SEGADJ MCOORD
  121. NBPTS=NBPTB
  122. DO 771 J=1,NBELEM
  123. DO 11 I=1,NBNN
  124. IF (ICPR(IPT1.NUM(I,J)).NE.0) GOTO 3
  125. IREF=IPT1.NUM(I,J)*(IDIM+1)
  126. XCOOR(NBPTS*(IDIM+1)+1)
  127. . = VA(1,IPT1.NUM(I,J))*ISENS + XCOOR(IREF-IDIM)
  128. XCOOR(NBPTS*(IDIM+1)+2)
  129. . = VA(2,IPT1.NUM(I,J))*ISENS + XCOOR(IREF-IDIM+1)
  130. IF (IDIM.GE.3) XCOOR(NBPTS*(IDIM+1)+3)
  131. . = VA(3,IPT1.NUM(I,J))*ISENS+XCOOR(IREF-IDIM+2)
  132. XCOOR(NBPTS*(IDIM+1)+(IDIM+1))=XCOOR(IREF)
  133. NBPTS=NBPTS+1
  134. IPT2.NUM(I,J)=NBPTS
  135. ICPR(IPT1.NUM(I,J))=IPT2.NUM(I,J)
  136. GOTO 11
  137. 3 IPT2.NUM(I,J)=ICPR(IPT1.NUM(I,J))
  138. 11 CONTINUE
  139. 771 CONTINUE
  140. SEGADJ MCOORD
  141.  
  142. SEGSUP MTRAV
  143. SEGDES MCHPOI
  144.  
  145. RETURN
  146. END
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  

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