Télécharger iddual.eso

Retour à la liste

Numérotation des lignes :

iddual
  1. C IDDUAL SOURCE MB234859 25/08/04 21:15:16 12339
  2. C=======================================================================
  3. C= DEFINITION DES NOMS DE COMPOSANTES DUALES =
  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 IDDUAL(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(2)
  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)='FX '
  62. LESOBL(2)='FY '
  63. LESOBL(3)='MZ '
  64. LESOBL(4)='FM '
  65. LESOBL(5)='MM '
  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)='QG '
  74. LESOBL(2)='QC '
  75. LESOBL(3)='Q '
  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)='FALF'
  88. ELSE IF (MFR.EQ.28) THEN
  89. NBROBL=1
  90. SEGINI,NOMID
  91. LESOBL(1)='FBET'
  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)='FX '
  101. LESOBL(2)='FY '
  102. ELSE IF (IFOUR.EQ.0) THEN
  103. NBROBL=2
  104. SEGINI,NOMID
  105. LESOBL(1)='FR '
  106. LESOBL(2)='FZ '
  107. ELSE IF (IFOUR.EQ.1) THEN
  108. NBROBL=3
  109. SEGINI,NOMID
  110. LESOBL(1)='FR '
  111. LESOBL(2)='FZ '
  112. LESOBL(3)='FT '
  113. ELSE IF (IFOUR.EQ.2) THEN
  114. NBROBL=3
  115. SEGINI,NOMID
  116. LESOBL(1)='FX '
  117. LESOBL(2)='FY '
  118. LESOBL(3)='FZ '
  119. ELSE IF (IFOUR.EQ.-3) THEN
  120. IF (MFR2.EQ.72) THEN
  121. NBROBL=2
  122. SEGINI,NOMID
  123. LESOBL(1)='FX '
  124. LESOBL(2)='FY '
  125. ELSE
  126. NBROBL=5
  127. SEGINI,NOMID
  128. LESOBL(1)='FX '
  129. LESOBL(2)='FY '
  130. LESOBL(3)='FZ '
  131. LESOBL(4)='MY '
  132. LESOBL(5)='MX '
  133. ENDIF
  134. ELSE IF (IFOUR.GE.3.AND.IFOUR.LE.15.AND.MFR.EQ.1) THEN
  135. IF (IFOUR.LE.6) THEN
  136. NBROBL=1
  137. SEGINI,NOMID
  138. LESOBL(1)='FX '
  139. ELSE IF (IFOUR.EQ.7.OR.IFOUR.EQ.8) THEN
  140. NBROBL=2
  141. SEGINI,NOMID
  142. LESOBL(1)='FX '
  143. LESOBL(2)='FY '
  144. ELSE IF (IFOUR.EQ.9.OR.IFOUR.EQ.10) THEN
  145. NBROBL=2
  146. SEGINI,NOMID
  147. LESOBL(1)='FX '
  148. LESOBL(2)='FZ '
  149. ELSE IF (IFOUR.EQ.11) THEN
  150. NBROBL=3
  151. SEGINI,NOMID
  152. LESOBL(1)='FX '
  153. LESOBL(2)='FY '
  154. LESOBL(3)='FZ '
  155. ELSE IF (IFOUR.EQ.12.OR.IFOUR.EQ.13.OR.IFOUR.EQ.15) THEN
  156. NBROBL=1
  157. SEGINI,NOMID
  158. LESOBL(1)='FR '
  159. ELSE IF (IFOUR.EQ.14) THEN
  160. NBROBL=2
  161. SEGINI,NOMID
  162. LESOBL(1)='FR '
  163. LESOBL(2)='FZ '
  164. ENDIF
  165. ENDIF
  166. C
  167. C Elements COQUE/POUTRE/TUYAU
  168. C ===========================
  169. ELSE IF (MFR.EQ.3 .OR. MFR.EQ.5 .OR. MFR.EQ.7 .OR. MFR.EQ.9
  170. & .OR. MFR.EQ.13 .OR. MFR.EQ.15.OR. MFR.EQ.17 .OR. MFR.EQ.49
  171. & .OR. MFR.EQ.51 .OR. MFR.EQ.75) THEN
  172. IF (IFOUR.EQ.2) THEN
  173. NBROBL=6
  174. SEGINI,NOMID
  175. LESOBL(1)='FX '
  176. LESOBL(2)='FY '
  177. LESOBL(3)='FZ '
  178. LESOBL(4)='MX '
  179. LESOBL(5)='MY '
  180. LESOBL(6)='MZ '
  181. ELSE IF (IFOUR.EQ.1) THEN
  182. NBROBL=4
  183. SEGINI,NOMID
  184. LESOBL(1)='FR '
  185. LESOBL(2)='FZ '
  186. LESOBL(3)='FT '
  187. LESOBL(4)='MT '
  188. ELSE IF (IFOUR.EQ.0) THEN
  189. NBROBL=3
  190. SEGINI,NOMID
  191. LESOBL(1)='FR '
  192. LESOBL(2)='FZ '
  193. LESOBL(3)='MT '
  194. ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2) THEN
  195. NBROBL=3
  196. SEGINI,NOMID
  197. LESOBL(1)='FX '
  198. LESOBL(2)='FY '
  199. LESOBL(3)='MZ '
  200. ELSE IF (IFOUR.EQ.-3) THEN
  201. IF (MFR.EQ.3 .OR. MFR.EQ.5) THEN
  202. NBROBL=6
  203. SEGINI,NOMID
  204. LESOBL(1)='FX '
  205. LESOBL(2)='FY '
  206. LESOBL(3)='MZ '
  207. LESOBL(4)='FZ '
  208. LESOBL(5)='MY '
  209. LESOBL(6)='MX '
  210. ELSE
  211. NBROBL=3
  212. SEGINI,NOMID
  213. LESOBL(1)='FX '
  214. LESOBL(2)='FY '
  215. LESOBL(3)='MZ '
  216. ENDIF
  217. ENDIF
  218. C
  219. C Element JOINT, JOINT CISAILLEMENT,JOINT GENERALISE, COS2
  220. C ===============================================================
  221. ELSE IF (MFR.EQ.35.OR.MFR.EQ.53.OR.MFR.EQ.55.OR.MFR.EQ.78) THEN
  222. IF (IFOUR.EQ.2) THEN
  223. NBROBL=3
  224. SEGINI,NOMID
  225. LESOBL(1)='FX '
  226. LESOBL(2)='FY '
  227. LESOBL(3)='FZ '
  228. ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2.OR.IFOUR.EQ.-3) THEN
  229. NBROBL=2
  230. SEGINI,NOMID
  231. LESOBL(1)='FX '
  232. LESOBL(2)='FY '
  233. ELSE IF (IFOUR.EQ.0) THEN
  234. NBROBL=2
  235. SEGINI,NOMID
  236. LESOBL(1)='FR '
  237. LESOBL(2)='FZ '
  238. ENDIF
  239. C
  240. C Elements HOMOGENEISE
  241. C =====================
  242. ELSE IF (MFR.EQ.37) THEN
  243. IF (IFOUR.EQ.1) THEN
  244. NBROBL=6
  245. SEGINI,NOMID
  246. LESOBL(1)='FP '
  247. LESOBL(2)='FPI '
  248. LESOBL(3)='FR '
  249. LESOBL(4)='MT '
  250. LESOBL(5)='FT '
  251. LESOBL(6)='MR '
  252. ELSE IF (IFOUR.EQ.0) THEN
  253. NBROBL=4
  254. SEGINI,NOMID
  255. LESOBL(1)='FP '
  256. LESOBL(2)='FPI '
  257. LESOBL(3)='FR '
  258. LESOBL(4)='MT '
  259. ELSE IF (IFOUR.EQ.2) THEN
  260. NBROBL=6
  261. SEGINI,NOMID
  262. LESOBL(1)='FP '
  263. LESOBL(2)='FPI '
  264. LESOBL(3)='FX '
  265. LESOBL(4)='MY '
  266. LESOBL(5)='FY '
  267. LESOBL(6)='MX '
  268. ELSE
  269. NBROBL=4
  270. SEGINI,NOMID
  271. LESOBL(1)='FP '
  272. LESOBL(2)='FPI '
  273. LESOBL(3)='FX '
  274. LESOBL(4)='FY '
  275. ENDIF
  276. C
  277. C Elements TUYO
  278. C =============
  279. ELSE IF (MFR.EQ.39) THEN
  280. NBROBL=6+9
  281. SEGINI,NOMID
  282. LESOBL(1)='FX '
  283. LESOBL(2)='FY '
  284. LESOBL(3)='FZ '
  285. LESOBL(4)='MX '
  286. LESOBL(5)='MY '
  287. LESOBL(6)='MZ '
  288. LESOBL(7)='FW0 '
  289. LESOBL(8)='FU1 '
  290. LESOBL(9)='FU2 '
  291. LESOBL(10)='FU3 '
  292. LESOBL(11)='FU4 '
  293. LESOBL(12)='FW1 '
  294. LESOBL(13)='FW2 '
  295. LESOBL(14)='FW3 '
  296. LESOBL(15)='FW4 '
  297. C
  298. C Elements ZONE_COHESIVE
  299. C ======================
  300. ELSE IF (MFR.EQ.77) THEN
  301. C Element ZCO2 (xfem meca rupture en 2D)
  302. IF(IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  303. NBROBL=2
  304. NBRFAC=18
  305. SEGINI,NOMID
  306. LESOBL(1)='FAX '
  307. LESOBL(2)='FAY '
  308. LESFAC(1)='FX '
  309. LESFAC(2)='FY '
  310. LESFAC(3)='FB1X'
  311. LESFAC(4)='FB1Y'
  312. LESFAC(5)='FC1X'
  313. LESFAC(6)='FC1Y'
  314. LESFAC(7)='FD1X'
  315. LESFAC(8)='FD1Y'
  316. LESFAC(9)='FE1X'
  317. LESFAC(10)='FE1Y'
  318. LESFAC(11)='FB2X'
  319. LESFAC(12)='FB2Y'
  320. LESFAC(13)='FC2X'
  321. LESFAC(14)='FC2Y'
  322. LESFAC(15)='FD2X'
  323. LESFAC(16)='FD2Y'
  324. LESFAC(17)='FE2X'
  325. LESFAC(18)='FE2Y'
  326. C Elements ZCO3 et ZCO4 (xfem meca rupture en 3D)
  327. ELSE IF (IFOUR.EQ.2) THEN
  328. NBROBL=3
  329. NBRFAC=27
  330. SEGINI,NOMID
  331. LESOBL(1)='FAX '
  332. LESOBL(2)='FAY '
  333. LESOBL(3)='FAZ '
  334. LESFAC(1)='FX '
  335. LESFAC(2)='FY '
  336. LESFAC(3)='FZ '
  337. LESFAC(4)='FB1X'
  338. LESFAC(5)='FB1Y'
  339. LESFAC(6)='FB1Z'
  340. LESFAC(7)='FC1X'
  341. LESFAC(8)='FC1Y'
  342. LESFAC(9)='FC1Z'
  343. LESFAC(10)='FD1X'
  344. LESFAC(11)='FD1Y'
  345. LESFAC(12)='FD1Z'
  346. LESFAC(13)='FE1X'
  347. LESFAC(14)='FE1Y'
  348. LESFAC(15)='FE1Z'
  349. LESFAC(16)='FB2X'
  350. LESFAC(17)='FB2Y'
  351. LESFAC(18)='FB2Z'
  352. LESFAC(19)='FC2X'
  353. LESFAC(20)='FC2Y'
  354. LESFAC(21)='FC2Z'
  355. LESFAC(22)='FD2X'
  356. LESFAC(23)='FD2Y'
  357. LESFAC(24)='FD2Z'
  358. LESFAC(25)='FE2X'
  359. LESFAC(26)='FE2Y'
  360. LESFAC(27)='FE2Z'
  361. ENDIF
  362. C
  363. C Element XFEM
  364. C ============
  365. ELSE IF (MFR.EQ.63) THEN
  366. CTY Element XQ4R (xfem meca rupture en 2D)
  367. IF(IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  368. NBROBL=2
  369. NBRFAC=18
  370. SEGINI,NOMID
  371. LESOBL(1)='FX '
  372. LESOBL(2)='FY '
  373. LESFAC(1)='FAX '
  374. LESFAC(2)='FAY '
  375. LESFAC(3)='FB1X'
  376. LESFAC(4)='FB1Y'
  377. LESFAC(5)='FC1X'
  378. LESFAC(6)='FC1Y'
  379. LESFAC(7)='FD1X'
  380. LESFAC(8)='FD1Y'
  381. LESFAC(9)='FE1X'
  382. LESFAC(10)='FE1Y'
  383. LESFAC(11)='FB2X'
  384. LESFAC(12)='FB2Y'
  385. LESFAC(13)='FC2X'
  386. LESFAC(14)='FC2Y'
  387. LESFAC(15)='FD2X'
  388. LESFAC(16)='FD2Y'
  389. LESFAC(17)='FE2X'
  390. LESFAC(18)='FE2Y'
  391. CTY Element XC8R (xfem meca rupture en 3D)
  392. ELSE IF (IFOUR.EQ.2) THEN
  393. NBROBL=3
  394. NBRFAC=27
  395. SEGINI,NOMID
  396. LESOBL(1)='FX '
  397. LESOBL(2)='FY '
  398. LESOBL(3)='FZ '
  399. LESFAC(1)='FAX '
  400. LESFAC(2)='FAY '
  401. LESFAC(3)='FAZ '
  402. LESFAC(4)='FB1X'
  403. LESFAC(5)='FB1Y'
  404. LESFAC(6)='FB1Z'
  405. LESFAC(7)='FC1X'
  406. LESFAC(8)='FC1Y'
  407. LESFAC(9)='FC1Z'
  408. LESFAC(10)='FD1X'
  409. LESFAC(11)='FD1Y'
  410. LESFAC(12)='FD1Z'
  411. LESFAC(13)='FE1X'
  412. LESFAC(14)='FE1Y'
  413. LESFAC(15)='FE1Z'
  414. LESFAC(16)='FB2X'
  415. LESFAC(17)='FB2Y'
  416. LESFAC(18)='FB2Z'
  417. LESFAC(19)='FC2X'
  418. LESFAC(20)='FC2Y'
  419. LESFAC(21)='FC2Z'
  420. LESFAC(22)='FD2X'
  421. LESFAC(23)='FD2Y'
  422. LESFAC(24)='FD2Z'
  423. LESFAC(25)='FE2X'
  424. LESFAC(26)='FE2Y'
  425. LESFAC(27)='FE2Z'
  426. ENDIF
  427. ENDIF
  428. C =================================================================
  429. C FORMULATION LIQUIDE
  430. C =================================================================
  431. ELSE IF (MFR2.EQ.11) THEN
  432. C
  433. C Elements LIQUIDE
  434. C ================
  435. IF (MFR.EQ.11) THEN
  436. NBROBL=2
  437. SEGINI,NOMID
  438. LESOBL(1)='FP '
  439. LESOBL(2)='FPI '
  440. C
  441. C Elements TUYAU ACOUSTIQUE PUR
  442. C =============================
  443. ELSE IF (MFR.EQ.41) THEN
  444. NBROBL=2
  445. SEGINI,NOMID
  446. LESOBL(1)='FPI '
  447. LESOBL(2)='FP '
  448. C
  449. C Elements SURFACE LIBRE
  450. C ======================
  451. ELSE IF (MFR.EQ.23) THEN
  452. NBROBL=3
  453. SEGINI,NOMID
  454. LESOBL(1)='FP '
  455. LESOBL(2)='FPI '
  456. LESOBL(3)='FZ '
  457. ENDIF
  458. C =================================================================
  459. C FORMULATION MECANIQUE+LIQUID
  460. C =================================================================
  461. ELSE IF (MFR2.EQ.44) THEN
  462. C
  463. C Element de RACCORD LIQUIDE TUYAU
  464. C ================================
  465. IF (MFR.EQ.43) THEN
  466. NBROBL=5
  467. SEGINI,NOMID
  468. LESOBL(1)='FX '
  469. LESOBL(2)='FY '
  470. LESOBL(3)='FZ '
  471. LESOBL(4)='FPI '
  472. LESOBL(5)='FP '
  473. C
  474. C Element de RACCORD
  475. C ==================
  476. ELSE IF (MFR.EQ.19.OR.MFR.EQ.21) THEN
  477. NBROBL=2
  478. SEGINI,NOMID
  479. LESOBL(1)='FP '
  480. LESOBL(2)='FPI '
  481. C
  482. C Element de RACCORD MASSIF (2e serie de composantes)
  483. C ====================================================
  484. ELSE IF (MFR.EQ.1019) THEN
  485. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  486. NBROBL=2
  487. SEGINI,NOMID
  488. LESOBL(1)='FX '
  489. LESOBL(2)='FY '
  490. ELSE IF (IFOUR.EQ.0) THEN
  491. NBROBL=2
  492. SEGINI,NOMID
  493. LESOBL(1)='FR '
  494. LESOBL(2)='FZ '
  495. ELSE IF (IFOUR.EQ.1) THEN
  496. NBROBL=3
  497. SEGINI,NOMID
  498. LESOBL(1)='FR '
  499. LESOBL(2)='FZ '
  500. LESOBL(3)='FT '
  501. ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
  502. NBROBL=3
  503. SEGINI,NOMID
  504. LESOBL(1)='FX '
  505. LESOBL(2)='FY '
  506. LESOBL(3)='FZ '
  507. ENDIF
  508. C
  509. C Element de RACCORD COQUE (2e serie de composantes)
  510. C ==================================================
  511. ELSE IF (MFR.EQ.1021) THEN
  512. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  513. NBROBL=3
  514. SEGINI,NOMID
  515. LESOBL(1)='FX '
  516. LESOBL(2)='FY '
  517. LESOBL(3)='MZ '
  518. ELSE IF (IFOUR.EQ.0) THEN
  519. NBROBL=3
  520. SEGINI,NOMID
  521. LESOBL(1)='FR '
  522. LESOBL(2)='FZ '
  523. LESOBL(3)='MT '
  524. ELSE IF (IFOUR.EQ.1) THEN
  525. NBROBL=4
  526. SEGINI,NOMID
  527. LESOBL(1)='FR '
  528. LESOBL(2)='FZ '
  529. LESOBL(3)='FT '
  530. LESOBL(4)='MT '
  531. ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
  532. NBROBL=6
  533. SEGINI,NOMID
  534. LESOBL(1)='FX '
  535. LESOBL(2)='FY '
  536. LESOBL(3)='FZ '
  537. LESOBL(4)='MX '
  538. LESOBL(5)='MY '
  539. LESOBL(6)='MZ '
  540. ENDIF
  541. ENDIF
  542. C =================================================================
  543. C FORMULATION POREUX
  544. C =================================================================
  545. ELSE IF (MFR2.EQ.33) THEN
  546. C
  547. C Element POREUX
  548. C ==============
  549. IF (MFR.EQ.33) THEN
  550. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  551. NBROBL=3
  552. SEGINI,NOMID
  553. LESOBL(1)='FX '
  554. LESOBL(2)='FY '
  555. LESOBL(3)='FP '
  556. ELSE IF (IFOUR.EQ.0) THEN
  557. NBROBL=3
  558. SEGINI,NOMID
  559. LESOBL(1)='FR '
  560. LESOBL(2)='FZ '
  561. LESOBL(3)='FP '
  562. ELSE IF (IFOUR.EQ.1) THEN
  563. NBROBL=4
  564. SEGINI,NOMID
  565. LESOBL(1)='FR '
  566. LESOBL(2)='FZ '
  567. LESOBL(3)='FT '
  568. LESOBL(4)='FP '
  569. ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
  570. NBROBL=4
  571. SEGINI,NOMID
  572. LESOBL(1)='FX '
  573. LESOBL(2)='FY '
  574. LESOBL(3)='FZ '
  575. LESOBL(4)='FP '
  576. ENDIF
  577. C
  578. C Element POREUX type Q
  579. C =====================
  580. ELSE IF (MFR.EQ.57) THEN
  581. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  582. NBROBL=4
  583. SEGINI,NOMID
  584. LESOBL(1)='FX '
  585. LESOBL(2)='FY '
  586. LESOBL(3)='FP '
  587. LESOBL(4)='FPQ '
  588. ELSE IF (IFOUR.EQ.0) THEN
  589. NBROBL=4
  590. SEGINI,NOMID
  591. LESOBL(1)='FR '
  592. LESOBL(2)='FZ '
  593. LESOBL(3)='FP '
  594. LESOBL(4)='FPQ '
  595. ELSE IF (IFOUR.EQ.1) THEN
  596. NBROBL=5
  597. SEGINI,NOMID
  598. LESOBL(1)='FR '
  599. LESOBL(2)='FZ '
  600. LESOBL(3)='FT '
  601. LESOBL(4)='FP '
  602. LESOBL(5)='FPQ '
  603. ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
  604. NBROBL=5
  605. SEGINI,NOMID
  606. LESOBL(1)='FX '
  607. LESOBL(2)='FY '
  608. LESOBL(3)='FZ '
  609. LESOBL(4)='FP '
  610. LESOBL(5)='FPQ '
  611. ENDIF
  612. C
  613. C Element POREUX type R
  614. C =====================
  615. ELSE IF (MFR.EQ.59) THEN
  616. IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
  617. NBROBL=5
  618. SEGINI,NOMID
  619. LESOBL(1)='FX '
  620. LESOBL(2)='FY '
  621. LESOBL(3)='FP '
  622. LESOBL(4)='FPQ '
  623. LESOBL(5)='FTP '
  624. ELSE IF (IFOUR.EQ.0) THEN
  625. NBROBL=5
  626. SEGINI,NOMID
  627. LESOBL(1)='FR '
  628. LESOBL(2)='FZ '
  629. LESOBL(3)='FP '
  630. LESOBL(4)='FPQ '
  631. LESOBL(5)='FTP '
  632. ELSE IF (IFOUR.EQ.1) THEN
  633. NBROBL=6
  634. SEGINI,NOMID
  635. LESOBL(1)='FR '
  636. LESOBL(2)='FZ '
  637. LESOBL(3)='FT '
  638. LESOBL(4)='FP '
  639. LESOBL(5)='FPQ '
  640. LESOBL(6)='FTP '
  641. ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
  642. NBROBL=6
  643. SEGINI,NOMID
  644. LESOBL(1)='FX '
  645. LESOBL(2)='FY '
  646. LESOBL(3)='FZ '
  647. LESOBL(4)='FP '
  648. LESOBL(5)='FPQ '
  649. LESOBL(6)='FTP '
  650. ENDIF
  651. ENDIF
  652. C =================================================================
  653. C FORMULATION ELECTROSTATIQUE
  654. C =================================================================
  655. ELSE IF (MFR2.EQ.71) THEN
  656. NBROBL=1
  657. SEGINI,NOMID
  658. LESOBL(1)='QEL '
  659. C =================================================================
  660. C FORMULATION HHO (SEULEMENT 2D (CP/DP) et 3D
  661. C =================================================================
  662. ELSE IF (MFR2.EQ.HHO_MFR_ELEMENT) THEN
  663. i_d_c = IDIM
  664. n_o_c = ABS(imodel.INFMOD(12))
  665. n_d_c = n_o_c * i_d_c
  666. n_o_f = ABS(imodel.INFMOD( 9))
  667. n_d_f = n_o_f * i_d_c
  668.  
  669. NBROBL = n_d_c + n_d_f
  670. NBRFAC = 0
  671. SEGINI,NOMID
  672.  
  673. j1 = 1
  674. j2 = j1 + n_o_c
  675. j3 = j2 + n_o_c
  676. n_o_c = n_o_c - 1
  677. IF (IFOUR.EQ.-2 .OR. IFOUR.EQ.-1) THEN
  678. DO i = 0, n_o_c
  679. c*** WRITE(LESOBL(j1+i),'(A6,I2.2)') 'FX_HC_',i
  680. c*** WRITE(LESOBL(j2+i),'(A6,I2.2)') 'FY_HC_',i
  681. WRITE(LESOBL(j1+i),'(A3,I1.1,A4)') 'FXC',i,' '
  682. WRITE(LESOBL(j2+i),'(A3,I1.1,A4)') 'FYC',i,' '
  683. END DO
  684. ELSE IF (IFOUR.EQ.2) THEN
  685. DO i = 0, n_o_c
  686. c*** WRITE(LESOBL(j1+i),'(A6,I2.2)') 'FX_HC_',i
  687. c*** WRITE(LESOBL(j2+i),'(A6,I2.2)') 'FY_HC_',i
  688. c*** WRITE(LESOBL(j3+i),'(A6,I2.2)') 'FZ_HC_',i
  689. WRITE(LESOBL(j1+i),'(A3,I1.1,A4)') 'FXC',i,' '
  690. WRITE(LESOBL(j2+i),'(A3,I1.1,A4)') 'FYC',i,' '
  691. WRITE(LESOBL(j3+i),'(A3,I1.1,A4)') 'FZC',i,' '
  692. END DO
  693. ELSE
  694. write(ioimp,*) 'IDDUAL - HHO - IFOUR not implemented'
  695. CALL ERREUR(5)
  696. RETURN
  697. END IF
  698.  
  699. j1 = n_d_c + 1
  700. j2 = j1 + n_o_f
  701. j3 = j2 + n_o_f
  702. n_o_f = n_o_f - 1
  703. IF (IFOUR.EQ.-2 .OR. IFOUR.EQ.-1) THEN
  704. DO i = 0, n_o_f
  705. c*** WRITE(LESOBL(j1+i),'(A6,I2.2)') 'FX_HF_',i
  706. c*** WRITE(LESOBL(j2+i),'(A6,I2.2)') 'FY_HF_',i
  707. WRITE(LESOBL(j1+i),'(A3,I1.1,A4)') 'FXF',i,' '
  708. WRITE(LESOBL(j2+i),'(A3,I1.1,A4)') 'FYF',i,' '
  709. END DO
  710. ELSE IF (IFOUR.EQ.2) THEN
  711. DO i = 0, n_o_f
  712. c*** WRITE(LESOBL(j1+i),'(A6,I2.2)') 'FX_HF_',i
  713. c*** WRITE(LESOBL(j2+i),'(A6,I2.2)') 'FY_HF_',i
  714. c*** WRITE(LESOBL(j3+i),'(A6,I2.2)') 'FZ_HF_',i
  715. WRITE(LESOBL(j1+i),'(A3,I1.1,A4)') 'FXF',i,' '
  716. WRITE(LESOBL(j2+i),'(A3,I1.1,A4)') 'FYF',i,' '
  717. WRITE(LESOBL(j3+i),'(A3,I1.1,A4)') 'FZF',i,' '
  718. END DO
  719. END IF
  720. C =================================================================
  721. C FORMULATION THERMIQUE
  722. C =================================================================
  723. ELSE IF (MFR2.EQ.29) THEN
  724. C
  725. C Elements COQUE
  726. C ==============
  727. IF (MFR.EQ.3.OR.MFR.EQ.5.OR.MFR.EQ.9) THEN
  728. NPINT=infmod(1)
  729. IF(NPINT.EQ.0) THEN
  730. NBROBL=3
  731. SEGINI NOMID
  732. LESOBL(1)='QINF '
  733. LESOBL(2)='Q '
  734. LESOBL(3)='QSUP '
  735. ELSE
  736. NBROBL = 1
  737. SEGINI NOMID
  738. LESOBL(1)='Q '
  739. ENDIF
  740. C
  741. C Autres elements
  742. C ===============
  743. ELSE
  744. NBROBL=1
  745. SEGINI NOMID
  746. LESOBL(1)='Q '
  747. ENDIF
  748. C =================================================================
  749. C FORMULATION DIFFUSION
  750. C =================================================================
  751. ELSE IF (MFR2.EQ.73) THEN
  752. C
  753. C Recuperation du LISTMOTS dans IVAMOD(1)
  754. MLMOT1=IVAMOD(1)
  755.  
  756. C Recuperation de l'inconnue DUALE
  757. CCOMP =MLMOT1.MOTS(2)
  758. NBCHAR=LONG(CCOMP)
  759. IF (NBCHAR .GT. 4) THEN
  760. CALL ERREUR(536)
  761. RETURN
  762. ENDIF
  763. C
  764. C Elements COQUE
  765. C ==============
  766. IF (MFR.EQ.3 .OR. MFR.EQ.5 .OR. MFR.EQ.9) THEN
  767. NPINT=infmod(1)
  768. IF(NPINT.EQ.0) THEN
  769. NBROBL=3
  770. SEGINI NOMID
  771. LESOBL(1)=CCOMP(1:NBCHAR)//'IN '
  772. LESOBL(2)=CCOMP
  773. LESOBL(3)=CCOMP(1:NBCHAR)//'SU '
  774. ELSE
  775. NBROBL = 1
  776. SEGINI NOMID
  777. LESOBL(1)=CCOMP
  778. ENDIF
  779. C
  780. C Autres elements
  781. C ===============
  782. ELSE
  783. NBROBL = 1
  784. SEGINI NOMID
  785. LESOBL(1)=CCOMP
  786. ENDIF
  787. C =================================================================
  788. C FORMULATION CHANGEMENT_PHASE
  789. C =================================================================
  790. ELSE IF (MFR2.EQ.30) THEN
  791. C
  792. IF (IMODEL.CMATEE.EQ.'CHPH_PAR') THEN
  793. NBROBL=1
  794. NBRFAC=0
  795. SEGINI,NOMID
  796. MLMOT1=IMODEL.IVAMOD(1)
  797. NOMID.LESOBL(1)=MLMOT1.MOTS(2)
  798. ELSE IF (IMODEL.CMATEE.EQ.'CHPH_SOL')THEN
  799. NBROBL=2
  800. NBRFAC=0
  801. SEGINI,NOMID
  802. MLMOT1=IMODEL.IVAMOD(1)
  803. NOMID.LESOBL(1)=MLMOT1.MOTS(3)
  804. NOMID.LESOBL(2)=MLMOT1.MOTS(4)
  805. ENDIF
  806. C =================================================================
  807. ENDIF
  808. C
  809. IF (NOMID.NE.0) THEN
  810. if (ifomod.eq.6) then
  811. nbrfa0 = nbrfac
  812. NBRFAC = NBROBL + (nbrfa0*2)
  813. segadj nomid
  814. do imo = 1,nbrobl
  815. lesfac(nbrfa0 + imo)(2:4) = lesobl(imo)(1:3)
  816. lesfac(nbrfa0 + imo)(1:1) = 'I'
  817. enddo
  818. do imo = 1,nbrfa0
  819. lesfac(nbrfa0+nbrobl+imo)(2:4) = lesfac(imo)(1:3)
  820. lesfac(nbrfa0+nbrobl+imo)(1:1) = 'I'
  821. enddo
  822. endif
  823. ENDIF
  824. C
  825. IF (NOMID.NE.0) SEGACT,NOMID*NOMOD
  826. IPNOMC=NOMID
  827. END
  828.  
  829.  

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