Télécharger comou2.eso

Retour à la liste

Numérotation des lignes :

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

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