Télécharger numate.eso

Retour à la liste

Numérotation des lignes :

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

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