Télécharger idvari.eso

Retour à la liste

Numérotation des lignes :

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

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