Télécharger comou2.eso

Retour à la liste

Numérotation des lignes :

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

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