Télécharger idprim.eso

Retour à la liste

Numérotation des lignes :

idprim
  1. C IDPRIM SOURCE MB234859 25/08/04 21:15:20 12339
  2. C=======================================================================
  3. C= DEFINITION DES NOMS DE COMPOSANTES PRIMALES =
  4. C= ------------------------------------------- =
  5. C= =
  6. C= Entrees : =
  7. C= IPMODE Pointeur sur un MMODEL.KMODEL =
  8. C= MFR0 Numero de Formulation =
  9. C= - Sert seulement si different de celui calcule avec IMODEL =
  10. C= =
  11. C= Sorties : =
  12. C= IPNOMC pointeur de type NOMID sur les listes de noms de =
  13. C= composantes OBLigatoires et FACultatives =
  14. C= NBROBL Nombre de composantes OBLIGATOIRES =
  15. C= NBRFAC Nombre de composantes FACULTATIVES =
  16. C= =
  17. C= Remarque : Voir INOMID ou CCOPTIO pour signification IFOUR =
  18. C=======================================================================
  19. C
  20. SUBROUTINE IDPRIM(IPMODE,MFR0,IPNOMC,NBROBL,NBRFAC)
  21. C
  22. IMPLICIT INTEGER(I-N)
  23. IMPLICIT REAL*8(A-H,O-Z)
  24. C
  25. -INC PPARAM
  26. -INC CCOPTIO
  27. C==DEB= FORMULATION HHO == Include specifique ==========================
  28. -INC CCHHOPA
  29. C==FIN= FORMULATION HHO ================================================
  30. -INC SMMODEL
  31. -INC SMLMOTS
  32. C
  33. CHARACTER*(LOCOMP) CCOMP
  34. EXTERNAL LONG
  35. C
  36. NBROBL=0
  37. NBRFAC=0
  38. C
  39. IMODEL=IPMODE
  40. MELE =IMODEL.NEFMOD
  41. MFR =NUMMFR(MELE)
  42. NOMID =IMODEL.LNOMID(1)
  43. C
  44. C Ne pas recreer le NOMID si deja present
  45. IF(NOMID.NE.0 .AND. (MFR.EQ.MFR0))THEN
  46. NBROBL=LESOBL(/2)
  47. NBRFAC=LESFAC(/2)
  48. IPNOMC=NOMID
  49. RETURN
  50. ENDIF
  51. C
  52. MFR =MFR0
  53. MFR2=NUMFOR(IMODEL)
  54. *
  55. * MACRO ELEMENT
  56. *
  57. IF (MFR.EQ.61)THEN
  58. IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2) THEN
  59. NBROBL=5
  60. SEGINI,NOMID
  61. LESOBL(1)='UX '
  62. LESOBL(2)='UY '
  63. LESOBL(3)='RZ '
  64. LESOBL(4)='UM '
  65. LESOBL(5)='RM '
  66. ENDIF
  67. C =================================================================
  68. C FORMULATION THERMOHYDRIQUE
  69. C =================================================================
  70. ELSE IF (MFR2.EQ.65) THEN
  71. NBROBL=3
  72. SEGINI,NOMID
  73. LESOBL(1)='PG '
  74. LESOBL(2)='PC '
  75. LESOBL(3)='T '
  76. C =================================================================
  77. C FORMULATION MECANIQUE/CHARGEMENT/LIAISON/MELANGE/NAVIER_STOKES
  78. C =================================================================
  79. ELSE IF (MFR2.EQ.2.OR.MFR2.EQ.72.OR.MFR2.EQ.24.OR.MFR2.EQ.38
  80. & .OR. MFR2.EQ.52) THEN
  81. C
  82. C Cas particuliers
  83. C ================
  84. IF (MFR.EQ.26) THEN
  85. NBROBL=1
  86. SEGINI,NOMID
  87. LESOBL(1)='ALFA'
  88. ELSE IF (MFR.EQ.28) THEN
  89. NBROBL=1
  90. SEGINI,NOMID
  91. LESOBL(1)='BETA'
  92. C
  93. C Elements MASSIFS, MEMBRANE, UNIAXIALE
  94. C =====================================
  95. ELSE IF (MFR.EQ.1 .OR. MFR.EQ.25 .OR. MFR.EQ.27 .OR. MFR.EQ.31
  96. & .OR. MFR.EQ.52) THEN
  97. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  98. NBROBL=2
  99. SEGINI,NOMID
  100. LESOBL(1)='UX '
  101. LESOBL(2)='UY '
  102. ELSE IF (IFOUR.EQ.0) THEN
  103. NBROBL=2
  104. SEGINI,NOMID
  105. LESOBL(1)='UR '
  106. LESOBL(2)='UZ '
  107. ELSE IF (IFOUR.EQ.1) THEN
  108. NBROBL=3
  109. SEGINI,NOMID
  110. LESOBL(1)='UR '
  111. LESOBL(2)='UZ '
  112. LESOBL(3)='UT '
  113. ELSE IF (IFOUR.EQ.2) THEN
  114. NBROBL=3
  115. SEGINI,NOMID
  116. LESOBL(1)='UX '
  117. LESOBL(2)='UY '
  118. LESOBL(3)='UZ '
  119. ELSE IF (IFOUR.EQ.-3) THEN
  120. NBROBL=5
  121. SEGINI,NOMID
  122. LESOBL(1)='UX '
  123. LESOBL(2)='UY '
  124. LESOBL(3)='UZ '
  125. LESOBL(4)='RY '
  126. LESOBL(5)='RX '
  127. ELSE IF (IFOUR.GE.3.AND.IFOUR.LE.15.AND.MFR.EQ.1) THEN
  128. IF (IFOUR.LE.6) THEN
  129. NBROBL=1
  130. SEGINI,NOMID
  131. LESOBL(1)='UX '
  132. ELSE IF (IFOUR.EQ.7.OR.IFOUR.EQ.8) THEN
  133. NBROBL=2
  134. SEGINI,NOMID
  135. LESOBL(1)='UX '
  136. LESOBL(2)='UY '
  137. ELSE IF (IFOUR.EQ.9.OR.IFOUR.EQ.10) THEN
  138. NBROBL=2
  139. SEGINI,NOMID
  140. LESOBL(1)='UX '
  141. LESOBL(2)='UZ '
  142. ELSE IF (IFOUR.EQ.11) THEN
  143. NBROBL=3
  144. SEGINI,NOMID
  145. LESOBL(1)='UX '
  146. LESOBL(2)='UY '
  147. LESOBL(3)='UZ '
  148. ELSE IF (IFOUR.EQ.12.OR.IFOUR.EQ.13.OR.IFOUR.EQ.15) THEN
  149. NBROBL=1
  150. SEGINI,NOMID
  151. LESOBL(1)='UR '
  152. ELSE IF (IFOUR.EQ.14) THEN
  153. NBROBL=2
  154. SEGINI,NOMID
  155. LESOBL(1)='UR '
  156. LESOBL(2)='UZ '
  157. ENDIF
  158. ENDIF
  159. C
  160. C Elements COQUE/POUTRE/TUYAU
  161. C ===========================
  162. ELSE IF (MFR.EQ.3 .OR. MFR.EQ.5 .OR. MFR.EQ.7 .OR. MFR.EQ.9
  163. & .OR. MFR.EQ.13 .OR. MFR.EQ.15.OR. MFR.EQ.17 .OR. MFR.EQ.49
  164. & .OR. MFR.EQ.51 .OR. MFR.EQ.75) THEN
  165. IF (IFOUR.EQ.2) THEN
  166. NBROBL=6
  167. SEGINI,NOMID
  168. LESOBL(1)='UX '
  169. LESOBL(2)='UY '
  170. LESOBL(3)='UZ '
  171. LESOBL(4)='RX '
  172. LESOBL(5)='RY '
  173. LESOBL(6)='RZ '
  174. ELSE IF (IFOUR.EQ.1) THEN
  175. NBROBL=4
  176. SEGINI,NOMID
  177. LESOBL(1)='UR '
  178. LESOBL(2)='UZ '
  179. LESOBL(3)='UT '
  180. LESOBL(4)='RT '
  181. ELSE IF (IFOUR.EQ.0) THEN
  182. NBROBL=3
  183. SEGINI,NOMID
  184. LESOBL(1)='UR '
  185. LESOBL(2)='UZ '
  186. LESOBL(3)='RT '
  187. ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2) THEN
  188. NBROBL=3
  189. SEGINI,NOMID
  190. LESOBL(1)='UX '
  191. LESOBL(2)='UY '
  192. LESOBL(3)='RZ '
  193. ELSE IF (IFOUR.EQ.-3) THEN
  194. IF (MFR.EQ.3 .OR. MFR.EQ.5) THEN
  195. NBROBL=6
  196. SEGINI,NOMID
  197. LESOBL(1)='UX '
  198. LESOBL(2)='UY '
  199. LESOBL(3)='RZ '
  200. LESOBL(4)='UZ '
  201. LESOBL(5)='RY '
  202. LESOBL(6)='RX '
  203. ELSE
  204. NBROBL=3
  205. SEGINI,NOMID
  206. LESOBL(1)='UX '
  207. LESOBL(2)='UY '
  208. LESOBL(3)='RZ '
  209. ENDIF
  210. ENDIF
  211. C
  212. C Element JOINT, JOINT CISAILLEMENT,JOINT GENERALISE, COS2
  213. C ===============================================================
  214. ELSE IF (MFR.EQ.35.OR.MFR.EQ.53.OR.MFR.EQ.55.OR.MFR.EQ.78) THEN
  215. IF (IFOUR.EQ.2) THEN
  216. NBROBL=3
  217. SEGINI,NOMID
  218. LESOBL(1)='UX '
  219. LESOBL(2)='UY '
  220. LESOBL(3)='UZ '
  221. ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2.OR.IFOUR.EQ.-3) THEN
  222. NBROBL=2
  223. SEGINI,NOMID
  224. LESOBL(1)='UX '
  225. LESOBL(2)='UY '
  226. ELSE IF (IFOUR.EQ.0) THEN
  227. NBROBL=2
  228. SEGINI,NOMID
  229. LESOBL(1)='UR '
  230. LESOBL(2)='UZ '
  231. ENDIF
  232. C
  233. C Elements HOMOGENEISE
  234. C =====================
  235. ELSE IF (MFR.EQ.37) THEN
  236. IF (IFOUR.EQ.1) THEN
  237. NBROBL=6
  238. SEGINI,NOMID
  239. LESOBL(1)='P '
  240. LESOBL(2)='PI '
  241. LESOBL(3)='UR '
  242. LESOBL(4)='RT '
  243. LESOBL(5)='UT '
  244. LESOBL(6)='RR '
  245. ELSE IF (IFOUR.EQ.0) THEN
  246. NBROBL=4
  247. SEGINI,NOMID
  248. LESOBL(1)='P '
  249. LESOBL(2)='PI '
  250. LESOBL(3)='UR '
  251. LESOBL(4)='RT '
  252. ELSE IF (IFOUR.EQ.2) THEN
  253. NBROBL=6
  254. SEGINI,NOMID
  255. LESOBL(1)='P '
  256. LESOBL(2)='PI '
  257. LESOBL(3)='UX '
  258. LESOBL(4)='RY '
  259. LESOBL(5)='UY '
  260. LESOBL(6)='RX '
  261. ELSE
  262. NBROBL=4
  263. SEGINI,NOMID
  264. LESOBL(1)='P '
  265. LESOBL(2)='PI '
  266. LESOBL(3)='UX '
  267. LESOBL(4)='UY '
  268. ENDIF
  269. C
  270. C Elements TUYO
  271. C =============
  272. ELSE IF (MFR.EQ.39) THEN
  273. NBROBL=6+9
  274. SEGINI,NOMID
  275. LESOBL(1)='UX '
  276. LESOBL(2)='UY '
  277. LESOBL(3)='UZ '
  278. LESOBL(4)='RX '
  279. LESOBL(5)='RY '
  280. LESOBL(6)='RZ '
  281. LESOBL(7)='W0 '
  282. LESOBL(8)='U1 '
  283. LESOBL(9)='U2 '
  284. LESOBL(10)='U3 '
  285. LESOBL(11)='U4 '
  286. LESOBL(12)='W1 '
  287. LESOBL(13)='W2 '
  288. LESOBL(14)='W3 '
  289. LESOBL(15)='W4 '
  290. C
  291. C Elements ZONE_COHESIVE
  292. C ======================
  293. ELSE IF (MFR.EQ.77) THEN
  294. C Element ZCO2 (xfem meca rupture en 2D)
  295. IF(IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  296. NBROBL=2
  297. NBRFAC=18
  298. SEGINI,NOMID
  299. LESOBL(1)='AX '
  300. LESOBL(2)='AY '
  301. LESFAC(1)='UX '
  302. LESFAC(2)='UY '
  303. LESFAC(3)='B1X '
  304. LESFAC(4)='B1Y '
  305. LESFAC(5)='C1X '
  306. LESFAC(6)='C1Y '
  307. LESFAC(7)='D1X '
  308. LESFAC(8)='D1Y '
  309. LESFAC(9)='E1X '
  310. LESFAC(10)='E1Y '
  311. LESFAC(11)='B2X '
  312. LESFAC(12)='B2Y '
  313. LESFAC(13)='C2X '
  314. LESFAC(14)='C2Y '
  315. LESFAC(15)='D2X '
  316. LESFAC(16)='D2Y '
  317. LESFAC(17)='E2X '
  318. LESFAC(18)='E2Y '
  319. C Elements ZCO3 et ZCO4 (xfem meca rupture en 3D)
  320. ELSE IF (IFOUR.EQ.2) THEN
  321. NBROBL=3
  322. NBRFAC=27
  323. SEGINI,NOMID
  324. LESOBL(1)='AX '
  325. LESOBL(2)='AY '
  326. LESOBL(3)='AZ '
  327. LESFAC(1)='UX '
  328. LESFAC(2)='UY '
  329. LESFAC(3)='UZ '
  330. LESFAC(4)='B1X '
  331. LESFAC(5)='B1Y '
  332. LESFAC(6)='B1Z '
  333. LESFAC(7)='C1X '
  334. LESFAC(8)='C1Y '
  335. LESFAC(9)='C1Z '
  336. LESFAC(10)='D1X '
  337. LESFAC(11)='D1Y '
  338. LESFAC(12)='D1Z '
  339. LESFAC(13)='E1X '
  340. LESFAC(14)='E1Y '
  341. LESFAC(15)='E1Z '
  342. LESFAC(16)='B2X '
  343. LESFAC(17)='B2Y '
  344. LESFAC(18)='B2Z '
  345. LESFAC(19)='C2X '
  346. LESFAC(20)='C2Y '
  347. LESFAC(21)='C2Z '
  348. LESFAC(22)='D2X '
  349. LESFAC(23)='D2Y '
  350. LESFAC(24)='D2Z '
  351. LESFAC(25)='E2X '
  352. LESFAC(26)='E2Y '
  353. LESFAC(27)='E2Z '
  354. ENDIF
  355. C
  356. C Element XFEM
  357. C ============
  358. ELSE IF (MFR.EQ.63) THEN
  359. CTY Element XQ4R (xfem meca rupture en 2D)
  360. IF(IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  361. NBROBL=2
  362. NBRFAC=18
  363. SEGINI,NOMID
  364. LESOBL(1)='UX '
  365. LESOBL(2)='UY '
  366. LESFAC(1)='AX '
  367. LESFAC(2)='AY '
  368. LESFAC(3)='B1X '
  369. LESFAC(4)='B1Y '
  370. LESFAC(5)='C1X '
  371. LESFAC(6)='C1Y '
  372. LESFAC(7)='D1X '
  373. LESFAC(8)='D1Y '
  374. LESFAC(9)='E1X '
  375. LESFAC(10)='E1Y '
  376. LESFAC(11)='B2X '
  377. LESFAC(12)='B2Y '
  378. LESFAC(13)='C2X '
  379. LESFAC(14)='C2Y '
  380. LESFAC(15)='D2X '
  381. LESFAC(16)='D2Y '
  382. LESFAC(17)='E2X '
  383. LESFAC(18)='E2Y '
  384. CTY Element XC8R (xfem meca rupture en 3D)
  385. ELSE IF (IFOUR.EQ.2) THEN
  386. NBROBL=3
  387. NBRFAC=27
  388. SEGINI,NOMID
  389. LESOBL(1)='UX '
  390. LESOBL(2)='UY '
  391. LESOBL(3)='UZ '
  392. LESFAC(1)='AX '
  393. LESFAC(2)='AY '
  394. LESFAC(3)='AZ '
  395. LESFAC(4)='B1X '
  396. LESFAC(5)='B1Y '
  397. LESFAC(6)='B1Z '
  398. LESFAC(7)='C1X '
  399. LESFAC(8)='C1Y '
  400. LESFAC(9)='C1Z '
  401. LESFAC(10)='D1X '
  402. LESFAC(11)='D1Y '
  403. LESFAC(12)='D1Z '
  404. LESFAC(13)='E1X '
  405. LESFAC(14)='E1Y '
  406. LESFAC(15)='E1Z '
  407. LESFAC(16)='B2X '
  408. LESFAC(17)='B2Y '
  409. LESFAC(18)='B2Z '
  410. LESFAC(19)='C2X '
  411. LESFAC(20)='C2Y '
  412. LESFAC(21)='C2Z '
  413. LESFAC(22)='D2X '
  414. LESFAC(23)='D2Y '
  415. LESFAC(24)='D2Z '
  416. LESFAC(25)='E2X '
  417. LESFAC(26)='E2Y '
  418. LESFAC(27)='E2Z '
  419. ENDIF
  420. ENDIF
  421. C =================================================================
  422. C FORMULATION LIQUIDE
  423. C =================================================================
  424. ELSE IF (MFR2.EQ.11) THEN
  425. C
  426. C Elements LIQUIDE
  427. C ================
  428. IF (MFR.EQ.11) THEN
  429. NBROBL=2
  430. SEGINI,NOMID
  431. LESOBL(1)='P '
  432. LESOBL(2)='PI '
  433. C
  434. C Elements TUYAU ACOUSTIQUE PUR
  435. C =============================
  436. ELSE IF (MFR.EQ.41) THEN
  437. NBROBL=2
  438. SEGINI,NOMID
  439. LESOBL(1)='PI '
  440. LESOBL(2)='P '
  441. C
  442. C Elements SURFACE LIBRE
  443. C ======================
  444. ELSE IF (MFR.EQ.23) THEN
  445. NBROBL=3
  446. SEGINI,NOMID
  447. LESOBL(1)='P '
  448. LESOBL(2)='PI '
  449. LESOBL(3)='UZ '
  450. ENDIF
  451. C =================================================================
  452. C FORMULATION MECANIQUE+LIQUID
  453. C =================================================================
  454. ELSE IF (MFR2.EQ.44) THEN
  455. C
  456. C Element de RACCORD LITU
  457. C =======================
  458. IF (MFR.EQ.43) THEN
  459. NBROBL=5
  460. SEGINI,NOMID
  461. LESOBL(1)='UX '
  462. LESOBL(2)='UY '
  463. LESOBL(3)='UZ '
  464. LESOBL(4)='PI '
  465. LESOBL(5)='P '
  466. C
  467. C Element de RACCORD
  468. C ==================
  469. ELSE IF (MFR.EQ.19.OR.MFR.EQ.21) THEN
  470. NBROBL=2
  471. SEGINI,NOMID
  472. LESOBL(1)='P '
  473. LESOBL(2)='PI '
  474. C
  475. C Element de RACCORD MASSIF (2e serie de composantes)
  476. C ====================================================
  477. ELSE IF (MFR.EQ.1019) THEN
  478. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  479. NBROBL=2
  480. SEGINI,NOMID
  481. LESOBL(1)='UX '
  482. LESOBL(2)='UY '
  483. ELSE IF (IFOUR.EQ.0) THEN
  484. NBROBL=2
  485. SEGINI,NOMID
  486. LESOBL(1)='UR '
  487. LESOBL(2)='UZ '
  488. ELSE IF (IFOUR.EQ.1) THEN
  489. NBROBL=3
  490. SEGINI,NOMID
  491. LESOBL(1)='UR '
  492. LESOBL(2)='UZ '
  493. LESOBL(3)='UT '
  494. ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
  495. NBROBL=3
  496. SEGINI,NOMID
  497. LESOBL(1)='UX '
  498. LESOBL(2)='UY '
  499. LESOBL(3)='UZ '
  500. ENDIF
  501. C
  502. C Element de RACCORD COQUE (2e serie de composantes)
  503. C ==================================================
  504. ELSE IF (MFR.EQ.1021) THEN
  505. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  506. NBROBL=3
  507. SEGINI,NOMID
  508. LESOBL(1)='UX '
  509. LESOBL(2)='UY '
  510. LESOBL(3)='RZ '
  511. ELSE IF (IFOUR.EQ.0) THEN
  512. NBROBL=3
  513. SEGINI,NOMID
  514. LESOBL(1)='UR '
  515. LESOBL(2)='UZ '
  516. LESOBL(3)='RT '
  517. ELSE IF (IFOUR.EQ.1) THEN
  518. NBROBL=4
  519. SEGINI,NOMID
  520. LESOBL(1)='UR '
  521. LESOBL(2)='UZ '
  522. LESOBL(3)='UT '
  523. LESOBL(4)='RT '
  524. ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
  525. NBROBL=6
  526. SEGINI,NOMID
  527. LESOBL(1)='UX '
  528. LESOBL(2)='UY '
  529. LESOBL(3)='UZ '
  530. LESOBL(4)='RX '
  531. LESOBL(5)='RY '
  532. LESOBL(6)='RZ '
  533. ENDIF
  534. ENDIF
  535. C =================================================================
  536. C FORMULATION POREUX
  537. C =================================================================
  538. ELSE IF (MFR2.EQ.33) THEN
  539. C
  540. C Element POREUX
  541. C ==============
  542. IF (MFR.EQ.33) THEN
  543. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  544. NBROBL=3
  545. SEGINI,NOMID
  546. LESOBL(1)='UX '
  547. LESOBL(2)='UY '
  548. LESOBL(3)='P '
  549. ELSE IF (IFOUR.EQ.0) THEN
  550. NBROBL=3
  551. SEGINI,NOMID
  552. LESOBL(1)='UR '
  553. LESOBL(2)='UZ '
  554. LESOBL(3)='P '
  555. ELSE IF (IFOUR.EQ.1) THEN
  556. NBROBL=4
  557. SEGINI,NOMID
  558. LESOBL(1)='UR '
  559. LESOBL(2)='UZ '
  560. LESOBL(3)='UT '
  561. LESOBL(4)='P '
  562. ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
  563. NBROBL=4
  564. SEGINI,NOMID
  565. LESOBL(1)='UX '
  566. LESOBL(2)='UY '
  567. LESOBL(3)='UZ '
  568. LESOBL(4)='P '
  569. ENDIF
  570. C
  571. C Element POREUX type Q
  572. C =====================
  573. ELSE IF (MFR.EQ.57) THEN
  574. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  575. NBROBL=4
  576. SEGINI,NOMID
  577. LESOBL(1)='UX '
  578. LESOBL(2)='UY '
  579. LESOBL(3)='P '
  580. LESOBL(4)='PQ '
  581. ELSE IF (IFOUR.EQ.0) THEN
  582. NBROBL=4
  583. SEGINI,NOMID
  584. LESOBL(1)='UR '
  585. LESOBL(2)='UZ '
  586. LESOBL(3)='P '
  587. LESOBL(4)='PQ '
  588. ELSE IF (IFOUR.EQ.1) THEN
  589. NBROBL=5
  590. SEGINI,NOMID
  591. LESOBL(1)='UR '
  592. LESOBL(2)='UZ '
  593. LESOBL(3)='UT '
  594. LESOBL(4)='P '
  595. LESOBL(5)='PQ '
  596. ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
  597. NBROBL=5
  598. SEGINI,NOMID
  599. LESOBL(1)='UX '
  600. LESOBL(2)='UY '
  601. LESOBL(3)='UZ '
  602. LESOBL(4)='P '
  603. LESOBL(5)='PQ '
  604. ENDIF
  605. C
  606. C Element POREUX type R
  607. C =====================
  608. ELSE IF (MFR.EQ.59) THEN
  609. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  610. NBROBL=5
  611. SEGINI,NOMID
  612. LESOBL(1)='UX '
  613. LESOBL(2)='UY '
  614. LESOBL(3)='P '
  615. LESOBL(4)='PQ '
  616. LESOBL(5)='TP '
  617. ELSE IF (IFOUR.EQ.0) THEN
  618. NBROBL=5
  619. SEGINI,NOMID
  620. LESOBL(1)='UR '
  621. LESOBL(2)='UZ '
  622. LESOBL(3)='P '
  623. LESOBL(4)='PQ '
  624. LESOBL(5)='TP '
  625. ELSE IF (IFOUR.EQ.1) THEN
  626. NBROBL=6
  627. SEGINI,NOMID
  628. LESOBL(1)='UR '
  629. LESOBL(2)='UZ '
  630. LESOBL(3)='UT '
  631. LESOBL(4)='P '
  632. LESOBL(5)='PQ '
  633. LESOBL(6)='TP '
  634. ELSE IF(IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
  635. NBROBL=6
  636. SEGINI,NOMID
  637. LESOBL(1)='UX '
  638. LESOBL(2)='UY '
  639. LESOBL(3)='UZ '
  640. LESOBL(4)='P '
  641. LESOBL(5)='PQ '
  642. LESOBL(6)='TP '
  643. ENDIF
  644. ENDIF
  645. C =================================================================
  646. C FORMULATION ELECTROSTATIQUE
  647. C =================================================================
  648. ELSE IF (MFR2.EQ.71) THEN
  649. NBROBL=1
  650. SEGINI,NOMID
  651. LESOBL(1)='VEL '
  652. C =================================================================
  653. C FORMULATION HHO (SEULEMENT 2D (CP/DP) et 3D
  654. C =================================================================
  655. ELSE IF (MFR2.EQ.HHO_MFR_ELEMENT) THEN
  656. i_d_c = IDIM
  657. n_o_c = ABS(imodel.INFMOD(12))
  658. n_d_c = n_o_c * i_d_c
  659. n_o_f = ABS(imodel.INFMOD( 9))
  660. n_d_f = n_o_f * i_d_c
  661.  
  662. NBROBL = n_d_c + n_d_f
  663. NBRFAC = 0
  664. SEGINI,NOMID
  665.  
  666. j1 = 1
  667. j2 = j1 + n_o_c
  668. j3 = j2 + n_o_c
  669. n_o_c = n_o_c - 1
  670. IF (IFOUR.EQ.-2 .OR. IFOUR.EQ.-1) THEN
  671. DO i = 0, n_o_c
  672. c*** WRITE(LESOBL(j1+i),'(A6,I2.2)') 'UX_HC_',i
  673. c*** WRITE(LESOBL(j2+i),'(A6,I2.2)') 'UY_HC_',i
  674. WRITE(LESOBL(j1+i),'(A3,I1.1,A4)') 'UXC',i,' '
  675. WRITE(LESOBL(j2+i),'(A3,I1.1,A4)') 'UYC',i,' '
  676. END DO
  677. ELSE IF (IFOUR.EQ.2) THEN
  678. DO i = 0, n_o_c
  679. c*** WRITE(LESOBL(j1+i),'(A6,I2.2)') 'UX_HC_',i
  680. c*** WRITE(LESOBL(j2+i),'(A6,I2.2)') 'UY_HC_',i
  681. c*** WRITE(LESOBL(j3+i),'(A6,I2.2)') 'UZ_HC_',i
  682. WRITE(LESOBL(j1+i),'(A3,I1.1,A4)') 'UXC',i,' '
  683. WRITE(LESOBL(j2+i),'(A3,I1.1,A4)') 'UYC',i,' '
  684. WRITE(LESOBL(j3+i),'(A3,I1.1,A4)') 'UZC',i,' '
  685. END DO
  686. ELSE
  687. write(ioimp,*) 'IDPRIM - HHO - IFOUR not implemented'
  688. CALL ERREUR(5)
  689. RETURN
  690. END IF
  691.  
  692. j1 = n_d_c + 1
  693. j2 = j1 + n_o_f
  694. j3 = j2 + n_o_f
  695. n_o_f = n_o_f - 1
  696. IF (IFOUR.EQ.-2 .OR. IFOUR.EQ.-1) THEN
  697. DO i = 0, n_o_f
  698. c*** WRITE(LESOBL(j1+i),'(A6,I2.2)') 'UX_HF_',i
  699. c*** WRITE(LESOBL(j2+i),'(A6,I2.2)') 'UY_HF_',i
  700. WRITE(LESOBL(j1+i),'(A3,I1.1,A4)') 'UXF',i,' '
  701. WRITE(LESOBL(j2+i),'(A3,I1.1,A4)') 'UYF',i,' '
  702. END DO
  703. ELSE IF (IFOUR.EQ.2) THEN
  704. DO i = 0, n_o_f
  705. c*** WRITE(LESOBL(j1+i),'(A6,I2.2)') 'UX_HF_',i
  706. c*** WRITE(LESOBL(j2+i),'(A6,I2.2)') 'UY_HF_',i
  707. c*** WRITE(LESOBL(j3+i),'(A6,I2.2)') 'UZ_HF_',i
  708. WRITE(LESOBL(j1+i),'(A3,I1.1,A4)') 'UXF',i,' '
  709. WRITE(LESOBL(j2+i),'(A3,I1.1,A4)') 'UYF',i,' '
  710. WRITE(LESOBL(j3+i),'(A3,I1.1,A4)') 'UZF',i,' '
  711. END DO
  712. END IF
  713. C =================================================================
  714. C FORMULATION THERMIQUE
  715. C =================================================================
  716. ELSE IF (MFR2.EQ.29) THEN
  717. C
  718. C Elements COQUE
  719. C ==============
  720. IF (MFR.EQ.3.OR.MFR.EQ.5.OR.MFR.EQ.9) THEN
  721. NPINT=infmod(1)
  722. IF(NPINT.EQ.0) THEN
  723. NBROBL=3
  724. SEGINI NOMID
  725. LESOBL(1)='TINF '
  726. LESOBL(2)='T '
  727. LESOBL(3)='TSUP '
  728. ELSE
  729. NBROBL = 1
  730. SEGINI NOMID
  731. LESOBL(1)='T '
  732. ENDIF
  733. C
  734. C Autres elements
  735. C ===============
  736. ELSE
  737. NBROBL=1
  738. SEGINI NOMID
  739. LESOBL(1)='T '
  740. ENDIF
  741. C =================================================================
  742. C FORMULATION DIFFUSION
  743. C =================================================================
  744. ELSE IF (MFR2.EQ.73) THEN
  745. C
  746. C Recuperation du LISTMOTS dans IVAMOD(1)
  747. MLMOT1=IVAMOD(1)
  748.  
  749. C Recuperation de l'inconnue PRIMALE
  750. CCOMP =MLMOT1.MOTS(1)
  751. NBCHAR=LONG(CCOMP)
  752. IF (NBCHAR .GT. 4) THEN
  753. CALL ERREUR(536)
  754. RETURN
  755. ENDIF
  756. C
  757. C Elements COQUE
  758. C ==============
  759. IF (MFR.EQ.3 .OR. MFR.EQ.5 .OR. MFR.EQ.9) THEN
  760. NPINT=infmod(1)
  761. IF(NPINT.EQ.0) THEN
  762. NBROBL=3
  763. SEGINI NOMID
  764. LESOBL(1)=CCOMP(1:NBCHAR)//'IN '
  765. LESOBL(2)=CCOMP
  766. LESOBL(3)=CCOMP(1:NBCHAR)//'SU '
  767. ELSE
  768. NBROBL = 1
  769. SEGINI NOMID
  770. LESOBL(1)=CCOMP
  771. ENDIF
  772. C
  773. C Autres elements
  774. C ===============
  775. ELSE
  776. NBROBL = 1
  777. SEGINI NOMID
  778. LESOBL(1)=CCOMP
  779. ENDIF
  780. C =================================================================
  781. C FORMULATION CHANGEMENT_PHASE
  782. C =================================================================
  783. ELSE IF (MFR2.EQ.30) THEN
  784. C
  785. IF (IMODEL.CMATEE.EQ.'CHPH_PAR') THEN
  786. NBROBL=1
  787. NBRFAC=0
  788. SEGINI,NOMID
  789. MLMOT1=IMODEL.IVAMOD(1)
  790. NOMID.LESOBL(1)=MLMOT1.MOTS(1)
  791. ELSE IF (IMODEL.CMATEE.EQ.'CHPH_SOL')THEN
  792. NBROBL=2
  793. NBRFAC=0
  794. SEGINI,NOMID
  795. MLMOT1=IMODEL.IVAMOD(1)
  796. NOMID.LESOBL(1)=MLMOT1.MOTS(1)
  797. NOMID.LESOBL(2)=MLMOT1.MOTS(2)
  798. ENDIF
  799. C =================================================================
  800. ENDIF
  801. C
  802. IF (NOMID.NE.0) THEN
  803. if (ifomod.eq.6) then
  804. nbrfa0 = nbrfac
  805. NBRFAC = NBROBL + (nbrfa0*2)
  806. segadj nomid
  807. do imo = 1,nbrobl
  808. lesfac(nbrfa0 + imo)(2:4) = lesobl(imo)(1:3)
  809. lesfac(nbrfa0 + imo)(1:1) = 'I'
  810. enddo
  811. do imo = 1,nbrfa0
  812. lesfac(nbrfa0+nbrobl+imo)(2:4) = lesfac(imo)(1:3)
  813. lesfac(nbrfa0+nbrobl+imo)(1:1) = 'I'
  814. enddo
  815. endif
  816. ENDIF
  817. C
  818. IF (NOMID.NE.0) SEGACT,NOMID*NOMOD
  819. IPNOMC=NOMID
  820. END
  821.  
  822.  

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