Télécharger kfmm.eso

Retour à la liste

Numérotation des lignes :

  1. C KFMM SOURCE CHAT 06/08/24 21:46:41 5529
  2. SUBROUTINE KFMM
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : KFMM
  8. C
  9. C DESCRIPTION : Subroutine appellée par KONV1
  10. C
  11. C Modelisation 2D/3D des equations d'Euler
  12. C
  13. C Free matrix method: calcul d'un stationaire
  14. C avec un jacobi par point
  15. C
  16. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  17. C
  18. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/LTMF
  19. C
  20. C************************************************************************
  21. C
  22. C APPELES (Calcul) :
  23. C
  24. C************************************************************************
  25. C
  26. C*** SYNTAXE
  27. C
  28. C Discrétisation en VF "cell-centered" des équations d'Euler pour
  29. C un gaz parfait mono-constituent polytropique
  30. C Inconnues: densité, quantité de mouvement, énergie totale par
  31. C unité de volumes (variables conservatives UN)
  32. C
  33. C A(UN) '*' DUN_L = RES(UN) + B(UN) - B(UN_L)
  34. C
  35. C ou
  36. C
  37. C RES(UN) est calculé avec ('KONV' 'VF' 'PERFMONO')
  38. C UN_0 = UN
  39. C UN_L = UN ° DUN_L
  40. C
  41. C Ici on calcule A(UN) est B(UN)
  42. C
  43. C CHAUN = 'KONV' 'VF' 'PMONOFMM' 'AN' LMOT1
  44. C MOD1 MCHPO1 MCHPO2 MCHPO3 MCHPO4 FLOT1
  45. C ('CLIM' LMOT2 MCHPO5);
  46. C
  47. C CHBUN = 'KONV' 'VF' 'FMM' 'PERMONO' 'BN' LMOT1
  48. C MOD1 MCHPO1 MCHPO2 MCHPO3 MCHPO4
  49. C ('CLIM' LMOT2 MCHPO5);
  50. C
  51. C
  52. C LMOT1 : Il contient dans l'ordre suivant: le noms de la densité,
  53. C de la qdm, de l'énergie totale par unité de volume
  54. C
  55. C MOD1 : objet modele de type EULER
  56. C
  57. C MCHPO1 : CHPOINT contenant la masse volumique (en kg/m^3; une
  58. C composante, 'SCAL', SPG =(DOMA MOD1 'CENTRE')).
  59. C
  60. C MCHPO2 : CHPOINT contenant les débits (en kg/s/m^2; deux
  61. C composantes en 2D, 'UX ','UY ', trois composantes
  62. C en 3D, 'UX ','UY ', 'UZ ', SPG =(DOMA MOD1 'CENTRE')).
  63. C
  64. C MCHPO3 : CHPOINT contenant l'énergie totale par unité de volume
  65. C (en J/m^3; une composante, 'SCAL', SPG =(DOMA MOD1 'CENTRE')).
  66. C
  67. C MCHPO4 : CHPOINT contenant le "gamma" du gaz (une composante,
  68. C 'SCAL', SPG =(DOMA MOD1 'CENTRE')).
  69. C
  70. C LMOT2 : Il contient dans l'ordre suivant: le noms de la densité,
  71. C de la vitesse, de la pression.
  72. C
  73. C MCHPO5 : CHPOINT contenant les conditions aux limites
  74. C (composantes en LMOT2).
  75. C
  76. C************************************************************************
  77. C
  78. C HISTORIQUE (Anomalies et modifications éventuelles)
  79. C
  80. C HISTORIQUE : crée le 30/04/02
  81. C Janvier 2003: implementation de condition aux limites
  82. C
  83. C************************************************************************
  84. C
  85. IMPLICIT INTEGER(I-N)
  86. -INC CCOPTIO
  87. -INC SMLMOTS
  88. -INC SMCHPOI
  89. POINTEUR MLMVIT.MLMOTS
  90. C
  91. C**** Variables de COOPTIO
  92. C
  93. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  94. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  95. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  96. C & ,IECHO, IIMPI, IOSPI
  97. C & ,IDIM
  98. C & ,MCOORD
  99. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  100. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  101. C & ,NORINC,NORVAL,NORIND,NORVAD
  102. C & ,NUCROU, IPSAUV, IFICLE, IPREFI
  103. C
  104. INTEGER ICOEF, IDOMA, IRET, MELEF, MELEC, MELEFL, ICHPSU, INDIC
  105. & , NBCOMP, ICHPDI, IRN, IGN, IRETN, IGAMN, ICHPVO, ILIINC
  106. & , ICHRES, JGN, JGM, INORM, INEFMD, ICOND, MMODEL
  107. & , ICHLIM, MELLIM, ILIINP, NSOUPO
  108. C
  109. REAL*8 DCFL
  110. C
  111. CHARACTER*4 MOT
  112. CHARACTER*8 LCOEF(2), TYPE
  113. CHARACTER*(40) MESERR
  114. C
  115. DATA LCOEF/'AN','BN'/
  116. C
  117. CALL LIRMOT(LCOEF,2,ICOEF,1)
  118. IF(IERR .NE. 0)GOTO 9999
  119. C
  120. C**********************************
  121. C**** Lecture de l'objet MODELE ***
  122. C**********************************
  123. C
  124. ICOND = 1
  125. CALL QUETYP(TYPE,ICOND,IRET)
  126.  
  127. IF(IRET.EQ.0.AND.TYPE.NE.'MMODEL')THEN
  128. WRITE(6,*)' On attend un objet MMODEL'
  129. RETURN
  130. ENDIF
  131. CALL LIROBJ('MMODEL',MMODEL,ICOND,IRET)
  132. IF(IERR.NE.0)GOTO 9999
  133. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  134. IF(IERR.NE.0)GOTO 9999
  135. C
  136. C**** Centre, FACE, FACEL
  137. C
  138. CALL LEKTAB(IDOMA,'CENTRE',MELEC)
  139. IF(IERR .NE. 0) GOTO 9999
  140. C
  141. CALL LEKTAB(IDOMA,'FACE',MELEF)
  142. IF(IERR .NE. 0) GOTO 9999
  143. C
  144. CALL LEKTAB(IDOMA,'FACEL',MELEFL)
  145. IF(IERR .NE. 0) GOTO 9999
  146. C
  147. C**** Lecture du CHPOINT contenant les surfaces des faces.
  148. C
  149. CALL LEKTAB(IDOMA,'XXSURFAC',ICHPSU)
  150. IF(IERR .NE. 0) GOTO 9999
  151. INDIC = 1
  152. NBCOMP = 1
  153. MOT = 'SCAL'
  154. CALL QUEPOI(ICHPSU, MELEF, INDIC, NBCOMP, MOT)
  155. IF(IERR .NE. 0) GOTO 9999
  156. C
  157. C**** Lecture du CHPOINT contenant les diametres minimums.
  158. C
  159. CALL LEKTAB(IDOMA,'XXDIEMIN',ICHPDI)
  160. IF(IERR .NE. 0) GOTO 9999
  161. INDIC = 1
  162. NBCOMP = 1
  163. MOT = 'SCAL'
  164. CALL QUEPOI(ICHPDI, MELEC, INDIC, NBCOMP, MOT)
  165. IF(IERR .NE. 0) GOTO 9999
  166.  
  167. C
  168. C**** Lecture du CHPOINT contenant les normales aux faces
  169. C
  170. IF(IDIM .EQ. 2)THEN
  171. C Que les normales
  172. CALL LEKTAB(IDOMA,'XXNORMAF',INORM)
  173. IF(IERR .NE. 0) GOTO 9999
  174. JGN = 4
  175. JGM = 2
  176. SEGINI MLMVIT
  177. MLMVIT.MOTS(1) = 'UX '
  178. MLMVIT.MOTS(2) = 'UY '
  179. CALL QUEPO1(INORM, MELEF, MLMVIT)
  180. SEGSUP MLMVIT
  181. C
  182. ELSE
  183. C Les normales et les tangentes
  184. TYPE = ' '
  185. CALL ACMO(IDOMA,'MATROT',TYPE,INORM)
  186. IF (TYPE .NE. 'CHPOINT ') THEN
  187. CALL MATRAN(IDOMA,INORM)
  188. IF(IERR .NE. 0) GOTO 9999
  189. ENDIF
  190. JGN = 4
  191. JGM = 9
  192. SEGINI MLMVIT
  193. MLMVIT.MOTS(1) = 'UX '
  194. MLMVIT.MOTS(2) = 'UY '
  195. MLMVIT.MOTS(3) = 'UZ '
  196. MLMVIT.MOTS(4) = 'RX '
  197. MLMVIT.MOTS(5) = 'RY '
  198. MLMVIT.MOTS(6) = 'RZ '
  199. MLMVIT.MOTS(7) = 'MX '
  200. MLMVIT.MOTS(8) = 'MY '
  201. MLMVIT.MOTS(9) = 'MZ '
  202. CALL QUEPO1(INORM, MELEF, MLMVIT)
  203. SEGSUP MLMVIT
  204. ENDIF
  205. C
  206. C**** Lecture du CHPOINT contenant les volumes
  207. C
  208. CALL LEKTAB(IDOMA,'XXVOLUM',ICHPVO)
  209. IF(IERR .NE. 0) GOTO 9999
  210. INDIC = 1
  211. NBCOMP = 1
  212. MOT = 'SCAL'
  213. CALL QUEPOI(ICHPVO, MELEC, INDIC, NBCOMP, MOT)
  214. IF(IERR .NE. 0) GOTO 9999
  215. C
  216. C********************************
  217. C**** Fin table domaine *********
  218. C********************************
  219. C
  220. C**** La list des inconnues
  221. C
  222. TYPE='LISTMOTS'
  223. CALL LIROBJ(TYPE,ILIINC,1,IRET)
  224. IF(IERR .NE. 0) GOTO 9999
  225. C
  226. C**** On va lire les pointeurs des CHPOINTs
  227. C Lecture du CHPOINT centre densité
  228. C
  229. TYPE='CHPOINT'
  230. CALL LIROBJ(TYPE,IRN,1,IRET)
  231. IF(IERR.NE.0) GOTO 9999
  232. C
  233. C**** Controle du CHPOINT
  234. C
  235. INDIC = 1
  236. NBCOMP = 1
  237. MOT = 'SCAL'
  238. CALL QUEPOI(IRN, MELEC, INDIC, NBCOMP, MOT)
  239. IF(IERR .NE. 0) GOTO 9999
  240. C
  241. C**** Lecture du CHPOINT QDM
  242. C
  243. TYPE='CHPOINT'
  244. CALL LIROBJ(TYPE,IGN,1,IRET)
  245. IF(IERR.NE.0) GOTO 9999
  246. C
  247. C**** Control du CHPOINT
  248. C
  249. INDIC = 1
  250. NBCOMP = IDIM
  251. JGN = 4
  252. JGM = IDIM
  253. SEGINI MLMOTS
  254. MLMOTS.MOTS(1) = 'UX '
  255. MLMOTS.MOTS(2) = 'UY '
  256. IF(IDIM .EQ. 3) MLMOTS.MOTS(3) = 'UZ '
  257. CALL QUEPO1(IGN, MELEC, MLMOTS)
  258. IF(IERR .NE. 0) GOTO 9999
  259. SEGSUP MLMOTS
  260. C
  261. C**** Lecture du CHPOINT centre energie totale
  262. C
  263. TYPE='CHPOINT'
  264. CALL LIROBJ(TYPE,IRETN,1,IRET)
  265. IF(IERR.NE.0) GOTO 9999
  266. C
  267. C**** Controle du CHPOINT
  268. C
  269. INDIC = 1
  270. NBCOMP = 1
  271. MOT = 'SCAL'
  272. CALL QUEPOI(IRETN, MELEC, INDIC, NBCOMP, MOT)
  273. IF(IERR .NE. 0) GOTO 9999
  274. C
  275. C**** Lecture du CHPOINT centre gamma
  276. C
  277. TYPE='CHPOINT'
  278. CALL LIROBJ(TYPE,IGAMN,1,IRET)
  279. IF(IERR.NE.0) GOTO 9999
  280. C
  281. C**** Controle du CHPOINT
  282. C
  283. INDIC = 1
  284. NBCOMP = 1
  285. MOT = 'SCAL'
  286. CALL QUEPOI(IGAMN, MELEC, INDIC, NBCOMP, MOT)
  287. IF(IERR .NE. 0) GOTO 9999
  288. C
  289. C**** Lecture de le double de la CFL
  290. C
  291. IF(ICOEF .EQ.1) THEN
  292. CALL LIRREE(DCFL,1,IRET)
  293. IF(IERR .NE. 0) GOTO 9999
  294. ENDIF
  295. C
  296. C**** Lecture de conditions aux limites
  297. C
  298. IRET=0
  299. CALL LIRCHA(MOT,0,IRET)
  300. IF(IERR .NE. 0) GOTO 9999
  301. IF(IRET .NE. 0)THEN
  302. IF(MOT .EQ. 'CLIM')THEN
  303. C
  304. TYPE='LISTMOTS'
  305. CALL LIROBJ(TYPE,ILIINP,1,IRET)
  306. IF(IERR .NE. 0) GOTO 9999
  307. MLMOT1=ILIINP
  308. C
  309. TYPE='CHPOINT'
  310. CALL LIROBJ(TYPE,ICHLIM,1,IRET)
  311. IF(IERR.NE.0) GOTO 9999
  312. C
  313. MCHPOI = ICHLIM
  314. SEGACT MCHPOI
  315. NSOUPO = MCHPOI.IPCHP(/1)
  316. IF(NSOUPO .EQ. 0) THEN
  317. ICHLIM=0
  318. MELLIM=0
  319. ELSEIF(NSOUPO .GT. 1)THEN
  320. MOTERR(1:8) = 'CHAMPOIN'
  321. C
  322. C**************** Message d'erreur standard
  323. C 132 2
  324. C On veut un objet %m1:8 élémentaire
  325. C
  326. CALL ERREUR(132)
  327. GOTO 9999
  328. ELSE
  329. MSOUPO=MCHPOI.IPCHP(1)
  330. SEGACT MSOUPO
  331. MELLIM=MSOUPO.IGEOC
  332. SEGDES MSOUPO
  333. SEGDES MCHPOI
  334. CALL QUEPO1(ICHLIM, MELLIM, MLMOT1)
  335. IF(IERR.NE.0) GOTO 9999
  336. ENDIF
  337. C
  338. ELSE
  339. CALL REFUS
  340. ENDIF
  341. ELSE
  342. ICHLIM=0
  343. MELLIM=0
  344. ENDIF
  345. C
  346. C**** Creation de A(UN) ou de B(UN)
  347. C
  348. IF(ICOEF .EQ. 1)THEN
  349. C
  350. C******* Creation de A(UN)
  351. C
  352. TYPE = 'CHPOINT '
  353. JGN=4
  354. JGM=1
  355. SEGINI MLMOTS
  356. MLMOTS.MOTS(1)='SCAL'
  357. CALL KRCHP1(TYPE, MELEC, ICHRES, MLMOTS)
  358. IF(IERR .NE. 0) GOTO 9999
  359. SEGSUP MLMOTS
  360. IF(IDIM .EQ. 2)THEN
  361. CALL KFMM1(IRN,IGN,IRETN,IGAMN,
  362. & ICHPSU,ICHPDI,ICHPVO,INORM,
  363. & MELEC,MELEF,MELEFL,DCFL,
  364. & MELLIM,ICHLIM,
  365. & ICHRES)
  366. ELSE
  367. ENDIF
  368. ELSE
  369. C
  370. C******* Creation de B(UN)
  371. C
  372. CALL KRCHP1(TYPE, MELEC, ICHRES, ILIINC)
  373. IF(IERR .NE. 0) GOTO 9999
  374. IF(IDIM .EQ. 2)THEN
  375. CALL KFMM2(IRN,IGN,IRETN,IGAMN,
  376. & ICHPSU,ICHPVO,INORM,
  377. & MELEC,MELEF,MELEFL,
  378. & MELLIM,ICHLIM,
  379. & ICHRES)
  380. ELSE
  381. ENDIF
  382. ENDIF
  383. IF(IERR .NE. 0)GOTO 9999
  384. C
  385. TYPE='CHPOINT '
  386. CALL ECROBJ(TYPE,ICHRES)
  387. C
  388. 9999 CONTINUE
  389. RETURN
  390. END
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  

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