Télécharger ch2vec.eso

Retour à la liste

Numérotation des lignes :

ch2vec
  1. C CH2VEC SOURCE CB215821 20/11/25 13:19:10 10792
  2. SUBROUTINE CH2VEC(MCHPOI,MINC,KISPG,IDMAT,KVEC,IMPR,IRET)
  3. IMPLICIT REAL*8 (A-H,O-Z)
  4. IMPLICIT INTEGER (I-N)
  5. C***********************************************************************
  6. C NOM : CH2VEC
  7. C DESCRIPTION :
  8. C
  9. C Ce sp effectue la surcharge :
  10. C chpoint (MCHPOI) -> vecteur (KVEC pointeur de type IZA).
  11. C L'ordonnancement des inconnues est
  12. C donné par MINC, les points concernés par KISPG et IDMAT
  13. C donne le passage num. ancienne -> num. nouvelle (NUAN)
  14. C
  15. C Son alter ego est vec2ch.
  16. C
  17. C Les valeurs non nulles de MCHPOI NE correspondant
  18. C PAS à des inconnues du vecteur KVEC donnent lieu à
  19. C l'émission d'un warning.
  20. C
  21. C
  22. C
  23. C
  24. C LANGAGE : ESOPE
  25. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/TTMF)
  26. C mél : gounand@semt2.smts.cea.fr
  27. C***********************************************************************
  28. C APPELES : KRIPAD
  29. C***********************************************************************
  30. C ENTREES : MCHPOI, MINC, KISPG, IDMAT, IMPR
  31. C ENTREES/SORTIES : KVEC
  32. C SORTIES : IRET
  33. C CODE RETOUR (IRET) : inutilisé (=0 tout marche !)
  34. C
  35. C MCHPOI : pointeur sur segment MCHPOI de l'include SMCHPOI
  36. C chpoint de surchargement pour le vecteur KVEC.
  37. C MINC : pointeur sur segment MINC de l'include SMMATRIK
  38. C décrit l'ordonnancement des inconnues dans une
  39. C certaine numérotation (dite "nouvelle").
  40. C KISPG : pointeur sur segment MELEME de l'include SMELEME
  41. C support géométrique des inconnues.
  42. C IDMAT : pointeur sur segment IDMAT de l'include SMMATRIK
  43. C contient le tableau NUAN permettant de faire
  44. C le passage numérotation ancienne -> num. "nouvelle".
  45. C IMPR : niveau d'impression
  46. C KVEC : pointeur sur segment IZA de l'include SMMATRIK
  47. C contient le vecteur des inconnues à surcharger.
  48. C (Il est donc initialisé avant l'appel à ch2vec)
  49. C
  50. C***********************************************************************
  51. C VERSION : v2, 01/12/99
  52. C HISTORIQUE : v1, 01/04/98, création
  53. C HISTORIQUE : v2; 01/12/99, modifs (nouvelle signification de NUAN)
  54. C HISTORIQUE :
  55. C***********************************************************************
  56. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  57. C en cas de modification de ce sous-programme afin de faciliter
  58. C la maintenance !
  59. C***********************************************************************
  60.  
  61. -INC PPARAM
  62. -INC CCOPTIO
  63. POINTEUR KVEC.IZA
  64. -INC SMCHPOI
  65. -INC SMELEME
  66. POINTEUR KISPG.MELEME
  67. -INC SMLENTI
  68. CHARACTER*(LOCOMP) NOMINC
  69. LOGICAL FLINC
  70. *
  71. INTEGER IMPR,IRET
  72. *
  73. INTEGER I1,IN,INBI,INBVA
  74. INTEGER INC,L,N,NBI,NC,NSOUPO
  75. *
  76. IRET=0
  77. C
  78. IF (IMPR.GT.5) WRITE(IOIMP,*) 'Entrée dans ch2vec.eso'
  79. C
  80. IF (IMPR.GT.6) THEN
  81. WRITE(IOIMP,*) ' ch2vec : entrées '
  82. WRITE(IOIMP,*) ' MCHPOI = ',MCHPOI
  83. WRITE(IOIMP,*) ' MINC = ',MINC
  84. WRITE(IOIMP,*) ' KISPG = ',KISPG
  85. WRITE(IOIMP,*) ' IDMAT = ',IDMAT
  86. ENDIF
  87. C
  88. SEGACT MINC
  89. NBI=LISINC(/2)
  90. C In KRIPAD : SEGACT KISPG
  91. C SEGINI MLENTI
  92. C write(ioimp,*) 'kispg'
  93. C call ecmail(kispg,0)
  94. C write(ioimp,*) 'minc'
  95. C write(ioimp,*) 'minc lisinc',(lisinc(i),i=1,lisinc(/2))
  96. C write(ioimp,*) 'minc npos ',(npos(i),i=1,npos(/1))
  97. C do i=1,mpos(/1)
  98. C write(ioimp,*) 'minc mpos (',i,')=',(mpos(i,j),j=1,mpos(/2))
  99. C enddo
  100. CALL KRIPAD(KISPG,MLENTI)
  101. C write(ioimp,*) 'mlenti ',(lect(i),i=1,lect(/1))
  102. SEGACT IDMAT
  103. SEGACT MCHPOI
  104. NSOUPO=IPCHP(/1)
  105. DO 1 L=1,NSOUPO
  106. MSOUPO=IPCHP(L)
  107. SEGACT MSOUPO
  108. NC=NOCOMP(/2)
  109. MELEME=IGEOC
  110. MPOVAL=IPOVAL
  111. SEGACT MELEME
  112. N=NUM(/2)
  113. IF (N.EQ.0) GOTO 15
  114. SEGACT MPOVAL
  115. DO 2 INC=1,NC
  116. NOMINC=NOCOMP(INC)
  117. FLINC=.FALSE.
  118. C Repeat..until
  119. INBI=1
  120. 21 CONTINUE
  121. IF (NOMINC.EQ.LISINC(INBI)) THEN
  122. FLINC=.TRUE.
  123. ELSEIF (INBI.LT.NBI) THEN
  124. INBI=INBI+1
  125. GOTO 21
  126. ENDIF
  127. IF (.NOT.FLINC) THEN
  128. * WRITE(IOIMP,*) ' ch2vec : Composante ',NOMINC,' unknown '
  129. ELSE
  130. N=VPOCHA(/1)
  131. DO 3 IN=1,N
  132. I1=LECT(NUM(1,IN))
  133. IF(I1.EQ.0)THEN
  134. * Silence dans les rangs !
  135. * WRITE(IOIMP,*) ' ch2vec : le point ',NUM(1,IN),
  136. * $ ' inconnue : ', NOCOMP(INC)
  137. * WRITE(IOIMP,*) ' n''appartient pas au vec.'
  138. ELSE
  139. IF (MPOS(I1,INBI).NE.0) THEN
  140. INBVA=NUAN(NPOS(I1)+MPOS(I1,INBI)-1)
  141. C INBVA=NPOS(NUAN(I1))+MPOS(NUAN(I1),INBI)-1
  142. C KVEC.A(INBVA)=KVEC.A(INBVA)+VPOCHA(IN,INC)
  143. C Je préfère surcharger
  144. C
  145. * WRITE(IOIMP,*) ' ch2vec : le point ',NUM(1,IN),
  146. * $ ' inconnue : ', NOCOMP(INC) , 'valeur ',
  147. * $ VPOCHA(IN,INC)
  148. * WRITE(IOIMP,*) ' attribue au ddl ',INBVA
  149. KVEC.A(INBVA)=VPOCHA(IN,INC)
  150. ENDIF
  151. ENDIF
  152. 3 CONTINUE
  153. ENDIF
  154. 2 CONTINUE
  155. 15 CONTINUE
  156. 1 CONTINUE
  157. SEGDES IDMAT,MINC
  158. SEGSUP MLENTI
  159. *
  160. * Normal termination
  161. *
  162. RETURN
  163. *
  164. * End of CH2VEC
  165. *
  166. END
  167.  
  168.  

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