Télécharger comou2.eso

Retour à la liste

Numérotation des lignes :

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

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