Télécharger idvari.eso

Retour à la liste

Numérotation des lignes :

idvari
  1. C IDVARI SOURCE OF166741 24/10/07 21:15:28 12016
  2.  
  3. SUBROUTINE IDVARI(MFR,IPMODL,IPCOMP,NBROBL,NBRFAC)
  4.  
  5. *--------------------------------------------------------------------*
  6. * *
  7. * RECHERCHE DES NOMS DE COMPOSANTES DES VARIABLES INTERNES *
  8. * ________________________________________________________ *
  9. * *
  10. * ENTREES: *
  11. * *
  12. * MFR NUMERO DE LA FORMULATION *
  13. * IPMODL OBJET MODEL ELEMENTAIRE ( SEGMENT ACTIF ) *
  14. * *
  15. * SORTIES: *
  16. * *
  17. * IPCOMP POINTEUR SUR LES LISTES DE NOMS DE COMPOSANTES *
  18. * obligatoires et facultatives *
  19. * *
  20. * NBROBL nombre de composantes obligatoires *
  21. * *
  22. * NBRFAC nombre de composantes facultatives *
  23. * *
  24. *--------------------------------------------------------------------*
  25. *
  26. IMPLICIT INTEGER(I-N)
  27. IMPLICIT REAL*8(A-H,O-Z)
  28.  
  29. -INC PPARAM
  30. -INC CCOPTIO
  31. -INC CCHAMP
  32. C==DEB= FORMULATION HHO == Include specifique ==========================
  33. -INC CCHHOPA
  34. C==FIN= FORMULATION HHO ================================================
  35.  
  36. -INC SMMODEL
  37. POINTEUR NOMID1.NOMID
  38.  
  39. CHARACTER*16 MOMODL(200)
  40.  
  41. IMODEL=IPMODL
  42.  
  43. nomid=imodel.lnomid(10)
  44. IF (nomid.NE.0) THEN
  45. segini,nomid1=nomid
  46. nbrobl=nomid1.lesobl(/2)
  47. nbrfac=nomid1.lesfac(/2)
  48. ipcomp=nomid1
  49. return
  50. endif
  51.  
  52. IPCOMP = 0
  53. NBROBL = 0
  54. NBRFAC = 0
  55. NOMID = 0
  56.  
  57. NMAT = imodel.MATMOD(/2)
  58.  
  59. IF (FORMOD(1).NE.'MECANIQUE'.AND.FORMOD(1).NE.'POREUX') GOTO 1300
  60. C*=====================================================================*
  61. C*= Formulation 'MECANIQUE' =*
  62. C*=====================================================================*
  63. CALL MODLIN(MOMODL,NMOD)
  64. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(1))
  65. IF (IPLAC.EQ.0) GOTO 99
  66. C
  67. MATEPL = 0
  68. C
  69. IF (NMAT.GE.2) THEN
  70. CALL MODELA(MOMODL,NMOD)
  71. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(2))
  72. *
  73. * TEST POUR LE CAS 'SECTION'
  74. *
  75. IF (IPLAC.EQ.7) THEN
  76. MATEPL=41
  77. GOTO 150
  78. ENDIF
  79. *
  80. IF (IPLAC.EQ.0) THEN
  81. MATEPL=0
  82. INMAT=2
  83. ELSE IF (IPLAC.EQ.9.OR.IPLAC.EQ.10) THEN
  84. MATEPL=10
  85. INMAT=3
  86. ELSE
  87. MATEPL=0
  88. INMAT=3
  89. IF (IPLAC.NE.1.AND.IPLAC.NE.6.
  90. & AND.IPLAC.NE.2.AND.IPLAC.NE.11) GOTO 150
  91. ENDIF
  92. ELSE
  93. IF (IPLAC.EQ.1) THEN
  94. MATEPL=0
  95. GOTO 150
  96. ENDIF
  97. GOTO 99
  98. ENDIF
  99. *
  100. * Comportement non lineaire
  101. * -------------------------
  102. 20 IF (NMAT.GE.INMAT) THEN
  103. CALL MODNLI(MOMODL,NMOD)
  104. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT))
  105. IF (IPLAC.EQ.0) GOTO 150
  106. INMAT=INMAT+1
  107. *
  108. * Debranchement suivant famille de modeles :
  109. * 100 => PLASTIQUE 200 => FLUAGE
  110. * 300 => VISCOPLASTIQUE 400 => ENDOMMAGEMENT
  111. * 500 => PLASTIQUE_ENDOM(MAGEMENT) 600 => NON_LINEAIRE
  112. * 700 => VISCO_EXTERNE 800 => IMPEDANCE
  113. *
  114. GOTO (100,200,300,400,500,600,700,800),IPLAC
  115. *
  116. * Comportement plastique
  117. * ----------------------
  118. 100 CONTINUE
  119.  
  120. IF (NMAT.GE.INMAT) THEN
  121. CALL MODPLA(MOMODL,NMOD)
  122. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT))
  123. IF (IPLAC.EQ.0) THEN
  124. * ISOTROPE
  125. MATEPL=5
  126. ELSE IF (IPLAC.EQ.1) THEN
  127. * ISOTROPE
  128. MATEPL=5
  129. INMAT=INMAT+1
  130. ELSE IF (IPLAC.EQ.2) THEN
  131. * PARFAIT
  132. MATEPL=1
  133. INMAT=INMAT+1
  134. ELSE IF (IPLAC.EQ.3) THEN
  135. * CINEMATIQUE
  136. MATEPL=4
  137. INMAT=INMAT+1
  138. ELSE IF (IPLAC.EQ.4) THEN
  139. * DRUCKER-PRAGER
  140. MATEPL=15
  141. INMAT=INMAT+1
  142. ELSE IF (IPLAC.EQ.5) THEN
  143. * DRUCKER-SIMPLE
  144. MATEPL=3
  145. INMAT=INMAT+1
  146. ELSE IF (IPLAC.EQ.6) THEN
  147. * BETON
  148. MATEPL=9
  149. INMAT=INMAT+1
  150. ELSE IF (IPLAC.EQ.7) THEN
  151. * CHABOCHE1
  152. MATEPL=7
  153. INMAT=INMAT+1
  154. ELSE IF (IPLAC.EQ.8) THEN
  155. * CHABOCHE2
  156. MATEPL=12
  157. INMAT=INMAT+1
  158. ELSE IF (IPLAC.EQ.9) THEN
  159. * TUYAU-FISSURE
  160. MATEPL=14
  161. INMAT=INMAT+1
  162. ELSE IF (IPLAC.EQ.10) THEN
  163. * ENDOMMAGEABLE
  164. MATEPL=26
  165. INMAT=INMAT+1
  166. ELSE IF (IPLAC.EQ.11) THEN
  167. * GAUVAIN
  168. MATEPL=16
  169. INMAT=INMAT+1
  170. ELSE IF (IPLAC.EQ.12) THEN
  171. * LINESPRING
  172. MATEPL=2
  173. INMAT=INMAT+1
  174. ELSE IF (IPLAC.EQ.13) THEN
  175. * UBIQUITOUS
  176. MATEPL=28
  177. INMAT=INMAT+1
  178. ELSE IF (IPLAC.EQ.14) THEN
  179. * GLOBAL
  180. MATEPL=32
  181. INMAT=INMAT+1
  182. ELSE IF (IPLAC.EQ.15) THEN
  183. * CAM-CLAY
  184. MATEPL=33
  185. INMAT=INMAT+1
  186. ELSE IF (IPLAC.EQ.16) THEN
  187. * MOHR COULOMB
  188. MATEPL=34
  189. INMAT=INMAT+1
  190. ELSE IF (IPLAC.EQ.17) THEN
  191. * JOINT_DILATANT
  192. MATEPL=35
  193. INMAT=INMAT+1
  194. ELSE IF (IPLAC.EQ.18) THEN
  195. * BETON_AXI
  196. MATEPL=36
  197. INMAT=INMAT+1
  198. ELSE IF (IPLAC.EQ.19) THEN
  199. * GURSON
  200. MATEPL=38
  201. INMAT=INMAT+1
  202. ELSE IF (IPLAC.EQ.20) THEN
  203. * BETON_UNI
  204. MATEPL=39
  205. INMAT=INMAT+1
  206. ELSE IF (IPLAC.EQ.21) THEN
  207. * ACIER_UNI
  208. MATEPL=40
  209. INMAT=INMAT+1
  210. ELSE IF (IPLAC.EQ.51) THEN
  211. * ANCRAGE_ACIER
  212. MATEPL=93
  213. INMAT=INMAT+1
  214. *
  215. * SECTION
  216. * MATEPL=41 VOIR CI DESSUS
  217. *
  218. ELSE IF (IPLAC.EQ.23) THEN
  219. * OTTOSEN (BETON)
  220. MATEPL=42
  221. INMAT=INMAT+1
  222. ELSE IF (IPLAC.EQ.83) THEN
  223. * OTTOVARI (BETON)
  224. MATEPL=148
  225. INMAT=INMAT+1
  226. ELSE IF (IPLAC.EQ.24) THEN
  227. * MAZARS_FIB
  228. MATEPL=46
  229. INMAT=INMAT+1
  230. ELSE IF (IPLAC.EQ.25) THEN
  231. * AMADEI_SAEB
  232. MATEPL=47
  233. INMAT=INMAT+1
  234. ELSE IF (IPLAC.EQ.26) THEN
  235. * HUJEUX
  236. MATEPL=48
  237. INMAT=INMAT+1
  238. ELSE IF (IPLAC.EQ.27) THEN
  239. * STEINBERG COCHRAN GUINAN
  240. MATEPL=49
  241. INMAT=INMAT+1
  242. ELSE IF (IPLAC.EQ.28) THEN
  243. * ZERILLI ARMSTRONG
  244. MATEPL=5
  245. INMAT=INMAT+1
  246. ELSE IF (IPLAC.EQ.29) THEN
  247. * PRESTON TONKS WALLACE
  248. MATEPL=52
  249. INMAT=INMAT+1
  250. ELSE IF (IPLAC.EQ.30) THEN
  251. * BETOCYCL
  252. MATEPL=54
  253. INMAT=INMAT+1
  254. ELSE IF (IPLAC.EQ.31) THEN
  255. * ROTATING CRACK
  256. MATEPL=55
  257. INMAT=INMAT+1
  258. ELSE IF (IPLAC.EQ.32) THEN
  259. * JOINT_SOFT
  260. MATEPL=56
  261. INMAT=INMAT+1
  262. ELSE IF (IPLAC.EQ.49) THEN
  263. * ANCRAGE_ELIGEHAUSEN
  264. MATEPL=91
  265. INMAT=INMAT+1
  266. ELSE IF (IPLAC.EQ.69) THEN
  267. * BILI_EFFX
  268. MATEPL=150
  269. INMAT=INMAT+1
  270. ELSE IF (IPLAC.EQ.33) THEN
  271. * BILI_MOMY
  272. MATEPL=57
  273. INMAT=INMAT+1
  274. ELSE IF (IPLAC.EQ.34) THEN
  275. * BILI_EFFZ
  276. MATEPL=58
  277. INMAT=INMAT+1
  278. ELSE IF (IPLAC.EQ.35) THEN
  279. * TAKEMO_MOMY
  280. MATEPL=59
  281. INMAT=INMAT+1
  282. ELSE IF (IPLAC.EQ.36) THEN
  283. * TAKEMO_EFFZ
  284. MATEPL=60
  285. INMAT=INMAT+1
  286. ELSE IF (IPLAC.EQ.37) THEN
  287. * BETON_INSA
  288. MATEPL=66
  289. INMAT=INMAT+1
  290. ELSE IF (IPLAC.EQ.38) THEN
  291. * ECROUIS_INSA
  292. MATEPL=67
  293. INMAT=INMAT+1
  294. ELSE IF (IPLAC.EQ.39) THEN
  295. * PARFAIT_INSA
  296. MATEPL=68
  297. INMAT=INMAT+1
  298. ELSE IF (IPLAC.EQ.40) THEN
  299. * ALONSO
  300. MATEPL=69
  301. INMAT=INMAT+1
  302. ELSE IF (IPLAC.EQ.41) THEN
  303. * PAKZAD
  304. MATEPL=71
  305. INMAT=INMAT+1
  306. ELSE IF (IPLAC.EQ.42) THEN
  307. * INFILL_UNI
  308. MATEPL=72
  309. INMAT=INMAT+1
  310. ELSE IF (IPLAC.EQ.43) THEN
  311. * CISAIL_NL
  312. MATEPL=73
  313. INMAT=INMAT+1
  314. ELSE IF (IPLAC.EQ.44) THEN
  315. * FRAGILE_UNI
  316. MATEPL=78
  317. INMAT=INMAT+1
  318. ELSE IF (IPLAC.EQ.45) THEN
  319. * BETON_BAEL
  320. MATEPL=79
  321. INMAT=INMAT+1
  322. ELSE IF (IPLAC.EQ.46) THEN
  323. * PARFAIT_UNI
  324. MATEPL=80
  325. INMAT=INMAT+1
  326. ELSE IF (IPLAC.EQ.50) THEN
  327. * ANCRAGE_PARFAIT
  328. MATEPL=92
  329. INMAT=INMAT+1
  330. *
  331. ELSE IF (IPLAC.EQ.47) THEN
  332. * STRUT_UNI
  333. MATEPL=83
  334. INMAT=INMAT+1
  335. ELSE IF (IPLAC.EQ.48) THEN
  336. * HINTE
  337. MATEPL= 89
  338. INMAT=INMAT+1
  339. ELSE IF (IPLAC.EQ.52) THEN
  340. * BETON_URGC
  341. MATEPL= 99
  342. INMAT=INMAT+1
  343. ELSE IF (IPLAC.EQ.53) THEN
  344. * UNILATERAL
  345. MATEPL=104
  346. INMAT=INMAT+1
  347. *
  348. * BCN
  349. ELSE IF (IPLAC.EQ.54) THEN
  350. c MRS_LADE
  351. MATEPL=111
  352. INMAT=INMAT+1
  353. ELSE IF (IPLAC.EQ.55) THEN
  354. c J2
  355. MATEPL=112
  356. INMAT=INMAT+1
  357. ELSE IF (IPLAC.EQ.56) THEN
  358. c RH_COULOMB
  359. MATEPL=113
  360. INMAT=INMAT+1
  361. ELSE IF (IPLAC.EQ.57) THEN
  362. c VMT_FEFP
  363. MATEPL=114
  364. INMAT=INMAT+1
  365. ELSE IF (IPLAC.EQ.58) THEN
  366. c RHMC_FEFP
  367. MATEPL=115
  368. INMAT=INMAT+1
  369. ELSE IF (IPLAC.EQ.59) THEN
  370. c POWDER_FEFP
  371. MATEPL=116
  372. INMAT=INMAT+1
  373. ELSE IF (IPLAC.EQ.60) THEN
  374. c POWDER_FEFP
  375. MATEPL=117
  376. INMAT=INMAT+1
  377. * BCN
  378. *
  379. ELSE IF (IPLAC.EQ.61) THEN
  380. * JOINT_COAT
  381. MATEPL=119
  382. INMAT=INMAT+1
  383.  
  384. ELSE IF (IPLAC.EQ.62) THEN
  385. * CONCRETE_UNI
  386. MATEPL=123
  387. INMAT=INMAT+1
  388. ELSE IF (IPLAC.EQ.63) THEN
  389. * JOINT_COAT
  390.  
  391. MATEPL=126
  392. INMAT=INMAT+1
  393. ELSE IF (IPLAC.EQ.64) THEN
  394. * INCO
  395. MATEPL=129
  396. INMAT=INMAT+1
  397. ELSE IF (IPLAC.EQ.65) THEN
  398. * DRUCKER_PRAGER2
  399. MATEPL= 140
  400. INMAT=INMAT+1
  401. ELSE IF (IPLAC.EQ.67) THEN
  402. * INTIMP
  403. MATEPL= 145
  404. INMAT=INMAT+1
  405. ELSE IF (IPLAC.EQ.68) THEN
  406. * INTJOI
  407. MATEPL= 146
  408. INMAT=INMAT+1
  409. ELSE IF (IPLAC.EQ.70) THEN
  410. * ISS_GRANGE
  411. MATEPL= 151
  412. INMAT=INMAT+1
  413. ELSE IF (IPLAC.EQ.71) THEN
  414. * RUP_THER
  415. MATEPL= 152
  416. INMAT=INMAT+1
  417. ELSE IF (IPLAC.EQ.72) THEN
  418. * RICBET_UNI
  419. MATEPL= 160
  420. INMAT=INMAT+1
  421. ELSE IF (IPLAC.EQ.73) THEN
  422. * BA1D
  423. MATEPL= 147
  424. INMAT=INMAT+1
  425. ELSE IF (IPLAC.EQ.74) THEN
  426. * ACLJ
  427. MATEPL=161
  428. INMAT=INMAT+1
  429. ELSE IF (IPLAC.EQ.75) THEN
  430. * DP_SOL
  431. MATEPL=162
  432. INMAT=INMAT+1
  433. ELSE IF (IPLAC.EQ.76) THEN
  434. * OUGLOVA
  435. MATEPL=175
  436. INMAT=INMAT+1
  437. ELSE IF (IPLAC.EQ.77) THEN
  438. * IWPR3D_SOL
  439. MATEPL=164
  440. INMAT=INMAT+1
  441. ELSE IF (IPLAC.EQ.78) THEN
  442. * NORTON
  443. MATEPL=181
  444. INMAT=INMAT+1
  445. ELSE IF (IPLAC.EQ.79) THEN
  446. * POLYNOMIAL
  447. MATEPL=182
  448. INMAT=INMAT+1
  449. ELSE IF (IPLAC.EQ.80) THEN
  450. * BLACKBURN
  451. MATEPL=183
  452. INMAT=INMAT+1
  453. ELSE IF (IPLAC.EQ.81) THEN
  454. * BLACKBURN_2
  455. MATEPL=184
  456. INMAT=INMAT+1
  457. ELSE IF (IPLAC.EQ.82) THEN
  458. * LEMAITRE
  459. MATEPL=185
  460. INMAT=INMAT+1
  461. ENDIF
  462. ELSE
  463. *
  464. * Option par defaut
  465. *
  466. MATEPL=5
  467. ENDIF
  468. GOTO 150
  469. *
  470. * Comportement FLUAGE
  471. * -------------------
  472. 200 CONTINUE
  473. IF (NMAT.GE.INMAT) THEN
  474. CALL MODFLU(MOMODL,NMOD)
  475. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT))
  476. IF (IPLAC.EQ.0 ) THEN
  477. * NORTON
  478. MATEPL=19
  479. ELSE IF (IPLAC.EQ.1 ) THEN
  480. * NORTON
  481. MATEPL=19
  482. INMAT=INMAT+1
  483. ELSE IF (IPLAC.EQ.2 ) THEN
  484. * BLACKBURN
  485. MATEPL=20
  486. INMAT=INMAT+1
  487. ELSE IF (IPLAC.EQ.3 ) THEN
  488. * RCCMR-316
  489. MATEPL=22
  490. INMAT=INMAT+1
  491. ELSE IF (IPLAC.EQ.4 ) THEN
  492. * RCCMR-304
  493. MATEPL=23
  494. INMAT=INMAT+1
  495. ELSE IF (IPLAC.EQ.5 ) THEN
  496. * LEMAITRE
  497. MATEPL=24
  498. INMAT=INMAT+1
  499. ELSE IF (IPLAC.EQ.6 ) THEN
  500. * POLYNOMIAL
  501. MATEPL=21
  502. INMAT=INMAT+1
  503. ELSE IF (IPLAC.EQ.7 ) THEN
  504. * BLACKBURN_2
  505. MATEPL=61
  506. INMAT=INMAT+1
  507. ELSE IF (IPLAC.EQ.8 ) THEN
  508. * CERAMIQUE
  509. MATEPL=65
  510. INMAT=INMAT+1
  511. ELSE IF (IPLAC.EQ.9) THEN
  512. * MAXWELL
  513. MATEPL=74
  514. INMAT=INMAT+1
  515. ELSE IF (IPLAC.EQ.10 ) THEN
  516. * COMETE
  517. MATEPL=84
  518. INMAT=INMAT+1
  519. ELSE IF (IPLAC.EQ.11 ) THEN
  520. * X11
  521. MATEPL=85
  522. INMAT=INMAT+1
  523. ELSE IF (IPLAC.EQ.12 ) THEN
  524. * CCPL
  525. MATEPL=86
  526. INMAT=INMAT+1
  527. ELSE IF (IPLAC.EQ.13 ) THEN
  528. * BPEL_RELAX
  529. MATEPL=95
  530. INMAT=INMAT+1
  531. ELSE IF (IPLAC.EQ.14 ) THEN
  532. * BETON_URGC
  533. MATEPL=101
  534. INMAT=INMAT+1
  535. ELSE IF (IPLAC.EQ.15 ) THEN
  536. * SODERBERG
  537. MATEPL=102
  538. INMAT=INMAT+1
  539. ELSE IF (IPLAC.EQ.16 ) THEN
  540. * MAXOTT
  541. MATEPL=106
  542. INMAT=INMAT+1
  543. ELSE IF (IPLAC.EQ.17 ) THEN
  544. * FBB1
  545. MATEPL=127
  546. INMAT=INMAT+1
  547. ELSE IF (IPLAC.EQ.18 ) THEN
  548. * FBB2
  549. MATEPL=128
  550. INMAT=INMAT+1
  551.  
  552. ELSE IF (IPLAC.EQ.19 ) THEN
  553. * KELVIN
  554. MATEPL=174
  555. INMAT=INMAT+1
  556.  
  557. ENDIF
  558. ELSE
  559. MATEPL=19
  560. ENDIF
  561. GOTO 150
  562. *
  563. * Comportement VISCOPLASTIQUE
  564. * ---------------------------
  565. 300 CONTINUE
  566. IF (NMAT.GE.INMAT) THEN
  567. CALL MODVIS(MOMODL,NMOD)
  568. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT))
  569. IF (IPLAC.EQ.0 ) THEN
  570. * ONERA
  571. MATEPL=25
  572. ELSE IF (IPLAC.EQ.1 ) THEN
  573. * GUIONNET
  574. MATEPL=17
  575. INMAT=INMAT+1
  576. ELSE IF (IPLAC.EQ.2 ) THEN
  577. * ONERA
  578. MATEPL=25
  579. INMAT=INMAT+1
  580. ELSE IF (IPLAC.EQ.3 ) THEN
  581. * VISCODOMMAGE
  582. MATEPL=29
  583. INMAT=INMAT+1
  584. ELSE IF (IPLAC.EQ.5 ) THEN
  585. * POUDRE_A
  586. MATEPL=44
  587. INMAT=INMAT+1
  588. ELSE IF (IPLAC.EQ.6 ) THEN
  589. * POUDRE_B
  590. MATEPL=45
  591. INMAT=INMAT+1
  592. ELSE IF (IPLAC.EQ.7 ) THEN
  593. * OHNO
  594. MATEPL=25
  595. INMAT=INMAT+1
  596. ELSE IF (IPLAC.EQ.8 ) THEN
  597. * DDI
  598. MATEPL=63
  599. INMAT=INMAT+1
  600. ELSE IF (IPLAC.EQ.9 ) THEN
  601. * KOCK
  602. MATEPL=70
  603. INMAT=INMAT+1
  604. ELSE IF (IPLAC.EQ.10 ) THEN
  605. * NOUAILHAS_A
  606. MATEPL=76
  607. INMAT=INMAT+1
  608. ELSE IF (IPLAC.EQ.11 ) THEN
  609. * NOUAILHAS_B
  610. MATEPL=77
  611. INMAT=INMAT+1
  612. ELSE IF (IPLAC.EQ.12 ) THEN
  613. * VISK2
  614. MATEPL=82
  615. INMAT=INMAT+1
  616. ELSE IF (IPLAC.EQ.13 ) THEN
  617. * VISCOHINTE
  618. MATEPL=90
  619. INMAT=INMAT+1
  620. ELSE IF (IPLAC.EQ.14 ) THEN
  621. * MISTRAL
  622. MATEPL=94
  623. INMAT=INMAT+1
  624. ELSE IF (IPLAC.EQ.15 ) THEN
  625. * BETON_URGC
  626. MATEPL=100
  627. INMAT=INMAT+1
  628. ELSE IF (IPLAC.EQ.16 ) THEN
  629. * LEMENDO
  630. MATEPL=103
  631. INMAT=INMAT+1
  632. ELSE IF (IPLAC.EQ.17 ) THEN
  633. * FLUNOR2
  634. MATEPL=105
  635. INMAT=INMAT+1
  636. ELSE IF (IPLAC.EQ.18 ) THEN
  637. * GATT_MONERIE
  638. MATEPL=107
  639. INMAT=INMAT+1
  640. ELSE IF (IPLAC.EQ.19 ) THEN
  641. * UO2
  642. MATEPL=108
  643. INMAT=INMAT+1
  644. ELSE IF (IPLAC.EQ.20 ) THEN
  645. * BETON_URGC_ENDO
  646. MATEPL=122
  647. INMAT=INMAT+1
  648. ELSE IF (IPLAC.EQ.21 ) THEN
  649. * DOUBLE ENDOMMAGEMENT
  650. MATEPL=130
  651. INMAT=INMAT+1
  652. ELSE IF (IPLAC.EQ.22 ) THEN
  653. * CHAB_SINH_R
  654. MATEPL=136
  655. INMAT=INMAT+1
  656. ELSE IF (IPLAC.EQ.23 ) THEN
  657. * CHAB_SINH_X
  658. MATEPL=137
  659. INMAT=INMAT+1
  660. ELSE IF (IPLAC.EQ.24 ) THEN
  661. * CHAB_NOR_R
  662. MATEPL=138
  663. INMAT=INMAT+1
  664. ELSE IF (IPLAC.EQ.25 ) THEN
  665. * CHAB_NOR_X
  666. MATEPL=139
  667. INMAT=INMAT+1
  668. ELSE IF (IPLAC.EQ.26 ) THEN
  669. * PELLET
  670. MATEPL=142
  671. INMAT=INMAT+1
  672. ELSE IF (IPLAC.EQ.27 ) THEN
  673. * FLUTRA
  674. MATEPL=143
  675. INMAT=INMAT+1
  676. ELSE IF (IPLAC.EQ.28 ) THEN
  677. * SYCO1
  678. MATEPL=153
  679. INMAT=INMAT+1
  680. ELSE IF (IPLAC.EQ.29 ) THEN
  681. * SYCO2
  682. MATEPL=154
  683. INMAT=INMAT+1
  684. ELSE IF (IPLAC.EQ.30 ) THEN
  685. * CHABOCHE
  686. MATEPL=165
  687. INMAT=INMAT+1
  688. ELSE IF (IPLAC.EQ.31 ) THEN
  689. * FLDO3D SELLIER
  690. MATEPL=187
  691. INMAT=INMAT+1
  692. ELSE IF (IPLAC.EQ.32 ) THEN
  693. * INCL3D SELLIER
  694. MATEPL=188
  695. INMAT=INMAT+1
  696. ELSE IF (IPLAC.EQ.33 ) THEN
  697. * ENDO3D SELLIER
  698. MATEPL=189
  699. INMAT=INMAT+1
  700. ELSE IF (IPLAC.EQ.34 ) THEN
  701. * FLUISO3D SELLIER
  702. MATEPL=190
  703. INMAT=INMAT+1
  704. ELSE IF (IPLAC.EQ.35 ) THEN
  705. * FLUORTHO3D SELLIER
  706. MATEPL=191
  707. INMAT=INMAT+1
  708. ENDIF
  709. ELSE
  710. MATEPL=25
  711. ENDIF
  712. GOTO 150
  713. *
  714. * Comportement type ENDOMMAGEMENT
  715. * ---------------------------
  716. 400 CONTINUE
  717. IF (NMAT.GE.INMAT) THEN
  718. CALL MODEND(MOMODL,NMOD)
  719. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT))
  720. IF (IPLAC.EQ.0 ) THEN
  721. * MAZARS ( par défaut)
  722. MATEPL=30
  723. ELSE IF (IPLAC.EQ.1 ) THEN
  724. * MAZARS
  725. MATEPL=30
  726. INMAT=INMAT+1
  727. ELSE IF (IPLAC.EQ.2 ) THEN
  728. * UNILATERAL
  729. MATEPL=31
  730. INMAT=INMAT+1
  731. ELSE IF (IPLAC.EQ.3 ) THEN
  732. * ROTATING_CRACK
  733. MATEPL=37
  734. INMAT=INMAT+1
  735. ELSE IF (IPLAC.EQ.4 ) THEN
  736. * SIC_SIC
  737. MATEPL=88
  738. INMAT=INMAT+1
  739. ELSE IF (IPLAC.EQ.5 ) THEN
  740. * MICROPLANS
  741. MATEPL=96
  742. INMAT=INMAT+1
  743. ELSE IF (IPLAC.EQ.6 ) THEN
  744. * VISCOUNILATERAL
  745. MATEPL=97
  746. INMAT=INMAT+1
  747. ELSE IF (IPLAC.EQ.7 ) THEN
  748. * MICROISO
  749. MATEPL=98
  750. INMAT=INMAT+1
  751. * BCN
  752.  
  753. ELSE IF (IPLAC.EQ.8 ) THEN
  754. * MODIFIED VON MISES
  755. MATEPL=118
  756. INMAT=INMAT+1
  757. * BCN
  758. ELSE IF (IPLAC.EQ.9) THEN
  759. * CRUSH-CRACK
  760. MATEPL=124
  761. INMAT=INMAT+1
  762. * RDj
  763.  
  764. ELSE IF (IPLAC.EQ.10) THEN
  765. * DAMAGE_TC - R. Faria & J. Oliver
  766. MATEPL= 125
  767. INMAT=INMAT+1
  768.  
  769. ELSE IF (IPLAC.EQ.11) THEN
  770. * SICSCAL
  771. MATEPL= 131
  772. INMAT=INMAT+1
  773. ELSE IF (IPLAC.EQ.12) THEN
  774. * SICTENS
  775. MATEPL= 132
  776. INMAT=INMAT+1
  777. ELSE IF (IPLAC.EQ.13) THEN
  778. * DESMORAT
  779. MATEPL=134
  780. INMAT=INMAT+1
  781. ELSE IF (IPLAC.EQ.14) THEN
  782. * Fatigue damage model (fatsin)
  783. MATEPL=141
  784. INMAT=INMAT+1
  785. ELSE IF (IPLAC.EQ.15) THEN
  786. * RICRAG
  787. MATEPL=144
  788. INMAT=INMAT+1
  789. C +BR
  790. ELSE IF (IPLAC.EQ.16) THEN
  791. * GLRC_DM
  792. MATEPL=157
  793. INMAT=INMAT+1
  794. ELSE IF (IPLAC.EQ.17) THEN
  795. * RICBET
  796. MATEPL=158
  797. INMAT=INMAT+1
  798. ELSE IF (IPLAC.EQ.18) THEN
  799. * RICCOQ
  800. MATEPL=159
  801. INMAT=INMAT+1
  802. ELSE IF (IPLAC.EQ.19) THEN
  803. * CONCYC
  804. MATEPL=163
  805. INMAT=INMAT+1
  806. ELSE IF (IPLAC.EQ.20) THEN
  807. * EFEM
  808. MATEPL=177
  809. INMAT=INMAT+1
  810.  
  811. C -BR
  812. ENDIF
  813.  
  814. ELSE
  815. MATEPL=30
  816. ENDIF
  817. GOTO 150
  818. *
  819. * Comportement type PLASTIQUE_ENDOM(MAGEMENT)
  820. * -------------------------------------------
  821. 500 CONTINUE
  822. IF (NMAT.GE.INMAT) THEN
  823. CALL MODPLE(MOMODL,NMOD)
  824. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT))
  825. IF (IPLAC.EQ.0 ) THEN
  826. * PSURY ( par défaut)
  827. MATEPL=51
  828. ELSE IF (IPLAC.EQ.1 ) THEN
  829. * PSURY
  830. MATEPL=51
  831. INMAT=INMAT+1
  832. ELSE IF (IPLAC.EQ.2 ) THEN
  833. * ROUSSELIER
  834. MATEPL=62
  835. INMAT=INMAT+1
  836. ELSE IF (IPLAC.EQ.3 ) THEN
  837. * GURSON2
  838. MATEPL=64
  839. INMAT=INMAT+1
  840. ELSE IF (IPLAC.EQ.4 ) THEN
  841. * DRAGON
  842. MATEPL=75
  843. INMAT=INMAT+1
  844. ELSE IF (IPLAC.EQ.5 ) THEN
  845. * BETON_URGC
  846. MATEPL=120
  847. INMAT=INMAT+1
  848. ELSE IF (IPLAC.EQ.6 ) THEN
  849. * BETON_INSA
  850. MATEPL=121
  851. INMAT=INMAT+1
  852. ELSE IF (IPLAC.EQ.7 ) THEN
  853. * BETON_DYNAR_LMT
  854. MATEPL=133
  855. INMAT=INMAT+1
  856. ELSE IF (IPLAC.EQ.8) THEN
  857. * ENDO_PLAS
  858. MATEPL = 135
  859. INMAT = INMAT+1
  860. ELSE IF (IPLAC.EQ.9) THEN
  861. * GERNAY
  862. MATEPL = 155
  863. INMAT = INMAT+1
  864. ELSE IF (IPLAC.EQ.10) THEN
  865. * WELLS
  866. MATEPL = 156
  867. INMAT = INMAT+1
  868. ENDIF
  869. ELSE
  870. MATEPL=51
  871. ENDIF
  872. GOTO 150
  873. *
  874. * Comportement type NON_LINEAIRE
  875. * ------------------------------
  876. 600 CONTINUE
  877. IF (NMAT.GE.INMAT) THEN
  878. CALL MODENL(MOMODL,NMOD)
  879. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT))
  880. IF (IPLAC.EQ.1 ) THEN
  881. * EQUIPLAS
  882. MATEPL=87
  883. ENDIF
  884. ENDIF
  885. GO TO 150
  886. *
  887. * Comportement type VISCO_EXTERNE
  888. * -------------------------------
  889. 700 CONTINUE
  890. * Tous les modeles 'VISCO_EXTERNE' ont les 4 memes variables
  891. * internes pre-definies
  892. MATEPL = -101
  893. GO TO 150
  894. *
  895. * Comportement type IMPEDANCE
  896. * ------------------------------
  897. 800 CONTINUE
  898. IF (NMAT.GE.INMAT) THEN
  899. CALL MODIMP(MOMODL,NMOD)
  900. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT))
  901. IF (IPLAC.EQ.3.) THEN
  902. MATEPL = 11
  903. GO TO 150
  904. ELSEIF(IPLAC.LT.0.OR.IPLAC.GT.4) THEN
  905. GOTO 99
  906. ELSE
  907. MATEPL = 10
  908. GOTO 150
  909. ENDIF
  910. ENDIF
  911. GOTO 150
  912. ENDIF
  913. *
  914. 150 CONTINUE
  915. C
  916. C COQUE INTEGREE OU PAS ?
  917. NPINT=INFMOD(1)
  918. C
  919. MELE=NEFMOD
  920. C== FORMULATION HHO == MECANIQUE + idem qu'en MASSIF ==> MFR = 1 =======
  921. IF (MFR.EQ.HHO_MFR_ELEMENT) MFR = 1
  922. C== FORMULATION HHO ====================================================
  923. C
  924. IF (MATEPL.EQ.19.OR.MATEPL.EQ.21) THEN
  925. CALL IDVAR1(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  926. C
  927. ELSE IF (MATEPL.EQ.10.OR.MATEPL.EQ.11) THEN
  928. CALL IDVA13(MFR,IPMODL,IPCOMP,NBROBL,NBRFAC,MATEPL)
  929. if (matepl.eq.11.and.inmat.lt.nmat) then
  930. inmat = inmat + 1
  931. goto 20
  932. endif
  933. C
  934. ELSE IF (MATEPL.EQ.20.OR.MATEPL.EQ.22.OR.
  935. . MATEPL.EQ.23.OR.MATEPL.EQ.61) THEN
  936. CALL IDVAR2(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  937. C
  938. ELSE IF (MATEPL.EQ.84.OR.MATEPL.EQ.85.OR.
  939. . MATEPL.EQ.86.OR.MATEPL.EQ.102) THEN
  940. CALL IDVFLO(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  941. C
  942. ELSE IF (MATEPL.EQ.24.OR.MATEPL.EQ.74.OR.MATEPL.EQ.95.OR.
  943. . MATEPL.EQ.174) THEN
  944. CALL IDVAR3(MATEPL,MFR,IFOUR,IPCOMP,NBROBL,NBRFAC)
  945. C
  946. ELSE IF (MATEPL.EQ.25 .OR. MATEPL.EQ.63 .OR. MATEPL.EQ.70 .OR.
  947. & MATEPL.EQ.94 .OR. MATEPL.EQ.107 .OR.
  948. & MATEPL.EQ.108 .OR. MATEPL.EQ.130 .OR.
  949. & MATEPL.EQ.136 .OR. MATEPL.EQ.137 .OR.
  950. & MATEPL.EQ.138 .OR. MATEPL.EQ.139 .OR.
  951. & MATEPL.EQ.153 .OR. MATEPL.EQ.154.OR.
  952. & MATEPL.EQ.165 .OR.
  953. & MATEPL .EQ.187 .OR. MATEPL.EQ.188 .OR.
  954. c sellier
  955. & MATEPL .EQ.189 .OR. MATEPL.EQ.190 .OR.
  956. & MATEPL .EQ.191) THEN
  957. CALL IDVAR4(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  958. C
  959. ELSE IF (MATEPL.EQ.30.OR.MATEPL.EQ.31.OR.MATEPL.EQ.37.OR.
  960. & MATEPL.EQ.88.OR.
  961. & MATEPL.EQ.96.OR.MATEPL.EQ.97.OR.MATEPL.EQ.98.OR.
  962. & MATEPL.EQ.118.OR.MATEPL.EQ.124.OR.MATEPL.EQ.125.OR.
  963. & MATEPL.EQ.131.OR.MATEPL.EQ.132.OR.MATEPL.EQ.134.OR.
  964. & MATEPL.EQ.141.OR.MATEPL.EQ.144.OR.
  965. & MATEPL.EQ.157.OR.MATEPL.EQ.158.OR.
  966. & MATEPL.EQ.159.OR.MATEPL.EQ.163.OR.
  967. & MATEPL.EQ.177) THEN
  968. CALL IDVAR5(MATEPL,MFR,IFOUR,0,IPCOMP,NBROBL,NBRFAC)
  969. C
  970. C modeles ISPRA decembre 95 & BILIN_EFFX 2010 & ISS_GRANGE & RUP_THER
  971. C
  972. ELSE IF ((MATEPL.GE.54.AND.MATEPL.LE.60).OR.
  973. & (MATEPL.EQ.72.OR.MATEPL.EQ.73.OR.
  974. & MATEPL.EQ.91.OR.MATEPL.EQ.119.OR.MATEPL.EQ.126
  975. & .OR.MATEPL.EQ.129.OR.MATEPL.EQ.150.OR.MATEPL.EQ.151
  976. & .OR.MATEPL.EQ.152.OR.MATEPL.EQ.155.OR.MATEPL.EQ.156
  977. & .OR.MATEPL.EQ.160.OR.MATEPL.EQ.162.OR.MATEPL.EQ.164)) THEN
  978. CALL IDVAR7(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  979. C
  980. C modeles Nouailhas
  981. C
  982. ELSE IF (MATEPL.EQ.76) THEN
  983. CALL IDVAR8(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  984. ELSE IF (MATEPL.EQ.77) THEN
  985. CALL IDVAR9(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  986. C visk2
  987. ELSE IF (MATEPL.EQ.82) THEN
  988.  
  989. CALL IDVA10(MATEPL,MFR,MELE,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  990. C
  991. ELSE IF (MATEPL.EQ.89.OR.MATEPL.EQ.90) THEN
  992. CALL IDVA11(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  993. * BCN plastic and viscoplastic models
  994. ELSE IF ( MATEPL.EQ.111
  995. . .OR.MATEPL.EQ.112.OR.MATEPL.EQ.113
  996. . .OR.MATEPL.EQ.114.OR.MATEPL.EQ.115
  997. . .OR.MATEPL.EQ.116.OR.MATEPL.EQ.117) THEN
  998. CALL IDVA12(MATEPL,MFR,MELE,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  999. * BCN
  1000. ELSE
  1001. *
  1002. * ici tous les autres modeles
  1003. *
  1004. CALL IDVAR6(MATEPL,MFR,MELE,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  1005. ENDIF
  1006. if (ierr.ne.0) return
  1007. nomid = ipcomp
  1008. GOTO 999
  1009.  
  1010. C*=====================================================================*
  1011. C*= Autres formulations que 'MECANIQUE' =*
  1012. C*=====================================================================*
  1013. 1300 CONTINUE
  1014. IF (FORMOD(1).EQ.'LIAISON') THEN
  1015. IF (CMATEE.EQ.'NEWMOD') THEN
  1016. NBROBL = 1
  1017. NBRFAC = 0
  1018. SEGINI,NOMID
  1019. LESOBL(1) = 'FLIA'
  1020. ELSE
  1021. NBROBL = 2
  1022. NBRFAC = 3
  1023. SEGINI,NOMID
  1024. LESOBL(1) = 'FLIA'
  1025. LESOBL(2) = 'SLIA'
  1026. LESFAC(1) = 'VAEN'
  1027. LESFAC(2) = 'VARE'
  1028. LESFAC(3) = 'VAMA'
  1029. ENDIF
  1030. GOTO 999
  1031.  
  1032. ELSE IF (FORMOD(1).EQ.'DIFFUSION') THEN
  1033. IF (CMATEE.EQ.'VISQUEUS') THEN
  1034. if (ifour.eq.2) then
  1035. NBROBL = 3
  1036. else
  1037. NBROBL = 2
  1038. endif
  1039. NBRFAC = 0
  1040. SEGINI,NOMID
  1041. LESOBL(1) = 'VI1X'
  1042. LESOBL(2) = 'VI1Y'
  1043. if (ifour.eq.0) LESOBL(2) = 'VI1Z'
  1044. if (ifour.eq.2) LESOBL(3) = 'VI1Z'
  1045. ELSE
  1046. GOTO 99
  1047. ENDIF
  1048. GOTO 999
  1049. ENDIF
  1050. GOTO 99
  1051.  
  1052. C*=====================================================================*
  1053. C*= Autres cas : segment NOMID vide =*
  1054. C*=====================================================================*
  1055. 99 CONTINUE
  1056. SEGINI,NOMID
  1057.  
  1058. 999 CONTINUE
  1059. SEGACT,NOMID*NOMOD
  1060. IPCOMP = NOMID
  1061. *
  1062. * pour les elements xfem on utilise un MCHELM de TYPE 'ENRICHIS' avec
  1063. * pour composantes H F1 F2 ... contenant des pointeurs vers des LISTreel
  1064. * dont les valeurs sont les level set aux noeuds de l'EF enrichi
  1065. * => on supprime cette partie (BP, le 23.09.2009)
  1066. * IF ( MELE.EQ.263) then
  1067. * ENDIF
  1068.  
  1069. RETURN
  1070. END
  1071.  
  1072.  
  1073.  
  1074.  

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