Télécharger kfmm.eso

Retour à la liste

Numérotation des lignes :

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

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