Télécharger cv2mcb.eso

Retour à la liste

Numérotation des lignes :

cv2mcb
  1. C CV2MCB SOURCE GOUNAND 24/11/06 21:15:08 12073
  2. SUBROUTINE CV2MCB(CGEOMQ,TABVDC,TABMAT,
  3. $ MYFALS,LCHAM,
  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. -INC SMELEME
  50. POINTEUR CGEOMQ.MELEME
  51. POINTEUR MATLSB.MATRIK
  52. POINTEUR MATTMP.MATRIK
  53. POINTEUR MATTM2.MATRIK
  54. -INC SMCHPOI
  55. * POINTEUR CHPLSB.MCHPOI
  56. * POINTEUR CHPTMP.MCHPOI
  57. * POINTEUR CHPTM2.MCHPOI
  58. INTEGER CHPLSB,CHPTMP,CHPTM2
  59. *
  60. * Includes persos
  61. *
  62. -INC TNLIN
  63. *-INC SMCHAEL
  64. POINTEUR MYMCHA.MCHAEL
  65. *-INC SFALRF
  66. POINTEUR MYFALS.FALRFS
  67. *-INC SMTNLIN
  68. INTEGER NUMVPR,NUMVDU
  69. *
  70. CHARACTER*4 MDISCP,MDISCD,MYDISC
  71. INTEGER IMPR,IRET
  72. *
  73. LOGICAL MVVPR,MVVDU
  74. *
  75. * Executable statements
  76. *
  77. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans cv2mcb'
  78. * WRITE(IOIMP,*) '<'
  79. MATLSB=0
  80. CHPLSB=0
  81. MATTMP=0
  82. CHPTMP=0
  83. SEGACT TABVDC
  84. SEGACT TABMAT
  85. * SEGPRT,TABMAT
  86. NUMVPR=TABMAT.VMAT(/2)
  87. NUMVDU=TABMAT.VMAT(/1)
  88. DO IVARPR=1,NUMVPR
  89. DO IVARDU=1,NUMVDU
  90. IJVARP=TABVDC.VVARPR(IVARPR)
  91. IJVARD=TABVDC.VVARDU(IVARDU)
  92. MVVPR=(TABVDC.MVD(IJVARP).NE.0)
  93. MVVDU=(TABVDC.MVD(IJVARD).NE.0)
  94. IKVARP=TABVDC.DJSVD(IJVARP)
  95. MDISCP=TABVDC.DISVD(IKVARP)
  96. NCVARP=TABVDC.NOMVD(IJVARP)
  97. IKVARD=TABVDC.DJSVD(IJVARD)
  98. MDISCD=TABVDC.DISVD(IKVARD)
  99. NCVARD=TABVDC.NOMVD(IJVARD)
  100. MYMCHA=TABMAT.VMAT(IVARDU,IVARPR)
  101. IF (MYMCHA.NE.0) THEN
  102. IF ((.NOT.MVVPR).AND.(.NOT.MVVDU)) THEN
  103. * In cv2ma9 : SEGINI MATTMP
  104. CALL CV2MAB(CGEOMQ,MDISCP,NCVARP,MDISCD,NCVARD,
  105. $ MYMCHA,
  106. $ MYFALS,
  107. $ MATTMP,
  108. $ IMPR,IRET)
  109. IF (IRET.NE.0) GOTO 9999
  110. ELSEIF ((.NOT.MVVPR).AND.MVVDU) THEN
  111. MYDISC=MDISCP
  112. MYLMOT=NCVARP
  113. IF (LCHAM.EQ.1) THEN
  114. CALL CV2CML(CGEOMQ,MYDISC,MYLMOT,MYMCHA,
  115. $ MYFALS,
  116. $ CHPTMP,
  117. $ IMPR,IRET)
  118. IF (IRET.NE.0) GOTO 9999
  119. ELSE
  120. CALL CV2CP9(MYDISC,MYLMOT,MYMCHA,
  121. $ MYFALS,
  122. $ CHPTMP,
  123. $ IMPR,IRET)
  124. IF (IRET.NE.0) GOTO 9999
  125. ENDIF
  126. ELSEIF (MVVPR.AND.(.NOT.MVVDU)) THEN
  127. MYDISC=MDISCD
  128. MYLMOT=NCVARD
  129. IF (LCHAM.EQ.1) THEN
  130. CALL CV2CML(CGEOMQ,MYDISC,MYLMOT,MYMCHA,
  131. $ MYFALS,
  132. $ CHPTMP,
  133. $ IMPR,IRET)
  134. IF (IRET.NE.0) GOTO 9999
  135. ELSE
  136. CALL CV2CP9(MYDISC,MYLMOT,MYMCHA,
  137. $ MYFALS,
  138. $ CHPTMP,
  139. $ IMPR,IRET)
  140. IF (IRET.NE.0) GOTO 9999
  141. ENDIF
  142. ELSEIF (MVVPR.AND.MVVDU) THEN
  143. MYDISC='CSTE'
  144. JGN=4
  145. JGM=1
  146. SEGINI,MYLMOT
  147. * MYLMOT.MOTS(1)='RES2'
  148. MYLMOT.MOTS(1)='SCAL'
  149. * In CV2CP9 : SEGINI CHPTMP
  150. IF (LCHAM.EQ.1) THEN
  151. CALL CV2CML(CGEOMQ,MYDISC,MYLMOT,MYMCHA,
  152. $ MYFALS,
  153. $ CHPTMP,
  154. $ IMPR,IRET)
  155. IF (IRET.NE.0) GOTO 9999
  156. ELSE
  157. CALL CV2CP9(MYDISC,MYLMOT,MYMCHA,
  158. $ MYFALS,
  159. $ CHPTMP,
  160. $ IMPR,IRET)
  161. IF (IRET.NE.0) GOTO 9999
  162. ENDIF
  163. SEGSUP,MYLMOT
  164. ENDIF
  165. IF (CHPTMP.NE.0) THEN
  166. IF (CHPLSB.EQ.0) THEN
  167. CHPLSB=CHPTMP
  168. CHPTMP=0
  169. ELSE
  170. IF (LCHAM.EQ.1) THEN
  171. CALL ADCHEL(CHPLSB,CHPTMP,CHPTM2,1)
  172. ELSE
  173. * In ADCHPO : SEGINI CHPTM2
  174. CALL ADCHPO(CHPLSB,CHPTMP,CHPTM2,1.D0,1.D0)
  175. ENDIF
  176. IF (CHPTM2.EQ.0) THEN
  177. WRITE(IOIMP,*)
  178. $ 'Pas pu faire le ET des chpoints...'
  179. GOTO 9999
  180. ENDIF
  181. IF (LCHAM.EQ.1) THEN
  182. CALL DTCHAM(CHPLSB)
  183. CALL DTCHAM(CHPTMP)
  184. ELSE
  185. * In DTCHPO : SEGSUP CHPLSB
  186. CALL DTCHPO(CHPLSB)
  187. * In DTCHPO : SEGSUP CHPTMP
  188. CALL DTCHPO(CHPTMP)
  189. ENDIF
  190. CHPLSB=CHPTM2
  191. CHPTMP=0
  192. ENDIF
  193. ENDIF
  194. IF (MATTMP.NE.0) THEN
  195. IF (MATLSB.EQ.0) THEN
  196. MATLSB=MATTMP
  197. MATTMP=0
  198. ELSE
  199. * In FUSMTK : SEGINI MATTM2
  200. CALL FUSMTK(MATLSB,MATTMP,MATTM2)
  201. IF (MATTM2.EQ.0) THEN
  202. WRITE(IOIMP,*)
  203. $ 'Pas pu faire le ET des matriks...'
  204. GOTO 9999
  205. ENDIF
  206. SEGSUP MATLSB
  207. SEGSUP MATTMP
  208. MATLSB=MATTM2
  209. MATTMP=0
  210. ENDIF
  211. ENDIF
  212. ENDIF
  213. ENDDO
  214. ENDDO
  215. SEGDES TABMAT
  216. SEGDES TABVDC
  217. * WRITE(IOIMP,*) '>'
  218. IF (IMPR.GT.3) THEN
  219. IF (MATLSB.NE.0) THEN
  220. CALL ECROBJ('MATRIK',MATLSB)
  221. CALL PRLIST
  222. ENDIF
  223. IF (CHPLSB.NE.0) THEN
  224. IF (LCHAM.EQ.1) THEN
  225. CALL ECROBJ('MCHAML ',CHPLSB)
  226. ELSE
  227. CALL ECROBJ('CHPOINT ',CHPLSB)
  228. ENDIF
  229. CALL PRLIST
  230. ENDIF
  231. ENDIF
  232. *
  233. * Normal termination
  234. *
  235. IRET=0
  236. RETURN
  237. *
  238. * Format handling
  239. *
  240. *
  241. * Error handling
  242. *
  243. 9999 CONTINUE
  244. IRET=1
  245. WRITE(IOIMP,*) 'An error was detected in subroutine cv2mcb'
  246. RETURN
  247. *
  248. * End of subroutine CV2MCB
  249. *
  250. END
  251.  
  252.  

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