Télécharger comou2.eso

Retour à la liste

Numérotation des lignes :

  1. C COMOU2 SOURCE PV 17/12/08 21:16:48 9660
  2. SUBROUTINE COMOU2(iqmod,INDESO,ipil,iwrk52,wrk53,iwr522)
  3. *
  4. * creation des segments de noms de composantes des MCHAML
  5. * CREES PAR LE MODELE ELEMENTAIRE
  6. * attention : une modele de mecanique ne peut creer de composantes thermiques
  7. * ou phases metallurgiques !
  8. * creation des segments de rangement des deche associes aux precedents
  9. *
  10. IMPLICIT INTEGER(I-N)
  11. IMPLICIT REAL*8(A-H,O-Z)
  12. *
  13. -INC CCOPTIO
  14. *
  15. -INC SMMODEL
  16. pointeur nomid1.nomid
  17. -INC DECHE
  18. *
  19. imodel = iqmod
  20. *
  21. MELE1 = MELE
  22. NPINT3 = NPINT
  23. MFR2 = MFR
  24.  
  25. iiluc = 25
  26. C*? iiluc = NMOT (=25)
  27. SEGINI,liluc
  28.  
  29. DO ijluc = 1, iiluc
  30. *
  31. * AIGUILLAGE SUIVANT MOT CLE
  32. *
  33. mocomp = 0
  34. GOTO ( 1, 2, 99, 99, 99, 6, 7,99,99,10,11,12,13,14,15,16,17,18,
  35. 1 99,20,21,99,23,24,25) ijluc
  36. *
  37. 99 CONTINUE
  38. c pas de composantes pour ce champ
  39. NBROBL=0
  40. NBRFAC=0
  41. SEGINI NOMID
  42. MOCOMP=NOMID
  43. GOTO 120
  44. *
  45. 1 NBROBL=1
  46. NBRFAC=0
  47. SEGINI NOMID
  48. MOCOMP=NOMID
  49. LESOBL(1)='SCAL'
  50. nsca = 1
  51. GOTO 120
  52. *
  53. 2 NBROBL=1
  54. NBRFAC=0
  55. SEGINI NOMID
  56. MOCOMP=NOMID
  57. LESOBL(1)='TEMP'
  58. ntem = 1
  59. GOTO 120
  60. *
  61. 6 if(lnomid(1).ne.0) then
  62. nomid1=lnomid(1)
  63. segini,nomid=nomid1
  64. nbrobl=lesobl(/2)
  65. nbrfac=lesfac(/2)
  66. mocomp=nomid
  67. else
  68. CALL IDPRIM(IMODEL,MFR2,MOCOMP,NBROBL,NBRFAC)
  69. nomid = mocomp
  70. segact nomid
  71. endif
  72. ndep = nbrobl + nbrfac
  73. GOTO 120
  74. *
  75. 7 if(lnomid(2).ne.0) then
  76. nomid1=lnomid(2)
  77. segini,nomid=nomid1
  78. nbrobl=lesobl(/2)
  79. nbrfac=lesfac(/2)
  80. mocomp=nomid
  81. else
  82. CALL IDDUAL(IMODEL,MFR2,MOCOMP,NBROBL,NBRFAC)
  83. nomid = mocomp
  84. segact nomid
  85. endif
  86. nfor = nbrobl + nbrfac
  87. GOTO 120
  88. *
  89. 10 if(lnomid(3).ne.0) then
  90. nomid1=lnomid(3)
  91. segini,nomid=nomid1
  92. nbrobl=lesobl(/2)
  93. nbrfac=lesfac(/2)
  94. mocomp=nomid
  95. else
  96. CALL IDGRAD(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC)
  97. nomid = mocomp
  98. segact nomid
  99. endif
  100. ngra = nbrobl + nbrfac
  101. GOTO 120
  102. *
  103. 11 if(lnomid(4).ne.0) then
  104. nomid1=lnomid(4)
  105. segini,nomid=nomid1
  106. nbrobl=lesobl(/2)
  107. nbrfac=lesfac(/2)
  108. mocomp=nomid
  109. else
  110. CALL IDCONT(iqmod,IFOUR,MOCOMP,NBROBL,NBRFAC)
  111. nomid = mocomp
  112. segact nomid
  113. endif
  114. nstrs = nbrobl + nbrfac
  115. GOTO 120
  116. *
  117. 12 if(lnomid(5).ne.0) then
  118. nomid1=lnomid(5)
  119. segini,nomid=nomid1
  120. nbrobl=lesobl(/2)
  121. nbrfac=lesfac(/2)
  122. mocomp=nomid
  123. else
  124. CALL IDDEFO(iqmod,IFOUR,MOCOMP,NBROBL,NBRFAC)
  125. nomid = mocomp
  126. segact nomid
  127. endif
  128. ndefo = nbrobl + nbrfac
  129. GOTO 120
  130. *
  131. 13 if(lnomid(6).ne.0) then
  132. nomid1=lnomid(6)
  133. segact,nomid1
  134. nbrobl=nomid1.lesobl(/2)
  135. nbrfac=nomid1.lesfac(/2)
  136. if (nbrobl+nbrfac.eq.0) then
  137. CALL IDMATR(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC)
  138. nomid=mocomp
  139. segact nomid
  140. else
  141. segini,nomid=nomid1
  142. mocomp=nomid
  143. endif
  144. segdes,nomid1
  145. else
  146. CALL IDMATR(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC)
  147. nomid = mocomp
  148. segact nomid
  149. endif
  150. ncara = nbrobl + nbrfac
  151. NMATR = nbrobl
  152. if(inplas.eq.3) ncara=ncara+7
  153. GOTO 120
  154. *
  155. 14 inat = inplas
  156. if(lnomid(7).ne.0) then
  157. nomid1=lnomid(7)
  158. segini,nomid=nomid1
  159. nbrobl=lesobl(/2)
  160. nbrfac=lesfac(/2)
  161. mocomp=nomid
  162. else
  163. CALL IDCARB(MELE1,IFOUR,MOCOMP,NBROBL,NBRFAC)
  164. nomid = mocomp
  165. segact nomid
  166. endif
  167. ncarb = nbrobl + nbrfac
  168. NCARR = ncarb
  169. IF(MFR.EQ.15) ncarb=ncarb*2
  170. IF(MFR.EQ.7.OR.MFR.EQ.13)ncarb=ncarb+IDIM
  171. NUCAR = ncarb
  172. NCARF = nbrfac
  173. GOTO 120
  174. *
  175. 15 if(lnomid(8).ne.0) then
  176. nomid1=lnomid(8)
  177. segini,nomid=nomid1
  178. nbrobl=lesobl(/2)
  179. nbrfac=lesfac(/2)
  180. mocomp=nomid
  181. else
  182. CALL IDTEMP(MFR2,IFOUR,NPINT3,MOCOMP,NBROBL,NBRFAC)
  183. nomid = mocomp
  184. segact nomid
  185. endif
  186. ntur = nbrobl + nbrfac
  187. GOTO 120
  188. *
  189. 16 if(lnomid(9).ne.0) then
  190. nomid1=lnomid(9)
  191. segini,nomid=nomid1
  192. nbrobl=lesobl(/2)
  193. nbrfac=lesfac(/2)
  194. mocomp=nomid
  195. else
  196. CALL IDPRIN(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC)
  197. nomid = mocomp
  198. segact nomid
  199. endif
  200. npri = nbrobl + nbrfac
  201. GOTO 120
  202. *
  203. 17 NBROBL=1
  204. NBRFAC=0
  205. SEGINI NOMID
  206. LESOBL(1)='MAHO'
  207. MOCOMP=NOMID
  208. nmah = 1
  209. GOTO 120
  210. *
  211. 18 NBROBL=1
  212. NBRFAC=0
  213. SEGINI NOMID
  214. LESOBL(1)='MAHT'
  215. MOCOMP=NOMID
  216. nhot = 1
  217. GOTO 120
  218. *
  219. 20 if(lnomid(10).ne.0) then
  220. nomid1=lnomid(10)
  221. segini,nomid=nomid1
  222. nbrobl=lesobl(/2)
  223. nbrfac=lesfac(/2)
  224. mocomp=nomid
  225. else
  226. CALL IDVARI(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC)
  227. nomid = mocomp
  228. if(nomid.ne.0) then
  229. segact nomid
  230. else
  231. segini nomid
  232. mocomp = nomid
  233. endif
  234. endif
  235. nvari = nbrobl + nbrfac
  236.  
  237. C Dans le cas ou il n'existe pas de variables internes, on
  238. C declare artificiellement une variable bidon afin de creer
  239. C des objets de travail permettant de respecter les interfaces
  240. C des routines auxquelles les variables internes peuvent etre
  241. C transmises
  242. C L'absence de variables internes est possible en particulier
  243. C pour une loi 'NON_LINEAIRE' 'UTILISATEUR', il faut alors
  244. C respecter l'interface de la routine UMAT
  245. C
  246. if (inatuu.lt.0) then
  247. IF (NVARI.EQ.0) THEN
  248. NBROBL=1
  249. NBRFAC=0
  250. SEGADJ,NOMID
  251. LESOBL(1)='VARI'
  252. MOCOMP=NOMID
  253. nvari = 1
  254. ENDIF
  255. endif
  256. GOTO 120
  257. *
  258. 21 if(lnomid(11).ne.0) then
  259. nomid1=lnomid(11)
  260. segini,nomid=nomid1
  261. nbrobl=lesobl(/2)
  262. nbrfac=lesfac(/2)
  263. mocomp=nomid
  264. else
  265. CALL IDGRAF(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC)
  266. nomid = mocomp
  267. segact nomid
  268. endif
  269. ngrf = nbrobl + nbrfac
  270. GOTO 120
  271. *
  272. 23 if(lnomid(12).ne.0) then
  273. nomid1=lnomid(12)
  274. segini,nomid=nomid1
  275. nbrobl=lesobl(/2)
  276. nbrfac=lesfac(/2)
  277. mocomp=nomid
  278. else
  279. CALL IDPHAS(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC)
  280. nomid = mocomp
  281. segact nomid
  282. endif
  283. nrhi = nbrobl + nbrfac
  284. GOTO 120
  285. *
  286. 24 if(lnomid(13).ne.0) then
  287. nomid1=lnomid(13)
  288. segini,nomid=nomid1
  289. nbrobl=lesobl(/2)
  290. nbrfac=lesfac(/2)
  291. mocomp=nomid
  292. else
  293. CALL IDDEIN(iqmod,IFOUR,MOCOMP,NBROBL,NBRFAC)
  294. nomid = mocomp
  295. segact nomid
  296. endif
  297. ndein = nbrobl + nbrfac
  298. GOTO 120
  299. *
  300. 25 CALL IDPAEX(iqmod,MOCOMP,NBROBL,NBRFAC)
  301. nomid=mocomp
  302. segact,nomid
  303. nparex = nbrobl + nbrfac
  304. C
  305. C Dans le cas ou il n'existe de pas de parametres externes du
  306. C modele, on declare artificiellement un parametre bidon afin
  307. C de creer des objets de travail permettant de respecter les
  308. C interfaces des routines auxquelles de tels parametres peuvent
  309. C etre transmis (en particulier la routine UMAT)
  310. C
  311. IF (NPAREX.EQ.0) THEN
  312. NBROBL=1
  313. NBRFAC=0
  314. SEGADJ,NOMID
  315. LESOBL(1)='PAEX'
  316. nparex = 1
  317. ENDIF
  318. GOTO 120
  319. *
  320. 120 CONTINUE
  321. mran = INDESO
  322. mobl = nbrobl
  323. mfac = nbrfac
  324. segini pilnec
  325. liluc(ijluc,2) = pilnec
  326. liluc(ijluc,1) = mocomp
  327. *
  328.  
  329. *** segdes pilnec*mod
  330. enddo
  331.  
  332. ipil = liluc
  333. c*
  334. nexo = 0
  335. segini WRK52,wrk522
  336. iwrk52 = wrk52
  337. iwr522 = wrk522
  338. c
  339. RETURN
  340. END
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  

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