Télécharger nomate.eso

Retour à la liste

Numérotation des lignes :

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

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