Télécharger idvari.eso

Retour à la liste

Numérotation des lignes :

  1. C IDVARI SOURCE PASCAL 19/02/20 21:15:22 10116
  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. * ONERA
  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. * ONERA
  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. * NOUAILHAS_A
  586. MATEPL=76
  587. INMAT=INMAT+1
  588. ELSE IF (IPLAC.EQ.11 ) THEN
  589. * NOUAILHAS_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. ELSE IF (IPLAC.EQ.30 ) THEN
  665. * CHABOCHE
  666. MATEPL=165
  667. INMAT=INMAT+1
  668. ENDIF
  669. ELSE
  670. MATEPL=25
  671. ENDIF
  672. GOTO 150
  673. *
  674. * Comportement type ENDOMMAGEMENT
  675. * ---------------------------
  676. 400 CONTINUE
  677. IF (NMAT.GE.INMAT) THEN
  678. CALL MODEND(MOMODL,NMOD)
  679. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT))
  680. IF (IPLAC.EQ.0 ) THEN
  681. * MAZARS ( par défaut)
  682. MATEPL=30
  683. ELSE IF (IPLAC.EQ.1 ) THEN
  684. * MAZARS
  685. MATEPL=30
  686. INMAT=INMAT+1
  687. ELSE IF (IPLAC.EQ.2 ) THEN
  688. * UNILATERAL
  689. MATEPL=31
  690. INMAT=INMAT+1
  691. ELSE IF (IPLAC.EQ.3 ) THEN
  692. * ROTATING_CRACK
  693. MATEPL=37
  694. INMAT=INMAT+1
  695. ELSE IF (IPLAC.EQ.4 ) THEN
  696. * SIC_SIC
  697. MATEPL=88
  698. INMAT=INMAT+1
  699. ELSE IF (IPLAC.EQ.5 ) THEN
  700. * MICROPLANS
  701. MATEPL=96
  702. INMAT=INMAT+1
  703. ELSE IF (IPLAC.EQ.6 ) THEN
  704. * VISCOUNILATERAL
  705. MATEPL=97
  706. INMAT=INMAT+1
  707. ELSE IF (IPLAC.EQ.7 ) THEN
  708. * MICROISO
  709. MATEPL=98
  710. INMAT=INMAT+1
  711. * BCN
  712.  
  713. ELSE IF (IPLAC.EQ.8 ) THEN
  714. * MODIFIED VON MISES
  715. MATEPL=118
  716. INMAT=INMAT+1
  717. * BCN
  718. ELSE IF (IPLAC.EQ.9) THEN
  719. * CRUSH-CRACK
  720. MATEPL=124
  721. INMAT=INMAT+1
  722. * RDj
  723.  
  724. ELSE IF (IPLAC.EQ.10) THEN
  725. * DAMAGE_TC - R. Faria & J. Oliver
  726. MATEPL= 125
  727. INMAT=INMAT+1
  728.  
  729. ELSE IF (IPLAC.EQ.11) THEN
  730. * SICSCAL
  731. MATEPL= 131
  732. INMAT=INMAT+1
  733. ELSE IF (IPLAC.EQ.12) THEN
  734. * SICTENS
  735. MATEPL= 132
  736. INMAT=INMAT+1
  737. ELSE IF (IPLAC.EQ.13) THEN
  738. * DESMORAT
  739. MATEPL=134
  740. INMAT=INMAT+1
  741. ELSE IF (IPLAC.EQ.14) THEN
  742. * Fatigue damage model (fatsin)
  743. MATEPL=141
  744. INMAT=INMAT+1
  745. ELSE IF (IPLAC.EQ.15) THEN
  746. * RICRAG
  747. MATEPL=144
  748. INMAT=INMAT+1
  749. C +BR
  750. ELSE IF (IPLAC.EQ.16) THEN
  751. * GLRC_DM
  752. MATEPL=157
  753. INMAT=INMAT+1
  754. ELSE IF (IPLAC.EQ.17) THEN
  755. * RICBET
  756. MATEPL=158
  757. INMAT=INMAT+1
  758. ELSE IF (IPLAC.EQ.18) THEN
  759. * RICCOQ
  760. MATEPL=159
  761. INMAT=INMAT+1
  762. ELSE IF (IPLAC.EQ.19) THEN
  763. * CONCYC
  764. MATEPL=163
  765. INMAT=INMAT+1
  766. ELSE IF (IPLAC.EQ.20) THEN
  767. * EFEM
  768. MATEPL=177
  769. INMAT=INMAT+1
  770.  
  771. C -BR
  772. ENDIF
  773.  
  774. ELSE
  775. MATEPL=30
  776. ENDIF
  777. GOTO 150
  778. *
  779. * Comportement type PLASTIQUE_ENDOM(MAGEMENT)
  780. * -------------------------------------------
  781. 500 CONTINUE
  782. IF (NMAT.GE.INMAT) THEN
  783. CALL MODPLE(MOMODL,NMOD)
  784. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT))
  785. IF (IPLAC.EQ.0 ) THEN
  786. * PSURY ( par défaut)
  787. MATEPL=51
  788. ELSE IF (IPLAC.EQ.1 ) THEN
  789. * PSURY
  790. MATEPL=51
  791. INMAT=INMAT+1
  792. ELSE IF (IPLAC.EQ.2 ) THEN
  793. * ROUSSELIER
  794. MATEPL=62
  795. INMAT=INMAT+1
  796. ELSE IF (IPLAC.EQ.3 ) THEN
  797. * GURSON2
  798. MATEPL=64
  799. INMAT=INMAT+1
  800. ELSE IF (IPLAC.EQ.4 ) THEN
  801. * DRAGON
  802. MATEPL=75
  803. INMAT=INMAT+1
  804. ELSE IF (IPLAC.EQ.5 ) THEN
  805. * BETON_URGC
  806. MATEPL=120
  807. INMAT=INMAT+1
  808. ELSE IF (IPLAC.EQ.6 ) THEN
  809. * BETON_INSA
  810. MATEPL=121
  811. INMAT=INMAT+1
  812. ELSE IF (IPLAC.EQ.7 ) THEN
  813. * BETON_DYNAR_LMT
  814. MATEPL=133
  815. INMAT=INMAT+1
  816. ELSE IF (IPLAC.EQ.8) THEN
  817. * ENDO_PLAS
  818. MATEPL = 135
  819. INMAT = INMAT+1
  820. ELSE IF (IPLAC.EQ.9) THEN
  821. * GERNAY
  822. MATEPL = 155
  823. INMAT = INMAT+1
  824. ELSE IF (IPLAC.EQ.10) THEN
  825. * WELLS
  826. MATEPL = 156
  827. INMAT = INMAT+1
  828. ENDIF
  829. ELSE
  830. MATEPL=51
  831. ENDIF
  832. GOTO 150
  833. *
  834. * Comportement type NON_LINEAIRE
  835. * ------------------------------
  836. 600 CONTINUE
  837. IF (NMAT.GE.INMAT) THEN
  838. CALL MODENL(MOMODL,NMOD)
  839. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT))
  840. IF (IPLAC.EQ.1 ) THEN
  841. * EQUIPLAS
  842. MATEPL=87
  843. ENDIF
  844. ENDIF
  845. GO TO 150
  846. *
  847. * Comportement type VISCO_EXTERNE
  848. * -------------------------------
  849. 700 CONTINUE
  850. * Tous les modeles 'VISCO_EXTERNE' ont les 4 memes variables
  851. * internes pre-definies
  852. MATEPL = -101
  853. GO TO 150
  854. *
  855. * Comportement type IMPEDANCE
  856. * ------------------------------
  857. 800 CONTINUE
  858. IF (NMAT.GE.INMAT) THEN
  859. CALL MODIMP(MOMODL,NMOD)
  860. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT))
  861. IF (IPLAC.EQ.3.) THEN
  862. MATEPL = 11
  863. GO TO 150
  864. ELSEIF(IPLAC.LT.0.OR.IPLAC.GT.4) THEN
  865. GOTO 99
  866. ELSE
  867. MATEPL = 10
  868. GOTO 150
  869. ENDIF
  870. ENDIF
  871. GOTO 150
  872. ENDIF
  873. *
  874. 150 CONTINUE
  875. C
  876. C COQUE INTEGREE OU PAS ?
  877. IF (INFMOD(/1).NE.0)THEN
  878. NPINT=INFMOD(1)
  879. ELSE
  880. NPINT=0
  881. ENDIF
  882. C
  883. MELE=NEFMOD
  884. C
  885. IF (MATEPL.EQ.19.OR.MATEPL.EQ.21) THEN
  886. CALL IDVAR1(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  887. C
  888. ELSE IF (MATEPL.EQ.10.OR.MATEPL.EQ.11) THEN
  889. CALL IDVA13(MFR,IPMODL,IPCOMP,NBROBL,NBRFAC,MATEPL)
  890. if (matepl.eq.11.and.inmat.lt.nmat) then
  891. inmat = inmat + 1
  892. goto 20
  893. endif
  894. C
  895. ELSE IF (MATEPL.EQ.20.OR.MATEPL.EQ.22.OR.
  896. . MATEPL.EQ.23.OR.MATEPL.EQ.61) THEN
  897. CALL IDVAR2(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  898. C
  899. ELSE IF (MATEPL.EQ.84.OR.MATEPL.EQ.85.OR.
  900. . MATEPL.EQ.86.OR.MATEPL.EQ.102) THEN
  901. CALL IDVFLO(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  902. C
  903. ELSE IF (MATEPL.EQ.24.OR.MATEPL.EQ.74.OR.MATEPL.EQ.95.OR.
  904. . MATEPL.EQ.174) THEN
  905. CALL IDVAR3(MATEPL,MFR,IFOUR,IPCOMP,NBROBL,NBRFAC)
  906. C
  907. ELSE IF (MATEPL.EQ.25.OR.MATEPL.EQ.63.OR.MATEPL.EQ.70.OR.
  908. & MATEPL.EQ.94.OR.MATEPL.EQ.107.OR.
  909. & MATEPL.EQ.108.OR.MATEPL.EQ.130.OR.
  910. & MATEPL.EQ.136.OR.MATEPL.EQ.137.OR.
  911. & MATEPL.EQ.138.OR.MATEPL.EQ.139.OR.
  912. & MATEPL.EQ.153.OR.MATEPL.EQ.154.OR.MATEPL.EQ.165) THEN
  913. CALL IDVAR4(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  914. C
  915. ELSE IF (MATEPL.EQ.30.OR.MATEPL.EQ.31.OR.MATEPL.EQ.37.OR.
  916. & MATEPL.EQ.88.OR.
  917. & MATEPL.EQ.96.OR.MATEPL.EQ.97.OR.MATEPL.EQ.98.OR.
  918. & MATEPL.EQ.118.OR.MATEPL.EQ.124.OR.MATEPL.EQ.125.OR.
  919. & MATEPL.EQ.131.OR.MATEPL.EQ.132.OR.MATEPL.EQ.134.OR.
  920. & MATEPL.EQ.141.OR.MATEPL.EQ.144.OR.
  921. & MATEPL.EQ.157.OR.MATEPL.EQ.158.OR.
  922. & MATEPL.EQ.159.OR.MATEPL.EQ.163.OR.
  923. & MATEPL.EQ.177) THEN
  924. CALL IDVAR5(MATEPL,MFR,IFOUR,0,IPCOMP,NBROBL,NBRFAC)
  925. C
  926. C modeles ISPRA decembre 95 & BILIN_EFFX 2010 & ISS_GRANGE & RUP_THER
  927. C
  928. ELSE IF ((MATEPL.GE.54.AND.MATEPL.LE.60).OR.
  929. & (MATEPL.EQ.72.OR.MATEPL.EQ.73.OR.
  930. & MATEPL.EQ.91.OR.MATEPL.EQ.119.OR.MATEPL.EQ.126
  931. & .OR.MATEPL.EQ.129.OR.MATEPL.EQ.150.OR.MATEPL.EQ.151
  932. & .OR.MATEPL.EQ.152.OR.MATEPL.EQ.155.OR.MATEPL.EQ.156
  933. & .OR.MATEPL.EQ.160.OR.MATEPL.EQ.162.OR.MATEPL.EQ.164)) THEN
  934. CALL IDVAR7(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  935. C
  936. C modeles Nouailhas
  937. C
  938. ELSE IF (MATEPL.EQ.76) THEN
  939. CALL IDVAR8(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  940. ELSE IF (MATEPL.EQ.77) THEN
  941. CALL IDVAR9(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  942. C visk2
  943. ELSE IF (MATEPL.EQ.82) THEN
  944.  
  945. CALL IDVA10(MATEPL,MFR,MELE,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  946. C
  947. ELSE IF (MATEPL.EQ.89.OR.MATEPL.EQ.90) THEN
  948. CALL IDVA11(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  949. * BCN plastic and viscoplastic models
  950. ELSE IF ( MATEPL.EQ.111
  951. . .OR.MATEPL.EQ.112.OR.MATEPL.EQ.113
  952. . .OR.MATEPL.EQ.114.OR.MATEPL.EQ.115
  953. . .OR.MATEPL.EQ.116.OR.MATEPL.EQ.117) THEN
  954. CALL IDVA12(MATEPL,MFR,MELE,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  955. * BCN
  956. ELSE
  957. *
  958. * ici tous les autres modeles
  959. *
  960. CALL IDVAR6(MATEPL,MFR,MELE,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC)
  961. ENDIF
  962. if (ierr.ne.0) return
  963. nomid = ipcomp
  964. GOTO 999
  965.  
  966. C*=====================================================================*
  967. C*= Autres formulations que 'MECANIQUE' =*
  968. C*=====================================================================*
  969. 1300 CONTINUE
  970. IF (FORMOD(1).EQ.'LIAISON') THEN
  971. IF (CMATEE.EQ.'NEWMOD') THEN
  972. NBROBL = 1
  973. NBRFAC = 0
  974. SEGINI,NOMID
  975. LESOBL(1) = 'FLIA'
  976. ELSE
  977. NBROBL = 2
  978. NBRFAC = 3
  979. SEGINI,NOMID
  980. LESOBL(1) = 'FLIA'
  981. LESOBL(2) = 'SLIA'
  982. LESFAC(1) = 'VAEN'
  983. LESFAC(2) = 'VARE'
  984. LESFAC(3) = 'VAMA'
  985. ENDIF
  986. GOTO 999
  987.  
  988. ELSE IF (FORMOD(1).EQ.'DIFFUSION') THEN
  989. IF (CMATEE.EQ.'VISQUEUS') THEN
  990. if (ifour.eq.2) then
  991. NBROBL = 3
  992. else
  993. NBROBL = 2
  994. endif
  995. NBRFAC = 0
  996. SEGINI,NOMID
  997. LESOBL(1) = 'VI1X'
  998. LESOBL(2) = 'VI1Y'
  999. if (ifour.eq.0) LESOBL(2) = 'VI1Z'
  1000. if (ifour.eq.2) LESOBL(3) = 'VI1Z'
  1001. ELSE
  1002. GOTO 99
  1003. ENDIF
  1004. GOTO 999
  1005. ENDIF
  1006. GOTO 99
  1007.  
  1008. C*=====================================================================*
  1009. C*= Autres cas : segment NOMID vide =*
  1010. C*=====================================================================*
  1011. 99 CONTINUE
  1012. SEGINI,NOMID
  1013.  
  1014. 999 CONTINUE
  1015. SEGDES,NOMID
  1016. IPCOMP = NOMID
  1017. *
  1018. * pour les elements xfem on utilise un MCHELM de TYPE 'ENRICHIS' avec
  1019. * pour composantes H F1 F2 ... contenant des pointeurs vers des LISTreel
  1020. * dont les valeurs sont les level set aux noeuds de l'EF enrichi
  1021. * => on supprime cette partie (BP, le 23.09.2009)
  1022. * IF ( MELE.EQ.263) then
  1023. * ENDIF
  1024.  
  1025. RETURN
  1026. END
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  

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