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

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