Télécharger kon12.eso

Retour à la liste

Numérotation des lignes :

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

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