Télécharger chv3.eso

Retour à la liste

Numérotation des lignes :

chv3
  1. C CHV3 SOURCE CB215821 20/11/25 13:19:42 10792
  2. C CHV2 SOURCE CHAT 05/01/12 22:02:20 5004
  3. SUBROUTINE CHV3(MMATRX,ISECO,MVECTX,NOID)
  4. C
  5. C **** SUBROUTINE QUI A PARTIR D UN OBJET DE TYPE MATRICE ET D UN
  6. C **** CHPOINT FABRIQUE UN VECTEUR SECOND MEMBRE
  7. C **** LE CHPOIN EST DE TYPE SECOND MEMBRE
  8. C
  9. IMPLICIT INTEGER(I-N)
  10. -INC SMMATRI
  11. -INC SMCHPOI
  12. -INC SMELEME
  13.  
  14. -INC PPARAM
  15. -INC CCOPTIO
  16. -INC SMVECTD
  17. -INC SMCOORD
  18. SEGMENT,ICPR(nbpts)
  19. SEGMENT,ICOR(NC1)
  20. C
  21. IF(IIMPI.EQ.3) WRITE(IOIMP,1000) MMATRX,ISECO
  22. 1000 FORMAT(' SUBROUTINE CHV2 : POINTEUR DE LA MATRICE=',I5,
  23. 1 ' POINTEUR DE L''OBJET CHPOINT=',I5)
  24. C
  25. C **** ACTIVATION DES SEGMENTS
  26. C
  27. MMATRI=MMATRX
  28. SEGACT,MMATRI
  29. MCHPOI=ISECO
  30. SEGACT MCHPOI
  31. NSOUPO=IPCHP(/1)
  32. MELEME=IGEOMA
  33. SEGACT,MELEME
  34. MILIGN=IILIGN
  35. SEGACT,MILIGN
  36. INC=IPNO(/1)
  37. SEGDES,MILIGN
  38. SEGINI,MVECTD
  39. mimik=iimik
  40. segact mimik
  41. * MIDUA=IIDUA
  42. * SEGACT,MIDUA
  43. MHARK=IHARK
  44. SEGACT,MHARK
  45. * IDU=IDUA(/2)
  46. idu=imik(/2)
  47. MINCPO=IINCPO
  48. SEGACT,MINCPO
  49. N2=NUM(/2)
  50. C
  51. C **** DANS ICPR ON COMPTE LES POINTS DE MELEME
  52. C
  53. SEGINI ICPR
  54. DO 25 I=1,N2
  55. ICPR(NUM(1,I))=I
  56. 25 CONTINUE
  57. C
  58. C
  59. C **** FABRICATION D'UN VECTEUR SECOND MEMBRE DANS MVECTD
  60. C **** ON VERIFIE QUE TOUTES LES COMPOSANTES DU VECTEUR EXISTENT DANS
  61. C **** LA MATRICE SI NOID=0 .
  62. C
  63. DO 1 I=1,NSOUPO
  64. MSOUPO=IPCHP(I)
  65. SEGACT,MSOUPO
  66. IPT1=IGEOC
  67. SEGACT,IPT1
  68. NC=NOCOMP(/2)
  69. NC1=NC
  70. SEGINI,ICOR
  71. DO KKIL = 1,NC1
  72. ICOR(KKIL)=0
  73. ENDDO
  74. DO 11 KI=1,NC
  75. DO 10 J=1,IDU
  76. IF(NOCOMP(KI).NE.Imik(J)) GO TO 10
  77. IF(NOHARM(KI).NE.IHAR(J)) GO TO 10
  78. ICOR(KI)=J
  79. GO TO 11
  80. 10 CONTINUE
  81. 11 CONTINUE
  82. MPOVAL=IPOVAL
  83. SEGACT,MPOVAL
  84. N=VPOCHA(/1)
  85. DO 20 J=1,N
  86. K=ICPR(IPT1.NUM(1,J))
  87. IF(K.NE.0) GO TO 4
  88. IF(NOID.EQ.1) GO TO 20
  89. C
  90. C **** LE NUMERO DU NOEUD DU VECTEUR N'EXISTAIT PAS DANS LA MATRICE
  91. C
  92. ITYP=53
  93. INTERR(1) = IPT1.NUM(1,J)
  94. CALL ERREUR (ITYP)
  95. RETURN
  96. 4 CONTINUE
  97. 40 CONTINUE
  98. DO 2 LI=1,NC
  99. KKIL=ICOR(LI)
  100. IF (KKIL.EQ.0) GOTO 55
  101. KI=INCPO(KKIL,K)
  102. IF(KI.NE.0) GO TO 6
  103. 55 CONTINUE
  104. IF(NOID.EQ.1) GO TO 2
  105. C
  106. C **** LE TYPE D'INCONNUE N'EXISTAIT PAS DANS LA MATRICE
  107. C
  108. ITYP=54
  109. MOTERR = NOCOMP(LI)
  110. INTERR(1) = NOHARM (LI)
  111. INTERR(2) = IPT1.NUM(1,J)
  112. CALL ERREUR(ITYP)
  113. RETURN
  114. 6 CONTINUE
  115. VECTBB(KI)=VPOCHA(J,LI)
  116. 2 CONTINUE
  117. 20 CONTINUE
  118. SEGDES,MPOVAL
  119. SEGDES,MSOUPO
  120. SEGSUP,ICOR
  121. SEGDES,IPT1
  122. 1 CONTINUE
  123. SEGSUP ICPR
  124. SEGDES,MELEME
  125. SEGDES,MCHPOI
  126. SEGDES MMATRI
  127. SEGDES,MImik
  128. SEGDES,MHARK
  129. SEGDES,MINCPO
  130. MVECTX=MVECTD
  131. C
  132. IF(IIMPI.EQ.3) WRITE(IOIMP,1002)MVECTD
  133. 1002 FORMAT(' SUBROUTINE CHV2 : POINTEUR DU VECTEUR =',I5)
  134. * SEGDES MVECTD
  135. RETURN
  136. END
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  

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