Télécharger pre31.eso

Retour à la liste

Numérotation des lignes :

pre31
  1. C PRE31 SOURCE OF166741 24/12/13 21:17:04 12097
  2. SUBROUTINE PRE31()
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : PRE31
  8. C
  9. C DESCRIPTION : Voir PRE3
  10. C
  11. C Cas gaz "thermally perfect" mono/multi-especes
  12. C
  13. C 1er ordre en espace, 1er ordre en temps
  14. C
  15. C Creations des object MCHAML IROF, IVITF, IPF, IYF
  16. C
  17. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  18. C
  19. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF
  20. C
  21. C************************************************************************
  22. C
  23. C
  24. C APPELES (Outils) : LIRTAB, ACMO, LEKTAB, QUETYP, ERREUR, LIROBJ,
  25. C QUEPO1, ECROBJ
  26. C
  27. C APPELES (Calcul) : PRE311 (2D), PRE312 (3D)
  28. C
  29. C
  30. C************************************************************************
  31. C
  32. C HISTORIQUE (Anomalies et modifications éventuelles)
  33. C
  34. C HISTORIQUE : Créée le 18.12.98.
  35. C
  36. C 06.02.00 transport des scalaires passifs
  37. C
  38. C************************************************************************
  39. C
  40. C**** Les variables
  41. C
  42. IMPLICIT INTEGER(I-N)
  43. INTEGER ICOND, IRETOU, IERR0
  44. & ,IDOMA, ICEN, IFACE, IFACEL, INORM, IROC, IVITC, IPC
  45. & ,IYC, ISCAC, IROF, IVITF, IPF, IYF, IPGAS, NESP, ISCAF
  46. & ,NSCA, INEFMD
  47. & ,MMODEL
  48. REAL*8 VALER, VAL1, VAL2
  49. CHARACTER*(8) MTYPR, TYPE
  50. CHARACTER*(40) MESERR
  51. LOGICAL LOGAN,LOGNEG, LOGBOR
  52. C
  53. C**** Les Includes
  54. C
  55.  
  56. -INC PPARAM
  57. -INC CCOPTIO
  58. INTEGER JGM, JGN
  59. -INC SMLMOTS
  60. POINTEUR MLMCOM.MLMOTS, MLMESP.MLMOTS, MLMSCA.MLMOTS
  61. POINTEUR MLMVIT.MLMOTS
  62. C
  63. C**** Initialisation des parametres d'erreur
  64. C
  65. LOGAN = .FALSE.
  66. LOGNEG = .FALSE.
  67. LOGBOR = .FALSE.
  68. MESERR = ' '
  69. MOTERR(1:40) = MESERR(1:40)
  70. VALER = 0.0D0
  71. VAL1 = 0.0D0
  72. VAL2 = 0.0D0
  73. C
  74. C**** Lecture de l'objet MODELE
  75. C
  76. ICOND = 1
  77. CALL QUETYP(TYPE,ICOND,IRETOU)
  78. CALL LIROBJ('MMODEL ',MMODEL,ICOND,IRETOU)
  79. CALL ACTOBJ('MMODEL ',MMODEL,1)
  80. IF(IERR.NE.0)GOTO 9999
  81. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  82. IF(IERR.NE.0)GOTO 9999
  83. C
  84. C**** Lecture du MELEME SPG des points CENTRE.
  85. C
  86. C
  87. C CALL LEKTAB(IDOMA,'CENTRE',IP)
  88. C
  89. C**** Probleme du LEKTAB: si IDOMA.'CENTRE' n'existe pas,
  90. C il crèe IDOMA.'CENTRE' sans recrèer 'FACEL'
  91. C -> la correspondance global des noeuds saut!
  92. C
  93. C On peut utilizer ACCTAB ou ACMO
  94. C
  95. MTYPR = 'MAILLAGE'
  96. CALL ACMO(IDOMA,'CENTRE',MTYPR,ICEN)
  97. IF(IERR.NE.0)GOTO 9999
  98. C
  99. C**** Lecture du MELEME 'FACE'
  100. C
  101. MTYPR = 'MAILLAGE'
  102. CALL ACMO(IDOMA,'FACE',MTYPR,IFACE)
  103. IF(IERR.NE.0)GOTO 9999
  104. C
  105. C**** Lecture du MELEME 'FACEL'
  106. C
  107. MTYPR = 'MAILLAGE'
  108. CALL ACMO(IDOMA,'FACEL',MTYPR,IFACEL)
  109. IF(IERR.NE.0)GOTO 9999
  110. C
  111. C**** Lecture du CHPOINT contenant les normales (tangentes) aux faces
  112. C
  113. IF(IDIM .EQ. 2)THEN
  114. C Que les normales
  115. CALL LEKTAB(IDOMA,'XXNORMAF',INORM)
  116. IF(IERR .NE. 0) GOTO 9999
  117. JGN = 4
  118. JGM = 2
  119. SEGINI MLMVIT
  120. MLMVIT.MOTS(1) = 'UX '
  121. MLMVIT.MOTS(2) = 'UY '
  122. CALL QUEPO1(INORM, IFACE, MLMVIT)
  123. SEGSUP MLMVIT
  124. IF(IERR.NE.0)GOTO 9999
  125. ELSE
  126. MTYPR = ' '
  127. CALL ACMO(IDOMA,'MATROT',MTYPR,INORM)
  128. IF (MTYPR .NE. 'CHPOINT ') THEN
  129. CALL MATRAN(IDOMA,INORM)
  130. IF(IERR .NE. 0) GOTO 9999
  131. ENDIF
  132. JGN = 4
  133. JGM = 9
  134. SEGINI MLMVIT
  135. MLMVIT.MOTS(1) = 'UX '
  136. MLMVIT.MOTS(2) = 'UY '
  137. MLMVIT.MOTS(3) = 'UZ '
  138. MLMVIT.MOTS(4) = 'RX '
  139. MLMVIT.MOTS(5) = 'RY '
  140. MLMVIT.MOTS(6) = 'RZ '
  141. MLMVIT.MOTS(7) = 'MX '
  142. MLMVIT.MOTS(8) = 'MY '
  143. MLMVIT.MOTS(9) = 'MZ '
  144. CALL QUEPO1(INORM, IFACE, MLMVIT)
  145. SEGSUP MLMVIT
  146. IF(IERR.NE.0)GOTO 9999
  147. C
  148. ENDIF
  149. C
  150. C**** Lecture de la table des proprietes du gaz
  151. C
  152. ICOND = 1
  153. CALL QUETYP(MTYPR,ICOND,IRETOU)
  154. IF(IERR .NE. 0)GOTO 9999
  155. IF(MTYPR .NE. 'TABLE ')THEN
  156. C
  157. C******* Message d'erreur standard
  158. C 37 2
  159. C On ne trouve pas d'objet de type %m1:8
  160. C
  161. MOTERR(1:8) = 'TABLE '
  162. CALL ERREUR(37)
  163. GOTO 9999
  164. ELSE
  165. ICOND = 1
  166. CALL LIROBJ(MTYPR,IPGAS,ICOND,IRETOU)
  167. CALL ACTOBJ(MTYPR,IPGAS,1)
  168. IF(IERR .NE. 0)GOTO 9999
  169. ENDIF
  170. C
  171. C**** Les especes qui sont dans les Equations d'Euler
  172. C
  173. MTYPR = ' '
  174. CALL ACMO(IPGAS,'ESPEULE',MTYPR,MLMESP)
  175. IF(MTYPR .EQ. ' ')THEN
  176. NESP = 0
  177. IYC = 0
  178. ELSEIF(MTYPR .NE. 'LISTMOTS')THEN
  179. C
  180. C******* Message d'erreur standard
  181. C -301 0 %m1:40
  182. C
  183. MOTERR(1:40) = 'TAB2 . ESPEULE = ??? '
  184. WRITE(IOIMP,*) MOTERR
  185. C
  186. C******* Message d'erreur standard
  187. C 21 2
  188. C Données incompatibles
  189. C
  190. CALL ERREUR(21)
  191. GOTO 9999
  192. ELSE
  193. SEGACT MLMESP
  194. NESP = MLMESP.MOTS(/2)
  195. SEGDES MLMESP
  196. ENDIF
  197. C
  198. C**** Les scalaires passifs
  199. C
  200. MTYPR = ' '
  201. CALL ACMO(IPGAS,'SCALPASS',MTYPR,MLMSCA)
  202. IF(MTYPR .EQ. ' ')THEN
  203. NSCA = 0
  204. ISCAC = 0
  205. ELSEIF(MTYPR .NE. 'LISTMOTS')THEN
  206. C
  207. C******* Message d'erreur standard
  208. C -301 0 %m1:40
  209. C
  210. MOTERR(1:40) = 'TAB2 . SCALPASS = ??? '
  211. WRITE(IOIMP,*) MOTERR
  212. C
  213. C******* Message d'erreur standard
  214. C 21 2
  215. C Données incompatibles
  216. C
  217. CALL ERREUR(21)
  218. GOTO 9999
  219. ELSE
  220. SEGACT MLMSCA
  221. NSCA = MLMSCA.MOTS(/2)
  222. SEGDES MLMSCA
  223. ENDIF
  224. C
  225. C**** Lecture du CHPOINT ROC
  226. C
  227. ICOND = 1
  228. CALL QUETYP(MTYPR,ICOND,IRETOU)
  229. IF(IERR .NE. 0)GOTO 9999
  230. IF(MTYPR .NE. 'CHPOINT ')THEN
  231. C
  232. C******* Message d'erreur standard
  233. C 37 2
  234. C On ne trouve pas d'objet de type %m1:8
  235. C
  236. MOTERR(1:8) = 'CHPOINT '
  237. CALL ERREUR(37)
  238. GOTO 9999
  239. ELSE
  240. ICOND = 1
  241. CALL LIROBJ(MTYPR,IROC,ICOND,IRETOU)
  242. CALL ACTOBJ(MTYPR,IROC,1)
  243. IF (IERR.NE.0) GOTO 9999
  244. ENDIF
  245. C
  246. C**** Control du CHPOINT: QUEPO1
  247. C
  248. JGN=4
  249. JGM=1
  250. SEGINI MLMCOM
  251. MLMCOM.MOTS(1)='SCAL'
  252. CALL QUEPO1(IROC, ICEN, MLMCOM)
  253. SEGSUP MLMCOM
  254. IF(IERR .NE. 0)THEN
  255. IERR0 = IERR
  256.  
  257. C
  258. C******* Message d'erreur standard
  259. C -301 0 %m1:40
  260. C
  261. MOTERR(1:40) = 'CHPO1 = ??? '
  262. $
  263. WRITE(IOIMP,*) MOTERR
  264.  
  265. GOTO 9999
  266. ENDIF
  267. C
  268. C**** Lecture du CHPOINT VITC
  269. C
  270. ICOND = 1
  271. CALL QUETYP(MTYPR,ICOND,IRETOU)
  272. IF(IERR .NE. 0)GOTO 9999
  273. IF(MTYPR .NE. 'CHPOINT ')THEN
  274. C
  275. C******* Message d'erreur standard
  276. C 37 2
  277. C On ne trouve pas d'objet de type %m1:8
  278. C
  279. MOTERR(1:8) = 'CHPOINT '
  280. CALL ERREUR(37)
  281. GOTO 9999
  282. ELSE
  283. ICOND = 1
  284. CALL LIROBJ('CHPOINT',IVITC,ICOND,IRETOU)
  285. CALL ACTOBJ('CHPOINT',IVITC,1)
  286. IF (IERR.NE.0) GOTO 9999
  287. ENDIF
  288. C
  289. C**** Control du CHPOINT
  290. C
  291. JGN=4
  292. JGM=IDIM
  293. SEGINI MLMCOM
  294. MLMCOM.MOTS(1) = 'UX '
  295. MLMCOM.MOTS(2) = 'UY '
  296. IF(IDIM .EQ. 3) MLMCOM.MOTS(3) = 'UZ '
  297. CALL QUEPO1(IVITC, ICEN, MLMCOM)
  298. SEGSUP MLMCOM
  299. IF(IERR .NE. 0)THEN
  300. IERR0 = IERR
  301.  
  302. C
  303. C******* Message d'erreur standard
  304. C -301 0 %m1:40
  305. C
  306. MOTERR(1:40) = 'CHPO2 = ??? '
  307. $
  308. WRITE(IOIMP,*) MOTERR
  309.  
  310. GOTO 9999
  311. ENDIF
  312. C
  313. C**** Lecture du CHPOINT PC
  314. C
  315. ICOND = 1
  316. CALL QUETYP(MTYPR,ICOND,IRETOU)
  317. IF(IERR .NE. 0)GOTO 9999
  318. IF(MTYPR .NE. 'CHPOINT ')THEN
  319. C
  320. C******* Message d'erreur standard
  321. C 37 2
  322. C On ne trouve pas d'objet de type %m1:8
  323. C
  324. MOTERR(1:8) = 'CHPOINT '
  325. CALL ERREUR(37)
  326. GOTO 9999
  327. ELSE
  328. ICOND = 1
  329. CALL LIROBJ('CHPOINT',IPC,ICOND,IRETOU)
  330. CALL ACTOBJ('CHPOINT',IPC,1)
  331. IF (IERR.NE.0) GOTO 9999
  332. ENDIF
  333. C
  334. C**** Control du CHPOINT
  335. C
  336. JGN=4
  337. JGM=1
  338. SEGINI MLMCOM
  339. MLMCOM.MOTS(1)='SCAL'
  340. CALL QUEPO1(IPC, ICEN, MLMCOM)
  341. SEGSUP MLMCOM
  342. IF(IERR .NE. 0)THEN
  343. IERR0 = IERR
  344.  
  345. C
  346. C******* Message d'erreur standard
  347. C -301 0 %m1:40
  348. C
  349. MOTERR(1:40) = 'CHPO3 = ??? '
  350. $
  351. WRITE(IOIMP,*) MOTERR
  352.  
  353. GOTO 9999
  354. ENDIF
  355. C
  356. C**** Lecture du CHPOINT YC
  357. C
  358. IF(NESP .GT. 0)THEN
  359. ICOND = 1
  360. CALL QUETYP(MTYPR,ICOND,IRETOU)
  361. IF(IERR .NE. 0)GOTO 9999
  362. IF(MTYPR .NE. 'CHPOINT ')THEN
  363. C
  364. C******* Message d'erreur standard
  365. C 37 2
  366. C On ne trouve pas d'objet de type %m1:8
  367. C
  368. MOTERR(1:8) = 'CHPOINT '
  369. CALL ERREUR(37)
  370. GOTO 9999
  371. ELSE
  372. ICOND = 1
  373. CALL LIROBJ('CHPOINT',IYC,ICOND,IRETOU)
  374. CALL ACTOBJ('CHPOINT',IYC,1)
  375. IF (IERR.NE.0) GOTO 9999
  376. ENDIF
  377. C
  378. C**** Control du CHPOINT (on ne controlle que le maillage)
  379. C
  380. CALL QUEPO1(IYC, ICEN, MLMESP)
  381. IF(IERR .NE. 0)THEN
  382. IERR0 = IERR
  383.  
  384. C
  385. C******* Message d'erreur standard
  386. C -301 0 %m1:40
  387. C
  388. MOTERR(1:40) = 'CHPO4 = ??? '
  389. WRITE(IOIMP,*) MOTERR
  390.  
  391. GOTO 9999
  392. ENDIF
  393. ENDIF
  394. C
  395. C**** Lecture du CHPOINT ISCAC
  396. C
  397. IF(NSCA .GT. 0)THEN
  398. ICOND = 1
  399. CALL QUETYP(MTYPR,ICOND,IRETOU)
  400. IF(IERR .NE. 0)GOTO 9999
  401. IF(MTYPR .NE. 'CHPOINT ')THEN
  402. C
  403. C******* Message d'erreur standard
  404. C 37 2
  405. C On ne trouve pas d'objet de type %m1:8
  406. C
  407. MOTERR(1:8) = 'CHPOINT '
  408. CALL ERREUR(37)
  409. GOTO 9999
  410. ELSE
  411. ICOND = 1
  412. CALL LIROBJ('CHPOINT',ISCAC,ICOND,IRETOU)
  413. CALL ACTOBJ('CHPOINT',ISCAC,1)
  414. IF (IERR.NE.0) GOTO 9999
  415. ENDIF
  416. C
  417. C**** Control du CHPOINT (on ne controlle que le maillage)
  418. C
  419. CALL QUEPO1(ISCAC, ICEN, MLMSCA)
  420. IF(IERR .NE. 0)THEN
  421. IERR0 = IERR
  422.  
  423. C
  424. C******* Message d'erreur standard
  425. C -301 0 %m1:40
  426. C
  427. MOTERR(1:40) = 'CHPO5 = ??? '
  428. WRITE(IOIMP,*) MOTERR
  429.  
  430. GOTO 9999
  431. ENDIF
  432. ENDIF
  433. C
  434. C**** Centre -> Face
  435. C
  436. IF(IDIM .EQ. 2)THEN
  437. C
  438. C******* Deux Dimensions, Mono/Multi Especes, 1er ordre en espace, 1er ordre en
  439. C temps
  440. C
  441. CALL PRE311(ICEN,IFACE,IFACEL,INORM,IROC,IVITC,IPC,IYC,ISCAC,
  442. & IROF,IVITF,IPF,IYF,ISCAF,
  443. & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2)
  444. ELSE
  445. C
  446. C******* Trois Dimensions, Mono/Multi Especes, 1er ordre en espace,
  447. C 1er ordre en temps
  448. C
  449. C
  450. CALL PRE312(ICEN,IFACE,IFACEL,INORM,IROC,IVITC,IPC,IYC,ISCAC,
  451. & IROF,IVITF,IPF,IYF,ISCAF,
  452. & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2)
  453. ENDIF
  454. C
  455. C**** Messages d'erreur
  456. C
  457. IF(LOGAN)THEN
  458. C
  459. C******* Anomalie detectée
  460. C
  461. C
  462. C******* Message d'erreur standard
  463. C -301 0
  464. C %m1:40
  465. C
  466. MOTERR(1:40) = MESERR(1:40)
  467. WRITE(IOIMP,*) MOTERR
  468. C
  469. C******* Message d'erreur standard
  470. C 5 3
  471. C Erreur anormale.contactez votre support
  472. C
  473. CALL ERREUR(5)
  474. GOTO 9999
  475. C
  476. ELSEIF(LOGNEG)THEN
  477. C
  478. C******* Message d'erreur standard
  479. C 41 2
  480. C %m1:8 = %r1 inférieur à %r2
  481. C
  482. MOTERR(1:8) = MESERR(1:8)
  483. REAERR(1) = REAL(VALER)
  484. REAERR(2) = 0.0
  485. CALL ERREUR(41)
  486. GOTO 9999
  487. ELSEIF(LOGBOR)THEN
  488. C
  489. C******* Message d'erreur standard
  490. C 42 2
  491. C %m1:8 = %r1 non compris entre %r2 et %r3
  492. C
  493. MOTERR(1:8) = MESERR(1:8)
  494. REAERR(1) = REAL(VALER)
  495. REAERR(2) = REAL(VAL1)
  496. REAERR(3) = REAL(VAL2)
  497. CALL ERREUR(42)
  498. GOTO 9999
  499. ELSE
  500. C
  501. C******* Ecriture de ROF, VITF, PF, YF, GAMMAF
  502. C
  503. MTYPR = 'MCHAML '
  504. IF(ISCAF .NE. 0) THEN
  505. CALL ACTOBJ(MTYPR,ISCAF,1)
  506. CALL ECROBJ(MTYPR,ISCAF)
  507. ENDIF
  508. IF(IYF .NE. 0) THEN
  509. CALL ACTOBJ(MTYPR,IYF,1)
  510. CALL ECROBJ(MTYPR,IYF)
  511. ENDIF
  512. CALL ACTOBJ(MTYPR,IPF,1)
  513. CALL ACTOBJ(MTYPR,IVITF,1)
  514. CALL ACTOBJ(MTYPR,IROF,1)
  515.  
  516. CALL ECROBJ(MTYPR,IPF)
  517. CALL ECROBJ(MTYPR,IVITF)
  518. CALL ECROBJ(MTYPR,IROF)
  519. ENDIF
  520. C
  521. 9999 CONTINUE
  522. END
  523.  
  524.  
  525.  
  526.  

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