Télécharger nomate.eso

Retour à la liste

Numérotation des lignes :

  1. C NOMATE SOURCE CB215821 19/02/25 21:16:32 10119
  2.  
  3. SUBROUTINE NOMATE(FORMOD,NFOR,MATMOD,NMAT,CMATE,IMATE,INATU)
  4.  
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8 (A-H,O-Z)
  7.  
  8. * le dernier numero de materiau utilise est le : 180
  9.  
  10. *--------------------------------------------------------------------*
  11. * *
  12. * *
  13. * *
  14. * DETERMINER UN NUMERO POUR UN MODELE DE MATERIAU *
  15. * _______________________________________________ *
  16. * *
  17. * ENTREES *
  18. * *
  19. * FORMOD Liste des formulations *
  20. * NFOR Nombre de formulations *
  21. * MATMOD Liste des mat{riaux *
  22. * NMAT Nombre de mat{riaux *
  23. * *
  24. * SORTIES *
  25. * *
  26. * CMATE Nom du materiau (isotrope, orthotrope....) *
  27. * IMATE Num{ro du mat{riau *
  28. * INATU Num{ro de nature *
  29. * *
  30. * NOMS DE MATERIAUX POSSIBLES *
  31. * *
  32. *--------------------------------------------------------------------*
  33. * 1/ 'THERMIQUE' *
  34. * *
  35. * 'ISOTROPE' *
  36. * 'ORTHOTROPE' *
  37. * 'ANISOTROPE' *
  38. * 'CONDUCTION' *
  39. * 'CONVECTION' *
  40. * 'ADVECTION' non lineaire de conduction *
  41. * 'PHASE' non lineaire de conduction *
  42. * 'DISSIPATION' *
  43. *--------------------------------------------------------------------*
  44. * 2/ 'MECANIQUE' OU 6/ 'POREUX' *
  45. * *
  46. * ELASTIQUE *
  47. * 'ISOTROPE' *
  48. * 'ORTHOTROPE' *
  49. * 'ANISOTROPE' *
  50. * 'POREUX' *
  51. * 'HOMOGENEISE' *
  52. * 'UNIDIRECTIONNEL' *
  53. * 'SECTION' *
  54. * 'ARMATURE' *
  55. * 'MODAL' *
  56. * 'STATIQUE' *
  57. * 'ZONE_COHESIVE' *
  58. * *
  59. * PLASTIQUE *
  60. * 'PARFAIT' INATU = 1 *
  61. * 'LINESPRING' INATU = 2 *
  62. * 'DRUCKER-SIMPLE' INATU = 3 *
  63. * 'CINEMATIQUE' INATU = 4 *
  64. * 'ISOTROPE' INATU = 5 *
  65. * 'CHABOCHE1' INATU = 7 *
  66. * 'BETON' INATU = 9 *
  67. * 'CHABOCHE2' INATU = 12 *
  68. * 'TUYAU-FISSURE' INATU = 14 *
  69. * 'DRUCKER-PRAGER' INATU = 15 *
  70. * 'GAUVAIN' INATU = 16 *
  71. * 'ENDOMMAGEABLE' INATU = 26 *
  72. * 'UBIQUITOUS' INATU = 28 *
  73. * 'GLOBAL' INATU = 32 *
  74. * 'CAM-CLAY' INATU = 33 *
  75. * 'COULOMB' INATU = 34 *
  76. * 'JOINT_DILATANT' INATU = 35 *
  77. * 'BETON_AXI' INATU = 36 *
  78. * 'GURSON' INATU = 38 *
  79. * 'BETON_UNI' INATU = 39 *
  80. * 'ACIER_UNI' INATU = 40 *
  81. * 'FRAGILE_UNI' INATU = 78 *
  82. * 'BETON_BAEL' INATU = 79 *
  83. * 'PARFAIT_UNI' INATU = 80 *
  84. * 'STRUT_UNI' INATU = 83 *
  85. * 'CINEMATIQUE_ANCRAGE' INATU = 92 *
  86. * 'ACIER_ANCRAGE' INATU = 93 *
  87. * 'SECTION' INATU = 41 *
  88. * 'OTTOSEN' INATU = 42 *
  89. * 'MAZARS_FIB' INATU = 46 *
  90. * 'AMADEI' INATU = 47 *
  91. * 'HUJEUX' INATU = 48 *
  92. * 'STEINBERG' INATU = 49 *
  93. * 'ZERILLI' INATU = 50 *
  94. * 'PRESTON' INATU = 52 *
  95. * 'BETOCYCL' INATU = 54 *
  96. * 'ROTATING_CRACK' INATU = 55 *
  97. * 'JOINT_SOFT' INATU = 56 *
  98. * 'ANCRAGE_ELIGEHAUSEN' INATU = 91 *
  99. * 'BILI_MOMY' INATU = 57 *
  100. * 'BILI_EFFZ' INATU = 58 *
  101. * 'TAKEMO_MOMY' INATU = 59 *
  102. * 'TAKEMO_EFFZ' INATU = 60 *
  103. * 'BETON_INSA' INATU = 66 *
  104. * 'ECROUIS_DECOU' INATU = 67 *
  105. * 'PARFAIT_DECOU' INATU = 68 *
  106. * 'ALONSO' INATU = 69 *
  107. * +BR *
  108. * 'BA1D' INATU = 147 *
  109. * -BR *
  110. * 'PAKZAD' INATU = 71 *
  111. * 'INFILL_UNI' INATU = 72 *
  112. * 'CISAIL_NL' INATU = 73 *
  113. * 'HINT' INATU = 89 *
  114. * 'BETON_URGC' INATU = 99 *
  115. * 'UNILATERAL' (Fibre) INATU = 104 *
  116. * 'INCO' INATU = 129 *
  117. * 'INTIMP' INATU = 145 *
  118. * 'RICJOI' INATU = 146 *
  119. * +RP *
  120. * 'OUGLOVA' INATU = 175 *
  121. * -RP *
  122. * BCN *
  123. * 'MRS_LADE' INATU = 111 *
  124. * 'J2' INATU = 112 *
  125. * 'RH_COULOMB' INATU = 113 *
  126. * 'VMT_FEFP' INATU = 114 *
  127. * 'RHMC_FEFP' INATU = 115 *
  128. * 'POWDER_FEFP' INATU = 116 *
  129. * 'POWDERCAP_FEFP' INATU = 117 *
  130. * BCN *
  131. * 'JOINT_COAT' INATU = 119 *
  132. * 'CONCRETE_UNI' INATU = 123 *
  133. * 'MUR_SHEAR' INATU = 126 *
  134. * 'DRUCKER_PRAGER2' INATU = 140 *
  135. * 'BILIN_EFFX' INATU = 150 *
  136. * 'ISS_GRANGE' INATU = 151 *
  137. * 'RUP_THER' INATU = 152 *
  138. * +BR *
  139. * 'RICBET_UNI' INATU = 160 *
  140. * 'LIAISON_ACBE' INATU = 171 *
  141. * 'DP_SOL' INATU = 172 *
  142. * 'CONCYC' INATU = 173 *
  143. * 'IWPR3D_SOL' INATU = 176 *
  144. * -BR *
  145. * *
  146. * FLUAGE *
  147. * 'NORTON' INATU = 19 *
  148. * 'BLACKBURN' INATU = 20 *
  149. * 'POLYNOMIAL' INATU = 21 *
  150. * 'RCCMR-316' INATU = 22 *
  151. * 'RCCMR-304' INATU = 23 *
  152. * 'LEMAITRE' INATU = 24 *
  153. * 'BLACKBURN_2' INATU = 61 *
  154. * 'CERAMIQUE' INATU = 65 *
  155. * 'MAXWELL' INATU = 74 *
  156. * 'COMETE' INATU = 84 *
  157. * 'CCPL' INATU = 85 *
  158. * 'X11' INATU = 86 *
  159. * 'BPEL_RELAX' INATU = 95 *
  160. * 'BETON_URGC' INATU = 101 *
  161. * 'SODERBERG' INATU = 102 *
  162. * 'MAXOTT' INATU = 106 *
  163. * 'FBB1' INATU = 127 *
  164. * 'FBB2' INATU = 128 *
  165. * 'KELVIN' INATU = 174 *
  166. * *
  167. * VISCOPLASTIQUE *
  168. * 'GUIONNET' INATU = 17 *
  169. * 'ONERA' INATU = 25 *
  170. * 'VISCODOMMAGE' INATU = 29 *
  171. * 'PARFAIT' INATU = 43 *
  172. * 'POUDRE_A' INATU = 44 *
  173. * 'POUDRE_B' INATU = 45 *
  174. * 'OHNO' INATU = 53 *
  175. * 'DDI' INATU = 63 *
  176. * 'KOCKS' INATU = 70 *
  177. * 'NOUAILHAS_A' INATU = 76 *
  178. * 'NOUAILHAS_B' INATU = 77 *
  179. * 'VISK2' INATU = 82 *
  180. * 'VISCOHINT' INATU = 90 *
  181. * 'MISTRAL' INATU = 94 *
  182. * 'BETON_URGC' INATU = 100 *
  183. * 'BETON_URGC_ENDO' INATU = 122 *
  184. * 'LEMENDO' INATU = 103 *
  185. * 'FLUNOR2' INATU = 105 *
  186. * 'GATT_MONERIE' INATU = 107 *
  187. * 'UO2' INATU = 108 *
  188. * 'VISCODD' INATU = 130 *
  189. * 'CHAB_SINH_R' INATU = 136 *
  190. * 'CHAB_SINH_X' INATU = 137 *
  191. * 'CHAB_NOR_R' INATU = 138 *
  192. * 'CHAB_NOR_X' INATU = 139 *
  193. * 'PELLET' INATU = 142 *
  194. * 'FLUTRA' INATU = 143 *
  195. * 'SYCO1' INATU = 153 *
  196. * 'SYCO2' INATU = 154 *
  197. * 'CHABOCHE' INATU = 165 *
  198. * *
  199. * *
  200. * ENDOMMAGEABLE *
  201. * 'MAZARS' INATU = 30 *
  202. * 'UNILATERAL' INATU = 31 *
  203. * 'ROTATING_CRACK' INATU = 37 *
  204. * 'SIC_SIC' INATU = 88 *
  205. * 'MICROPLANS' INATU = 96 *
  206. * 'VISCOUNILATERAL' INATU = 97 *
  207. * 'MICROISO' INATU = 98 *
  208. * 'SICSCAL' INATU = 131 *
  209. * 'SICTENS' INATU = 132 *
  210. * 'FATSIN' INATU = 141 *
  211. * 'RICRAG' INATU = 144 *
  212. * 'MVM' INATU = 118 *
  213. * 'CRUCRA' INATU = 124 *
  214. * 'DAMAGE_TC' INATU = 125 *
  215. * 'DESMORAT' INATU = 134 *
  216. * + BR *
  217. * 'GLRC_DM' INATU = 157 *
  218. * 'RICBET' INATU = 158 *
  219. * 'RICCOQ' INATU = 159 *
  220. * 'EFEM' INATU = 177 *
  221. * -BR *
  222. * *
  223. * PLASTIQUE_ENDOM(MAGEABLE) *
  224. * 'PSURY' INATU = 51 *
  225. * 'ROUSSELIER' INATU = 62 *
  226. * 'GURSON2' INATU = 64 *
  227. * 'DRAGON' INATU = 75 *
  228. * 'BETON_URGC' INATU = 120 *
  229. * 'BETON_INSA' INATU = 121 *
  230. * 'BETON_DYNAR_LMT' INATU = 133 *
  231. * 'ENDO_PLAS' INATU = 135 *
  232. * 'GERNAY' INATU = 155 *
  233. * 'WELLS' INATU = 156 *
  234. * *
  235. * ELASTIQUE NON_LINEAIRE *
  236. * 'EQUIPLAS' INATU = 87 *
  237. * 'UTILISATEUR' INATU = -1 *
  238. * VISCO_EXTERNE *
  239. * 'GENERAL' IVIEX = 1 INATU = -2 *
  240. * 'DRUCKER_PRAGER' IVIEX = 2 en sortie de NOMATE, *
  241. * 'COHESION' IVIEX = 3 INATU = -2 - IVIEX *
  242. * 'CONSOLIDATION' IVIEX = 4 ce qui permet de *
  243. * 'UTILISATEUR' IVIEX = 5 recuperer IVIEX *
  244. * *
  245. * 'IMPEDANCE' *
  246. * 'ELASTIQUE' INATU = 161 *
  247. * 'VOIGT' INATU = 162 *
  248. * 'MAXWELL' INATU = 163 *
  249. * 'COMPL??' INATU = 164 *
  250. *--------------------------------------------------------------------*
  251. * 3/ 'LIQUIDE ' *
  252. * 'ISOTROPE' *
  253. *--------------------------------------------------------------------*
  254. * 4/ 'CONVECTION' *
  255. * la formulation suffit *
  256. *--------------------------------------------------------------------*
  257. * 5/ 'MECANIQUE+LIQUIDE' *
  258. * la formulation suffit *
  259. *--------------------------------------------------------------------*
  260. * 6/ 'POREUX' VOIR 2/ *
  261. *--------------------------------------------------------------------*
  262. * 7/ 'DARCY' *
  263. * *
  264. * 'ISOTROPE' *
  265. * 'ORTHOTROPE' *
  266. * 'ANISOTROPE' *
  267. *--------------------------------------------------------------------*
  268. * 8/ 'CONTACT ' *
  269. * *
  270. * 'COULOMB' INATU=1 *
  271. * 'FROCABLE' INATU=2 *
  272. *--------------------------------------------------------------------*
  273. * 9/ 'RAYONNEMENT' *
  274. * imate=1 ancien rayonnement avec table *
  275. * imate=2 fac_a_fac *
  276. * imate=3 infini *
  277. * imate=4 cavite *
  278. * inatu 1 cavite toute simple *
  279. * inatu=2 cavite ferme *
  280. * inatu=3 cavite syme *
  281. * inatu=4 cavite convexe *
  282. * inatu=5 cavite syme convexe *
  283. * inatu=6 cavite ferme convexe *
  284. * inatu=7 cavite syme ferme *
  285. * inatu=8 cavite syme convexe ferme *
  286. *--------------------------------------------------------------------*
  287. * 10/ 'MAGNETODYNAMIQUE' *
  288. * *
  289. * 'POTENTIEL_VECTEUR' *
  290. * 'ISOTROPE' *
  291. * 'ORTHOTROPE' *
  292. *--------------------------------------------------------------------*
  293. * 11/ 'NAVIER_STOKES' *
  294. * *
  295. * 'NEWTONIEN' *
  296. * 'BINGHAM' *
  297. * 'VISCOPLASTIQUE' *
  298. *--------------------------------------------------------------------*
  299. * 12/ 'MELANGE' *
  300. * *
  301. * 'CEREM' *
  302. * 'ZTMAX' *
  303. * 'PARALLELE' *
  304. * 'SERIE' *
  305. * 'UTILISATEUR' *
  306. *--------------------------------------------------------------------*
  307. * 13/ 'EULER' *
  308. * *
  309. * 'NEWTONIEN' *
  310. *--------------------------------------------------------------------*
  311. * 14/ 'FISSURE' *
  312. * *
  313. * 'MASS' 'PARF' 'POISEU_BLASIUS' *
  314. * 'FILM' 'REEL' 'POISEU_COLEBROOK' *
  315. * 'FROTTEMENT1' *
  316. * 'FROTTEMENT2' *
  317. * 'FROTTEMENT3' *
  318. * 'FROTTEMENT4' *
  319. *--------------------------------------------------------------------*
  320. * 15/ 'LIAISON' *
  321. * *
  322. * 'POINT_PLAN_FLUIDE' *
  323. * 'POINT_PLAN_FROTTEMENT' *
  324. * 'POINT_PLAN' *
  325. * 'POINT_POINT_FROTTEMENT' *
  326. * 'POINT_POINT_DEPLACEMENT_PLASTIQUE' *
  327. * 'POINT_POINT_ROTATION_PLASTIQUE' *
  328. * 'POINT_POINT' *
  329. * 'POINT_CERCLE_MOBILE' *
  330. * 'POINT_CERCLE_FROTTEMENT' *
  331. * 'POINT_CERCLE' *
  332. * 'CERCLE_PLAN_FROTTEMENT' *
  333. * 'CERCLE_CERCLE_FROTTEMENT' *
  334. * 'PROFIL_PROFIL_INTERIEUR' *
  335. * 'PROFIL_PROFIL_EXTERIEUR' *
  336. * 'LIGNE_LIGNE_FROTTEMENT' *
  337. * 'LIGNE_CERCLE_FROTTEMENT' *
  338. * 'PALIER_FLUIDE' *
  339. * 'NEWMARK' *
  340. *--------------------------------------------------------------------*
  341. * 16/ 'THERMOHYDRIQUE' *
  342. * *
  343. * 'SCHREFLER' *
  344. *--------------------------------------------------------------------*
  345. * 17/ 'ELECTROSTATIQUE' *
  346. * *
  347. * 'ISOTROPE' *
  348. * 'ORTHOTROPE' *
  349. * 'ANISOTROPE' *
  350. *--------------------------------------------------------------------*
  351. * 18/ 'DIFFUSION' *
  352. * *
  353. * 'ISOTROPE' *
  354. * 'ORTHOTROPE' *
  355. * 'ANISOTROPE' *
  356. * 'FICK' INATU = 0 *
  357. * 'SORET' INATU = 1 *
  358. * 'UTILISATEUR' INATU =-1 *
  359. *--------------------------------------------------------------------*
  360. * 19/ 'METALLURGIE' INATU = 178 *
  361. *--------------------------------------------------------------------*
  362. * 20/ 'CHANGEMENT_PHASE' *
  363. * *
  364. * 'PARFAIT' INATU = 179 *
  365. * 'PROGRESSIF' INATU = 180 *
  366. *--------------------------------------------------------------------*
  367. * PPU MODIF POUR LES MATERIAUX UNIDIRECTIONELS EN PLASTIQUE
  368.  
  369.  
  370. *--------------------------------------------------------------------*
  371. * DECLARATIONS
  372. *--------------------------------------------------------------------*
  373. INTEGER NFOR,NMAT
  374. CHARACTER*(*) CMATE
  375. CHARACTER*16 FORMOD(*),MATMOD(*)
  376. *
  377. CHARACTER*16 MOMODL(200), forfo1,forfo2
  378. *
  379. CHARACTER*16 LISTMT(3)
  380. CHARACTER*12 CMAT1,CMAT2,CMAT3
  381.  
  382. DATA LISTMT / 'ISOTROPE ',
  383. & 'ORTHOTROPE ',
  384. & 'ANISOTROPE ' /
  385. *
  386. CMATE = ' '
  387. IMATE = 0
  388. INATU = 0
  389. *
  390. INMAT = 0
  391. *
  392. forfo1 = formod(1)
  393. *
  394. IF (NFOR.EQ.1) THEN
  395. *
  396. *--------------------------------------------------------------------*
  397. * 0/ Cas particuliers : THERMIQUE CONVECTION -> 4/ RAYONNEMENT -> 9/ *
  398. *--------------------------------------------------------------------*
  399. IF (forfo1.eq.'THERMIQUE' ) THEN
  400. icov = 0
  401. CALL PLACE(MATMOD,NMAT,icov,'CONVECTION')
  402. IF (icov.NE.0) THEN
  403. forfo1 = 'CONVECTION'
  404. ELSE
  405. iray = 0
  406. CALL PLACE(MATMOD,NMAT,iray,'RAYONNEMENT')
  407. IF (iray.NE.0) THEN
  408. forfo1 = 'RAYONNEMENT'
  409. ENDIF
  410. ENDIF
  411. ENDIF
  412. *
  413. *--------------------------------------------------------------------*
  414. * 1/ Cas de la formulation 'THERMIQUE' OU 'DARCY' *
  415. *--------------------------------------------------------------------*
  416. * 1 2 3 4 5 6 7 8
  417.  
  418. IF (forfo1.EQ.'THERMIQUE' .OR.
  419. & forfo1.EQ.'DARCY') THEN
  420.  
  421. IF (NMAT.EQ.0) THEN
  422. *
  423. * par defaut la formulation est isotrope
  424. *
  425. CMATE='ISOTROPE'
  426. IMATE=1
  427.  
  428. ELSE
  429. CALL PLACE(LISTMT,3,IPLAC,MATMOD(1))
  430. INMAT=INMAT+1
  431. CMATE='ISOTROPE'
  432. IF (IPLAC.NE.0) THEN
  433. CMATE = MATMOD(1)
  434. IMATE=IPLAC
  435.  
  436. END IF
  437. IF(forfo1.EQ.'THERMIQUE') THEN
  438. CALL MODTHE(MOMODL,NMOD)
  439. DO 4287 I=2,NMAT
  440. CALL PLACE(MOMODL,NMOD,ITROP,MATMOD(I))
  441. IF(ITROP.NE.0) THEN
  442. INMAT=INMAT+1
  443. ENDIF
  444. 4287 CONTINUE
  445. ENDIF
  446. END IF
  447. *--------------------------------------------------------------------*
  448. * 2/ Cas de la formulation 'MECANIQUE' OU 'POREUX' *
  449. *--------------------------------------------------------------------*
  450. ELSE IF (forfo1.EQ.'MECANIQUE'.OR.
  451. . forfo1.EQ.'POREUX') THEN
  452.  
  453. IF (NMAT.NE.0)THEN
  454. *
  455. * Comportement reversible
  456. * ---------------------
  457. CALL MODLIN(MOMODL,NMOD)
  458. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(1))
  459. IF (IPLAC.EQ.1)THEN
  460. INMAT=INMAT+1
  461. *
  462. * Materiau elastique lineaire ( seule option disponible )
  463. *
  464. IF (NMAT.GT. INMAT) THEN
  465. *
  466. * On teste la "tropie de la formulation"
  467. *
  468. CALL MODELA(MOMODL,NMOD)
  469. CALL PLACE(MOMODL,NMOD,ITROP,MATMOD(2))
  470. IF (ITROP.EQ.0) THEN
  471. CMATE = 'ISOTROPE'
  472. IMATE=1
  473. ELSE
  474. INMAT=INMAT+1
  475. CMATE = MOMODL(ITROP)
  476. IF (ITROP.LE.3) THEN
  477. IMATE=ITROP
  478. ELSE IF (ITROP.EQ.4) THEN
  479. IMATE=7
  480. ELSE IF (ITROP.EQ.5) THEN
  481. IMATE=9
  482. ELSE IF (ITROP.EQ.6) THEN
  483. IMATE=4
  484. ELSE IF (ITROP.EQ.7) THEN
  485. IMATE=11
  486. ELSE IF (ITROP.EQ.9.OR.ITROP.EQ.10) THEN
  487. INMAT=INMAT + 1
  488. IMATE=ITROP
  489. ELSE IF (ITROP.EQ.11) THEN
  490. * on met 12 car 11 est deja pris
  491. IMATE=12
  492. END IF
  493. END IF
  494. ELSE
  495. *
  496. * Option par defaut dans le cas elastique
  497. *
  498. CMATE = 'ISOTROPE'
  499. IMATE=1
  500. ENDIF
  501. END IF
  502. END IF
  503. *
  504. 25 continue
  505. * Comportement non lineaire
  506. * -------------------------
  507. IF (IMATE.EQ.1) THEN
  508. *
  509. * >>>>>>>>>>> Dans le cas d'une formulation elastique isotrope
  510. *
  511. 20 CONTINUE
  512. IF (NMAT.GT.INMAT) THEN
  513. *
  514. * Et si le materiau n'est pas totalement decode
  515. *
  516. CALL MODNLI(MOMODL,NMOD)
  517. INMAT=INMAT+1
  518. CALL PLACE(MOMODL,NMOD,INLI,MATMOD(INMAT))
  519. IF (INLI.EQ.0) THEN
  520. *
  521. * Materiau non reconnu
  522. *
  523. CMATE=' '
  524. IMATE=0
  525. INATU=0
  526. ELSE IF (INLI .EQ. 1) THEN
  527. *
  528. * Comportement plastique
  529. * ----------------------
  530.  
  531. IF (NMAT.GT.INMAT) THEN
  532. *
  533. * Et si le materiau n'est pas totalement decode
  534. *
  535. CALL MODPLA(MOMODL,NMOD)
  536. INMAT= INMAT+1
  537. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  538. IF (IMOD.EQ.0) THEN
  539. CMATE=' '
  540. IMATE=0
  541. INATU=0
  542. ELSE IF (IMOD.EQ.1) THEN
  543. * ISOTROPE
  544. INATU=5
  545. ELSE IF (IMOD.EQ.2) THEN
  546. * PARFAIT
  547. INATU=1
  548. ELSE IF (IMOD.EQ.3) THEN
  549. * CINEMATIQUE
  550. INATU=4
  551. ELSE IF (IMOD.EQ.4) THEN
  552. * DRUCKER-PRAGER
  553. INATU=15
  554. ELSE IF (IMOD.EQ.5) THEN
  555. * DRUCKER-SIMPLE
  556. INATU=3
  557. ELSE IF (IMOD.EQ.6) THEN
  558. * BETON
  559. INATU=9
  560. ELSE IF (IMOD.EQ.7) THEN
  561. * CHABOCHE1
  562. INATU=7
  563. ELSE IF (IMOD.EQ.8) THEN
  564. * CHABOCHE2
  565. INATU=12
  566. ELSE IF (IMOD.EQ.9) THEN
  567. * TUYAU-FISSURE
  568. INATU=14
  569. ELSE IF (IMOD.EQ.10) THEN
  570. * ENDOMMAGEABLE
  571. INATU=26
  572. ELSE IF (IMOD.EQ.11) THEN
  573. * GAUVAIN
  574. INATU=16
  575. ELSE IF (IMOD.EQ.12) THEN
  576. * LINESPRING
  577. INATU=2
  578. ELSE IF (IMOD.EQ.13) THEN
  579. * UBIQUITOUS
  580. INATU=28
  581. ELSE IF (IMOD.EQ.14) THEN
  582. * GLOBAL
  583. INATU=32
  584. ELSE IF (IMOD.EQ.15) THEN
  585. * CAM-CLAY
  586. INATU=33
  587. ELSE IF (IMOD.EQ.16) THEN
  588. * MOHR COULOMB
  589. INATU=34
  590. ELSE IF (IMOD.EQ.17) THEN
  591. * JOINT DILATANT
  592. INATU=35
  593. ELSE IF (IMOD.EQ.18) THEN
  594. * BETON_AXI
  595. INATU=36
  596. ELSE IF (IMOD.EQ.19) THEN
  597. * GURSON
  598. INATU=38
  599. ELSE IF (IMOD.EQ.20) THEN
  600. * BETON_UNI
  601. INATU=39
  602. ELSE IF (IMOD.EQ.21) THEN
  603. * ACIER_UNI
  604. INATU=40
  605. ELSE IF (IMOD.EQ.51) THEN
  606. * ACIER_ANCRAGE
  607. INATU=93
  608. ELSE IF (IMOD.EQ.23) THEN
  609. * OTTOSEN (BETON)
  610. INATU=42
  611. ELSE IF (IMOD.EQ.24) THEN
  612. * MAZARS_FIB
  613. INATU=46
  614. ELSE IF (IMOD.EQ.53) THEN
  615. * UNILATERAL (Fibre)
  616. INATU=104
  617. ELSE IF (IMOD.EQ.44) THEN
  618. * FRAGILE_UNI
  619. INATU=78
  620. *
  621. ELSE IF (IMOD.EQ.45) THEN
  622. * BETON_BAEL
  623. INATU=79
  624. *
  625. ELSE IF (IMOD.EQ.46) THEN
  626. * PARFAIT_UNI
  627. INATU=80
  628. *
  629. ELSE IF (IMOD.EQ.50) THEN
  630. * PARFAIT_ANCRAGE
  631. INATU=92
  632. C +BR
  633. ELSE IF (IMOD.EQ.72) THEN
  634. * RICBET_UNI
  635. INATU=160
  636. C -BR
  637. *
  638. ELSE IF (IMOD.EQ.47) THEN
  639. * STRUT_UNI
  640. INATU=83
  641. *
  642. ELSE IF (IMOD.EQ.25) THEN
  643. * AMADEI-SAEB
  644. INATU=47
  645. ELSE IF (IMOD.EQ.26) THEN
  646. * HUJEUX
  647. INATU=48
  648. ELSE IF (IMOD.EQ.27) THEN
  649. * STEINBERG-COCHRAN-GUINAN
  650. INATU=49
  651. ELSE IF (IMOD.EQ.28) THEN
  652. * ZERILLI-ARMSTRONG
  653. INATU=50
  654. ELSE IF (IMOD.EQ.29) THEN
  655. * PRESTON-TONKS-WALLACE
  656. INATU=52
  657. ELSE IF (IMOD.EQ.30) THEN
  658. * BETOCYCL
  659. INATU=54
  660. ELSE IF (IMOD.EQ.31) THEN
  661. * ROTATING_CRACK
  662. INATU=55
  663. ELSE IF (IMOD.EQ.32) THEN
  664. * JOINT_SOFT
  665. INATU=56
  666. ELSE IF (IMOD.EQ.49) THEN
  667. * ANCRAGE_ELIGEHAUSEN
  668. INATU=91
  669. ELSE IF (IMOD.EQ.33) THEN
  670. * BILI_MOMY
  671. INATU=57
  672. ELSE IF (IMOD.EQ.34) THEN
  673. * BILI_EFFZ
  674. INATU=58
  675. ELSE IF (IMOD.EQ.35) THEN
  676. * TAKEMO_MOMY
  677. INATU=59
  678. ELSE IF (IMOD.EQ.36) THEN
  679. * TAKEMO_EFFZ
  680. INATU=60
  681. ELSE IF (IMOD.EQ.37) THEN
  682. * BETON_INSA
  683. INATU=66
  684. ELSE IF (IMOD.EQ.40) THEN
  685. * ALONSO
  686. INATU=69
  687. ELSE IF (IMOD.EQ.41) THEN
  688. * PAKZAD
  689. INATU=71
  690. ELSE IF (IMOD.EQ.42) THEN
  691. * INFILL_UNI
  692. INATU=72
  693. ELSE IF (IMOD.EQ.43) THEN
  694. * CISAIL_NL
  695. INATU=73
  696. ELSE IF (IMOD.EQ.48) THEN
  697. * HINTE
  698. INATU=89
  699. ELSE IF (IMOD.EQ.52) THEN
  700. * BETON_URGC
  701. INATU=99
  702. * BCN
  703. ELSE IF (IMOD.EQ.54) THEN
  704. * MRS_LADE
  705. INATU=111
  706. ELSE IF (IMOD.EQ.55) THEN
  707. * J2
  708. INATU=112
  709. ELSE IF (IMOD.EQ.56) THEN
  710. * RH_COULOMB
  711. INATU=113
  712. ELSE IF (IMOD.EQ.57) THEN
  713. * VMT_FEFP
  714. INATU=114
  715. ELSE IF (IMOD.EQ.58) THEN
  716. * RHMC_FEFP
  717. INATU=115
  718. ELSE IF (IMOD.EQ.59) THEN
  719. * POWDER_FEFP
  720. INATU=116
  721. ELSE IF (IMOD.EQ.60) THEN
  722. * POWDERCAP_FEFP
  723. INATU=117
  724. * BCN
  725. ELSE IF (IMOD.EQ.61) THEN
  726. * JOINT_COAT
  727. INATU=119
  728.  
  729. ELSE IF (IMOD.EQ.62) THEN
  730. * CONCRETE_UNI
  731. INATU=123
  732.  
  733. ELSE IF (IMOD.EQ.73) THEN
  734. * BA1D
  735. INATU=147
  736.  
  737. ELSE IF (IMOD.EQ.63) THEN
  738. * MUR_SHEAR
  739. INATU=126
  740.  
  741. ELSE IF (IMOD.EQ.64) THEN
  742. * INCO
  743. INATU=129
  744. ELSE IF (IMOD.EQ.65) THEN
  745. * DRUCKER_PRAGER2
  746. INATU=140
  747. ELSE IF (IMOD.EQ.67) THEN
  748. * INTIMP
  749. INATU=145
  750. ELSE IF (IMOD.EQ.68) THEN
  751. * INTJOI
  752. INATU=146
  753. ELSE IF (IMOD.EQ.69) THEN
  754. * BILIN_EFFX
  755. INATU=150
  756. * LIAISON_ACBE ( liaison acier beton)
  757. ELSE IF (IMOD.EQ.74) THEN
  758. INATU=171
  759. * DP_SOL
  760. ELSE IF (IMOD.EQ.75) THEN
  761. INATU=172
  762. C +RP
  763. * OUGLOVA
  764. ELSE IF (IMOD.EQ.76) THEN
  765. INATU=175
  766. * IWPR3D_SOL
  767. ELSE IF (IMOD.EQ.77) THEN
  768. INATU=176
  769.  
  770. C -RP
  771. ENDIF
  772. ELSE
  773. *
  774. * Option par defaut
  775. *
  776. INATU=5
  777. ENDIF
  778.  
  779. ELSE IF (INLI .EQ. 2) THEN
  780. *
  781. * Comportement FLUAGE
  782. * -------------------
  783. IF (NMAT.GT.INMAT) THEN
  784. *
  785. * Et si le materiau n'est pas totalement decode
  786. *
  787. INMAT=INMAT+1
  788. CALL MODFLU(MOMODL,NMOD)
  789. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  790. IF (IMOD.EQ.0 ) THEN
  791. CMATE=' '
  792. IMATE=0
  793. INATU=0
  794. ELSE IF (IMOD.EQ.1 ) THEN
  795. * NORTON
  796. INATU=19
  797. ELSE IF (IMOD.EQ.2 ) THEN
  798. * BLACKBURN
  799. INATU=20
  800. ELSE IF (IMOD.EQ.3 ) THEN
  801. * RCCMR-316
  802. INATU=22
  803. ELSE IF (IMOD.EQ.4 ) THEN
  804. * RCCMR-304
  805. INATU=23
  806. ELSE IF (IMOD.EQ.5 ) THEN
  807. * LEMAITRE
  808. INATU=24
  809. ELSE IF (IMOD.EQ.6 ) THEN
  810. * POLYNOMIAL
  811. INATU=21
  812. ELSE IF (IMOD.EQ.7 ) THEN
  813. * BLACKBURN_2
  814. INATU=61
  815. ELSE IF (IMOD.EQ.8) THEN
  816. * CERAMIQUE
  817. INATU=65
  818. ELSE IF (IMOD.EQ.9) THEN
  819. * MAXWELL
  820. INATU=74
  821. ELSE IF (IMOD.EQ.10) THEN
  822. * COMETE
  823. INATU = 84
  824. ELSE IF (IMOD.EQ.11) THEN
  825. * CCPL
  826. INATU = 85
  827. ELSE IF (IMOD.EQ.12) THEN
  828. * X11
  829. INATU = 86
  830. ELSE IF (IMOD.EQ.13) THEN
  831. * BPEL_RELAX
  832. INATU = 95
  833. ELSE IF (IMOD.EQ.14) THEN
  834. * BETON_URGC
  835. INATU = 101
  836. ELSE IF (IMOD.EQ.15) THEN
  837. * SODERBERG
  838. INATU = 102
  839. ELSE IF (IMOD.EQ.16) THEN
  840. * MAXOTT
  841. INATU = 106
  842. ELSE IF (IMOD.EQ.17) THEN
  843. * FBB1
  844. INATU = 127
  845. ELSE IF (IMOD.EQ.18) THEN
  846. * FBB2
  847. INATU = 128
  848. ELSE IF (IMOD.EQ.19) THEN
  849. * KELVIN
  850. ** INATU = 174
  851. * AM 3/3/17 MODELE INDISPONIBLE
  852. CMATE=' '
  853. IMATE=0
  854. INATU=0
  855. ENDIF
  856. ELSE
  857. *
  858. * Option par defaut
  859. *
  860. INATU=19
  861. ENDIF
  862. *
  863. ELSE IF (INLI .EQ. 3) THEN
  864. *
  865. * Comportement VISCOPLASTIQUE
  866. * ---------------------------
  867. IF (NMAT.GT.INMAT) THEN
  868. *
  869. * Et si le materiau n'est pas totalement decode
  870. *
  871. CALL MODVIS(MOMODL,NMOD)
  872. INMAT=INMAT+1
  873. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  874. IF (IMOD.EQ.0 ) THEN
  875. CMATE=' '
  876. IMATE=0
  877. INATU=0
  878. ELSE IF (IMOD.EQ.1 ) THEN
  879. * GUIONNET
  880. INATU=17
  881. ELSE IF (IMOD.EQ.2 ) THEN
  882. * ONERA
  883. INATU=25
  884. ELSE IF (IMOD.EQ.3 ) THEN
  885. * VISCODOMMAGE
  886. INATU=29
  887. ELSE IF (IMOD.EQ.4 ) THEN
  888. * PARFAIT
  889. INATU = 43
  890. ELSE IF (IMOD.EQ.5 ) THEN
  891. * POUDRE_A
  892. INATU = 44
  893. ELSE IF (IMOD.EQ.6 ) THEN
  894. * POUDRE_B
  895. INATU = 45
  896. ELSE IF (IMOD.EQ.7 ) THEN
  897. * OHNO
  898. INATU = 53
  899. ELSE IF (IMOD.EQ.8 ) THEN
  900. * DDI
  901. INATU = 63
  902. ELSE IF (IMOD.EQ.9 ) THEN
  903. * KOCK
  904. INATU = 70
  905. ELSE IF (IMOD.EQ.10 ) THEN
  906. * NOUAILHAS_A
  907. INATU = 76
  908. ELSE IF (IMOD.EQ.11 ) THEN
  909. * NOUAILHAS_B
  910. INATU = 77
  911. ELSE IF (IMOD.EQ.12) THEN
  912. * VISK2
  913. INATU = 82
  914. ELSE IF (IMOD.EQ.13 ) THEN
  915. * VISCOHINTE
  916. INATU = 90
  917. ELSE IF (IMOD.EQ.14) THEN
  918. * MISTRAL
  919. INATU = 94
  920. ELSE IF (IMOD.EQ.15) THEN
  921. * BETON_URGC
  922. INATU = 100
  923. ELSE IF (IMOD.EQ.16 ) THEN
  924. * LEMENDO
  925. INATU = 103
  926. ELSE IF (IMOD.EQ.17) THEN
  927. * FLUNOR2
  928. INATU = 105
  929. ELSE IF (IMOD.EQ.18) THEN
  930. * GATT_MONERIE
  931. INATU = 107
  932. ELSE IF (IMOD.EQ.19) THEN
  933. * UO2
  934. INATU = 108
  935. ELSE IF (IMOD.EQ.20) THEN
  936. * BETON_URGC_ENDO
  937. INATU = 122
  938. ELSE IF (IMOD.EQ.21) THEN
  939. * LOI DE COMPORTEMENT VISQUEUSE AVEC DOUBLE ENDO
  940. INATU = 130
  941. ELSE IF (IMOD.EQ.22) THEN
  942. * 'CHAB_SINH_R'
  943. INATU = 136
  944. ELSE IF (IMOD.EQ.23) THEN
  945. * 'CHAB_SINH_X'
  946. INATU = 137
  947. ELSE IF (IMOD.EQ.24) THEN
  948. * 'CHAB_NOR_R'
  949. INATU = 138
  950. ELSE IF (IMOD.EQ.25) THEN
  951. * 'CHAB_NOR_X'
  952. INATU = 139
  953. ELSE IF (IMOD.EQ.26) THEN
  954. * 'PELLET'
  955. INATU = 142
  956. ELSE IF (IMOD.EQ.27) THEN
  957. * 'FLUTRA'
  958. INATU = 143
  959. ELSE IF (IMOD.EQ.28) THEN
  960. * 'SYCO1'
  961. INATU = 153
  962. ELSE IF (IMOD.EQ.29) THEN
  963. * 'SYCO2'
  964. INATU = 154
  965. ELSE IF (IMOD.EQ.30) THEN
  966. * 'CHABOCHE'
  967. INATU = 165
  968. ENDIF
  969. ELSE
  970. *
  971. * Option par defaut: ONERA
  972. *
  973. INATU=25
  974. ENDIF
  975. *
  976. ELSE IF (INLI .EQ. 4) THEN
  977. *
  978. * Comportement type ENDOMMAGEMENT
  979. * -------------------------------
  980. IF (NMAT.GT.INMAT) THEN
  981. INMAT=INMAT+1
  982. CALL MODEND(MOMODL,NMOD)
  983. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  984. IF (IMOD.EQ.0 ) THEN
  985. CMATE=' '
  986. IMATE=0
  987. INATU=0
  988. ELSE IF (IMOD.EQ.1 ) THEN
  989. * MAZARS
  990. INATU=30
  991. ELSE IF (IMOD.EQ.2 ) THEN
  992. * UNILATERAL
  993. INATU=31
  994. ELSE IF (IMOD.EQ.3 ) THEN
  995. * ROTATING_CRACK
  996. INATU=37
  997. * ELSE IF (IMOD.EQ.4) THEN
  998. * SIC_SIC
  999. * INATU=88
  1000. ELSE IF (IMOD.EQ.5) THEN
  1001. * MICROPLANS
  1002. INATU=96
  1003. ELSE IF (IMOD.EQ.6) THEN
  1004. * VISCOUNILATERAL
  1005. INATU=97
  1006. ELSE IF (IMOD.EQ.7) THEN
  1007. * MICROISO
  1008. INATU=98
  1009. * BCN
  1010. ELSE IF (IMOD.EQ.8) THEN
  1011. * MODIFIED VON MISES
  1012. INATU=118
  1013.  
  1014. ELSE IF (IMOD.EQ.9) THEN
  1015. * CRUCRA
  1016. INATU=124
  1017. ELSE IF (IMOD.EQ.10) THEN
  1018. * DAMAGE_TC - R. Faria & J. Oliver
  1019. INATU=125
  1020. * ELSE IF (IMOD.EQ.11) THEN
  1021. * SICSCAL - modele scalaire SiCf/SiC ONERA
  1022. * INATU=131
  1023. * ELSE IF (IMOD.EQ.12) THEN
  1024. * SICTENS - modele pseudo tensoriel SiCf/SiC ONERA
  1025. * INATU=132
  1026. ELSE IF (IMOD.EQ.13) THEN
  1027. * DESMORAT
  1028. INATU=134
  1029. ELSE IF (IMOD.EQ.14) THEN
  1030. * FATSIN
  1031. INATU=141
  1032. ELSE IF (IMOD.EQ.15) THEN
  1033. * RICRAG2D
  1034. INATU=144
  1035. C +BR
  1036. ELSE IF (IMOD.EQ.16) THEN
  1037. * GLRC_DM
  1038. INATU=157
  1039. ELSE IF (IMOD.EQ.17) THEN
  1040. * RICBET
  1041. INATU=158
  1042. ELSE IF (IMOD.EQ.18) THEN
  1043. * RICCOQ
  1044. INATU=159
  1045. ELSE IF (IMOD.EQ.19) THEN
  1046. * RICBET
  1047. INATU=173
  1048. ELSE IF (IMOD.EQ.20) THEN
  1049. * RICBET
  1050. INATU=177
  1051. C -BR
  1052. *
  1053. ENDIF
  1054. ELSE
  1055. *
  1056. * Option par defaut
  1057. *
  1058. INATU=30
  1059. ENDIF
  1060. *
  1061. ELSE IF (INLI .EQ. 5) THEN
  1062. *
  1063. *
  1064. * Comportement PLASTIQUE ENDOM(MAGEABLE)
  1065. * --------------------------------------
  1066. IF (NMAT.GT.INMAT) THEN
  1067. *
  1068. * Et si le materiau n'est pas totalement decode
  1069. *
  1070. CALL MODPLE(MOMODL,NMOD)
  1071. INMAT=INMAT+1
  1072. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1073. IF (IMOD.EQ.0 ) THEN
  1074. CMATE=' '
  1075. IMATE=0
  1076. INATU=0
  1077. ELSE IF (IMOD.EQ.1 ) THEN
  1078. * PSURY
  1079. INATU=51
  1080. ELSE IF (IMOD.EQ.2 ) THEN
  1081. * ROUSSELIER
  1082. INATU=62
  1083. ELSE IF (IMOD.EQ.3 ) THEN
  1084. * GURSON2
  1085. INATU=64
  1086. ELSE IF (IMOD.EQ.4 ) THEN
  1087. * DRAGON
  1088. INATU=75
  1089. ELSE IF (IMOD.EQ.5 ) THEN
  1090. * BETON_URGC
  1091. INATU=120
  1092. ELSE IF (IMOD.EQ.6 ) THEN
  1093. * BETON_INSA
  1094. INATU=121
  1095. ELSE IF (IMOD.EQ.7 ) THEN
  1096. * BETON_DYNAR_LMT
  1097. INATU=133
  1098. ELSE IF (IMOD.EQ.8) THEN
  1099. * ENDO_PLAS
  1100. INATU=135
  1101. ELSE IF (IMOD.EQ.9) THEN
  1102. * GERNAY
  1103. INATU=155
  1104. ENDIF
  1105. ELSE
  1106. * Par defaut
  1107. INATU=51
  1108. ENDIF
  1109. C
  1110. ELSE IF (INLI.EQ.6) THEN
  1111. C
  1112. C Comportement ELASTIQUE NON_LINEAIRE
  1113. C -----------------------------------
  1114. IF (NMAT.GT.INMAT) THEN
  1115. C
  1116. C Et si le materiau n'est pas totalement decode
  1117. C
  1118. CALL MODENL(MOMODL,NMOD)
  1119. INMAT=INMAT+1
  1120. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1121. IF (IMOD.EQ.0 ) THEN
  1122. CMATE=' '
  1123. IMATE=0
  1124. INATU=0
  1125. ELSE IF (IMOD.EQ.1 ) THEN
  1126. * EQUIPLAS
  1127. INATU=87
  1128. ELSE IF (IMOD.EQ.2) THEN
  1129. C UTILISATEUR
  1130. IF (NMAT.GT.INMAT) THEN
  1131. INMAT=INMAT+1
  1132. INATU = -1
  1133. ELSE
  1134. CALL ERREUR(952)
  1135. RETURN
  1136. ENDIF
  1137. ENDIF
  1138. C
  1139. ELSE
  1140. C Pas de comportement par defaut
  1141. CMATE=' '
  1142. IMATE=0
  1143. INATU=0
  1144. ENDIF
  1145. C
  1146. ELSE IF (INLI.EQ.7) THEN
  1147. C
  1148. C Comportement VISCO_EXTERNE
  1149. C --------------------------
  1150. IF (NMAT.GT.INMAT) THEN
  1151. C
  1152. C Et si le materiau n'est pas totalement decode
  1153. C
  1154. CALL MODVIX(MOMODL,NMOD)
  1155. INMAT=INMAT+1
  1156. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1157. IF (IMOD.EQ.0) THEN
  1158. CMATE=' '
  1159. IMATE=0
  1160. INATU=0
  1161. ELSE
  1162. IF (NMAT.GT.INMAT) THEN
  1163. INMAT=INMAT+1
  1164. INATU = -2-IMOD
  1165. c* Permet de recuperer IMOD=IVIEX (>0) en sortie de NOMATE avant de fixer
  1166. c* la valeur de INATU a -2
  1167. ELSE
  1168. CALL ERREUR(952)
  1169. RETURN
  1170. ENDIF
  1171. ENDIF
  1172. ELSE
  1173. C Pas de comportement par defaut
  1174. CMATE=' '
  1175. IMATE=0
  1176. INATU=0
  1177. ENDIF
  1178.  
  1179. ELSE IF (INLI.EQ.8) THEN
  1180. c
  1181. c ------------------------ IMPEDANCE --------------------------
  1182. IF (NMAT.GT.INMAT) THEN
  1183. C Et si le materiau n'est pas totalement decode
  1184.  
  1185. IMOD = 0
  1186. IMO2 = 0
  1187. CALL MODIMP(MOMODL,NMOD)
  1188. INMAT=INMAT+1
  1189. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1190. IF (IMOD.EQ.0) THEN
  1191. CMATE='IMPELAST'
  1192. INATU=161
  1193. ELSE
  1194.  
  1195. IF (IMOD.EQ.1) THEN
  1196. CMATE='IMPELAST'
  1197. if (inmat.lt.nmat) goto 20
  1198. INATU = 161
  1199. ELSEIF (IMOD.EQ.2) THEN
  1200. CMATE='IMPVOIGT'
  1201. INATU = 162
  1202. ELSEIF (IMOD.EQ.3) THEN
  1203. CMATE='IMPREUSS'
  1204. INATU = 163
  1205. ELSEIF (IMOD.EQ.4) THEN
  1206. CMATE='IMPCOMPL'
  1207. INATU = 164
  1208. ELSE
  1209. CMATE=' '
  1210. IMATE=0
  1211. INATU=0
  1212. ENDIF
  1213. ENDIF
  1214.  
  1215. ELSE
  1216. ENDIF
  1217. *
  1218. * ELSEIF (INLI.GT.8) THEN
  1219. ENDIF
  1220. ENDIF
  1221. *
  1222. *
  1223. ELSE IF (IMATE.EQ.2) THEN
  1224. *
  1225. * >>>>>>>>>>> Dans le cas d'une formulation elastique orthotrope
  1226. * on se limite pour l'instant �
  1227. * 2 comportements plastiques,
  1228. * 1 comportement viscoplastique,
  1229. * 1 comportement endommageable,
  1230. * + le comportement 'NON_LINEAIRE' 'UTILISATEUR'
  1231. *
  1232. IF (NMAT.GT.INMAT) THEN
  1233. *
  1234. * Et si le materiau n'est pas totalement decode
  1235. *
  1236. CALL MODNLI(MOMODL,NMOD)
  1237. INMAT=INMAT+1
  1238. CALL PLACE(MOMODL,NMOD,INLI,MATMOD(INMAT))
  1239. c mistral :
  1240. IF (INLI.NE.1.AND.INLI.NE.3.AND.INLI.NE.4.AND.
  1241. & INLI.NE.6) THEN
  1242. c mistral.
  1243. *
  1244. * Materiau non reconnu
  1245. *
  1246. CMATE=' '
  1247. IMATE=0
  1248. INATU=0
  1249. *
  1250. ELSE IF (INLI.EQ.1) THEN
  1251. *
  1252. * Comportement plastique
  1253. * ----------------------
  1254.  
  1255. IF (NMAT.GT.INMAT) THEN
  1256. *
  1257. * Et si le materiau n'est pas totalement decode
  1258. *
  1259. CALL MODPLA(MOMODL,NMOD)
  1260. INMAT= INMAT+1
  1261. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1262. IF (IMOD.EQ.0) THEN
  1263. CMATE=' '
  1264. IMATE=0
  1265. INATU=0
  1266. ELSE IF (IMOD.EQ.16) THEN
  1267. * MOHR COULOMB
  1268. INATU=34
  1269. ELSE IF (IMOD.EQ.38) THEN
  1270. * ECROUIS_INSA
  1271. INATU=67
  1272. ELSE IF (IMOD.EQ.39) THEN
  1273. * PARFAIT_INSA
  1274. INATU=68
  1275. ELSE IF (IMOD.EQ.70) THEN
  1276. * ISS_GRANGE
  1277. INATU=151
  1278. ELSE IF (IMOD.EQ.71) THEN
  1279. * RUP_THER
  1280. INATU=152
  1281. ELSE
  1282. CMATE=' '
  1283. imate=0
  1284. inatu=0
  1285. ENDIF
  1286. ENDIF
  1287. c mistral :
  1288. ELSE IF (INLI.EQ.3) THEN
  1289. *
  1290. * Comportement VISCOPLASTIQUE
  1291. * ---------------------------
  1292. IF (NMAT.GT.INMAT) THEN
  1293. *
  1294. * Et si le materiau n'est pas totalement decode
  1295. *
  1296. CALL MODVIS(MOMODL,NMOD)
  1297. INMAT=INMAT+1
  1298. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1299. IF (IMOD.EQ.0 ) THEN
  1300. CMATE=' '
  1301. IMATE=0
  1302. INATU=0
  1303. ELSE IF (IMOD.EQ.14) THEN
  1304. * MISTRAL
  1305. INATU = 94
  1306. ELSE
  1307. CMATE=' '
  1308. IMATE=0
  1309. INATU=0
  1310. ENDIF
  1311. ENDIF
  1312. c mistral.
  1313. ELSE IF(INLI.EQ.4) THEN
  1314. *
  1315. * Comportement endommageable
  1316. * --------------------------
  1317.  
  1318. IF (NMAT.GT.INMAT) THEN
  1319. *
  1320. * Et si le materiau n'est pas totalement decode
  1321. *
  1322. CALL MODEND(MOMODL,NMOD)
  1323. INMAT= INMAT+1
  1324. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1325. IF (IMOD.EQ.0) THEN
  1326. CMATE=' '
  1327. IMATE=0
  1328. INATU=0
  1329. ELSE IF (IMOD.EQ.4) THEN
  1330. * SIC_SIC
  1331. INATU=88
  1332. ELSE IF (IMOD.EQ.11) THEN
  1333. * SICSCAL - mod�le scalaire SiCf/SiC ONERA
  1334. INATU=131
  1335. ELSE IF (IMOD.EQ.12) THEN
  1336. * SICTENS - mod�le pseudo tensoriel SiCf/SiC ONERA
  1337. INATU=132
  1338. ELSE
  1339. CMATE=' '
  1340. IMATE=0
  1341. INATU=0
  1342. ENDIF
  1343. ENDIF
  1344. C
  1345. ELSE IF (INLI.EQ.6) THEN
  1346. C
  1347. C Comportement NON_LINEAIRE
  1348. C -------------------------
  1349. IF (NMAT.GT.INMAT) THEN
  1350. C
  1351. C Et si le materiau n'est pas totalement decode
  1352. C
  1353. CALL MODENL(MOMODL,NMOD)
  1354. INMAT=INMAT+1
  1355. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1356. IF (IMOD.EQ.2) THEN
  1357. C UTILISATEUR
  1358. IF (NMAT.GT.INMAT) THEN
  1359. INMAT=INMAT+1
  1360. INATU = -1
  1361. ELSE
  1362. CALL ERREUR(952)
  1363. RETURN
  1364. ENDIF
  1365. ELSE
  1366. C Autres cas non autorises
  1367. CMATE=' '
  1368. IMATE=0
  1369. INATU=0
  1370. ENDIF
  1371. ELSE
  1372. C Pas de comportement par defaut
  1373. CMATE=' '
  1374. IMATE=0
  1375. INATU=0
  1376. ENDIF
  1377. ENDIF
  1378. ENDIF
  1379. *
  1380. *
  1381. ELSE IF (IMATE.EQ.3) THEN
  1382. C
  1383. C >>>>>>>>>>> Dans le cas d'une formulation elastique anisotrope
  1384. C on se limite pour l'instant au comportement
  1385. C 'NON_LINEAIRE' 'UTILISATEUR'
  1386. C
  1387. IF (NMAT.GT.INMAT) THEN
  1388. C
  1389. C Et si le materiau n'est pas totalement decode
  1390. C
  1391. CALL MODNLI(MOMODL,NMOD)
  1392. INMAT=INMAT+1
  1393. CALL PLACE(MOMODL,NMOD,INLI,MATMOD(INMAT))
  1394. IF (INLI.NE.6) THEN
  1395. C
  1396. C Materiau non reconnu
  1397. C
  1398. CMATE=' '
  1399. IMATE=0
  1400. INATU=0
  1401. C
  1402. ELSE
  1403. C
  1404. C Comportement NON_LINEAIRE
  1405. C -------------------------
  1406. IF (NMAT.GT.INMAT) THEN
  1407. C
  1408. C Et si le materiau n'est pas totalement decode
  1409. C
  1410. CALL MODENL(MOMODL,NMOD)
  1411. INMAT=INMAT+1
  1412. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1413. IF (IMOD.EQ.2) THEN
  1414. C UTILISATEUR
  1415. IF (NMAT.GT.INMAT) THEN
  1416. INMAT=INMAT+1
  1417. INATU = -1
  1418. ELSE
  1419. CALL ERREUR(952)
  1420. RETURN
  1421. ENDIF
  1422. ELSE
  1423. C Autres cas non autorises
  1424. CMATE=' '
  1425. IMATE=0
  1426. INATU=0
  1427. ENDIF
  1428. ELSE
  1429. C Pas de comportement par defaut
  1430. CMATE=' '
  1431. IMATE=0
  1432. INATU=0
  1433. ENDIF
  1434. ENDIF
  1435. ENDIF
  1436. C
  1437. C
  1438. ELSE IF (IMATE.EQ.4) THEN
  1439. *
  1440. * >>>>>>>>>>> Dans le cas d'une formulation elastique unidirectionnelle
  1441. * on se limite pour l'instant � quelques comportements
  1442. * plastiques et visqueux
  1443. * + le comportement 'NON_LINEAIRE' 'UTILISATEUR'
  1444. *
  1445. IF (NMAT.GT.INMAT) THEN
  1446. *
  1447. * Et si le materiau n'est pas totalement decode
  1448. *
  1449. CALL MODNLI(MOMODL,NMOD)
  1450. INMAT=INMAT+1
  1451. CALL PLACE(MOMODL,NMOD,INLI,MATMOD(INMAT))
  1452. IF (INLI.NE.1.AND.INLI.NE.2.AND.INLI.NE.6) THEN
  1453. *
  1454. * Materiau non reconnu
  1455. *
  1456. CMATE=' '
  1457. IMATE=0
  1458. INATU=0
  1459. *
  1460. ELSE IF(INLI.EQ.1) THEN
  1461. *
  1462. * Comportement plastique
  1463. * ----------------------
  1464.  
  1465. IF (NMAT.GT.INMAT) THEN
  1466. *
  1467. * Et si le materiau n'est pas totalement decode
  1468. *
  1469. CALL MODPLA(MOMODL,NMOD)
  1470. INMAT= INMAT+1
  1471. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1472. IF (IMOD.EQ.0) THEN
  1473. CMATE=' '
  1474. IMATE=0
  1475. INATU=0
  1476. ELSE IF (IMOD.EQ.70) THEN
  1477. * ISS_GRANGE
  1478. INATU=151
  1479. ELSE IF (IMOD.EQ.71) THEN
  1480. * RUP_THER
  1481. INATU=152
  1482. ELSE IF (IMOD.EQ.1) THEN
  1483. * ISOTROPE
  1484. INATU=5
  1485. ELSE IF (IMOD.EQ.2) THEN
  1486. * PARFAIT
  1487. INATU=1
  1488. ELSE IF (IMOD.EQ.3) THEN
  1489. * CINEMATIQUE
  1490. INATU=4
  1491. ELSE IF (IMOD.EQ.21) THEN
  1492. * ACIER_UNI
  1493. INATU=40
  1494. ENDIF
  1495. ELSE
  1496. *
  1497. * Option par defaut
  1498. *
  1499. INATU=5
  1500. ENDIF
  1501. *
  1502. ELSE IF(INLI.EQ.2) THEN
  1503. *
  1504. * Comportement FLUAGE
  1505. * -------------------
  1506.  
  1507. IF (NMAT.GT.INMAT) THEN
  1508. *
  1509. * Et si le materiau n'est pas totalement decode
  1510. *
  1511. CALL MODFLU(MOMODL,NMOD)
  1512. INMAT= INMAT+1
  1513. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1514. IF (IMOD.EQ.0) THEN
  1515. CMATE=' '
  1516. IMATE=0
  1517. INATU=0
  1518. ELSE IF (IMOD.EQ.9) THEN
  1519. * MAXWELL
  1520. INATU=74
  1521. ENDIF
  1522. ELSE
  1523. *
  1524. * Option par defaut
  1525. *
  1526. INATU=74
  1527. ENDIF
  1528. C
  1529. ELSE IF (INLI.EQ.6) THEN
  1530. C
  1531. C Comportement NON_LINEAIRE
  1532. C -------------------------
  1533. IF (NMAT.GT.INMAT) THEN
  1534. C
  1535. C Et si le materiau n'est pas totalement decode
  1536. C
  1537. CALL MODENL(MOMODL,NMOD)
  1538. INMAT=INMAT+1
  1539. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1540. IF (IMOD.EQ.2) THEN
  1541. C UTILISATEUR
  1542. IF (NMAT.GT.INMAT) THEN
  1543. INMAT=INMAT+1
  1544. INATU = -1
  1545. ELSE
  1546. CALL ERREUR(952)
  1547. RETURN
  1548. ENDIF
  1549. ELSE
  1550. C Autres cas non autorises
  1551. CMATE=' '
  1552. IMATE=0
  1553. INATU=0
  1554. ENDIF
  1555. ELSE
  1556. C Pas de comportement par defaut
  1557. CMATE=' '
  1558. IMATE=0
  1559. INATU=0
  1560. ENDIF
  1561. ENDIF
  1562. ENDIF
  1563. *
  1564. * MODAL et STATIQUE
  1565. *
  1566. ELSE IF (IMATE.EQ.9.OR.IMATE.EQ.10) THEN
  1567. IF (NMAT.GT.INMAT) THEN
  1568. *
  1569. * Et si le materiau n'est pas totalement decode
  1570. *
  1571. CALL MODNLI(MOMODL,NMOD)
  1572. * INMAT=INMAT+1
  1573. CALL PLACE(MOMODL,NMOD,INLI,MATMOD(INMAT))
  1574. IF (INLI.EQ.0) THEN
  1575. *
  1576. * Materiau non reconnu
  1577. *
  1578. CMATE=' '
  1579. IMATE=0
  1580. INATU=0
  1581. ELSE IF (INLI .EQ. 1) THEN
  1582. IF (NMAT.GT.INMAT) THEN
  1583. *
  1584. * Et si le materiau n'est pas totalement decode
  1585. *
  1586. CALL MODPLA(MOMODL,NMOD)
  1587. INMAT= INMAT+1
  1588. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1589. IF (IMOD.EQ.0) THEN
  1590. CMATE=' '
  1591. IMATE=0
  1592. INATU=0
  1593. ELSE IF (IMOD.EQ.1) THEN
  1594. * ISOTROPE
  1595. INATU=5
  1596. ELSE IF (IMOD.EQ.2) THEN
  1597. * PARFAIT
  1598. INATU=1
  1599. ELSE IF (IMOD.EQ.3) THEN
  1600. INATU = 3
  1601. ENDIF
  1602. * CINEMATIQUE
  1603. ENDIF
  1604. ELSE IF (INLI .EQ. 8) THEN
  1605. IMATE = 1
  1606. INMAT = INMAT - 1
  1607. GOTO 25
  1608. ENDIF
  1609. ENDIF
  1610. *
  1611. * >>>>>>>>>>> CAS DES POUTRES A FORMULATION SECTION
  1612. *
  1613. ELSE IF (IMATE.EQ.11) THEN
  1614. *
  1615. IF (NMAT.GT.INMAT) THEN
  1616. *
  1617. * Et si le materiau n'est pas totalement decode
  1618. *
  1619. CALL MODNLI(MOMODL,NMOD)
  1620. INMAT=INMAT+1
  1621. CALL PLACE(MOMODL,NMOD,INLI,MATMOD(INMAT))
  1622. IF (INLI.NE.1) THEN
  1623. *
  1624. * Materiau non reconnu
  1625. *
  1626. CMATE=' '
  1627. IMATE=0
  1628. INATU=0
  1629. ELSE
  1630. *
  1631. * Comportement plastique
  1632. * ----------------------
  1633.  
  1634. IF (NMAT.GT.INMAT) THEN
  1635. *
  1636. * Et si le materiau n'est pas totalement decode
  1637. *
  1638. CALL MODPLA(MOMODL,NMOD)
  1639. INMAT= INMAT+1
  1640. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1641. IF (IMOD.EQ.0) THEN
  1642. CMATE=' '
  1643. IMATE=0
  1644. INATU=0
  1645. ELSE IF (IMOD.EQ.22) THEN
  1646. * SECTION
  1647. INATU=41
  1648. ELSE
  1649. *
  1650. * cas non autorise
  1651. *
  1652. CMATE=' '
  1653. IMATE=0
  1654. INATU=0
  1655. ENDIF
  1656. *
  1657. ENDIF
  1658. ENDIF
  1659. ENDIF
  1660.  
  1661. ELSE IF (IMATE.EQ.12) THEN
  1662. * ************************
  1663. * | cas 'ZONE_COHESIVE' |
  1664. * ************************
  1665. * >>>>>>>>>>> Dans le cas d'une formulation elastique zone_cohesive
  1666. * on se limite pour l'instant a quelques comportements
  1667. * plastique_endo
  1668. * + le comportement 'NON_LINEAIRE' 'UTILISATEUR'
  1669.  
  1670. IF (NMAT.GT.INMAT) THEN
  1671. *
  1672. * Et si le materiau n'est pas totalement decode
  1673. *
  1674. CALL MODNLI(MOMODL,NMOD)
  1675. INMAT=INMAT+1
  1676. CALL PLACE(MOMODL,NMOD,INLI,MATMOD(INMAT))
  1677. IF (INLI.NE.5.AND.INLI.NE.6) THEN
  1678. *
  1679. * Materiau non reconnu
  1680. *
  1681. CMATE=' '
  1682. IMATE=0
  1683. INATU=0
  1684. *
  1685. ELSE IF(INLI.EQ.5) THEN
  1686. *
  1687. * Comportement plastique_endo
  1688. * --------------------------
  1689.  
  1690. IF (NMAT.GT.INMAT) THEN
  1691. *
  1692. * Et si le materiau n'est pas totalement decode
  1693. *
  1694. CALL MODPLE(MOMODL,NMOD)
  1695. INMAT= INMAT+1
  1696. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1697. IF (IMOD.EQ.0) THEN
  1698. CMATE=' '
  1699. IMATE=0
  1700. INATU=0
  1701. ELSE IF (IMOD.EQ.10) THEN
  1702. * WELLS
  1703. INATU=156
  1704. ENDIF
  1705. ELSE
  1706. *
  1707. * Option par defaut
  1708. *
  1709. INATU=156
  1710. ENDIF
  1711. *
  1712. C
  1713. ELSE IF (INLI.EQ.6) THEN
  1714. C
  1715. C Comportement NON_LINEAIRE
  1716. C -------------------------
  1717. IF (NMAT.GT.INMAT) THEN
  1718. C
  1719. C Et si le materiau n'est pas totalement decode
  1720. C
  1721. CALL MODENL(MOMODL,NMOD)
  1722. INMAT=INMAT+1
  1723. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT))
  1724. IF (IMOD.EQ.2) THEN
  1725. C UTILISATEUR
  1726. IF (NMAT.GT.INMAT) THEN
  1727. INMAT=INMAT+1
  1728. INATU = -1
  1729. ELSE
  1730. CALL ERREUR(952)
  1731. RETURN
  1732. ENDIF
  1733. ELSE
  1734. C Autres cas non autorises
  1735. CMATE=' '
  1736. IMATE=0
  1737. INATU=0
  1738. ENDIF
  1739. ELSE
  1740. C Pas de comportement par defaut
  1741. CMATE=' '
  1742. IMATE=0
  1743. INATU=0
  1744. ENDIF
  1745. ENDIF
  1746. ENDIF
  1747.  
  1748. ** ELSE IF (IMATE.GT.12) THEN
  1749. ENDIF
  1750.  
  1751. if (NMAT.GT.INMAT) then
  1752. do jma=1,nmat
  1753. if(matmod(jma).eq.'CRIP') then
  1754. INMAT = INMAT+1
  1755. endif
  1756. enddo
  1757. endif
  1758.  
  1759. *--------------------------------------------------------------------*
  1760. * 3/ CAS DE LA FORMULATION 'LIQUIDE ' *
  1761. *--------------------------------------------------------------------*
  1762. ELSE IF (forfo1.EQ.'LIQUIDE') THEN
  1763.  
  1764. IF (NMAT.EQ.0) THEN
  1765. CMATE='ISOTROPE'
  1766. IMATE=1
  1767. ELSE IF (NMAT.EQ.1) THEN
  1768. CALL PLACE(LISTMT,3,IPLAC,MATMOD(1))
  1769. INMAT=INMAT+1
  1770. IF (IPLAC.EQ.1) THEN
  1771. CMATE = MATMOD(1)
  1772. IMATE=1
  1773. ENDIF
  1774. ENDIF
  1775.  
  1776. *--------------------------------------------------------------------*
  1777. * 4/ CAS DE LA FORMULATION 'THERMIQUE' 'CONVECTION' *
  1778. *--------------------------------------------------------------------*
  1779. ELSE IF (forfo1.EQ.'CONVECTION') THEN
  1780. CMATE = 'CONVECTI'
  1781. IMATE = 1
  1782. IF (NMAT.NE.0)THEN
  1783. if (nmat.gt.2) then
  1784. CALL MODCON(MOMODL,NMOD)
  1785. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(3))
  1786. INMAT=INMAT+1
  1787. IF (IPLAC.NE.0)THEN
  1788. CMATE = MOMODL(IPLAC)
  1789. IMATE = IPLAC
  1790. ENDIF
  1791. endif
  1792. ENDIF
  1793. * comme il y a ici les mots isotrope et convection pour modele thermique
  1794. INMAT=INMAT+2
  1795. *
  1796. *--------------------------------------------------------------------*
  1797. * 9/ CAS DE LA FORMULATION 'THERMIQUE' 'RAYONNEMENT' *
  1798. *--------------------------------------------------------------------*
  1799. ELSE IF (forfo1.EQ.'RAYONNEMENT') THEN
  1800. CMATE ='RAYONNEM'
  1801. IMATE = 1
  1802. if(NMAT.ne.0) then
  1803. call modray(momodl,nmod)
  1804. call place (momodl,nmod,iplac,matmod(3))
  1805. if( iplac.eq.1)then
  1806. imate=2
  1807. inmat=1
  1808. elseif( iplac.eq.2) then
  1809. imate=3
  1810. inmat=1
  1811. elseif(iplac.eq.3) then
  1812. imate=4
  1813. iplacf=0
  1814. iplacs=0
  1815. iplacc=0
  1816. call place(matmod,nmat,iplacf,'FERME ')
  1817. call place(matmod,nmat,iplacs,'SYMETRIE ')
  1818. call place(matmod,nmat,iplacc,'CONVEXE ')
  1819. icas=0
  1820. if( iplacf.ne.0) icas=icas+1
  1821. if( iplacs.ne.0) icas=icas+1
  1822. if( iplacc.ne.0) icas=icas+1
  1823. * inmat=inmat+icas
  1824. if( icas.eq.0) then
  1825. inatu= 1
  1826. inmat=1
  1827. elseif(icas.eq.1)then
  1828. inmat=2
  1829. if(iplacf.ne.0) then
  1830. inatu=2
  1831. elseif(iplacs.ne.0) then
  1832. inatu=3
  1833. else
  1834. inatu=4
  1835. endif
  1836. elseif( icas.eq.2) then
  1837. inmat=3
  1838. if(iplacf.eq.0) then
  1839. inatu=5
  1840. elseif(iplacs.eq.0) then
  1841. inatu=6
  1842. else
  1843. inatu=7
  1844. endif
  1845. else
  1846. inmat=4
  1847. inatu=8
  1848. endif
  1849. endif
  1850. endif
  1851. CALL place (matmod,nmat,iplac,'TRAYO')
  1852. if(iplac.ne.0) inmat=inmat+1
  1853. * comme il y a le mot isotrope et le mot rayonnement si modele thermique
  1854. inmat=inmat+2
  1855. *
  1856. *--------------------------------------------------------------------*
  1857. * 11/ CAS DE LA FORMULATION 'NAVIER_STOKES' *
  1858. *--------------------------------------------------------------------*
  1859. ELSE IF (forfo1.EQ.'NAVIER_STOKES') THEN
  1860. INMAT=1
  1861. CMATE='NEWTONIE'
  1862. IMATE=1
  1863. *
  1864. *--------------------------------------------------------------------*
  1865. * 13/ CAS DE LA FORMULATION 'EULER' *
  1866. *--------------------------------------------------------------------*
  1867. ELSE IF (forfo1.EQ.'EULER') THEN
  1868. INMAT=1
  1869. CMATE='NEWTONIE'
  1870. IMATE=1
  1871. *
  1872. *--------------------------------------------------------------------*
  1873. * 10/ CAS DE LA FORMULATION 'MAGNETODYNAMIQUE' *
  1874. *--------------------------------------------------------------------*
  1875. ELSE IF (forfo1.EQ.'MAGNETODYNAMIQUE') THEN
  1876. IF(NMAT.NE.0) THEN
  1877. IF(MATMOD(1).EQ.'POTENTIEL_VECTEU') THEN
  1878. CMATE='CORFOU '
  1879. IMATE=1
  1880. INMAT=INMAT+1
  1881. ELSE
  1882. CALL PLACE(LISTMT,3,IPLAC,MATMOD(1))
  1883. IF(IPLAC.NE.0) THEN
  1884. CMATE=LISTMT(IPLAC)
  1885. IMATE=IPLAC
  1886. INMAT=INMAT+1
  1887. ENDIF
  1888. ENDIF
  1889. IF(NMAT.GT.INMAT) THEN
  1890. CALL PLACE(LISTMT,3,IPLAC,MATMOD(2))
  1891. IF(IPLAC.NE.0) THEN
  1892. CMATE=LISTMT(IPLAC)
  1893. IMATE=IPLAC
  1894. INMAT=INMAT+1
  1895. ENDIF
  1896. ENDIF
  1897. ELSE
  1898. CMATE='CORFOU '
  1899. IMATE=1
  1900. INMAT=INMAT+1
  1901. ENDIF
  1902. *
  1903. *--------------------------------------------------------------------*
  1904. * 8/ CAS DE LA FORMULATION 'CONTACT' *
  1905. *--------------------------------------------------------------------*
  1906. ELSE IF (forfo1.EQ.'CONTACT') THEN
  1907. INMAT=1
  1908. imate=0
  1909. inatu=0
  1910. * imate=1 unilateral; imate=2 maintenu; inatu=0 pas de frottement
  1911. * inatu=1 coulomb; inatu=2 frocable
  1912. 88 continue
  1913. CALL MOCONT(MOMODL,NMOD)
  1914.  
  1915. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(inmat))
  1916. if(iplac.eq.1) then
  1917. CMATE='UNILATERAL'
  1918. imate=1
  1919. elseif (IPLAC.EQ.2) THEN
  1920. CMATE='PERMANENT'
  1921. imate=2
  1922. elseif (IPLAC.EQ.3) THEN
  1923. inatu=1
  1924. elseif (iplac.eq.4) then
  1925. inatu=1
  1926. elseif(iplac.eq.5) then
  1927. inatu=2
  1928. endif
  1929. inmat=inmat+1
  1930. if(inmat.le.nmat) go to 88
  1931.  
  1932. *--------------------------------------------------------------------*
  1933. * 12/ CAS DE LA FORMULATION 'MELANGE' *
  1934. * on renvoie le premier modele trouve !!! *
  1935. *--------------------------------------------------------------------*
  1936. ELSE IF (forfo1.EQ.'MELANGE') THEN
  1937. IF (NMAT.GE.1)THEN
  1938. CALL MODMEL(MOMODL,NMOD)
  1939. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(1))
  1940. IF (IPLAC.EQ.0)THEN
  1941. CMATE = 'PARALLELE'
  1942. IPLAC = 3
  1943. ELSE
  1944. CMATE = MOMODL(IPLAC)
  1945. ENDIF
  1946. IMATE = IPLAC
  1947. * on ne decortique pas plus pour l instant
  1948. INMAT = NMAT
  1949. ELSE
  1950. * il y a un probleme
  1951. INMAT = -1
  1952. ENDIF
  1953. *
  1954. *--------------------------------------------------------------------*
  1955. * 14/ CAS DE LA FORMULATION 'FISSURE' *
  1956. *--------------------------------------------------------------------*
  1957. ELSE IF (forfo1.EQ.'FISSURE') THEN
  1958. IF (NMAT.NE.0) THEN
  1959. * mode de condensation
  1960. CALL MODCDE(MOMODL,NMOD)
  1961. CALL PLACE(MOMODL,NMOD,IPLA1,MATMOD(1))
  1962. CALL PLACE(MOMODL,NMOD,IPLA2,MATMOD(2))
  1963. CALL PLACE(MOMODL,NMOD,IPLA3,MATMOD(3))
  1964. IF (IPLA1.EQ.0.AND.IPLA2.EQ.0.AND.IPLA3.EQ.0)THEN
  1965. CMAT1='MA'
  1966. ELSE
  1967. INMAT=INMAT+1
  1968. IF (IPLA1.GT.0) CMAT1=MATMOD(1)(1:2)
  1969. IF (IPLA2.GT.0) CMAT1=MATMOD(2)(1:2)
  1970. IF (IPLA3.GT.0) CMAT1=MATMOD(3)(1:2)
  1971. END IF
  1972. *
  1973. * comportement de la vapeur
  1974. CALL MODVAP(MOMODL,NMOD)
  1975. CALL PLACE(MOMODL,NMOD,IPLA1,MATMOD(1))
  1976. CALL PLACE(MOMODL,NMOD,IPLA2,MATMOD(2))
  1977. CALL PLACE(MOMODL,NMOD,IPLA3,MATMOD(3))
  1978. IF (IPLA1.EQ.0.AND.IPLA2.EQ.0.AND.IPLA3.EQ.0)THEN
  1979. CMAT2='PA'
  1980. ELSE
  1981. INMAT=INMAT+1
  1982. IF (IPLA1.GT.0) CMAT2=MATMOD(1)(1:2)
  1983. IF (IPLA2.GT.0) CMAT2=MATMOD(2)(1:2)
  1984. IF (IPLA3.GT.0) CMAT2=MATMOD(3)(1:2)
  1985. END IF
  1986. *
  1987. * lois de frottement
  1988. CALL MODFRT(MOMODL,NMOD)
  1989. CALL PLACE(MOMODL,NMOD,IPLA1,MATMOD(1))
  1990. CALL PLACE(MOMODL,NMOD,IPLA2,MATMOD(2))
  1991. CALL PLACE(MOMODL,NMOD,IPLA3,MATMOD(3))
  1992. IF (IPLA1.EQ.0.AND.IPLA2.EQ.0.AND.IPLA3.EQ.0)THEN
  1993. CMAT3='BLAS'
  1994. ELSE
  1995. INMAT=INMAT+1
  1996. IF (IPLA1.GT.0) CMAT3=MATMOD(1)(8:11)
  1997. IF (IPLA2.GT.0) CMAT3=MATMOD(2)(8:11)
  1998. IF (IPLA3.GT.0) CMAT3=MATMOD(3)(8:11)
  1999. END IF
  2000. *
  2001. CMATE = CMAT1(1:2)//CMAT2(1:2)
  2002. CMATE = CMATE(1:4)//CMAT3(1:4)
  2003. IMATE=1
  2004. INATU=1
  2005. ELSE
  2006. *
  2007. * par defaut vapeur=gaz parfait, condensation= en masse,
  2008. * frottement=canal lisse
  2009. *
  2010. CMATE = 'MAPABLAS'
  2011. IMATE=1
  2012. INATU=1
  2013. END IF
  2014. *--------------------------------------------------------------------*
  2015. * 15/ CAS DE LA FORMULATION 'LAISON' *
  2016. *--------------------------------------------------------------------*
  2017. ELSE IF (forfo1.EQ.'LIAISON') THEN
  2018. IMOD = 0
  2019. IMO2 = 0
  2020. CALL MODLIA(MOMODL,NMOD)
  2021. CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(1))
  2022. IF (IMOD.EQ.0) THEN
  2023. CMATE=' '
  2024. IMATE=0
  2025. INATU=0
  2026. ELSE
  2027. IF (NMAT.GT.1) THEN
  2028. CALL PLACE(MOMODL,NMOD,IMO2,MATMOD(2))
  2029. ENDIF
  2030. ENDIF
  2031. IF (IMOD.EQ.1.AND.IMO2.EQ.3) THEN
  2032. CMATE='PO_PL_FL'
  2033. IMATE=1
  2034. ELSEIF (IMOD.EQ.1.AND.IMO2.EQ.2) THEN
  2035. CMATE='PO_PL_FR'
  2036. IMATE=2
  2037. ELSEIF (IMOD.EQ.1.AND.IMO2.EQ.0) THEN
  2038. CMATE='PO_PL'
  2039. IMATE=3
  2040. ELSEIF (IMOD.EQ.4.AND.IMO2.EQ.2) THEN
  2041. CMATE='PO_PO_FR'
  2042. IMATE=4
  2043. ELSEIF (IMOD.EQ.4.AND.IMO2.EQ.5) THEN
  2044. CMATE='PO_PO_DP'
  2045. IMATE=5
  2046. ELSEIF (IMOD.EQ.4.AND.IMO2.EQ.6) THEN
  2047. CMATE='PO_PO_RP'
  2048. IMATE=6
  2049. ELSEIF (IMOD.EQ.4.AND.IMO2.EQ.0) THEN
  2050. CMATE='PO_PO'
  2051. IMATE=7
  2052. ELSEIF (IMOD.EQ.8.AND.IMO2.EQ.9) THEN
  2053. CMATE='PO_CE_MO'
  2054. IMATE=8
  2055. ELSEIF (IMOD.EQ.8.AND.IMO2.EQ.2) THEN
  2056. CMATE='PO_CE_FR'
  2057. IMATE=9
  2058. ELSEIF (IMOD.EQ.8.AND.IMO2.EQ.0) THEN
  2059. CMATE='PO_CE'
  2060. IMATE=10
  2061. ELSEIF (IMOD.EQ.11.AND.IMO2.EQ.2) THEN
  2062. CMATE='CE_PL_FR'
  2063. IMATE=11
  2064. ELSEIF (IMOD.EQ.12.AND.IMO2.EQ.2) THEN
  2065. CMATE='CE_CE_FR'
  2066. IMATE=12
  2067. ELSEIF (IMOD.EQ.10.AND.IMO2.EQ.13) THEN
  2068. CMATE='PR_PR_IN'
  2069. IMATE=13
  2070. ELSEIF (IMOD.EQ.10.AND.IMO2.EQ.14) THEN
  2071. CMATE='PR_PR_EX'
  2072. IMATE=14
  2073. ELSEIF (IMOD.EQ.15.AND.IMO2.EQ.2) THEN
  2074. CMATE='LI_LI_FR'
  2075. IMATE=15
  2076. ELSEIF (IMOD.EQ.16.AND.IMO2.EQ.2) THEN
  2077. CMATE='LI_CE_FR'
  2078. IMATE=16
  2079. ELSEIF (IMOD.EQ.17.AND.IMO2.EQ.22) THEN
  2080. CMATE='PA_FL_RO'
  2081. IMATE=17
  2082. ELSEIF (IMOD.EQ.18.AND.IMO2.EQ.19) THEN
  2083. CMATE='COUP_DEP'
  2084. IMATE=18
  2085. ELSEIF (IMOD.EQ.18.AND.IMO2.EQ.20) THEN
  2086. CMATE='COUP_VIT'
  2087. IMATE=19
  2088. ELSEIF (IMOD.EQ.21.AND.IMO2.EQ.0) THEN
  2089. CMATE='POLYNOMI'
  2090. IMATE=20
  2091. ELSEIF (IMOD.EQ.23.AND.IMO2.EQ.24) THEN
  2092. CMATE='NEWMOD'
  2093. IMATE=23
  2094. ELSE
  2095. CMATE=' '
  2096. IMATE=0
  2097. INATU=0
  2098. ENDIF
  2099. INMAT = NMAT
  2100.  
  2101. *--------------------------------------------------------------------*
  2102. * 16/ CAS DE LA FORMULATION 'THERMOHYDRIQUE' *
  2103. *--------------------------------------------------------------------*
  2104. ELSE IF (forfo1.EQ.'THERMOHYDRIQUE') THEN
  2105. IF (NMAT.NE.0)THEN
  2106. IF(MATMOD(1).NE.'SCHREFLER') THEN
  2107. CMATE=' '
  2108. IMATE=0
  2109. INATU=0
  2110. ELSE
  2111. INMAT=1
  2112. CMATE='SCHREFLER'
  2113. IMATE=1
  2114. ENDIF
  2115. ELSE
  2116. INMAT=INMAT+1
  2117. CMATE = 'SCHREFLER'
  2118. IMATE=1
  2119. ENDIF
  2120. *
  2121. *----------------------------------------------------------------------*
  2122. * 17/ CAS DE LA FORMULATION 'ELECTROSTATIQUE' *
  2123. *----------------------------------------------------------------------*
  2124. ELSE IF ( forfo1.EQ.'ELECTROSTATIQUE' ) THEN
  2125. INATU = 0
  2126. * Par defaut la formulation est isotrope
  2127. IF (NMAT.EQ.0) THEN
  2128. CMATE = 'ISOTROPE'
  2129. IMATE = 1
  2130. ELSE
  2131. INMAT = INMAT+1
  2132. CALL PLACE(LISTMT,3,IPLAC,MATMOD(INMAT))
  2133. C Recuperation de la "tropie"
  2134. IF (IPLAC.NE.0) THEN
  2135. CMATE = MATMOD(INMAT)
  2136. IMATE = IPLAC
  2137. INMAT = INMAT+1
  2138. ELSE
  2139. CMATE = 'ISOTROPE'
  2140. IMATE = 1
  2141. ENDIF
  2142. ENDIF
  2143. *
  2144. *----------------------------------------------------------------------*
  2145. * 18/ CAS DE LA FORMULATION 'DIFFUSION' *
  2146. *----------------------------------------------------------------------*
  2147. ELSE IF ( forfo1.EQ.'DIFFUSION' ) THEN
  2148. INATU = 0
  2149. * Par defaut la formulation est isotrope
  2150. IF (NMAT.EQ.0) THEN
  2151. CMATE = 'ISOTROPE'
  2152. IMATE = 1
  2153. ELSE
  2154. INMAT = INMAT+1
  2155. CALL PLACE(LISTMT,3,IPLAC,MATMOD(INMAT))
  2156. C Recuperation de la "tropie"
  2157. IF (IPLAC.NE.0) THEN
  2158. CMATE = MATMOD(INMAT)
  2159. IMATE = IPLAC
  2160. INMAT = INMAT+1
  2161. ELSE
  2162. CMATE = 'ISOTROPE'
  2163. IMATE = 1
  2164. ENDIF
  2165. IF (NMAT.GE.INMAT) THEN
  2166. CALL MODDIF(MOMODL,NMOD)
  2167. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT))
  2168. IF (IPLAC.EQ.0) THEN
  2169. CMATE = ' '
  2170. IMATE = 0
  2171. ELSE
  2172. INMAT = INMAT+1
  2173. C FICK (lineaire)
  2174. IF (IPLAC.EQ.1) THEN
  2175. INATU = 0
  2176. C SORET (non lineaire)
  2177. ELSE IF (IPLAC.EQ.2) THEN
  2178. INATU = 1
  2179. C UTILISATEUR (non lineaire)
  2180. ELSE IF (IPLAC.EQ.3) THEN
  2181. INATU = -1
  2182. IF (NMAT.NE.INMAT) THEN
  2183. CMATE = ' '
  2184. IMATE = 0
  2185. INATU = 0
  2186. CALL ERREUR(952)
  2187. RETURN
  2188. ENDIF
  2189. C DISSIPATION
  2190. ELSE IF (IPLAC.EQ.4) THEN
  2191. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT))
  2192. C LINEAIRE
  2193. if (iplac.ge.5) then
  2194. CMATE = matmod(inmat)
  2195. inatu = iplac
  2196. endif
  2197. ENDIF
  2198. ENDIF
  2199. ENDIF
  2200. ENDIF
  2201. *
  2202. *----------------------------------------------------------------------*
  2203. * 19/ CAS DE LA FORMULATION 'CHARGEMENT ' *
  2204. *----------------------------------------------------------------------*
  2205. ELSE IF ( forfo1.EQ.'CHARGEMENT' ) THEN
  2206. INATU = 0
  2207. CALL MOCHAR(MOMODL,NMOD)
  2208. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(1))
  2209. IF (IPLAC.EQ.0) THEN
  2210. CMATE = MATMOD(INMAT)
  2211. ELSE
  2212. CMATE = MATMOD(IPLAC)
  2213. IMATE = IPLAC
  2214. INMAT = INMAT+1
  2215. ENDIF
  2216.  
  2217. *---------------------------------------------------------------------*
  2218. * 20/ CAS DE LA FORMULATION 'METALLURGIE' *
  2219. *---------------------------------------------------------------------*
  2220. ELSE IF (forfo1 .EQ. 'METALLURGIE') THEN
  2221. CALL MOMETA(MOMODL,NMOD)
  2222. C La syntaxe veut que NMAT=4 si tout vas bien :
  2223. if( NMAT .ne. 4 ) then
  2224. CALL ERREUR(21)
  2225. RETURN
  2226. endif
  2227.  
  2228. do imat = 1, nmat
  2229. C On verifie que le mot MATMOD(imat) se trouve bien dans le tableau
  2230. C contenu dans modmet.eso
  2231. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(imat))
  2232. if (IPLAC.NE.0)then
  2233. CMATE = MOMODL(IPLAC)
  2234. IMATE = IPLAC
  2235. IPLAC = 0
  2236. else
  2237. CALL ERREUR(21)
  2238. RETURN
  2239. endif
  2240. INMAT=INMAT+1
  2241. enddo
  2242. CMATE = 'METALLUR'
  2243. INATU = 178
  2244.  
  2245. *---------------------------------------------------------------------*
  2246. * 21/ CAS DE LA FORMULATION 'CHANGEMENT_PHASE' *
  2247. *---------------------------------------------------------------------*
  2248. ELSEIF (forfo1 .EQ. 'CHANGEMENT_PHASE') THEN
  2249. CALL MOCHPH(MOMODL,NMOD)
  2250. CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(1))
  2251. DO iii=1,NMAT
  2252. IF(IPLAC.EQ.0 .OR. (IPLAC.NE.0 .AND. INATU.NE.0)) THEN
  2253. CMATE = ' '
  2254. INMAT = 0
  2255. IMATE = 0
  2256. INATU = 0
  2257. CALL ERREUR(21)
  2258. RETURN
  2259. ELSEIF (IPLAC .EQ. 1) THEN
  2260. CMATE = 'CHPH_PAR'
  2261. INMAT = INMAT+1
  2262. IMATE = IPLAC
  2263. INATU = 179
  2264. ELSEIF(IPLAC .EQ. 2) THEN
  2265. CMATE = 'CHPH_PRO'
  2266. INMAT = INMAT+1
  2267. IMATE = IPLAC
  2268. INATU = 180
  2269. ELSE
  2270. C Ne devrait jamais survenir
  2271. CALL ERREUR(5)
  2272. ENDIF
  2273. ENDDO
  2274.  
  2275. *--------------------------------------------------------------------*
  2276. * 22/ ENDIF correspondant a la FIN des formulations simples *
  2277. *--------------------------------------------------------------------*
  2278. ENDIF
  2279. *
  2280. ELSEIF (NFOR.EQ.2) THEN
  2281. *--------------------------------------------------------------------*
  2282. * NFOR=2 1/ CAS DE LA FORMULATION 'LIQUIDE '+ 'MECANIQUE' *
  2283. *--------------------------------------------------------------------*
  2284. forfo2=formod(2)
  2285. IF ( ( forfo1.EQ.'LIQUIDE '.AND.
  2286. & forfo2.EQ.'MECANIQUE ' )
  2287. & .OR. ( forfo2.EQ.'LIQUIDE '.AND.
  2288. & forfo1.EQ.'MECANIQUE ' ) ) THEN
  2289. *
  2290. * La formulation suffit
  2291. *
  2292. CMATE='LIQ+MECA'
  2293. IMATE=1
  2294. ENDIF
  2295. ENDIF
  2296.  
  2297. IF (NMAT .GT. INMAT) THEN
  2298. CMATE=' '
  2299. IMATE=0
  2300. INATU=0
  2301. ENDIF
  2302.  
  2303. END
  2304.  
  2305.  

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