Télécharger sefmod.eso

Retour à la liste

Numérotation des lignes :

sefmod
  1. C SEFMOD SOURCE CB215821 23/03/14 21:15:11 11628
  2. SUBROUTINE SEFMOD(ityp1,nbnn,itef,ifrtt,ifroca,lesfor,lestef,
  3. & nepapa,iconv,iraye,mele,nefmod)
  4. C +--------------------------------------------------------------------+
  5. C | Determination de la valeur de NEFMOD pour IMODEL |
  6. C +--------------------------------------------------------------------+
  7. IMPLICIT INTEGER(I-N)
  8. IMPLICIT REAL*8 (A-H,O-Z)
  9.  
  10. -INC PPARAM
  11. -INC CCOPTIO
  12. -INC CCHAMP
  13. -INC CCGEOME
  14. CHARACTER*16 LESFOR(2)
  15. CHARACTER*4 LESTEF(*),LBTEF
  16. logical lobbar
  17.  
  18. lobbar = .false.
  19. C Affectation du type d'ELEMENTS FINIS si donnes par utilisateur
  20.  
  21. C cas des SURE (relation de conformite) :
  22. C NEPAPA = si EF specifique demande -> on utilise ses inconnues
  23. NEPAPA=0
  24. IF(ITYP1.eq.48) then
  25.  
  26. NEFMOD=259
  27. IF (ITEF.GT.0) THEN
  28. DO i=1,ITEF
  29. CALL PLACE(NOMTP,LNOMTP,MELE,LESTEF(i))
  30. IF (MELE.NE.0) NEPAPA = MELE
  31. ENDDO
  32. ENDIF
  33. IF(NEPAPA.EQ.0) THEN
  34. c 2D -> on choisit les inconnues du QUA4 pour toute formulation
  35. IF(IDIM.EQ.2) THEN
  36. NEPAPA=8
  37. c 3D -> on choisit les inconnues du CUB8 pour toute formulation
  38. ELSEIF(IDIM.EQ.3) THEN
  39. NEPAPA=14
  40. ELSE
  41. CALL ERREUR(610)
  42. ENDIF
  43. ENDIF
  44. ** GOTO 11
  45. RETURN
  46. ENDIF
  47. IF (ITEF.GT.0) THEN
  48. C Cas de la FORMULATION 'NAVIER_STOKES'
  49. IF (LESFOR(1).EQ.'NAVIER_STOKES') THEN
  50. IF (LESTEF(1).EQ.'LINE')THEN
  51. NEFMOD=0
  52. IF (ITYP1.EQ. 3) NEFMOD=129
  53. IF (ITYP1.EQ. 7) NEFMOD=130
  54. IF (ITYP1.EQ.11) NEFMOD=131
  55. IF (ITYP1.EQ.33) NEFMOD=132
  56. IF (ITYP1.EQ.34) NEFMOD=133
  57. IF (ITYP1.EQ.35) NEFMOD=134
  58. IF (ITYP1.EQ.36) NEFMOD=135
  59. IF (NEFMOD.EQ.0) GOTO 99
  60. ELSE IF(LESTEF(1).EQ.'MACR')THEN
  61. NEFMOD=0
  62. IF (ITYP1.EQ. 3) NEFMOD=136
  63. IF (ITYP1.EQ. 7) NEFMOD=137
  64. IF (ITYP1.EQ.11) NEFMOD=138
  65. IF (ITYP1.EQ.33) NEFMOD=139
  66. IF (ITYP1.EQ.34) NEFMOD=140
  67. IF (ITYP1.EQ.35) NEFMOD=141
  68. IF (ITYP1.EQ.36) NEFMOD=142
  69. C Il nous manque la pyramide
  70. IF (NEFMOD.EQ.0) GOTO 99
  71. ELSE IF (LESTEF(1).EQ.'QUAF') THEN
  72. NEFMOD=0
  73. IF (ITYP1.EQ. 3) NEFMOD=143
  74. IF (ITYP1.EQ. 7) NEFMOD=144
  75. IF (ITYP1.EQ.11) NEFMOD=145
  76. IF (ITYP1.EQ.33) NEFMOD=146
  77. IF (ITYP1.EQ.34) NEFMOD=147
  78. IF (ITYP1.EQ.35) NEFMOD=148
  79. IF (ITYP1.EQ.36) NEFMOD=149
  80. C Il nous manque la pyramide
  81. IF (NEFMOD.EQ.0) GO TO 99
  82. ELSE IF (LESTEF(1).EQ.'LINB') THEN
  83. NEFMOD=0
  84. IF (ITYP1.EQ. 3) NEFMOD=158
  85. IF (ITYP1.EQ. 7) NEFMOD=159
  86. IF (ITYP1.EQ.11) NEFMOD=160
  87. IF (ITYP1.EQ.33) NEFMOD=161
  88. IF (ITYP1.EQ.34) NEFMOD=162
  89. C IF (ITYP1.EQ.35) NEFMOD=163
  90. C IF (ITYP1.EQ.36) NEFMOD=164
  91. C Il nous manque la pyramide et le tetrahedre
  92. IF (NEFMOD.EQ.0) GOTO 99
  93. ELSE
  94. DO i=1,ITEF
  95. CALL PLACE(NOMTP,LNOMTP,MELE,LESTEF(i))
  96. IF (MELE.EQ.0) GOTO 99
  97. MEGE=NUMGEO(MELE)
  98. IF (MEGE.EQ.0) GOTO 99
  99. IF (MEGE.EQ.ITYP1) GOTO 610
  100. ENDDO
  101. GO TO 99
  102. 610 NEFMOD=MELE
  103. ENDIF
  104. C Cas de la FORMULATION 'EULER'
  105. ELSE IF (LESFOR(1).EQ.'EULER') THEN
  106. NEFMOD=0
  107. IF (ITYP1.EQ. 2) NEFMOD=ITYP1
  108. IF (ITYP1.EQ. 4) NEFMOD=ITYP1
  109. IF (ITYP1.EQ. 8) NEFMOD=ITYP1
  110. IF (ITYP1.EQ.14) NEFMOD=ITYP1
  111. IF (ITYP1.EQ.16) NEFMOD=ITYP1
  112. IF (ITYP1.EQ.23) NEFMOD=ITYP1
  113. IF (ITYP1.EQ.25) NEFMOD=ITYP1
  114. IF (NEFMOD.EQ.0) GOTO 99
  115. C Cas des autres FORMULATIONs
  116. ELSE
  117. DO i=1,ITEF
  118. LBTEF = LESTEF(i)
  119. if(lestef(i)(1:4).eq.'BBAR') lobbar = .true.
  120. if (lobbar) CALL MODE20(ITYP1,LBTEF)
  121. CALL PLACE(NOMTP,LNOMTP,MELE,LBTEF)
  122. IF (MELE.EQ.0) GOTO 99
  123. MEGE=NUMGEO(MELE)
  124. IF (MEGE.EQ.0) GOTO 99
  125. IF (MEGE.EQ.ITYP1) GOTO 6
  126. c kich cas du POI1
  127. if (ityp1.eq.1) goto 6
  128. ENDDO
  129. GOTO 99
  130. C Cas particulier pour les elements polygonaux
  131. 6 IF (ITYP1.EQ.32) THEN
  132. MELE=MELE+NBNN-3
  133. IF (NBNN.GT.14) GOTO 99
  134. ENDIF
  135. NEFMOD=MELE
  136. ENDIF
  137. C Affectation des elements finis de maniere automatique
  138. ELSE
  139. C Cas des milieux POREUX
  140. IF (LESFOR(1).EQ.'POREUX') THEN
  141. NEFMOD=0
  142. IF (ITYP1.EQ. 6) NEFMOD=79
  143. IF (ITYP1.EQ.10) NEFMOD=80
  144. IF (ITYP1.EQ.15) NEFMOD=81
  145. IF (ITYP1.EQ.24) NEFMOD=82
  146. IF (ITYP1.EQ.17) NEFMOD=83
  147. IF (ITYP1.EQ.29) NEFMOD=108
  148. IF (ITYP1.EQ.30) NEFMOD=109
  149. IF (ITYP1.EQ.31) NEFMOD=110
  150. IF (NEFMOD.EQ.0) GOTO 99
  151. C Cas des elements de frottement (formulation FROTTEMENT)
  152. ELSE IF (LESFOR(1).EQ.'CONTACT') THEN
  153. C * NEFMOD=22 pv est passe par la
  154. NEFMOD=0
  155. if(ifrtt.eq.1) then
  156. IF (ITYP1.EQ.22.AND.IDIM.EQ.2) NEFMOD=107
  157. IF (ITYP1.EQ.22.AND.IDIM.EQ.3) NEFMOD=165
  158. elseif(ifroca.ne.0) then
  159. IF (ITYP1.EQ.22.AND.IDIM.EQ.2) NEFMOD=261
  160. IF (ITYP1.EQ.22.AND.IDIM.EQ.3) NEFMOD=262
  161. endif
  162. C IF (NEFMOD.EQ.0) GOTO 99
  163. C Cas des elements hybrides (imposes en DARCY)
  164. ELSE IF (LESFOR(1).EQ.'DARCY') THEN
  165. NEFMOD=0
  166. IF (ITYP1.EQ. 3) NEFMOD=143
  167. C IF (ITYP1.EQ. 4) NEFMOD=99
  168. C IF (ITYP1.EQ. 8) NEFMOD=100
  169. C IF (ITYP1.EQ.23) NEFMOD=101
  170. C IF (ITYP1.EQ.16) NEFMOD=102
  171. C IF (ITYP1.EQ.14) NEFMOD=103
  172. IF (ITYP1.EQ. 7) NEFMOD=99
  173. IF (ITYP1.EQ.11) NEFMOD=100
  174. IF (ITYP1.EQ.35) NEFMOD=101
  175. IF (ITYP1.EQ.34) NEFMOD=102
  176. IF (ITYP1.EQ.33) NEFMOD=103
  177. IF (NEFMOD.EQ.0) GOTO 99
  178. C Cas de la formulation MAGNETODYNAMIQUE
  179. ELSE IF (LESFOR(1).EQ.'MAGNETODYNAMIQUE') THEN
  180. NEFMOD=0
  181. IF (ITYP1.EQ. 4) NEFMOD=128
  182. IF (NEFMOD.EQ.0) GOTO 99
  183. C Cas de la formulation 'NAVIER_STOKES'
  184. ELSE IF (LESFOR(1).EQ.'NAVIER_STOKES') THEN
  185. IF (ILNAVI.EQ.0) THEN
  186. * par defaut option 'LINE'
  187. NEFMOD=0
  188. IF (ITYP1.EQ. 3) NEFMOD=129
  189. IF (ITYP1.EQ. 7) NEFMOD=130
  190. IF (ITYP1.EQ.11) NEFMOD=131
  191. IF (ITYP1.EQ.33) NEFMOD=132
  192. IF (ITYP1.EQ.34) NEFMOD=133
  193. IF (ITYP1.EQ.35) NEFMOD=134
  194. IF (ITYP1.EQ.36) NEFMOD=135
  195. IF (NEFMOD.EQ.0) GOTO 99
  196. CALL MESLIR(-341)
  197. ** GOTO 990
  198. ELSEIF (ILNAVI.EQ.1) THEN
  199. C LICE
  200. NEFMOD=0
  201. IF (ITYP1.EQ. 3) NEFMOD=195
  202. IF (ITYP1.EQ. 7) NEFMOD=196
  203. IF (ITYP1.EQ.11) NEFMOD=197
  204. IF (ITYP1.EQ.33) NEFMOD=198
  205. IF (ITYP1.EQ.34) NEFMOD=199
  206. IF (ITYP1.EQ.35) NEFMOD=200
  207. IF (ITYP1.EQ.36) NEFMOD=201
  208. IF (NEFMOD.EQ.0) GOTO 99
  209. ELSEIF (ILNAVI.EQ.2) THEN
  210. C LIMS
  211. NEFMOD=0
  212. IF (ITYP1.EQ. 3) NEFMOD=202
  213. IF (ITYP1.EQ. 7) NEFMOD=203
  214. IF (ITYP1.EQ.11) NEFMOD=204
  215. IF (ITYP1.EQ.33) NEFMOD=205
  216. IF (ITYP1.EQ.34) NEFMOD=206
  217. IF (ITYP1.EQ.35) NEFMOD=207
  218. IF (ITYP1.EQ.36) NEFMOD=208
  219. IF (NEFMOD.EQ.0) GOTO 99
  220. ELSEIF (ILNAVI.EQ.3) THEN
  221. C LBMS
  222. NEFMOD=0
  223. IF (ITYP1.EQ. 3) NEFMOD=209
  224. IF (ITYP1.EQ. 7) NEFMOD=210
  225. IF (ITYP1.EQ.11) NEFMOD=211
  226. IF (ITYP1.EQ.33) NEFMOD=212
  227. IF (ITYP1.EQ.34) NEFMOD=213
  228. IF (ITYP1.EQ.35) NEFMOD=214
  229. IF (ITYP1.EQ.36) NEFMOD=215
  230. IF (NEFMOD.EQ.0) GOTO 99
  231. ELSEIF (ILNAVI.EQ.4) THEN
  232. C MCCE
  233. NEFMOD=0
  234. IF (ITYP1.EQ. 3) NEFMOD=216
  235. IF (ITYP1.EQ. 7) NEFMOD=217
  236. IF (ITYP1.EQ.11) NEFMOD=218
  237. IF (ITYP1.EQ.33) NEFMOD=219
  238. IF (ITYP1.EQ.34) NEFMOD=220
  239. IF (ITYP1.EQ.35) NEFMOD=221
  240. IF (ITYP1.EQ.36) NEFMOD=222
  241. IF (NEFMOD.EQ.0) GOTO 99
  242. ELSEIF (ILNAVI.EQ.5) THEN
  243. C MCP1
  244. NEFMOD=0
  245. IF (ITYP1.EQ. 3) NEFMOD=223
  246. IF (ITYP1.EQ. 7) NEFMOD=224
  247. IF (ITYP1.EQ.11) NEFMOD=225
  248. IF (ITYP1.EQ.33) NEFMOD=226
  249. IF (ITYP1.EQ.34) NEFMOD=227
  250. IF (ITYP1.EQ.35) NEFMOD=228
  251. IF (ITYP1.EQ.36) NEFMOD=229
  252. IF (NEFMOD.EQ.0) GOTO 99
  253. ELSEIF (ILNAVI.EQ.6) THEN
  254. C MCMS
  255. NEFMOD=0
  256. IF (ITYP1.EQ. 3) NEFMOD=230
  257. IF (ITYP1.EQ. 7) NEFMOD=231
  258. IF (ITYP1.EQ.11) NEFMOD=232
  259. IF (ITYP1.EQ.33) NEFMOD=233
  260. IF (ITYP1.EQ.34) NEFMOD=234
  261. IF (ITYP1.EQ.35) NEFMOD=235
  262. IF (ITYP1.EQ.36) NEFMOD=236
  263. IF (NEFMOD.EQ.0) GOTO 99
  264. ELSEIF (ILNAVI.EQ.7) THEN
  265. C QFCE
  266. NEFMOD=0
  267. IF (ITYP1.EQ. 3) NEFMOD=237
  268. IF (ITYP1.EQ. 7) NEFMOD=238
  269. IF (ITYP1.EQ.11) NEFMOD=239
  270. IF (ITYP1.EQ.33) NEFMOD=240
  271. IF (ITYP1.EQ.34) NEFMOD=241
  272. IF (ITYP1.EQ.35) NEFMOD=242
  273. IF (ITYP1.EQ.36) NEFMOD=243
  274. IF (NEFMOD.EQ.0) GOTO 99
  275. ELSEIF (ILNAVI.EQ.8) THEN
  276. C QFP1
  277. NEFMOD=0
  278. IF (ITYP1.EQ. 3) NEFMOD=244
  279. IF (ITYP1.EQ. 7) NEFMOD=245
  280. IF (ITYP1.EQ.11) NEFMOD=246
  281. IF (ITYP1.EQ.33) NEFMOD=247
  282. IF (ITYP1.EQ.34) NEFMOD=248
  283. IF (ITYP1.EQ.35) NEFMOD=249
  284. IF (ITYP1.EQ.36) NEFMOD=250
  285. IF (NEFMOD.EQ.0) GOTO 99
  286. ELSEIF (ILNAVI.EQ.9) THEN
  287. C QFMS
  288. NEFMOD=0
  289. IF (ITYP1.EQ. 3) NEFMOD=251
  290. IF (ITYP1.EQ. 7) NEFMOD=252
  291. IF (ITYP1.EQ.11) NEFMOD=253
  292. IF (ITYP1.EQ.33) NEFMOD=254
  293. IF (ITYP1.EQ.34) NEFMOD=255
  294. IF (ITYP1.EQ.35) NEFMOD=256
  295. IF (ITYP1.EQ.36) NEFMOD=257
  296. IF (NEFMOD.EQ.0) GOTO 99
  297. ENDIF
  298. C Cas de la formulation 'EULER'
  299. ELSE IF (LESFOR(1).EQ.'EULER') THEN
  300. NEFMOD=0
  301. IF (ITYP1.EQ. 2) NEFMOD=ITYP1
  302. IF (ITYP1.EQ. 4) NEFMOD=ITYP1
  303. IF (ITYP1.EQ. 8) NEFMOD=ITYP1
  304. IF (ITYP1.EQ.14) NEFMOD=ITYP1
  305. IF (ITYP1.EQ.16) NEFMOD=ITYP1
  306. IF (ITYP1.EQ.23) NEFMOD=ITYP1
  307. IF (ITYP1.EQ.25) NEFMOD=ITYP1
  308. IF (NEFMOD.EQ.0) GOTO 99
  309.  
  310. C Cas des autres formulations
  311. ELSE
  312. NEFMOD=ITYP1
  313. c kich cas du POI1
  314. if (ityp1.eq.1) nefmod = 45
  315. C Cas particuliers des elements polygonaux
  316. IF (NEFMOD.EQ.32) NEFMOD=111+NBNN -3
  317. c gounand cas des 'CU27','PR21','TE15','PY19'
  318. if (NEFMOD.GE.33.AND.NEFMOD.LE.36) then
  319. nefmod = nefmod-33 +275
  320. endif
  321. C Cas particuliers des elements finis pour IDIM=1
  322. IF (IDIM.EQ.1) THEN
  323. NEFMOD=0
  324. IF (LESFOR(1).EQ.'THERMIQUE') THEN
  325. IF (ICONV.NE.0 .OR. iraye.NE.0) THEN
  326. IF (ITYP1.EQ.1) NEFMOD=45
  327. IF (ITYP1.EQ.2) NEFMOD=ITYP1
  328. ELSE
  329. IF (ITYP1.EQ.2) NEFMOD=191
  330. IF (ITYP1.EQ.3) NEFMOD=192
  331. ENDIF
  332. ELSE IF (LESFOR(1).EQ.'MECANIQUE') THEN
  333. IF (ITYP1.EQ.2) NEFMOD=193
  334. IF (ITYP1.EQ.3) NEFMOD=194
  335. ELSE IF (LESFOR(1).EQ.'FISSURE') THEN
  336. IF (ITYP1.EQ.2) NEFMOD=ITYP1
  337. ELSE IF (LESFOR(1).EQ.'ELECTROSTATIQUE') THEN
  338. IF (ITYP1.EQ.2) NEFMOD=193
  339. IF (ITYP1.EQ.3) NEFMOD=194
  340. ELSE IF (LESFOR(1).EQ.'DIFFUSION') THEN
  341. * En attendant le retour a la normale pour la diffusion, on ajoute une
  342. * enieme rustine en mettant les memes elements qu'en thermique.
  343. ** IF (ITYP1.EQ.2) NEFMOD=193
  344. ** IF (ITYP1.EQ.3) NEFMOD=194
  345. IF (ITYP1.EQ.2) NEFMOD=191
  346. IF (ITYP1.EQ.3) NEFMOD=192
  347. ENDIF
  348. ENDIF
  349. IF (NEFMOD.EQ.0) GOTO 99
  350. MELE=NEFMOD
  351. ENDIF
  352. ENDIF
  353. C +--------------------------------------------------------------------+
  354. C | Fin de la valeur de NEFMOD pour IMODEL |
  355. C +--------------------------------------------------------------------+
  356. RETURN
  357.  
  358. 99 CONTINUE
  359. C write(6,*) 'allo houston', nefmod
  360. CALL ERREUR(21)
  361. RETURN
  362.  
  363. END
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  

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