Télécharger numate.eso

Retour à la liste

Numérotation des lignes :

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

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