Télécharger kon14.eso

Retour à la liste

Numérotation des lignes :

kon14
  1. C KON14 SOURCE OF166741 24/12/13 21:16:13 12097
  2. SUBROUTINE KON14
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : KON14
  8. C
  9. C DESCRIPTION : Subroutine appellée par KON1
  10. C
  11. C Modelisation 2D/3D des equations d'Euler
  12. C Calcul du jacobien par rapport aux
  13. C variables primitives
  14. C
  15. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  16. C
  17. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/LTMF
  18. C
  19. C************************************************************************
  20. C
  21. C APPELES (Calcul) : KONJP1 (calcul du jacobien, gaz "calorically
  22. C perfect", monoespece, 2D, VLH)
  23. C KONJP2 (calcul du jacobien, gaz "calorically
  24. C perfect", monoespece, 2D, AUSMplus)
  25. C KONJP3 (calcul du jacobien, gaz "calorically
  26. C perfect", monoespece, 3D, VLH)
  27. C KONJP4 (calcul du jacobien, gaz "calorically
  28. C perfect", monoespece, 3D, AUSMplus)
  29. C KONJP5 (calcul du jacobien, gaz "calorically
  30. C perfect", monoespece, 2D
  31. C AUSMPLM)
  32. C
  33. C************************************************************************
  34. C
  35. C*** SYNTAXE
  36. C
  37. C Discrétisation en VF "cell-centered" des équations d'Euler pour
  38. C un gaz parfait mono-constituent polytropique
  39. C
  40. C RMAT1 = 'KONV' 'VF' 'PERFMONO' 'JACOPRIM' MOD1 LMOT1 LMOT2
  41. C (MAILIM) MOT3 CHPO1 CHPO2 CHPO3 CHPO4 ;
  42. C
  43. C or (Bas MAch)
  44. C
  45. C RMAT1 = 'KONV' 'VF' 'PERFMONO' 'JACOPRIM' MOD1 LMOT1 LMOT2
  46. C (MAILIM) MOT3 CHPO1 CHPO2 CHPO3 CHPO4
  47. C CHPO5 CHPO6 ;
  48. C
  49. C ENTREES
  50. C
  51. C LMOT1 : objet de type LISTMOTS
  52. C Noms de composantes des variable duales de RMAT1.
  53. C Il contient dans l'ordre suivant: le noms de la densité,
  54. C du momentum, de l'énergie totale par unité de volume
  55. C
  56. C LMOT2 : objet de type LISTMOTS
  57. C Noms de composantes des variable primales de RMAT1.
  58. C Il contient dans l'ordre suivant: le noms de la densité,
  59. C de la vitesse, de la pression.
  60. C
  61. C MOD1 : objet modele de type Navier_Stokes
  62. C
  63. C MOT3 : objet de type MOT
  64. C 'VLH' : jacobien du residu pour la methode VLH
  65. C 'AUSMPLUUS' : jacobien du residu pour la methode AUSM+
  66. C 'AUSMPLM' : jacobien du residu pour la methode AUSM+ low
  67. C Mach
  68. C
  69. C (MAILIM): MAIILAGE de POI1 ou on ne veut pas calculer le FLUX convective
  70. C
  71. C CHPO1 : CHPOINT contenant la masse volumique
  72. C (SPG =('DOMA' MOD1 'CENTRE'), une seule composante,
  73. C 'SCAL').
  74. C
  75. C CHPO2 : CHPOINT contenant la vitesse
  76. C (SPG =('DOMA' MOD1 'CENTRE'), deux/trois composantes
  77. C 'UX', 'UY', 'UZ')
  78. C
  79. C CHPO3 : CHPOINT contenant la pression du gaz
  80. C (SPG =('DOMA' MOD1 'CENTRE'), une seule composante,
  81. C 'SCAL').
  82. C
  83. C CHPO4 : CHPOINT contenant le "gamma" du gaz
  84. C (SPG =('DOMA' MOD1 'CENTRE'), une seule composante,
  85. C 'SCAL').
  86. C
  87. C CHPO5 : CHPOINT contenant la premiere vitesse de cut-off
  88. C (SPG =('DOMA' MOD1 'CENTRE'), une seule composante,
  89. C 'SCAL').
  90. C
  91. C CHP06 : CHPOINT contenant la deuxieme vitesse de cut-off
  92. C (SPG =('DOMA' MOD1 'CENTRE'), une seule composante,
  93. C 'SCAL').
  94. C
  95. C SORTIES
  96. C
  97. C RMAT1 : objet de type MATRIK
  98. C (SPG =('DOMA' MOD1 'CENTRE'))
  99. C
  100. C************************************************************************
  101. C
  102. C HISTORIQUE (Anomalies et modifications éventuelles)
  103. C
  104. C HISTORIQUE :
  105. C
  106. C************************************************************************
  107. C
  108. IMPLICIT INTEGER(I-N)
  109.  
  110. -INC PPARAM
  111. -INC CCOPTIO
  112. -INC SMLMOTS
  113. -INC SMCHPOI
  114. -INC SMELEME
  115. POINTEUR MLMVIT.MLMOTS
  116. C
  117. INTEGER NBJAC, IRET, INDIC, NBCOMP, NESP, JGN, JGM
  118. & ,IDOMA, MELEMC, MELEMF, MELEFE, MELTFA, ICHPSU, ICHPDI
  119. & ,ICHPVO, INORM, INEFMD, ICOND
  120. & ,IJACO, ILIINC, ILIINP, NC, IFLIM, MELLIM, ICACCA
  121. & ,IIMPL, IRN, IVN, IPN, IGAMN, IUINF, IUPRI
  122. C
  123. PARAMETER (NBJAC=3)
  124. CHARACTER*8 TYPE, LJACO(NBJAC)
  125. CHARACTER*4 MOT
  126. CHARACTER*(40) MESERR
  127. DATA LJACO/'VLH ','AUSMPLUS','AUSMPLM '/
  128. C
  129. C**********************************
  130. C**** Lecture de l'objet MODELE ***
  131. C**********************************
  132. C
  133. ICOND = 1
  134. CALL QUETYP(TYPE,ICOND,IRET)
  135.  
  136. IF(IRET.EQ.0.AND.TYPE.NE.'MMODEL')THEN
  137. WRITE(6,*)' On attend un objet MMODEL'
  138. RETURN
  139. ENDIF
  140. CALL LIROBJ('MMODEL',MMODEL,ICOND,IRET)
  141. IF(IERR.NE.0)GOTO 9999
  142. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  143. IF(IERR.NE.0)GOTO 9999
  144. C
  145. C**** Centre, FACE, FACEL, ELTFA
  146. C
  147. CALL LEKTAB(IDOMA,'CENTRE',MELEMC)
  148. IF(IERR .NE. 0) GOTO 9999
  149. C
  150. CALL LEKTAB(IDOMA,'FACE',MELEMF)
  151. IF(IERR .NE. 0) GOTO 9999
  152. C
  153. CALL LEKTAB(IDOMA,'FACEL',MELEFE)
  154. IF(IERR .NE. 0) GOTO 9999
  155. C
  156. CALL LEKTAB(IDOMA,'ELTFA',MELTFA)
  157. IF(IERR .NE. 0) GOTO 9999
  158. C
  159. C**** Lecture du CHPOINT contenant les surfaces des faces.
  160. C
  161. CALL LEKTAB(IDOMA,'XXSURFAC',ICHPSU)
  162. IF(IERR .NE. 0) GOTO 9999
  163. INDIC = 1
  164. NBCOMP = 1
  165. MOT = 'SCAL'
  166. CALL QUEPOI(ICHPSU, MELEMF, INDIC, NBCOMP, MOT)
  167. IF(IERR .NE. 0) GOTO 9999
  168. C
  169. C**** Lecture du CHPOINT contenant les diametres minimums.
  170. C
  171. CALL LEKTAB(IDOMA,'XXDIEMIN',ICHPDI)
  172. IF(IERR .NE. 0) GOTO 9999
  173. INDIC = 1
  174. NBCOMP = 1
  175. MOT = 'SCAL'
  176. CALL QUEPOI(ICHPDI, MELEMC, INDIC, NBCOMP, MOT)
  177. IF(IERR .NE. 0) GOTO 9999
  178. C
  179. C**** Lecture du CHPOINT contenant les volumes
  180. C
  181. CALL LEKTAB(IDOMA,'XXVOLUM',ICHPVO)
  182. IF(IERR .NE. 0) GOTO 9999
  183. INDIC = 1
  184. NBCOMP = 1
  185. MOT = 'SCAL'
  186. CALL QUEPOI(ICHPVO, MELEMC, INDIC, NBCOMP, MOT)
  187. IF(IERR .NE. 0) GOTO 9999
  188. C
  189. C**** Les normales aux faces
  190. C
  191. IF(IDIM .EQ. 2)THEN
  192. C Que les normales
  193. CALL LEKTAB(IDOMA,'XXNORMAF',INORM)
  194. IF(IERR .NE. 0) GOTO 9999
  195. JGN = 4
  196. JGM = 2
  197. SEGINI MLMVIT
  198. MLMVIT.MOTS(1) = 'UX '
  199. MLMVIT.MOTS(2) = 'UY '
  200. CALL QUEPO1(INORM, MELEMF, MLMVIT)
  201. SEGSUP MLMVIT
  202. IF(IERR .NE. 0) GOTO 9999
  203. ELSE
  204. C Les normales et les tangentes
  205. TYPE = ' '
  206. CALL ACMO(IDOMA,'MATROT',TYPE,INORM)
  207. IF (TYPE .NE. 'CHPOINT ') THEN
  208. CALL MATRAN(IDOMA,INORM)
  209. IF(IERR .NE. 0) GOTO 9999
  210. ENDIF
  211. JGN = 4
  212. JGM = 9
  213. SEGINI MLMVIT
  214. MLMVIT.MOTS(1) = 'UX '
  215. MLMVIT.MOTS(2) = 'UY '
  216. MLMVIT.MOTS(3) = 'UZ '
  217. MLMVIT.MOTS(4) = 'RX '
  218. MLMVIT.MOTS(5) = 'RY '
  219. MLMVIT.MOTS(6) = 'RZ '
  220. MLMVIT.MOTS(7) = 'MX '
  221. MLMVIT.MOTS(8) = 'MY '
  222. MLMVIT.MOTS(9) = 'MZ '
  223. CALL QUEPO1(INORM, MELEMF, MLMVIT)
  224. SEGSUP MLMVIT
  225. ENDIF
  226. C
  227. C********************************
  228. C**** Fin table domaine *********
  229. C********************************
  230. C
  231. NESP=0
  232. C
  233. C**** La list des inconnues duales (variables conservatives)
  234. C
  235. TYPE='LISTMOTS'
  236. CALL LIROBJ(TYPE,ILIINC,1,IRET)
  237. IF(IERR .NE. 0) GOTO 9999
  238. MLMOTS = ILIINC
  239. SEGACT MLMOTS
  240. NC = MLMOTS.MOTS(/2)
  241. SEGDES MLMOTS
  242. IF(NC .NE. (IDIM+2+NESP))THEN
  243. MOTERR(1:40) = 'LISTINCO = ???'
  244. WRITE(IOIMP,*) MOTERR
  245. C
  246. C******* Message d'erreur standard
  247. C 21 2
  248. C Données incompatibles
  249. C
  250. CALL ERREUR(21)
  251. GOTO 9999
  252. ENDIF
  253. C
  254. C**** La list des inconnues primales (variables primitives)
  255. C
  256. TYPE='LISTMOTS'
  257. CALL LIROBJ(TYPE,ILIINP,1,IRET)
  258. IF(IERR .NE. 0) GOTO 9999
  259. MLMOTS = ILIINP
  260. SEGACT MLMOTS
  261. NC = MLMOTS.MOTS(/2)
  262. SEGDES MLMOTS
  263. IF(NC .NE. (IDIM+2+NESP))THEN
  264. MOTERR(1:40) = 'LISTINCO = ???'
  265. WRITE(IOIMP,*) MOTERR
  266. C
  267. C******* Message d'erreur standard
  268. C 21 2
  269. C Données incompatibles
  270. C
  271. CALL ERREUR(21)
  272. GOTO 9999
  273. ENDIF
  274. C
  275. C**** Boundary condition
  276. C
  277. IRET=0
  278. TYPE='MAILLAGE'
  279. CALL LIROBJ(TYPE,IFLIM,0,IRET)
  280. IF(IERR.NE.0)GOTO 9999
  281. IF(IRET .EQ. 0)THEN
  282. MELLIM = 0
  283. ELSE
  284. MELEME=IFLIM
  285. SEGACT MELEME
  286. ICACCA=MELEME.NUM(/2)
  287. IF(ICACCA .EQ. 0)THEN
  288. MELLIM = 0
  289. ELSE
  290. MELLIM = IFLIM
  291. ENDIF
  292. SEGDES MELEME
  293. ENDIF
  294. C
  295. C**** Type of Jacobian
  296. C
  297. CALL LIRMOT(LJACO,NBJAC,IIMPL,1)
  298. IF(IERR .NE. 0)GOTO 9999
  299.  
  300. C
  301. C******* La densité au centre
  302. C
  303. TYPE = 'CHPOINT '
  304. CALL LIROBJ(TYPE,IRN,1,IRET)
  305. IF(IERR .NE. 0) GOTO 9999
  306. C
  307. C**** Control du CHPOINT: QUEPOI
  308. C
  309. C INDIC = 1 -> on impose le pointeur du support geometrique (ICEN)
  310. C N.B. Le CHPOINT peut changer de structure pour
  311. C avoir SPG = ICEN!!!!
  312. C INDIC = 0 -> on ne fait que verifier le support geometrique
  313. C (ICEN). Si le SPG sont differents INDIC = -4 en sortie
  314. C
  315. C NBCOMP > 0 -> numero des composantes
  316. C
  317. C MOT = ' ' obligatoire s'on connais pas les noms des composantes
  318. C
  319. INDIC = 1
  320. NBCOMP = 1
  321. MOT = 'SCAL'
  322. CALL QUEPOI(IRN, MELEMC, INDIC, NBCOMP, MOT)
  323. IF(IERR .NE. 0) GOTO 9999
  324. C
  325. C******* La vitesse au centre
  326. C
  327. TYPE = 'CHPOINT '
  328. CALL LIROBJ(TYPE,IVN,1,IRET)
  329. IF(IERR .NE. 0) GOTO 9999
  330. JGN = 4
  331. JGM = IDIM
  332. SEGINI MLMVIT
  333. MLMVIT.MOTS(1) = 'UX '
  334. MLMVIT.MOTS(2) = 'UY '
  335. IF(IDIM .EQ. 3) MLMVIT.MOTS(3) = 'UZ '
  336. CALL QUEPO1(IVN, MELEMC, MLMVIT)
  337. SEGSUP MLMVIT
  338. IF(IERR .NE. 0) GOTO 9999
  339. C
  340. C******* La pression au centre
  341. C
  342. TYPE = 'CHPOINT '
  343. CALL LIROBJ(TYPE,IPN,1,IRET)
  344. IF(IERR .NE. 0) GOTO 9999
  345. INDIC = 1
  346. NBCOMP = 1
  347. MOT = 'SCAL'
  348. CALL QUEPOI(IPN, MELEMC, INDIC, NBCOMP, MOT)
  349. IF(IERR .NE. 0) GOTO 9999
  350. C
  351. C******* Gamma au centre
  352. C
  353. TYPE = 'CHPOINT '
  354. CALL LIROBJ(TYPE,IGAMN,1,IRET)
  355. IF(IERR .NE. 0) GOTO 9999
  356. INDIC = 1
  357. NBCOMP = 1
  358. MOT = 'SCAL'
  359. CALL QUEPOI(IGAMN, MELEMC, INDIC, NBCOMP, MOT)
  360. IF(IERR .NE. 0) GOTO 9999
  361. C
  362. C**** Bas Mach
  363. C
  364. IF(IIMPL .EQ. 3)THEN
  365. TYPE = 'CHPOINT '
  366. C
  367. C******* Cut off 1
  368. C
  369. CALL LIROBJ(TYPE,IUINF,1,IRET)
  370. IF(IERR .NE. 0) GOTO 9999
  371. INDIC = 1
  372. NBCOMP = 1
  373. MOT = 'SCAL'
  374. CALL QUEPOI(IUINF, MELEMC, INDIC, NBCOMP, MOT)
  375. IF(IERR .NE. 0) GOTO 9999
  376. C
  377. C******* Cut off 2
  378. C
  379. TYPE = 'CHPOINT '
  380. CALL LIROBJ(TYPE,IUPRI,1,IRET)
  381. IF(IERR .NE. 0) GOTO 9999
  382. INDIC = 1
  383. NBCOMP = 1
  384. MOT = 'SCAL'
  385. CALL QUEPOI(IUPRI, MELEMC, INDIC, NBCOMP, MOT)
  386. IF(IERR .NE. 0) GOTO 9999
  387. C
  388. ELSE
  389. IUINF=0
  390. IUPRI=0
  391. ENDIF
  392. C
  393. C******* Calcul du jacobien
  394. C
  395. IF(IIMPL .EQ. 1)THEN
  396. C
  397. C********** VLH
  398. C
  399. IF(IDIM .EQ. 2)THEN
  400. CALL KONJP1(ILIINC,ILIINP,IRN,IVN,IPN,IGAMN,INORM
  401. $ ,ICHPVO,ICHPSU, MELEMC, MELEFE, MELLIM, IJACO)
  402. IF(IERR .NE. 0) GOTO 9999
  403. ELSE
  404. CALL KONJP3(ILIINC,ILIINP,IRN,IVN,IPN,IGAMN,INORM
  405. $ ,ICHPVO,ICHPSU, MELEMC, MELEFE, MELLIM, IJACO)
  406. IF(IERR .NE. 0) GOTO 9999
  407. ENDIF
  408. ELSEIF(IIMPL .EQ. 2)THEN
  409. C
  410. C********** AUSM+
  411. C
  412. IF(IDIM .EQ. 2)THEN
  413. CALL KONJP2(ILIINC,ILIINP,IRN,IVN,IPN,IGAMN,INORM
  414. $ ,ICHPVO,ICHPSU, MELEMC, MELEFE, MELLIM, IJACO)
  415. IF(IERR .NE. 0) GOTO 9999
  416. ELSE
  417. CALL KONJP4(ILIINC,ILIINP,IRN,IVN,IPN,IGAMN,INORM
  418. $ ,ICHPVO,ICHPSU, MELEMC, MELEFE, MELLIM, IJACO)
  419. IF(IERR .NE. 0) GOTO 9999
  420. ENDIF
  421. ELSEIF(IIMPL .EQ. 3)THEN
  422. C
  423. C********** AUSM+LM
  424. C
  425. IF(IDIM .EQ. 2)THEN
  426. CALL KONJP5(ILIINC,ILIINP,IRN,IVN,IPN,IGAMN,INORM,
  427. $ ICHPVO,ICHPSU, IUINF, IUPRI, MELEMC, MELEFE,
  428. $ MELLIM, IJACO)
  429. IF(IERR .NE. 0) GOTO 9999
  430. ELSE
  431. CALL ERREUR(251)
  432. ENDIF
  433. ELSE
  434. C Tentative d'utilisation d'une option non implémentée
  435. CALL ERREUR(251)
  436. GOTO 9999
  437. ENDIF
  438. C
  439. C**** Ecriture des resultats
  440. C
  441. TYPE='MATRIK '
  442. CALL ECROBJ(TYPE,IJACO)
  443. 9999 CONTINUE
  444. RETURN
  445. END
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  

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