Télécharger idvari.eso

Retour à la liste

Numérotation des lignes :

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

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