Télécharger comou2.eso

Retour à la liste

Numérotation des lignes :

  1. C COMOU2 SOURCE CB215821 19/08/20 21:16:10 10287
  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. DO ijluc = 1, iiluc
  29. *
  30. * AIGUILLAGE SUIVANT MOT CLE
  31. *
  32. mocomp = 0
  33. GOTO ( 1, 2, 99, 99, 99, 6, 7,99,99,10,11,12,13,14,15,16,17,18,
  34. 1 99,20,21,99,23,24,25) ijluc
  35. *
  36. 99 CONTINUE
  37. c pas de composantes pour ce champ
  38. if(lnomid(15).ne.0) then
  39. nomid =lnomid(15)
  40. nbrobl=lesobl(/2)
  41. nbrfac=lesfac(/2)
  42. mocomp=nomid
  43. else
  44. NBROBL=0
  45. NBRFAC=0
  46. SEGINI NOMID
  47. MOCOMP=NOMID
  48. endif
  49. GOTO 120
  50.  
  51. C COMPOSANTE 'SCAL'
  52. 1 CONTINUE
  53. ITAIL=lnomid(/1)
  54. if(lnomid(16).ne.0) then
  55. nomid =lnomid(16)
  56. nbrobl=lesobl(/2)
  57. nbrfac=lesfac(/2)
  58. mocomp=nomid
  59. else
  60. NBROBL=1
  61. NBRFAC=0
  62. SEGINI NOMID
  63. MOCOMP=NOMID
  64. LESOBL(1)='SCAL'
  65. endif
  66. nsca = 1
  67. GOTO 120
  68.  
  69. C COMPOSANTE 'TEMP'
  70. 2 if(lnomid(17).ne.0) then
  71. nomid =lnomid(17)
  72. nbrobl=lesobl(/2)
  73. nbrfac=lesfac(/2)
  74. mocomp=nomid
  75. else
  76. NBROBL=1
  77. NBRFAC=0
  78. SEGINI NOMID
  79. MOCOMP=NOMID
  80. LESOBL(1)='TEMP'
  81. endif
  82. ntem = 1
  83. GOTO 120
  84. *
  85. 6 if(lnomid(1).ne.0) then
  86. nomid =lnomid(1)
  87. nbrobl=lesobl(/2)
  88. nbrfac=lesfac(/2)
  89. mocomp=nomid
  90. else
  91. CALL IDPRIM(IMODEL,MFR2,MOCOMP,NBROBL,NBRFAC)
  92. nomid = mocomp
  93. segact nomid
  94. endif
  95. ndep = nbrobl + nbrfac
  96. GOTO 120
  97. *
  98. 7 if(lnomid(2).ne.0) then
  99. nomid =lnomid(2)
  100. nbrobl=lesobl(/2)
  101. nbrfac=lesfac(/2)
  102. mocomp=nomid
  103. else
  104. CALL IDDUAL(IMODEL,MFR2,MOCOMP,NBROBL,NBRFAC)
  105. nomid = mocomp
  106. segact nomid
  107. endif
  108. nfor = nbrobl + nbrfac
  109. GOTO 120
  110. *
  111. 10 if(lnomid(3).ne.0) then
  112. nomid =lnomid(3)
  113. nbrobl=lesobl(/2)
  114. nbrfac=lesfac(/2)
  115. mocomp=nomid
  116. else
  117. CALL IDGRAD(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC)
  118. nomid = mocomp
  119. segact nomid
  120. endif
  121. ngra = nbrobl + nbrfac
  122. GOTO 120
  123. *
  124. 11 if(lnomid(4).ne.0) then
  125. nomid =lnomid(4)
  126. nbrobl=lesobl(/2)
  127. nbrfac=lesfac(/2)
  128. mocomp=nomid
  129. else
  130. CALL IDCONT(iqmod,IFOUR,MOCOMP,NBROBL,NBRFAC)
  131. nomid = mocomp
  132. segact nomid
  133. endif
  134. nstrs = nbrobl + nbrfac
  135. GOTO 120
  136. *
  137. 12 if(lnomid(5).ne.0) then
  138. nomid =lnomid(5)
  139. nbrobl=lesobl(/2)
  140. nbrfac=lesfac(/2)
  141. mocomp=nomid
  142. else
  143. CALL IDDEFO(iqmod,IFOUR,MOCOMP,NBROBL,NBRFAC)
  144. nomid = mocomp
  145. segact nomid
  146. endif
  147. ndefo = nbrobl + nbrfac
  148. GOTO 120
  149. *
  150. 13 if(lnomid(6).ne.0) then
  151. nomid =lnomid(6)
  152. nbrobl=lesobl(/2)
  153. nbrfac=lesfac(/2)
  154. mocomp=nomid
  155. else
  156. CALL IDMATR(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC)
  157. nomid = mocomp
  158. segact nomid
  159. endif
  160. ncara = nbrobl + nbrfac
  161. NMATR = nbrobl
  162. if(inplas.eq.3) ncara=ncara+7
  163. GOTO 120
  164. *
  165. 14 inat = inplas
  166. if(lnomid(7).ne.0) then
  167. nomid =lnomid(7)
  168. nbrobl=lesobl(/2)
  169. nbrfac=lesfac(/2)
  170. mocomp=nomid
  171. else
  172. CALL IDCARB(MELE1,IFOUR,MOCOMP,NBROBL,NBRFAC)
  173. nomid = mocomp
  174. segact nomid
  175. endif
  176. ncarb = nbrobl + nbrfac
  177. NCARR = ncarb
  178. IF(MFR.EQ.15) ncarb=ncarb*2
  179. IF(MFR.EQ.7.OR.MFR.EQ.13)ncarb=ncarb+IDIM
  180. NUCAR = ncarb
  181. NCARF = nbrfac
  182. GOTO 120
  183. *
  184. 15 if(lnomid(8).ne.0) then
  185. nomid =lnomid(8)
  186. nbrobl=lesobl(/2)
  187. nbrfac=lesfac(/2)
  188. mocomp=nomid
  189. else
  190. CALL IDTEMP(MFR2,IFOUR,NPINT3,MOCOMP,NBROBL,NBRFAC)
  191. nomid = mocomp
  192. segact nomid
  193. endif
  194. ntur = nbrobl + nbrfac
  195. GOTO 120
  196. *
  197. 16 if(lnomid(9).ne.0) then
  198. nomid =lnomid(9)
  199. nbrobl=lesobl(/2)
  200. nbrfac=lesfac(/2)
  201. mocomp=nomid
  202. else
  203. CALL IDPRIN(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC)
  204. nomid = mocomp
  205. segact nomid
  206. endif
  207. npri = nbrobl + nbrfac
  208. GOTO 120
  209. *
  210. C COMPOSANTE 'MAHO'
  211. 17 if(lnomid(18).ne.0) then
  212. nomid =lnomid(18)
  213. nbrobl=lesobl(/2)
  214. nbrfac=lesfac(/2)
  215. mocomp=nomid
  216. else
  217. NBROBL=1
  218. NBRFAC=0
  219. SEGINI NOMID
  220. LESOBL(1)='MAHO'
  221. MOCOMP=NOMID
  222. endif
  223. nmah = 1
  224. GOTO 120
  225. *
  226. C COMPOSANTE 'MAHT'
  227. 18 if(lnomid(19).ne.0) then
  228. nomid =lnomid(19)
  229. nbrobl=lesobl(/2)
  230. nbrfac=lesfac(/2)
  231. mocomp=nomid
  232. else
  233. NBROBL=1
  234. NBRFAC=0
  235. SEGINI NOMID
  236. LESOBL(1)='MAHT'
  237. MOCOMP=NOMID
  238. endif
  239. nhot = 1
  240. GOTO 120
  241. *
  242. 20 if(lnomid(10).ne.0) then
  243. nomid =lnomid(10)
  244. nbrobl=lesobl(/2)
  245. nbrfac=lesfac(/2)
  246. mocomp=nomid
  247. else
  248. CALL IDVARI(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC)
  249. nomid = mocomp
  250. if(nomid.ne.0) then
  251. segact nomid
  252. else
  253. segini nomid
  254. mocomp = nomid
  255. endif
  256. endif
  257. nvari = nbrobl + nbrfac
  258.  
  259. C Dans le cas ou il n'existe pas de variables internes, on
  260. C declare artificiellement une variable bidon afin de creer
  261. C des objets de travail permettant de respecter les interfaces
  262. C des routines auxquelles les variables internes peuvent etre
  263. C transmises
  264. C L'absence de variables internes est possible en particulier
  265. C pour une loi 'NON_LINEAIRE' 'UTILISATEUR', il faut alors
  266. C respecter l'interface de la routine UMAT
  267. C
  268. if (inatuu.lt.0) then
  269. IF (NVARI.EQ.0) THEN
  270. NBROBL=1
  271. NBRFAC=0
  272. SEGADJ,NOMID
  273. LESOBL(1)='VARI'
  274. MOCOMP=NOMID
  275. nvari = 1
  276. ENDIF
  277. endif
  278. GOTO 120
  279. *
  280. 21 if(lnomid(11).ne.0) then
  281. nomid =lnomid(11)
  282. nbrobl=lesobl(/2)
  283. nbrfac=lesfac(/2)
  284. mocomp=nomid
  285. else
  286. CALL IDGRAF(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC)
  287. nomid = mocomp
  288. segact nomid
  289. endif
  290. ngrf = nbrobl + nbrfac
  291. GOTO 120
  292. *
  293. 23 if(lnomid(12).ne.0) then
  294. nomid =lnomid(12)
  295. nbrobl=lesobl(/2)
  296. nbrfac=lesfac(/2)
  297. mocomp=nomid
  298. else
  299. CALL IDPHAS(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC)
  300. nomid = mocomp
  301. segact nomid
  302. endif
  303. nrhi = nbrobl + nbrfac
  304. GOTO 120
  305. *
  306. 24 if(lnomid(13).ne.0) then
  307. nomid =lnomid(13)
  308. nbrobl=lesobl(/2)
  309. nbrfac=lesfac(/2)
  310. mocomp=nomid
  311. else
  312. CALL IDDEIN(iqmod,IFOUR,MOCOMP,NBROBL,NBRFAC)
  313. nomid = mocomp
  314. segact nomid
  315. endif
  316. ndein = nbrobl + nbrfac
  317. GOTO 120
  318. *
  319. 25 if(lnomid(14).eq.0) then
  320. C On met la composante 'SCAL' pour des besoins dans UMAT (Avant c'etait 'PAEX')
  321. nomid =lnomid(16)
  322. if(nomid .eq. 0)then
  323. nbrobl=0
  324. nbrfac=0
  325. else
  326. nbrobl=lesobl(/2)
  327. nbrfac=lesfac(/2)
  328. endif
  329. mocomp=nomid
  330. else
  331. nomid =lnomid(14)
  332. nbrobl=lesobl(/2)
  333. nbrfac=lesfac(/2)
  334. mocomp=nomid
  335. nparex=nbrobl + nbrfac
  336.  
  337. if(nbrobl .eq. 0)then
  338. C On met la composante 'SCAL' pour des besoins dans UMAT (Avant c'etait 'PAEX')
  339. nomid =lnomid(16)
  340. nbrobl=lesobl(/2)
  341. nbrfac=lesfac(/2)
  342. mocomp=nomid
  343.  
  344. else
  345. C On verifie si la composante 'T ' est en 1ere position (fait par MODE)
  346. if(lesobl(1).EQ.'T ')then
  347. if(nbrobl .EQ. 1)then
  348. C On met la composante 'SCAL' pour des besoins dans UMAT (Avant c'etait 'PAEX')
  349. nomid =lnomid(16)
  350. nbrobl=lesobl(/2)
  351. nbrfac=lesfac(/2)
  352. mocomp=nomid
  353.  
  354. else
  355. C On retire la composante 'T '
  356. nbrobl=nbrobl-1
  357. segini,nomid1
  358. do iii=1,nbrobl
  359. nomid1.lesobl(iii)=lesobl(iii+1)
  360. enddo
  361. mocomp=nomid1
  362. endif
  363. endif
  364. endif
  365. endif
  366. nparex = nbrobl + nbrfac
  367. GOTO 120
  368. *
  369. 120 CONTINUE
  370. liluc(ijluc,1) = mocomp
  371. enddo
  372.  
  373. mran = INDESO
  374. DO ijluc = 1, iiluc
  375. nomid =liluc(ijluc,1)
  376. if(nomid .eq. 0)then
  377. mobl =0
  378. mfac =0
  379. else
  380. mobl =lesobl(/2)
  381. mfac =lesfac(/2)
  382. endif
  383. segini pilnec
  384. liluc(ijluc,2) = pilnec
  385. ENDDO
  386. ipil = liluc
  387. nexo = 0
  388. segini WRK52,wrk522
  389. iwrk52 = wrk52
  390. iwr522 = wrk522
  391. END
  392.  
  393.  
  394.  

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