Télécharger chv2.eso

Retour à la liste

Numérotation des lignes :

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

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