Télécharger kfmm.eso

Retour à la liste

Numérotation des lignes :

kfmm
  1. C KFMM SOURCE OF166741 24/12/13 21:16:10 12097
  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.  
  87. -INC PPARAM
  88. -INC CCOPTIO
  89. -INC SMLMOTS
  90. -INC SMCHPOI
  91. POINTEUR MLMVIT.MLMOTS
  92. C
  93. INTEGER ICOEF, IDOMA, IRET, MELEF, MELEC, MELEFL, ICHPSU, INDIC
  94. & , NBCOMP, ICHPDI, IRN, IGN, IRETN, IGAMN, ICHPVO, ILIINC
  95. & , ICHRES, JGN, JGM, INORM, INEFMD, ICOND, MMODEL
  96. & , ICHLIM, MELLIM, ILIINP, NSOUPO
  97. C
  98. REAL*8 DCFL
  99. C
  100. CHARACTER*4 MOT
  101. CHARACTER*8 LCOEF(2), TYPE
  102. CHARACTER*(40) MESERR
  103. C
  104. DATA LCOEF/'AN','BN'/
  105. C
  106. CALL LIRMOT(LCOEF,2,ICOEF,1)
  107. IF(IERR .NE. 0)GOTO 9999
  108. C
  109. C**********************************
  110. C**** Lecture de l'objet MODELE ***
  111. C**********************************
  112. C
  113. ICOND = 1
  114. CALL QUETYP(TYPE,ICOND,IRET)
  115.  
  116. IF(IRET.EQ.0.AND.TYPE.NE.'MMODEL')THEN
  117. WRITE(6,*)' On attend un objet MMODEL'
  118. RETURN
  119. ENDIF
  120. CALL LIROBJ('MMODEL',MMODEL,ICOND,IRET)
  121. IF(IERR.NE.0)GOTO 9999
  122. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  123. IF(IERR.NE.0)GOTO 9999
  124. C
  125. C**** Centre, FACE, FACEL
  126. C
  127. CALL LEKTAB(IDOMA,'CENTRE',MELEC)
  128. IF(IERR .NE. 0) GOTO 9999
  129. C
  130. CALL LEKTAB(IDOMA,'FACE',MELEF)
  131. IF(IERR .NE. 0) GOTO 9999
  132. C
  133. CALL LEKTAB(IDOMA,'FACEL',MELEFL)
  134. IF(IERR .NE. 0) GOTO 9999
  135. C
  136. C**** Lecture du CHPOINT contenant les surfaces des faces.
  137. C
  138. CALL LEKTAB(IDOMA,'XXSURFAC',ICHPSU)
  139. IF(IERR .NE. 0) GOTO 9999
  140. INDIC = 1
  141. NBCOMP = 1
  142. MOT = 'SCAL'
  143. CALL QUEPOI(ICHPSU, MELEF, INDIC, NBCOMP, MOT)
  144. IF(IERR .NE. 0) GOTO 9999
  145. C
  146. C**** Lecture du CHPOINT contenant les diametres minimums.
  147. C
  148. CALL LEKTAB(IDOMA,'XXDIEMIN',ICHPDI)
  149. IF(IERR .NE. 0) GOTO 9999
  150. INDIC = 1
  151. NBCOMP = 1
  152. MOT = 'SCAL'
  153. CALL QUEPOI(ICHPDI, MELEC, INDIC, NBCOMP, MOT)
  154. IF(IERR .NE. 0) GOTO 9999
  155.  
  156. C
  157. C**** Lecture du CHPOINT contenant les normales aux faces
  158. C
  159. IF(IDIM .EQ. 2)THEN
  160. C Que les normales
  161. CALL LEKTAB(IDOMA,'XXNORMAF',INORM)
  162. IF(IERR .NE. 0) GOTO 9999
  163. JGN = 4
  164. JGM = 2
  165. SEGINI MLMVIT
  166. MLMVIT.MOTS(1) = 'UX '
  167. MLMVIT.MOTS(2) = 'UY '
  168. CALL QUEPO1(INORM, MELEF, MLMVIT)
  169. SEGSUP MLMVIT
  170. C
  171. ELSE
  172. C Les normales et les tangentes
  173. TYPE = ' '
  174. CALL ACMO(IDOMA,'MATROT',TYPE,INORM)
  175. IF (TYPE .NE. 'CHPOINT ') THEN
  176. CALL MATRAN(IDOMA,INORM)
  177. IF(IERR .NE. 0) GOTO 9999
  178. ENDIF
  179. JGN = 4
  180. JGM = 9
  181. SEGINI MLMVIT
  182. MLMVIT.MOTS(1) = 'UX '
  183. MLMVIT.MOTS(2) = 'UY '
  184. MLMVIT.MOTS(3) = 'UZ '
  185. MLMVIT.MOTS(4) = 'RX '
  186. MLMVIT.MOTS(5) = 'RY '
  187. MLMVIT.MOTS(6) = 'RZ '
  188. MLMVIT.MOTS(7) = 'MX '
  189. MLMVIT.MOTS(8) = 'MY '
  190. MLMVIT.MOTS(9) = 'MZ '
  191. CALL QUEPO1(INORM, MELEF, MLMVIT)
  192. SEGSUP MLMVIT
  193. ENDIF
  194. C
  195. C**** Lecture du CHPOINT contenant les volumes
  196. C
  197. CALL LEKTAB(IDOMA,'XXVOLUM',ICHPVO)
  198. IF(IERR .NE. 0) GOTO 9999
  199. INDIC = 1
  200. NBCOMP = 1
  201. MOT = 'SCAL'
  202. CALL QUEPOI(ICHPVO, MELEC, INDIC, NBCOMP, MOT)
  203. IF(IERR .NE. 0) GOTO 9999
  204. C
  205. C********************************
  206. C**** Fin table domaine *********
  207. C********************************
  208. C
  209. C**** La list des inconnues
  210. C
  211. TYPE='LISTMOTS'
  212. CALL LIROBJ(TYPE,ILIINC,1,IRET)
  213. IF(IERR .NE. 0) GOTO 9999
  214. C
  215. C**** On va lire les pointeurs des CHPOINTs
  216. C Lecture du CHPOINT centre densité
  217. C
  218. TYPE='CHPOINT'
  219. CALL LIROBJ(TYPE,IRN,1,IRET)
  220. IF(IERR.NE.0) GOTO 9999
  221. C
  222. C**** Controle du CHPOINT
  223. C
  224. INDIC = 1
  225. NBCOMP = 1
  226. MOT = 'SCAL'
  227. CALL QUEPOI(IRN, MELEC, INDIC, NBCOMP, MOT)
  228. IF(IERR .NE. 0) GOTO 9999
  229. C
  230. C**** Lecture du CHPOINT QDM
  231. C
  232. TYPE='CHPOINT'
  233. CALL LIROBJ(TYPE,IGN,1,IRET)
  234. IF(IERR.NE.0) GOTO 9999
  235. C
  236. C**** Control du CHPOINT
  237. C
  238. INDIC = 1
  239. NBCOMP = IDIM
  240. JGN = 4
  241. JGM = IDIM
  242. SEGINI MLMOTS
  243. MLMOTS.MOTS(1) = 'UX '
  244. MLMOTS.MOTS(2) = 'UY '
  245. IF(IDIM .EQ. 3) MLMOTS.MOTS(3) = 'UZ '
  246. CALL QUEPO1(IGN, MELEC, MLMOTS)
  247. IF(IERR .NE. 0) GOTO 9999
  248. SEGSUP MLMOTS
  249. C
  250. C**** Lecture du CHPOINT centre energie totale
  251. C
  252. TYPE='CHPOINT'
  253. CALL LIROBJ(TYPE,IRETN,1,IRET)
  254. IF(IERR.NE.0) GOTO 9999
  255. C
  256. C**** Controle du CHPOINT
  257. C
  258. INDIC = 1
  259. NBCOMP = 1
  260. MOT = 'SCAL'
  261. CALL QUEPOI(IRETN, MELEC, INDIC, NBCOMP, MOT)
  262. IF(IERR .NE. 0) GOTO 9999
  263. C
  264. C**** Lecture du CHPOINT centre gamma
  265. C
  266. TYPE='CHPOINT'
  267. CALL LIROBJ(TYPE,IGAMN,1,IRET)
  268. IF(IERR.NE.0) GOTO 9999
  269. C
  270. C**** Controle du CHPOINT
  271. C
  272. INDIC = 1
  273. NBCOMP = 1
  274. MOT = 'SCAL'
  275. CALL QUEPOI(IGAMN, MELEC, INDIC, NBCOMP, MOT)
  276. IF(IERR .NE. 0) GOTO 9999
  277. C
  278. C**** Lecture de le double de la CFL
  279. C
  280. IF(ICOEF .EQ.1) THEN
  281. CALL LIRREE(DCFL,1,IRET)
  282. IF(IERR .NE. 0) GOTO 9999
  283. ENDIF
  284. C
  285. C**** Lecture de conditions aux limites
  286. C
  287. IRET=0
  288. CALL LIRCHA(MOT,0,IRET)
  289. IF(IERR .NE. 0) GOTO 9999
  290. IF(IRET .NE. 0)THEN
  291. IF(MOT .EQ. 'CLIM')THEN
  292. C
  293. TYPE='LISTMOTS'
  294. CALL LIROBJ(TYPE,ILIINP,1,IRET)
  295. IF(IERR .NE. 0) GOTO 9999
  296. MLMOT1=ILIINP
  297. C
  298. TYPE='CHPOINT'
  299. CALL LIROBJ(TYPE,ICHLIM,1,IRET)
  300. IF(IERR.NE.0) GOTO 9999
  301. C
  302. MCHPOI = ICHLIM
  303. SEGACT MCHPOI
  304. NSOUPO = MCHPOI.IPCHP(/1)
  305. IF(NSOUPO .EQ. 0) THEN
  306. ICHLIM=0
  307. MELLIM=0
  308. ELSEIF(NSOUPO .GT. 1)THEN
  309. MOTERR(1:8) = 'CHAMPOIN'
  310. C
  311. C**************** Message d'erreur standard
  312. C 132 2
  313. C On veut un objet %m1:8 élémentaire
  314. C
  315. CALL ERREUR(132)
  316. GOTO 9999
  317. ELSE
  318. MSOUPO=MCHPOI.IPCHP(1)
  319. SEGACT MSOUPO
  320. MELLIM=MSOUPO.IGEOC
  321. SEGDES MSOUPO
  322. SEGDES MCHPOI
  323. CALL QUEPO1(ICHLIM, MELLIM, MLMOT1)
  324. IF(IERR.NE.0) GOTO 9999
  325. ENDIF
  326. C
  327. ELSE
  328. CALL REFUS
  329. ENDIF
  330. ELSE
  331. ICHLIM=0
  332. MELLIM=0
  333. ENDIF
  334. C
  335. C**** Creation de A(UN) ou de B(UN)
  336. C
  337. IF(ICOEF .EQ. 1)THEN
  338. C
  339. C******* Creation de A(UN)
  340. C
  341. TYPE = 'CHPOINT '
  342. JGN=4
  343. JGM=1
  344. SEGINI MLMOTS
  345. MLMOTS.MOTS(1)='SCAL'
  346. CALL KRCHP1(TYPE, MELEC, ICHRES, MLMOTS)
  347. IF(IERR .NE. 0) GOTO 9999
  348. SEGSUP MLMOTS
  349. IF(IDIM .EQ. 2)THEN
  350. CALL KFMM1(IRN,IGN,IRETN,IGAMN,
  351. & ICHPSU,ICHPDI,ICHPVO,INORM,
  352. & MELEC,MELEF,MELEFL,DCFL,
  353. & MELLIM,ICHLIM,
  354. & ICHRES)
  355. ELSE
  356. ENDIF
  357. ELSE
  358. C
  359. C******* Creation de B(UN)
  360. C
  361. CALL KRCHP1(TYPE, MELEC, ICHRES, ILIINC)
  362. IF(IERR .NE. 0) GOTO 9999
  363. IF(IDIM .EQ. 2)THEN
  364. CALL KFMM2(IRN,IGN,IRETN,IGAMN,
  365. & ICHPSU,ICHPVO,INORM,
  366. & MELEC,MELEF,MELEFL,
  367. & MELLIM,ICHLIM,
  368. & ICHRES)
  369. ELSE
  370. ENDIF
  371. ENDIF
  372. IF(IERR .NE. 0)GOTO 9999
  373. C
  374. TYPE='CHPOINT '
  375. CALL ECROBJ(TYPE,ICHRES)
  376. C
  377. 9999 CONTINUE
  378. RETURN
  379. END
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  

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