Télécharger comou2.eso

Retour à la liste

Numérotation des lignes :

comou2
  1. C COMOU2 SOURCE MB234859 25/08/04 21:15:01 12339
  2.  
  3. SUBROUTINE COMOU2(IMODEL,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. -INC SMMODEL
  19. pointeur nomid1.nomid
  20. -INC DECHE
  21. *
  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. 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 CONTINUE
  73. if(lnomid(17).ne.0) then
  74. nomid =lnomid(17)
  75. nbrobl=lesobl(/2)
  76. nbrfac=lesfac(/2)
  77. mocomp=nomid
  78. else
  79. NBROBL=1
  80. NBRFAC=0
  81. SEGINI NOMID
  82. MOCOMP=NOMID
  83. LESOBL(1)='TEMP'
  84. endif
  85. ntem = 1
  86. GOTO 120
  87. C
  88. 6 CONTINUE
  89. CALL IDPRIM(IMODEL,MFR2,MOCOMP,NBROBL,NBRFAC)
  90. nomid = mocomp
  91. if (nomid.ne.0) segact nomid
  92. ndep = nbrobl + nbrfac
  93. GOTO 120
  94. C
  95. 7 CONTINUE
  96. CALL IDDUAL(IMODEL,MFR2,MOCOMP,NBROBL,NBRFAC)
  97. nomid = mocomp
  98. if (nomid.ne.0) segact nomid
  99. nfor = nbrobl + nbrfac
  100. GOTO 120
  101. C
  102. 10 CONTINUE
  103. CALL IDGRAD(IMODEL,IFOUR,MOCOMP,NBROBL,NBRFAC)
  104. nomid = mocomp
  105. if (nomid.ne.0) segact nomid
  106. ngra = nbrobl + nbrfac
  107. GOTO 120
  108. C
  109. 11 CONTINUE
  110. CALL IDCONT(IMODEL,IFOUR,MOCOMP,NBROBL,NBRFAC)
  111. nomid = mocomp
  112. if (nomid.ne.0) segact nomid
  113. nstrs = nbrobl + nbrfac
  114. GOTO 120
  115. C
  116. 12 CONTINUE
  117. CALL IDDEFO(IMODEL,IFOUR,MOCOMP,NBROBL,NBRFAC)
  118. nomid = mocomp
  119. if (nomid.ne.0) segact nomid
  120. ndefo = nbrobl + nbrfac
  121. GOTO 120
  122. C
  123. 13 CONTINUE
  124. if(lnomid(6).ne.0) then
  125. nomid =lnomid(6)
  126. nbrobl=lesobl(/2)
  127. nbrfac=lesfac(/2)
  128. mocomp=nomid
  129. C==DEB= FORMULATION HHO == Oubli des composantes STAB et **HO ==========
  130. IF (MFR2.EQ.HHO_MFR_ELEMENT) nbrobl = nbrobl - 4
  131. C==FIN= FORMULATION HHO ================================================
  132. else
  133. CALL IDMATR(MFR2,IMODEL,MOCOMP,NBROBL,NBRFAC)
  134. nomid = mocomp
  135. if (nomid.ne.0) segact nomid
  136. endif
  137. ncara = nbrobl + nbrfac
  138. NMATR = nbrobl
  139. if(inplas.eq.3) ncara=ncara+7
  140. NMATT = ncara
  141. NUMAT = NMATT
  142. GOTO 120
  143. C
  144. 14 CONTINUE
  145. CALL IDCARA(IMODEL,MFR2,MOCOMP,NBROBL,NBRFAC)
  146. nomid = mocomp
  147. if (nomid.ne.0) segact nomid
  148. ncarb = nbrobl + nbrfac
  149. NCARR = ncarb
  150. IF(MFR.EQ.15) ncarb=ncarb*2
  151. **pv IF(MFR.EQ.7.OR.MFR.EQ.13) ncarb=ncarb+IDIM
  152. **pv VX VY et VZ ont deja leurs places prevues
  153. IF(MFR.EQ.7.OR.MFR.EQ.13) ncarb=max(3,ncarb)
  154. NUCAR = ncarb
  155. NCARF = nbrfac
  156. GOTO 120
  157. C
  158. 15 CONTINUE
  159. CALL IDTEMP(IMODEL,IFOUR,MOCOMP,NBROBL,NBRFAC)
  160. nomid = mocomp
  161. if (nomid.ne.0) segact nomid
  162. ntur = nbrobl + nbrfac
  163. GOTO 120
  164. C
  165. 16 CONTINUE
  166. CALL IDPRIN(IMODEL,IFOUR,MOCOMP,NBROBL,NBRFAC)
  167. nomid = mocomp
  168. if (nomid.ne.0) segact nomid
  169. npri = nbrobl + nbrfac
  170. GOTO 120
  171. C
  172. C COMPOSANTE 'MAHO'
  173. 17 CONTINUE
  174. if(lnomid(18).ne.0) then
  175. nomid =lnomid(18)
  176. nbrobl=lesobl(/2)
  177. nbrfac=lesfac(/2)
  178. mocomp=nomid
  179. else
  180. NBROBL=1
  181. NBRFAC=0
  182. SEGINI NOMID
  183. LESOBL(1)='MAHO'
  184. MOCOMP=NOMID
  185. endif
  186. nmah = 1
  187. GOTO 120
  188. C
  189. C COMPOSANTE 'MAHT'
  190. 18 CONTINUE
  191. if(lnomid(19).ne.0) then
  192. nomid =lnomid(19)
  193. nbrobl=lesobl(/2)
  194. nbrfac=lesfac(/2)
  195. mocomp=nomid
  196. else
  197. NBROBL=1
  198. NBRFAC=0
  199. SEGINI NOMID
  200. LESOBL(1)='MAHT'
  201. MOCOMP=NOMID
  202. endif
  203. nhot = 1
  204. GOTO 120
  205. C
  206. 20 CONTINUE
  207. CALL IDVARI(MFR2,IMODEL,MOCOMP,NBROBL,NBRFAC)
  208. NOMID = MOCOMP
  209. if (nomid.ne.0) then
  210. segact nomid
  211. else
  212. segini nomid
  213. mocomp = nomid
  214. endif
  215. nvari = nbrobl + nbrfac
  216.  
  217. C Dans le cas ou il n'existe pas de variables internes, on
  218. C declare artificiellement une variable bidon afin de creer
  219. C des objets de travail permettant de respecter les interfaces
  220. C des routines auxquelles les variables internes peuvent etre
  221. C transmises
  222. C L'absence de variables internes est possible en particulier
  223. C pour une loi 'NON_LINEAIRE' 'UTILISATEUR', il faut alors
  224. C respecter l'interface de la routine UMAT
  225. C
  226. if (inatuu.lt.0) then
  227. IF (NVARI.EQ.0) THEN
  228. NBROBL=1
  229. NBRFAC=0
  230. SEGADJ,NOMID
  231. LESOBL(1)='VARI'
  232. MOCOMP=NOMID
  233. nvari = 1
  234. ENDIF
  235. endif
  236. NVART = nvari
  237. GOTO 120
  238. C
  239. 21 CONTINUE
  240. CALL IDGRAF(IMODEL,IFOUR,MOCOMP,NBROBL,NBRFAC)
  241. nomid = mocomp
  242. if (nomid.ne.0) segact nomid
  243. ngrf = nbrobl + nbrfac
  244. GOTO 120
  245. C
  246. 23 CONTINUE
  247. CALL IDPHAS(MFR2,IMODEL,MOCOMP,NBROBL,NBRFAC)
  248. nomid = mocomp
  249. if (nomid.ne.0) segact nomid
  250. nrhi = nbrobl + nbrfac
  251. GOTO 120
  252. C
  253. 24 CONTINUE
  254. CALL IDDEIN(IMODEL,IFOUR,MOCOMP,NBROBL,NBRFAC)
  255. nomid = mocomp
  256. if (nomid.ne.0) segact nomid
  257. ndein = nbrobl + nbrfac
  258. GOTO 120
  259. C
  260. 25 CONTINUE
  261. if(lnomid(14).eq.0) then
  262. C On met la composante 'SCAL' pour des besoins dans UMAT (Avant c'etait 'PAEX')
  263. nomid =lnomid(16)
  264. if(nomid .eq. 0)then
  265. nbrobl=0
  266. nbrfac=0
  267. else
  268. nbrobl=lesobl(/2)
  269. nbrfac=lesfac(/2)
  270. endif
  271. mocomp=nomid
  272. else
  273. nomid =lnomid(14)
  274. nbrobl=lesobl(/2)
  275. nbrfac=lesfac(/2)
  276. mocomp=nomid
  277. nparex=nbrobl + nbrfac
  278.  
  279. if(nbrobl .eq. 0)then
  280. C On met la composante 'SCAL' pour des besoins dans UMAT (Avant c'etait 'PAEX')
  281. nomid =lnomid(16)
  282. nbrobl=lesobl(/2)
  283. nbrfac=lesfac(/2)
  284. mocomp=nomid
  285.  
  286. else
  287. C On verifie si la composante 'T ' est en 1ere position (fait par MODE)
  288. if(lesobl(1).EQ.'T ')then
  289. if(nbrobl .EQ. 1)then
  290. C On met la composante 'SCAL' pour des besoins dans UMAT (Avant c'etait 'PAEX')
  291. nomid =lnomid(16)
  292. nbrobl=lesobl(/2)
  293. nbrfac=lesfac(/2)
  294. mocomp=nomid
  295.  
  296. else
  297. C On retire la composante 'T '
  298. nbrobl=nbrobl-1
  299. segini,nomid1
  300. do iii=1,nbrobl
  301. nomid1.lesobl(iii)=lesobl(iii+1)
  302. enddo
  303. mocomp=nomid1
  304. endif
  305. endif
  306. endif
  307. endif
  308. nparex = nbrobl + nbrfac
  309. GOTO 120
  310. C
  311. 120 CONTINUE
  312. liluc(ijluc,1) = mocomp
  313. enddo
  314.  
  315. mran = INDESO
  316. DO ijluc = 1, iiluc
  317. nomid =liluc(ijluc,1)
  318. if(nomid .eq. 0)then
  319. mobl =0
  320. mfac =0
  321. else
  322. mobl =lesobl(/2)
  323. mfac =lesfac(/2)
  324. endif
  325. segini pilnec
  326. liluc(ijluc,2) = pilnec
  327. ENDDO
  328. ipil = liluc
  329. nexo = 0
  330. segini WRK52,wrk522
  331. iwrk52 = wrk52
  332. iwr522 = wrk522
  333.  
  334. END
  335.  
  336.  

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