Télécharger inomid.eso

Retour à la liste

Numérotation des lignes :

inomid
  1. C INOMID SOURCE MB234859 25/08/04 21:15:29 12339
  2. C----------------------------------------------------------------------
  3. C
  4. C Renseigne pour un modele elementaire les noms de composantes utiles
  5. C
  6. C En entree
  7. C - iqmod est un pointeur sur un segment imodel de l'objet modele,
  8. C il est suppose actif
  9. C - l_vari,l_mato, l_matf et l_paex sont des listmots pour les
  10. C variables internes, materiaux, parametres externes,
  11. C s'ils ont ete definis (<= 0 sinon).
  12. C Ces arguments ne doivent absolument pas a etre modifies ici !
  13. C
  14. C Attention : une modele de mecanique ne peut creer de composantes thermiques
  15. C ou phases metallurgiques !
  16. C
  17. C Remarque :
  18. C IFOUR HYPOTHESE DE MODELISATION
  19. C
  20. C -3 | Bidimensionnel PLAN GENE
  21. C -2 | Bidimensionnel PLAN CP
  22. C -1 | Bidimensionnel PLAN DP
  23. C 0 | Axisymetrique
  24. C 1 | Fourier
  25. C 2 | Tridimensionnel
  26. C 3 a 15 | Unidimensionnel
  27. C----------------------------------------------------------------------
  28. C
  29. SUBROUTINE INOMID(iqmod,l_vari,l_mato,l_matf,l_paex)
  30. C
  31. IMPLICIT INTEGER(I-N)
  32. IMPLICIT REAL*8(A-H,O-Z)
  33. C
  34. -INC PPARAM
  35. -INC CCOPTIO
  36. -INC SMMODEL
  37. pointeur nomid1.nomid
  38. -INC SMLMOTS
  39.  
  40. PARAMETER(NINC=13,NTYP=19)
  41. CHARACTER*4 lesinc(ninc),lesdua(ninc)
  42. CHARACTER*5 FMT1
  43.  
  44. EXTERNAL LONG
  45.  
  46. DATA lesinc/'UX','UY','UZ','RX','RY','RZ','UR','UT','RT',
  47. & 'LX','P','ALFA','BETA'/
  48. DATA lesdua/'FX','FY','FZ','MX','MY','MZ','FR','FT','MT',
  49. & 'FLX','FP','FALF','FBET'/
  50.  
  51. C modele metallurgie ajoute par T.L. en mai 2018
  52. C Donnees pour la metallurgie :
  53. parameter(NBMET=2)
  54. CHARACTER*4 TYPMET(NBMET),LEBLON(3),KOISTI(2)
  55. DATA TYPMET/'LEBL', 'KOIS'/
  56. DATA LEBLON/'PEQ ', 'TAU ', 'F '/
  57. DATA KOISTI/'MS ', 'KM '/
  58.  
  59. * Recopie locale des arguments d'entrees :
  60. * On suppose le sous-modele (iqmod) est actif
  61. imodel = iqmod
  62. luvari = l_vari
  63. lumato = l_mato
  64. lumatf = l_matf
  65. lupaex = l_paex
  66.  
  67. * Petit test normalement inutile :
  68. if (imodel.lnomid(/1).ne.ntyp) then
  69. write(ioimp,*) 'INOMID : Incoherence lnomid(/1) et ntyp'
  70. call erreur(5)
  71. return
  72. endif
  73.  
  74. * Analyse des formulations :
  75. NFOR = imodel.formod(/2)
  76. CALL PLACE(formod,NFOR,IMECA,'MECANIQUE ')
  77. CALL PLACE(formod,NFOR,IPORE,'POREUX ')
  78. CALL PLACE(formod,NFOR,ITHHY,'THERMOHYDRIQUE ')
  79. CALL PLACE(formod,NFOR,ITHER,'THERMIQUE ')
  80. CALL PLACE(formod,NFOR,IMAGN,'MAGNETODYNAMIQUE')
  81. CALL PLACE(formod,NFOR,IELEC,'ELECTROSTATIQUE ')
  82. CALL PLACE(formod,NFOR,IDIFF,'DIFFUSION ')
  83. CALL PLACE(formod,NFOR,ILIAI,'LIAISON ')
  84. CALL PLACE(formod,NFOR,ICONT,'CONTACT ')
  85. CALL PLACE(formod,NFOR,ICHGM,'CHARGEMENT ')
  86. CALL PLACE(formod,NFOR,IMETA,'METALLURGIE ')
  87. CALL PLACE(formod,NFOR,ICHPH,'CHANGEMENT_PHASE')
  88. CALL PLACE(formod,NFOR,INAST,'NAVIER_STOKES ')
  89. CALL PLACE(formod,NFOR,IMELA,'MELANGE ')
  90. CALL PLACE(formod,NFOR,ICNTR,'CONTRAINTE ')
  91.  
  92. if (iimpi.eq.1972) then
  93. write(ioimp,*) 'INOMID',NFOR,(FORMOD(i),i=1,NFOR)
  94. write(ioimp,*) ' ',matmod(/2),(MATMOD(i),i=1,matmod(/2))
  95. write(ioimp,*) ' ',cmatee,imatee,inatuu
  96. endif
  97.  
  98. c* Cas particuliers :
  99. IF (INAST.GT.0) THEN
  100. IF (IMODEL.CMATEE.NE.'NLIN ') RETURN
  101. ENDIF
  102.  
  103. * On passe en *mod pour remplir imodel.lnomid(.)
  104. SEGACT,IMODEL*MOD
  105.  
  106. nimcom = 0
  107. NMAT=MATMOD(/2)
  108. CALL PLACE(MATMOD,NMAT,IIMPE,'IMPEDANCE')
  109. CALL PLACE(MATMOD,NMAT,ISTAT,'STATIQUE')
  110. CALL PLACE(MATMOD,NMAT,IMODA,'MODAL')
  111. if (luvari.gt.0) then
  112. IF (IIMPE.NE.0) THEN
  113. mlmot5 = luvari
  114. luvari = 0
  115. mlmot6 = lumato
  116. lumato = 0
  117. segact mlmot5,mlmot6
  118. nimcom = mlmot5.mots(/2)
  119. nbrobl = nimcom
  120. nbrfac = nimcom
  121. segini nomid,nomid1
  122. do inim = 1,nimcom
  123. CALL PLACE(lesinc,ninc,IMOT,mlmot5.mots(inim))
  124. if (imot.eq.0) call erreur(26)
  125. lesobl(inim) = mlmot5.mots(inim)
  126. nomid1.lesobl(inim) = lesdua(imot)
  127. CALL PLACE(lesinc,ninc,IMOT,mlmot6.mots(inim))
  128. if (imot.eq.0) call erreur(26)
  129. lesfac(inim) = mlmot6.mots(inim)
  130. nomid1.lesfac(inim) = lesdua(imot)
  131. enddo
  132. endif
  133. endif
  134. if (ierr.ne.0) return
  135. C
  136. C Formulation GENERALE
  137. MELE=NEFMOD
  138. MFR2=NUMMFR(MELE)
  139. IF (ISTAT.NE.0.OR.IMODA.NE.0) MFR2 = INFELE(13)
  140. C
  141. c write(6,*) 'inomid formod',(formod(im),im=1,nfor)
  142. c write(6,*) ' mele MFR2 ',mele,mfr2,imela
  143. c write(6,*) ' ',imeta,luvari,lumato,lumatf,lupaex
  144. C---------------------------------------------------------------------*
  145. C Boucle sur les differents types de composantes *
  146. C---------------------------------------------------------------------*
  147. DO ino = 1,ntyp
  148.  
  149. MOCOMP=0
  150. C
  151. C AIGUILLAGE SUIVANT MOT CLE
  152. GOTO (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19) ino
  153. C ===============================================================
  154. C Composantes PRIMALES (DEPLACEMENT en MECANIQUE, etc...)
  155. C ===============================================================
  156. 1 CONTINUE
  157. IF (IIMPE.NE.0.AND.NIMCOM.GT.0) THEN
  158. MOCOMP=NOMID
  159. ELSE
  160. CALL IDPRIM(IMODEL,MFR2,MOCOMP,NOBL,NFAC)
  161. ENDIF
  162. GOTO 120
  163. C ===============================================================
  164. C Composantes DUALES (FORCES en MECANIQUE, etc...)
  165. C ===============================================================
  166. 2 CONTINUE
  167. IF (IIMPE.NE.0.AND.NIMCOM.GT.0) THEN
  168. MOCOMP=NOMID1
  169. ELSE
  170. CALL IDDUAL(IMODEL,MFR2,MOCOMP,NOBL,NFAC)
  171. ENDIF
  172. GOTO 120
  173. C ===============================================================
  174. C Composantes GRADIENTS des grandeurs PRIMALES
  175. C ===============================================================
  176. 3 CONTINUE
  177. CALL IDGRAD(IMODEL,IFOUR,MOCOMP,NOBL,NFAC)
  178. GOTO 120
  179. C ===============================================================
  180. C Composantes des CONTRAINTES
  181. C ===============================================================
  182. 4 CONTINUE
  183. CALL IDCONT(IMODEL,IFOUR,MOCOMP,NOBL,NFAC)
  184. IF (IIMPE.NE.0.AND.NIMCOM.GT.0) THEN
  185. NBROBL = NIMCOM
  186. NBRFAC = NFAC
  187. NOMID = MOCOMP
  188. SEGADJ NOMID
  189. ENDIF
  190. GOTO 120
  191. C ===============================================================
  192. C Composantes des DEFORMATIONS
  193. C ===============================================================
  194. 5 CONTINUE
  195. CALL IDDEFO(IMODEL,IFOUR,MOCOMP,NOBL,NFAC)
  196. IF (IIMPE.NE.0.AND.NIMCOM.GT.0) THEN
  197. NBROBL = NIMCOM
  198. NBRFAC = NFAC
  199. NOMID = MOCOMP
  200. SEGADJ NOMID
  201. ENDIF
  202. GOTO 120
  203. C ===============================================================
  204. C Composantes MATERIAU
  205. C ===============================================================
  206. 6 CONTINUE
  207. IF (LUMATO.LE.0) THEN
  208. CALL IDMATR(MFR2,IMODEL,MOCOMP,NOBL,NFAC)
  209. ELSE
  210. C Cas de la metallurgie
  211. if( IMETA .gt. 0 ) then
  212. mlmot5 = lumato
  213. lumato = 0
  214. segact mlmot5
  215. nimcom = mlmot5.mots(/2)
  216. C On a au plus (Nb_modele*3) vars internes materiaux obl
  217. nbrobl = nimcom*3
  218. nbrfac = 0
  219. segini nomid
  220. i_obl = 0
  221. if(nimcom .GE. 1 .AND. nimcom .LT. 10 )then
  222. FMT1 = '(I1)'
  223. else
  224. INTERR(1)=nimcom
  225. INTERR(2)=10
  226. CALL ERREUR(1076)
  227. RETURN
  228. endif
  229.  
  230. do inim = 1,nimcom
  231. CALL PLACE(TYPMET,NBMET,IMOT,mlmot5.mots(inim))
  232. i_obl = i_obl + 1
  233. if (IMOT.eq.0) then
  234. MOTERR=mlmot5.mots(inim)
  235. CALL erreur(1082)
  236. RETURN
  237. else if( imot .eq. 1) then
  238. C la formulation est LEBLOND
  239. LESOBL(i_obl) = LEBLON(1)
  240. WRITE(LESOBL(i_obl )(4:4), fmt=FMT1) inim
  241. LESOBL(i_obl+1) = LEBLON(2)
  242. WRITE(LESOBL(i_obl+1)(4:4), fmt=FMT1) inim
  243. LESOBL(i_obl+2) = LEBLON(3)
  244. WRITE(LESOBL(i_obl+2)(2:2), fmt=FMT1) inim
  245. i_obl = i_obl + 2
  246. else if( imot .eq. 2) then
  247. C la formulation est KOISTINEN
  248. LESOBL(i_obl) = KOISTI(1)
  249. WRITE(LESOBL(i_obl )(3:3), fmt=FMT1) inim
  250. LESOBL(i_obl+1) = KOISTI(2)
  251. WRITE(LESOBL(i_obl+1)(3:3), fmt=FMT1) inim
  252. i_obl = i_obl + 1
  253. endif
  254. enddo
  255. C on ajuste la taille du tableau LESOBL(nbrobl)
  256. nbrobl = i_obl
  257. segadj nomid
  258. segact,nomid*NOMOD
  259. mocomp=nomid
  260. else if( IMETA .eq. 0 ) then
  261. mlmots=lumato
  262. segact MLMOTS
  263. nbrobl=mots(/2)
  264. nbrfac=0
  265. IF (lumatf.GT.0) THEN
  266. mlmot1=lumatf
  267. segact mlmot1
  268. nbrfac=mlmot1.mots(/2)
  269. ENDIF
  270. SEGINI,nomid
  271. DO im=1,nbrobl
  272. lesobl(im)=mots(im)
  273. enddo
  274. if(lumatf.gt.0) then
  275. do im=1,nbrfac
  276. lesfac(im)=mlmot1.mots(im)
  277. enddo
  278. endif
  279. mocomp=nomid
  280. endif
  281. ENDIF
  282.  
  283. C== FORMULATION HHO == Ajout de composantes specifiques ================
  284. CALL HHOIDC(imodel,mocomp)
  285. C== FORMULATION HHO ====================================================
  286. GOTO 120
  287. C ===============================================================
  288. C Composantes des CARACTERISTIQUES GEOMETRIQUES
  289. C ===============================================================
  290. 7 CONTINUE
  291. CALL IDCARA(IMODEL,MFR2,MOCOMP,NOBL,NFAC)
  292. GOTO 120
  293. C ===============================================================
  294. C Composantes de TEMPERATURE
  295. C ===============================================================
  296. 8 CONTINUE
  297. CALL IDTEMP(IMODEL,IFOUR,MOCOMP,NOBL,NFAC)
  298. GOTO 120
  299. C ===============================================================
  300. C Composantes des CONTRAINTES PRINCIPALES
  301. C ===============================================================
  302. 9 CONTINUE
  303. CALL IDPRIN(IMODEL,IFOUR,MOCOMP,NOBL,NFAC)
  304. GOTO 120
  305. C ===============================================================
  306. C Composantes des VARIABLES INTERNES
  307. C ===============================================================
  308. 10 CONTINUE
  309. CALL IDVARI(MFR2,IMODEL,MOCOMP,NOBL,NFAC)
  310. IF (LUVARI.NE.0) THEN
  311. MLMOTS=LUVARI
  312. SEGACT MLMOTS
  313. IF (MOCOMP.GT.0) THEN
  314. NOMID=MOCOMP
  315. SEGACT NOMID*MOD
  316. NDEJ=LESOBL(/2)
  317. IF(NDEJ.EQ.1) NDEJ=0
  318. NBROBL=MOTS(/2)+NDEJ
  319. NBRFAC=0
  320. ISTA=NDEJ+1
  321. SEGADJ NOMID
  322. IAU=1
  323. DO IM=ISTA,NBROBL
  324. LESOBL(IM)=MOTS(IAU)
  325. IAU=IAU+1
  326. ENDDO
  327. ELSE
  328. NBROBL=MOTS(/2)
  329. NBRFAC=0
  330. SEGINI NOMID
  331. DO IM=1,NBROBL
  332. LESOBL(IM)=MOTS(IM)
  333. ENDDO
  334. MOCOMP=NOMID
  335. ENDIF
  336. ENDIF
  337. GOTO 120
  338. C ===============================================================
  339. C Composantes des GRADIENTS DE FLEXION
  340. C ===============================================================
  341. 11 CONTINUE
  342. CALL IDGRAF(IMODEL,IFOUR,MOCOMP,NOBL,NFAC)
  343. GOTO 120
  344. C ===============================================================
  345. C Composantes des PHASES (MELANGE)
  346. C ===============================================================
  347. 12 CONTINUE
  348. CALL IDPHAS(MFR2,IMODEL,MOCOMP,NOBL,NFAC)
  349. GOTO 120
  350. C ===============================================================
  351. C Composantes des DEFORMATIONS INELASTIQUES
  352. C ===============================================================
  353. 13 CONTINUE
  354. CALL IDDEIN(IMODEL,IFOUR,MOCOMP,NOBL,NFAC)
  355. GOTO 120
  356. C ===============================================================
  357. C Composantes des PARAMETRES EXTERNES (LISTMOTS)
  358. C ===============================================================
  359. 14 CONTINUE
  360. IF (LUPAEX.GT.0) THEN
  361. MLMOTS=LUPAEX
  362. SEGACT MLMOTS
  363. NBROBL=MOTS(/2)
  364. NBRFAC=0
  365. SEGINI NOMID
  366. DO IM=1,NBROBL
  367. LESOBL(IM)=MOTS(IM)
  368. ENDDO
  369. MOCOMP=NOMID
  370. ENDIF
  371. GOTO 120
  372. C ===============================================================
  373. C Composantes VIDE (pour COMP)
  374. C ===============================================================
  375. 15 CONTINUE
  376. IF (INAST.GT.0) THEN
  377. NBROBL = 3
  378. NBRFAC = 0
  379. SEGINI NOMID
  380. LESOBL(1) = 'FLX1'
  381. LESOBL(2) = 'FLX2'
  382. LESOBL(3) = 'FLX3'
  383. MOCOMP = NOMID
  384. ENDIF
  385. GOTO 120
  386. C ===============================================================
  387. C Composantes 'SCAL' (pour COMP)
  388. C ===============================================================
  389. 16 CONTINUE
  390. IF (IMECA.GT.0.OR.ILIAI.GT.0.OR.IPORE.GT.0) THEN
  391. NBROBL=1
  392. NBRFAC=0
  393. SEGINI NOMID
  394. LESOBL(1)='SCAL'
  395. MOCOMP=NOMID
  396. ELSEIF (INAST.GT.0) THEN
  397. NBROBL = 3
  398. NBRFAC = 0
  399. SEGINI NOMID
  400. LESOBL(1) = 'LX1'
  401. LESOBL(2) = 'LX2'
  402. LESOBL(3) = 'LX3'
  403. MOCOMP = NOMID
  404. ENDIF
  405. GOTO 120
  406. C ===============================================================
  407. C Composantes 'TEMP' (pour COMP)
  408. C ===============================================================
  409. 17 CONTINUE
  410. IF (ICNTR.EQ.0.AND.ICHPH.EQ.0) THEN
  411. NBROBL=1
  412. NBRFAC=0
  413. SEGINI NOMID
  414. LESOBL(1)='TEMP'
  415. MOCOMP=NOMID
  416. ENDIF
  417. GOTO 120
  418. C ===============================================================
  419. C Composantes 'MAHO' (pour COMP)
  420. C ===============================================================
  421. 18 CONTINUE
  422. IF (IMECA.GT.0.AND.IMATEE.LE.3) THEN
  423. NBROBL=1
  424. NBRFAC=0
  425. SEGINI NOMID
  426. LESOBL(1)='MAHO'
  427. MOCOMP=NOMID
  428. ENDIF
  429. GOTO 120
  430. C ===============================================================
  431. C Composantes 'MAHT' (pour COMP)
  432. C ===============================================================
  433. 19 CONTINUE
  434. IF (IMECA.GT.0.AND.IMATEE.LE.3) THEN
  435. NBROBL=1
  436. NBRFAC=0
  437. SEGINI NOMID
  438. LESOBL(1)='MAHT'
  439. MOCOMP=NOMID
  440. ENDIF
  441. GOTO 120
  442. C ===============================================================
  443. 120 CONTINUE
  444. C
  445. NOMID = MOCOMP
  446. IMODEL.LNOMID(INO) = MOCOMP
  447.  
  448. ENDDO
  449. C---------------------------------------------------------------------*
  450. END
  451.  
  452.  

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