Télécharger cv2mcb.eso

Retour à la liste

Numérotation des lignes :

cv2mcb
  1. C CV2MCB SOURCE PV 22/04/25 21:15:03 11344
  2. SUBROUTINE CV2MCB(TABVDC,TABMAT,
  3. $ MYFALS,
  4. $ MATLSB,CHPLSB,
  5. $ IMPR,IRET)
  6. IMPLICIT REAL*8 (A-H,O-Z)
  7. IMPLICIT INTEGER (I-N)
  8. C***********************************************************************
  9. C NOM : CV2MCB
  10. C DESCRIPTION : Transforme un MCHAEL (mon champ par éléments)
  11. C représentant un ensemble de matrices élémentaires en
  12. C MATRIK...
  13. C
  14. C LANGAGE : ESOPE
  15. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  16. C mél : gounand@semt2.smts.cea.fr
  17. C***********************************************************************
  18. C APPELES : KEEF (recherche de l'élément fini)
  19. C APPELES (E/S) : ECROBJ, PRLIST (écriture entier, objet,
  20. C impression)
  21. C APPELE PAR : PRLSB2
  22. C***********************************************************************
  23. C ENTREES :
  24. C ENTREES/SORTIES : -
  25. C SORTIES :
  26. C TRAVAIL : * MYMEL (type MELEME) : maillage élémentaire.
  27. C * JMTLSB (type MCHEVA) : valeurs du champ IMTLSB
  28. C sur le maillage élémentaire.
  29. C Structure (cf.include SMCHAEL) :
  30. C (nb. ddl dual, nb. ddl primal,
  31. C nb. comp. duales, nb. comp. primales,
  32. C 1, nb. éléments)
  33. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  34. C***********************************************************************
  35. C VERSION : v1, 22/07/09, version initiale
  36. C HISTORIQUE : v1, 22/07/09, création
  37. C HISTORIQUE :
  38. C***********************************************************************
  39. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  40. C en cas de modification de ce sous-programme afin de faciliter
  41. C la maintenance !
  42. C***********************************************************************
  43. -INC PPARAM
  44. -INC CCOPTIO
  45. -INC SMLMOTS
  46. POINTEUR MYLMOT.MLMOTS
  47. POINTEUR NCVARP.MLMOTS
  48. POINTEUR NCVARD.MLMOTS
  49. POINTEUR MATLSB.MATRIK
  50. POINTEUR MATTMP.MATRIK
  51. POINTEUR MATTM2.MATRIK
  52. -INC SMCHPOI
  53. * POINTEUR CHPLSB.MCHPOI
  54. * POINTEUR CHPTMP.MCHPOI
  55. * POINTEUR CHPTM2.MCHPOI
  56. INTEGER CHPLSB,CHPTMP,CHPTM2
  57. *
  58. * Includes persos
  59. *
  60. -INC TNLIN
  61. *-INC SMCHAEL
  62. POINTEUR MYMCHA.MCHAEL
  63. *-INC SFALRF
  64. POINTEUR MYFALS.FALRFS
  65. *-INC SMTNLIN
  66. INTEGER NUMVPR,NUMVDU
  67. *
  68. CHARACTER*4 MDISCP,MDISCD,MYDISC
  69. INTEGER IMPR,IRET
  70. *
  71. LOGICAL MVVPR,MVVDU
  72. *
  73. * Executable statements
  74. *
  75. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans cv2mcb'
  76. * WRITE(IOIMP,*) '<'
  77. MATLSB=0
  78. CHPLSB=0
  79. MATTMP=0
  80. CHPTMP=0
  81. SEGACT TABVDC
  82. SEGACT TABMAT
  83. * SEGPRT,TABMAT
  84. NUMVPR=TABMAT.VMAT(/2)
  85. NUMVDU=TABMAT.VMAT(/1)
  86. DO IVARPR=1,NUMVPR
  87. DO IVARDU=1,NUMVDU
  88. IJVARP=TABVDC.VVARPR(IVARPR)
  89. IJVARD=TABVDC.VVARDU(IVARDU)
  90. MVVPR=(TABVDC.MVD(IJVARP).NE.0)
  91. MVVDU=(TABVDC.MVD(IJVARD).NE.0)
  92. IKVARP=TABVDC.DJSVD(IJVARP)
  93. MDISCP=TABVDC.DISVD(IKVARP)
  94. NCVARP=TABVDC.NOMVD(IJVARP)
  95. IKVARD=TABVDC.DJSVD(IJVARD)
  96. MDISCD=TABVDC.DISVD(IKVARD)
  97. NCVARD=TABVDC.NOMVD(IJVARD)
  98. MYMCHA=TABMAT.VMAT(IVARDU,IVARPR)
  99. IF (MYMCHA.NE.0) THEN
  100. IF ((.NOT.MVVPR).AND.(.NOT.MVVDU)) THEN
  101. * In cv2ma9 : SEGINI MATTMP
  102. CALL CV2MAB(MDISCP,NCVARP,MDISCD,NCVARD,
  103. $ MYMCHA,
  104. $ MYFALS,
  105. $ MATTMP,
  106. $ IMPR,IRET)
  107. IF (IRET.NE.0) GOTO 9999
  108. ELSEIF ((.NOT.MVVPR).AND.MVVDU) THEN
  109. MYDISC=MDISCP
  110. MYLMOT=NCVARP
  111. IF (LCHAM.EQ.1) THEN
  112. CALL CV2CML(MYDISC,MYLMOT,MYMCHA,
  113. $ MYFALS,
  114. $ CHPTMP,
  115. $ IMPR,IRET)
  116. IF (IRET.NE.0) GOTO 9999
  117. ELSE
  118. CALL CV2CP9(MYDISC,MYLMOT,MYMCHA,
  119. $ MYFALS,
  120. $ CHPTMP,
  121. $ IMPR,IRET)
  122. IF (IRET.NE.0) GOTO 9999
  123. ENDIF
  124. ELSEIF (MVVPR.AND.(.NOT.MVVDU)) THEN
  125. MYDISC=MDISCD
  126. MYLMOT=NCVARD
  127. IF (LCHAM.EQ.1) THEN
  128. CALL CV2CML(MYDISC,MYLMOT,MYMCHA,
  129. $ MYFALS,
  130. $ CHPTMP,
  131. $ IMPR,IRET)
  132. IF (IRET.NE.0) GOTO 9999
  133. ELSE
  134. CALL CV2CP9(MYDISC,MYLMOT,MYMCHA,
  135. $ MYFALS,
  136. $ CHPTMP,
  137. $ IMPR,IRET)
  138. IF (IRET.NE.0) GOTO 9999
  139. ENDIF
  140. ELSEIF (MVVPR.AND.MVVDU) THEN
  141. MYDISC='CSTE'
  142. JGN=4
  143. JGM=1
  144. SEGINI,MYLMOT
  145. * MYLMOT.MOTS(1)='RES2'
  146. MYLMOT.MOTS(1)='SCAL'
  147. * In CV2CP9 : SEGINI CHPTMP
  148. IF (LCHAM.EQ.1) THEN
  149. CALL CV2CML(MYDISC,MYLMOT,MYMCHA,
  150. $ MYFALS,
  151. $ CHPTMP,
  152. $ IMPR,IRET)
  153. IF (IRET.NE.0) GOTO 9999
  154. ELSE
  155. CALL CV2CP9(MYDISC,MYLMOT,MYMCHA,
  156. $ MYFALS,
  157. $ CHPTMP,
  158. $ IMPR,IRET)
  159. IF (IRET.NE.0) GOTO 9999
  160. ENDIF
  161. SEGSUP,MYLMOT
  162. ENDIF
  163. IF (CHPTMP.NE.0) THEN
  164. IF (CHPLSB.EQ.0) THEN
  165. CHPLSB=CHPTMP
  166. CHPTMP=0
  167. ELSE
  168. IF (LCHAM.EQ.1) THEN
  169. CALL ADCHEL(CHPLSB,CHPTMP,CHPTM2,1)
  170. ELSE
  171. * In ADCHPO : SEGINI CHPTM2
  172. CALL ADCHPO(CHPLSB,CHPTMP,CHPTM2,1.D0,1.D0)
  173. ENDIF
  174. IF (CHPTM2.EQ.0) THEN
  175. WRITE(IOIMP,*)
  176. $ 'Pas pu faire le ET des chpoints...'
  177. GOTO 9999
  178. ENDIF
  179. IF (LCHAM.EQ.1) THEN
  180. CALL DTCHAM(CHPLSB)
  181. CALL DTCHAM(CHPTMP)
  182. ELSE
  183. * In DTCHPO : SEGSUP CHPLSB
  184. CALL DTCHPO(CHPLSB)
  185. * In DTCHPO : SEGSUP CHPTMP
  186. CALL DTCHPO(CHPTMP)
  187. ENDIF
  188. CHPLSB=CHPTM2
  189. CHPTMP=0
  190. ENDIF
  191. ENDIF
  192. IF (MATTMP.NE.0) THEN
  193. IF (MATLSB.EQ.0) THEN
  194. MATLSB=MATTMP
  195. MATTMP=0
  196. ELSE
  197. * In FUSMTK : SEGINI MATTM2
  198. CALL FUSMTK(MATLSB,MATTMP,MATTM2)
  199. IF (MATTM2.EQ.0) THEN
  200. WRITE(IOIMP,*)
  201. $ 'Pas pu faire le ET des matriks...'
  202. GOTO 9999
  203. ENDIF
  204. SEGSUP MATLSB
  205. SEGSUP MATTMP
  206. MATLSB=MATTM2
  207. MATTMP=0
  208. ENDIF
  209. ENDIF
  210. ENDIF
  211. ENDDO
  212. ENDDO
  213. SEGDES TABMAT
  214. SEGDES TABVDC
  215. * WRITE(IOIMP,*) '>'
  216. IF (IMPR.GT.3) THEN
  217. IF (MATLSB.NE.0) THEN
  218. CALL ECROBJ('MATRIK',MATLSB)
  219. CALL PRLIST
  220. ENDIF
  221. IF (CHPLSB.NE.0) THEN
  222. IF (LCHAM.EQ.1) THEN
  223. CALL ECROBJ('MCHAML ',CHPLSB)
  224. ELSE
  225. CALL ECROBJ('CHPOINT ',CHPLSB)
  226. ENDIF
  227. CALL PRLIST
  228. ENDIF
  229. ENDIF
  230. *
  231. * Normal termination
  232. *
  233. IRET=0
  234. RETURN
  235. *
  236. * Format handling
  237. *
  238. *
  239. * Error handling
  240. *
  241. 9999 CONTINUE
  242. IRET=1
  243. WRITE(IOIMP,*) 'An error was detected in subroutine cv2mcb'
  244. RETURN
  245. *
  246. * End of subroutine CV2MCB
  247. *
  248. END
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  

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