Télécharger idvari.eso

Retour à la liste

Numérotation des lignes :

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

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