Télécharger ckon.eso

Retour à la liste

Numérotation des lignes :

ckon
  1. C CKON SOURCE FANDEUR 22/01/03 21:15:05 11136
  2. SUBROUTINE CKON(KIZX)
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : CKON
  8. C
  9. C DESCRIPTION : Subroutine appellée par KONV
  10. C
  11. C Modelisation 2D/3D des equations d'Euler
  12. C
  13. C Calcul de flux aux interfaces
  14. C
  15. C LANGUAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  16. C
  17. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF
  18. C
  19. C************************************************************************
  20. C
  21. C
  22. C APPELES (E/S) : ACMO, ERREUR, ACME, ACMM, LEKTAB, CRTABL, ECMM,
  23. C ECMO, ECMF
  24. C
  25. C
  26. C APPELES (Calcul) : CKON1 (2D, gaz "calorically perfect")
  27. C CKON2 (3D, gaz "calorically perfect")
  28. C CKON3 (2D, gaz "thermally perfect")
  29. C CKON4 (3D, gaz "thermally perfect")
  30. C
  31. C************************************************************************
  32. C
  33. C*** ENTREE
  34. C
  35. C Phrase d'appel (GIBIANE) :
  36. C
  37. C KONV TAB ;
  38. C
  39. C (NB: KIZX qui appairesse dans CKON(KIZX) est le pointeur de la
  40. C table TAB)
  41. C
  42. C La table de sous type KIZX a été généré par EQEX et
  43. C s'appelle RV.*KONV; elle contient differents arguments:
  44. C
  45. C 1) la table RV, généré par EQEX:
  46. C
  47. C KIZX . 'EQEX'
  48. C
  49. C 2) la table des options
  50. C
  51. C KIZX . 'KOPT'
  52. C
  53. C 3) la table domaine de KONV,
  54. C
  55. C KIZX . 'NOMZONE'
  56. C KIZX . 'DOMZ '
  57. C
  58. C 4) tous les inconnues du probleme global
  59. C
  60. C KIZX . 'EQEX' . 'INCO'
  61. C
  62. C 5) la methode de calcul
  63. C
  64. C KIZX . 'KOPT' . 'IDCEN'
  65. C
  66. C 6) mono-espece, multi-especes, multi-especes "thermally perfect"
  67. C
  68. C KIZX . 'KOPT' . 'IDEUL'
  69. C
  70. C
  71. C 7) le variables primales de KONV,
  72. C i.e. les arguments de l'operateur KONV:
  73. C
  74. C KIZX . 'ARG1 '
  75. C
  76. C KIZX . 'ARG2 '
  77. C
  78. C ...
  79. C
  80. C
  81. C 8) la liste des variables duales, i.e. les inconnues traites par
  82. C KONV:
  83. C
  84. C KIZX . 'LISTINCO'
  85. C
  86. C
  87. C**** SORTIE
  88. C
  89. C 1) les Flux aux faces, sont conservés dans la table
  90. C
  91. C KIZX . 'EQEX' . 'KIZG'
  92. C
  93. C 2) la table PASDETPS (***A CHANGER***)
  94. C
  95. C
  96. C***********************************************************************
  97. C
  98. C************************************************************************
  99. C
  100. C HISTORIQUE (Anomalies et modifications éventuelles)
  101. C
  102. C HISTORIQUE :
  103. C
  104. C************************************************************************
  105. C
  106. C
  107. C**** Variables de COOPTIO
  108. C
  109. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  110. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  111. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  112. C & ,IECHO, IIMPI, IOSPI
  113. C & ,IDIM
  114. C & ,MCOORD
  115. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  116. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  117. C & ,NORINC,NORVAL,NORIND,NORVAD
  118. C & ,NUCROU, IPSAUV
  119. C
  120. IMPLICIT INTEGER(I-N)
  121. INTEGER KIZX, IEQEX, IKOPT, IDOMA, INCO
  122. & , IND, INDMET, INDEUL
  123. & , NBRINC
  124. & , NORD, NORDP1, IROF, IVITF, IPF, IGAMF
  125. & , IFRMAF
  126. & , LINCO
  127. & , MELEMC, MELEMF, MELEFE
  128. & , ICHPSU, ICHPDI
  129. & , KIZG, IZG1, IZG2, IZG3, IZG4, IZG5
  130. & , NLCEMI
  131. & , MTABT
  132. & , INDIC, NBCOMP, NESP, IPGAZ, NSCA, ISCAF
  133. & , IRET, IENT, I1, I2, IESP, JGM, JGN
  134. & , N, NAT, NC, NSOUPO, NCELL
  135. C
  136. REAL*8 DT, DIAMEL, XVAL
  137. CHARACTER*(8) TYPE,NOMZ,MOTLU
  138. CHARACTER*(8) ARG
  139. CHARACTER*(40) MESERR
  140. CHARACTER*(4) NOMTOT(2)
  141. LOGICAL LOGME, LOGNC, LOGAN, XLOGI, LOGSCA
  142. C
  143. C**** Variables en ACCTAB
  144. C
  145. INTEGER IVALI, IRETI,IVALR, IRETR, MMODEL, INEFMD
  146. REAL*8 XVALI, XVALR
  147. LOGICAL LOGII, LOGIR
  148. CHARACTER*(8) MTYPI, MTYPR, CHARR
  149. C
  150. C**** Segment des proprietes du gaz
  151. C
  152. SEGMENT PROPHY
  153. REAL*8 ACV(NORDP1,NESP+1), R(NESP+1), H0K(NESP+1)
  154. & ,ACVTOG(NORDP1), ACVTOD(NORDP1)
  155. ENDSEGMENT
  156. C
  157. C**** Les Includes.
  158. C
  159.  
  160. -INC PPARAM
  161. -INC CCOPTIO
  162. -INC SMCHPOI
  163. -INC SMLMOTS
  164. POINTEUR MLMOEU.MLMOTS, MLMOSC.MLMOTS
  165. -INC SMLREEL
  166. -INC SMELEME
  167. C
  168. C**** Initialisation des variables pour la gestion des erreurs.
  169. C
  170. LOGNC = .FALSE.
  171. LOGAN = .FALSE.
  172. MESERR = ' '
  173.  
  174. C
  175. C**** Lecture de KIZX . 'EQEX'. (C'est le pointeur de la table RV)
  176. C
  177. IEQEX = 0
  178. TYPE = 'TABLE '
  179. CALL ACMO(KIZX,'EQEX',TYPE,IEQEX)
  180. IF(IERR .NE. 0) GOTO 9999
  181. IF(TYPE .NE. 'TABLE ')THEN
  182. MOTERR(1:40) = 'EULER, subroutine ckon.eso, EQEX = ? '
  183. C
  184. C******* Message d'erreur standard
  185. C -301 0 %m1:40
  186. C
  187. CALL ERREUR(-301)
  188. C
  189. C******* Message d'erreur standard
  190. C 21 2
  191. C Données incompatibles
  192. C
  193. CALL ERREUR(21)
  194. GO TO 9999
  195. ENDIF
  196. C
  197. C**** Lecture de KIZX . 'KOPT' (les optiones de KONV)
  198. C
  199. IKOPT = 0
  200. TYPE = 'TABLE '
  201. CALL ACMO(KIZX,'KOPT',TYPE,IKOPT)
  202. IF(IERR .NE. 0) GOTO 9999
  203. IF(TYPE .NE. 'TABLE ')THEN
  204. MOTERR(1:40) = 'EULER, subroutine ckon.eso, EQEX = ? '
  205. C
  206. C******* Message d'erreur standard
  207. C -301 0 %m1:40
  208. C
  209. CALL ERREUR(-301)
  210. C
  211. C On EQEX on a pas controlles qu'il n'y a pas KOPT
  212. C
  213. C******* Message d'erreur standard
  214. C 5 3
  215. C Erreur anormale.contactez votre support
  216. C
  217. CALL ERREUR(5)
  218. GO TO 9999
  219. ENDIF
  220. C
  221. C**** Lecture de KIZX . 'NOMZONE' (le domaine de KONV: le nom)
  222. C
  223. CALL ACMM(KIZX,'NOMZONE',NOMZ)
  224. IF(IERR .NE. 0)GOTO 9999
  225. C
  226. C**** Lecture de KIZX . 'DOMZ ' (le domaine de KONV: le pointeur)
  227. C
  228. IDOMA = 0
  229. TYPE = ' '
  230. CALL ACMO(KIZX,'DOMZ ',TYPE,MMODEL)
  231. IF(IERR .NE. 0) GOTO 9999
  232. IF(TYPE .NE. 'MMODEL ')THEN
  233. MOTERR(1:40) = 'EULER, subroutine ckon.eso, ZONE = ? '
  234. C
  235. C******* Message d'erreur standard
  236. C -301 0 %m1:40
  237. C
  238. CALL ERREUR(-301)
  239. C
  240. C******* Message d'erreur standard
  241. C 5 3
  242. C Erreur anormale.contactez votre support
  243. C
  244. CALL ERREUR(5)
  245. GO TO 9999
  246. ELSE
  247. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  248. ENDIF
  249. C
  250. C**** Lecture de KIZX . 'EQEX' . 'INCO'.
  251. C Le pointeur de la table qui contient toutes les inconnues du
  252. C probleme
  253. C
  254. TYPE = 'TABLE '
  255. CALL ACMO(IEQEX,'INCO',TYPE,INCO)
  256. IF(IERR .NE. 0) GOTO 9999
  257. IF(TYPE .NE. 'TABLE ')THEN
  258. MOTERR(1:40) = 'EULER, subroutine ckon.eso, INCO = ? '
  259. C
  260. C******* Message d'erreur standard
  261. C -301 0 %m1:40
  262. C
  263. CALL ERREUR(-301)
  264. C
  265. C******* Message d'erreur standard
  266. C 21 2
  267. C Données incompatibles
  268. C
  269. CALL ERREUR(21)
  270. GO TO 9999
  271. ENDIF
  272. C
  273. C
  274. C**** Model de gaz:
  275. C EULER mono-espece "calorically perfect" (IDEUL = 1)
  276. C EULER multi-espece "calorically perfect" (IDEUL = 2)
  277. C EULER multi-espece "thermally perfect" (IDEUL = 3)
  278. C
  279. CALL ACME(IKOPT,'IDEUL',INDEUL)
  280. IF(IERR .NE. 0) GOTO 9999
  281. IF((INDEUL .LT. 1) .OR. (INDEUL .GT. 3))THEN
  282. MOTERR(1:40) = 'EULER, subroutine ckon.eso, IDEUL = ? '
  283. C
  284. C******** Message d'erreur standard
  285. C -301 0 %m1:40
  286. C
  287. CALL ERREUR(-301)
  288. C
  289. C******* Message d'erreur standard
  290. C 5 3
  291. C Erreur anormale.contactez votre support
  292. C
  293. CALL ERREUR(5)
  294. GOTO 9999
  295. ENDIF
  296. IF(INDEUL .LE. 2)THEN
  297. C
  298. C*******************************************************************
  299. C******************* GAZ CALORICALLY PERFECT ***********************
  300. C*******************************************************************
  301. C
  302. IF(INDEUL .EQ.1)THEN
  303. LOGME = .FALSE.
  304. ELSE
  305. LOGME = .TRUE.
  306. ENDIF
  307. C
  308. C******* Lecture des options de KONV dans KIZX . 'KOPT'
  309. C
  310. C******* Metode utilisée
  311. C
  312. CALL ACME(IKOPT,'IDCEN',IND)
  313. IF(IERR .NE. 0) GOTO 9999
  314. IF(IND .EQ. 9)THEN
  315. C
  316. C********** GODUNOV
  317. C
  318. INDMET = 1
  319. ELSEIF(IND .EQ. 10)THEN
  320. C
  321. C********** Van Leer FVS
  322. C
  323. INDMET = 2
  324. ELSEIF(IND .EQ. 11)THEN
  325. C
  326. C********** Van Leer-HANEL FVS
  327. C
  328. INDMET = 3
  329. ELSEIF(IND .EQ. 12)THEN
  330. C
  331. C********** HUS (Van Leer FVS + Osher FDS)
  332. C
  333. INDMET = 4
  334. ELSEIF(IND .EQ. 13)THEN
  335. C
  336. C********** HUS (Van Leer-HANEL FVS + Osher FDS)
  337. C
  338. INDMET = 5
  339. ELSEIF(IND .EQ. 14)THEN
  340. C
  341. C********** AUSM
  342. C
  343. C INDMET = 6
  344. C ELSE
  345. C
  346. C********** Message d'erreur standard
  347. C 251 2
  348. C Tentative d'utilisation d'une option non implémentée
  349. C
  350. CALL ERREUR(251)
  351. ENDIF
  352. C
  353. C******* Lecture des arguments de KONV KIZX . 'ARG*'
  354. C
  355. C Lecture du MCHAML 'FACEL' contenant la masse volumique.
  356. C
  357. C D'abord on va lire son nom in KIZX . 'ARG1 ' -> MOTLU
  358. C
  359. MOTLU=' '
  360. CALL ACMM(KIZX,'ARG1 ',MOTLU)
  361. IF(IERR.NE.0) GOTO 9999
  362. C
  363. C******* On va lire le pointeur du MCHAML
  364. C
  365. TYPE='MCHAML '
  366. CALL ACMO(INCO,MOTLU,TYPE,IROF)
  367. IF(IERR.NE.0) GOTO 9999
  368. IF(TYPE .NE. 'MCHAML ')THEN
  369. C
  370. C********** Message d'erreur standard
  371. C 37 2
  372. C On ne trouve pas d'objet de type %m1:8
  373. C
  374. MOTERR(1:8) = 'MCHAML '
  375. CALL ERREUR(37)
  376. GOTO 9999
  377. ENDIF
  378. C
  379. C******* Lecture du MCHAML 'FACEL' vitesse
  380. C
  381. MOTLU=' '
  382. CALL ACMM(KIZX,'ARG2 ',MOTLU)
  383. IF(IERR.NE.0)GOTO 9999
  384. C
  385. TYPE='MCHAML '
  386. CALL ACMO(INCO,MOTLU,TYPE,IVITF)
  387. IF(IERR .NE. 0) GOTO 9999
  388. IF(TYPE .NE. 'MCHAML ')THEN
  389. C
  390. C********** Message d'erreur standard
  391. C 37 2
  392. C On ne trouve pas d'objet de type %m1:8
  393. C
  394. MOTERR(1:8) = 'MCHAML '
  395. CALL ERREUR(37)
  396. GOTO 9999
  397. ENDIF
  398. C
  399. C******** Lecture du MCHAML 'FACEL' contenant la pression
  400. C
  401. MOTLU=' '
  402. CALL ACMM(KIZX,'ARG3 ',MOTLU)
  403. IF(IERR .NE. 0) GOTO 9999
  404. C
  405. TYPE='MCHAML '
  406. CALL ACMO(INCO,MOTLU,TYPE,IPF)
  407. IF(IERR .NE. 0) GOTO 9999
  408. IF(TYPE .NE. 'MCHAML ')THEN
  409. C
  410. C********** Message d'erreur standard
  411. C 37 2
  412. C On ne trouve pas d'objet de type %m1:8
  413. C
  414. MOTERR(1:8) = 'MCHAML '
  415. CALL ERREUR(37)
  416. GOTO 9999
  417. ENDIF
  418. C
  419. C******* Lecture du MCHAML 'FACEL' contenant les gamma
  420. C
  421. MOTLU=' '
  422. CALL ACMM(KIZX,'ARG4 ',MOTLU)
  423. IF(IERR .NE. 0) GOTO 9999
  424. C
  425. TYPE='MCHAML '
  426. CALL ACMO(INCO,MOTLU,TYPE,IGAMF)
  427. IF(IERR .NE. 0) GOTO 9999
  428. IF(TYPE .NE. 'MCHAML ')THEN
  429. C
  430. C********** Message d'erreur standard
  431. C 37 2
  432. C On ne trouve pas d'objet de type %m1:8
  433. C
  434. MOTERR(1:8) = 'MCHAML '
  435. CALL ERREUR(37)
  436. GOTO 9999
  437. ENDIF
  438. C
  439. C******* Si LOGME -> MULTIESPECES
  440. C
  441. IF(LOGME)THEN
  442. C
  443. C********** Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  444. C
  445. MOTLU=' '
  446. CALL ACMM(KIZX,'ARG5 ',MOTLU)
  447. IF(IERR .NE. 0) GOTO 9999
  448. C
  449. TYPE='MCHAML '
  450. CALL ACMO(INCO,MOTLU,TYPE,IFRMAF)
  451. IF(IERR .NE. 0) GOTO 9999
  452. IF(TYPE .NE. 'MCHAML ')THEN
  453. C
  454. C********** Message d'erreur standard
  455. C 37 2
  456. C On ne trouve pas d'objet de type %m1:8
  457. C
  458. MOTERR(1:8) = 'MCHAML '
  459. CALL ERREUR(37)
  460. GOTO 9999
  461. ENDIF
  462. C
  463. C********** Lecture de la table qui contient le proprieté du gaz
  464. C
  465. MOTLU=' '
  466. CALL ACMM(KIZX,'ARG6 ',MOTLU)
  467. IF(IERR .NE. 0) GOTO 9999
  468. C
  469. TYPE='TABLE '
  470. CALL ACMO(INCO,MOTLU,TYPE,IPGAZ)
  471. IF(IERR .NE. 0) GOTO 9999
  472. IF(TYPE .NE. 'TABLE ')THEN
  473. C
  474. C************* Message d'erreur standard
  475. C 37 2
  476. C On ne trouve pas d'objet de type %m1:8
  477. C
  478. MOTERR(1:8) = 'TABLE '
  479. CALL ERREUR(37)
  480. GOTO 9999
  481. ENDIF
  482. ENDIF
  483. C
  484. C******* Lecture de Nom des Inconnues de KONV (KIZX . 'LISTINCO')
  485. C
  486. TYPE='LISTMOTS'
  487. CALL ACMO(KIZX,'LISTINCO',TYPE,LINCO)
  488. MLMOT1 = LINCO
  489. IF(IERR.NE.0)GOTO 9999
  490. SEGACT MLMOT1
  491. C
  492. C******* Verification du Nombre d'inconnues.
  493. C
  494. C Eulero mono-especie -> NBRINC = 3
  495. C Eulero multi-especies -> NBRINC = 4
  496. C
  497. NBRINC = MLMOT1.MOTS(/2)
  498. IF(LOGME)THEN
  499. IF(NBRINC .NE. 4)THEN
  500. C
  501. C************* Message d'erreur standard
  502. C -301 0 %m1:40
  503. C
  504. MOTERR(1:40) = 'EULERMS: LISTINCO = ? '
  505. CALL ERREUR(-301)
  506. C
  507. C************* Message d'erreur standard
  508. C 21 2 Données incompatibles
  509. C
  510. CALL ERREUR(21)
  511. GO TO 9999
  512. ENDIF
  513. ELSEIF(NBRINC .NE. 3)THEN
  514. C
  515. C********** Message d'erreur standard
  516. C -301 0 %m1:40
  517. C
  518. MOTERR(1:40) = 'EULER: LISTINCO = ? '
  519. CALL ERREUR(-301)
  520. C
  521. C********** Message d'erreur standard
  522. C 21 2 Données incompatibles
  523. C
  524. CALL ERREUR(21)
  525. GO TO 9999
  526. ENDIF
  527. C
  528. C
  529. C******* Table DOMAINE en IDOMA (pointeur de la zone de KONV)
  530. C
  531. C
  532. C******* Lecture du MELEME SPG des points CENTRE.
  533. C
  534. C
  535. C CALL LEKTAB(IDOMA,'CENTRE',MELEMC)
  536. C
  537. C******* Probleme du LEKTAB: si IDOMA.'CENTRE' n'existe pas,
  538. C il crèe IDOMA.'CENTRE' sans recrèer 'FACEL'
  539. C -> la correspondance global des noeuds saut!
  540. C
  541. C On peut utilizer ACCTAB ou ACMO
  542. C
  543. TYPE = 'MAILLAGE'
  544. CALL ACMO(IDOMA,'CENTRE',TYPE,MELEMC)
  545. IF(IERR .NE. 0) GOTO 9999
  546. IF(TYPE .NE. 'MAILLAGE')THEN
  547. MOTERR(1:8) = NOMZ
  548. MOTERR(9:40) = ' . CENTRE = ? '
  549. C
  550. C********** Message d'erreur standard
  551. C -301 0 %m1:40
  552. C
  553. CALL ERREUR(-301)
  554. C
  555. C********** Message d'erreur standard
  556. C 21 2
  557. C Données incompatibles
  558. C
  559. CALL ERREUR(21)
  560. GO TO 9999
  561. ENDIF
  562. C
  563. C******* Lecture du MELEME 'FACE' SPG des points FACE
  564. C
  565. CALL ACMO(IDOMA,'FACE',TYPE,MELEMF)
  566. IF(IERR .NE. 0) GOTO 9999
  567. IF(TYPE .NE. 'MAILLAGE')THEN
  568. MOTERR(1:8) = NOMZ
  569. MOTERR(9:40) = ' . FACE = ? '
  570. C
  571. C********** Message d'erreur standard
  572. C -301 0 %m1:40
  573. C
  574. CALL ERREUR(-301)
  575. C
  576. C********** Message d'erreur standard
  577. C 21 2
  578. C Données incompatibles
  579. C
  580. CALL ERREUR(21)
  581. GO TO 9999
  582. ENDIF
  583. C
  584. C******* Lecture du MELEME 'FACEL' de connect. FACE -> CENTRE
  585. C
  586. CALL ACMO(IDOMA,'FACEL',TYPE,MELEFE)
  587. IF(IERR .NE. 0) GOTO 9999
  588. IF(TYPE .NE. 'MAILLAGE')THEN
  589. MOTERR(1:8) = NOMZ
  590. MOTERR(9:40) = ' . FACEL = ? '
  591. C
  592. C******* Message d'erreur standard
  593. C -301 0 %m1:40
  594. C
  595. CALL ERREUR(-301)
  596. C
  597. C******* Message d'erreur standard
  598. C 21 2
  599. C Données incompatibles
  600. C
  601. CALL ERREUR(21)
  602. GO TO 9999
  603. ENDIF
  604. C
  605. C**** Lecture du CHPOINT contenant les surfaces des faces.
  606. C
  607. CALL LEKTAB(IDOMA,'XXSURFAC',ICHPSU)
  608. IF(IERR .NE. 0) GOTO 9999
  609. C
  610. C**** Lecture du CHPOINT contenant les diametres minimums.
  611. C
  612. CALL LEKTAB(IDOMA,'XXDIEMIN',ICHPDI)
  613. IF(IERR .NE. 0) GOTO 9999
  614. C
  615. C
  616. C**** Lecture de la TABLE contenant les FLUX aux interfaces,
  617. C i.e. KIZX . 'EQEX' . 'KIZG'
  618. C
  619. C N.B. On recuper le pointeur des flux relatives aux
  620. C inconnues de KONV.
  621. C
  622. TYPE= ' '
  623. CALL ACMO(IEQEX,'KIZG',TYPE,KIZG)
  624. IF(IERR .NE. 0) GOTO 9999
  625. IF(TYPE .NE. 'TABLE ')THEN
  626. CALL CRTABL(KIZG)
  627. CALL ECMM(KIZG,'SOUSTYPE','KIZG')
  628. CALL ECMO(IEQEX,'KIZG','TABLE ',KIZG)
  629. ENDIF
  630. C
  631. C**** Creation des CHPOINTs increment IZG1-2-3-4 pour les FLUX
  632. C ou extraction des leurs pointeurs
  633. C
  634. C
  635. C**** La masse volumique
  636. C
  637. C
  638. TYPE=' '
  639. ARG = MLMOT1.MOTS(1)
  640. CALL ACMO(KIZG,ARG,TYPE,IZG1)
  641. IF(IERR .NE. 0) GOTO 9999
  642. IF(TYPE .NE. 'CHPOINT ')THEN
  643. TYPE = 'FACE'
  644. NBCOMP = 1
  645. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG1)
  646. IF(IERR .NE. 0)GOTO 9999
  647. C
  648. C******* Stokage du pointeur dans KIZG
  649. C
  650. ARG = MLMOT1.MOTS(1)
  651. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG1)
  652. ELSE
  653. INDIC = 1
  654. NBCOMP = 1
  655. NOMTOT(1) = ' '
  656. CALL QUEPOI(IZG1,MELEMF,INDIC,NBCOMP,NOMTOT)
  657. IF(IERR .NE. 0)GOTO 9999
  658. ENDIF
  659. C
  660. C**** Les debits
  661. C
  662. TYPE=' '
  663. ARG = MLMOT1.MOTS(2)
  664. CALL ACMO(KIZG,ARG,TYPE,IZG2)
  665. IF(IERR .NE. 0) GOTO 9999
  666. IF(TYPE .NE. 'CHPOINT ')THEN
  667. TYPE='FACE'
  668. NBCOMP = IDIM
  669. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG2)
  670. IF(IERR .NE. 0) GOTO 9999
  671. C
  672. C******* Stokage du pointeur dans KIZG
  673. C
  674. ARG = MLMOT1.MOTS(2)
  675. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG2)
  676. ELSE
  677. INDIC = 1
  678. NBCOMP = IDIM
  679. NOMTOT(1) = ' '
  680. CALL QUEPOI(IZG2,MELEMF,INDIC,NBCOMP,NOMTOT)
  681. IF(IERR .NE. 0)GOTO 9999
  682. ENDIF
  683. C
  684. C**** L'energie totale volumique
  685. C
  686. TYPE=' '
  687. ARG = MLMOT1.MOTS(3)
  688. CALL ACMO(KIZG,ARG,TYPE,IZG3)
  689. IF(IERR .NE. 0) GOTO 9999
  690. IF(TYPE .NE. 'CHPOINT ')THEN
  691. TYPE='FACE'
  692. NBCOMP = 1
  693. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG3)
  694. IF(IERR .NE. 0) GOTO 9999
  695. C
  696. C******* Stokage du pointeur dans KIZG
  697. C
  698. ARG = MLMOT1.MOTS(3)
  699. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG3)
  700. ELSE
  701. INDIC = 1
  702. NBCOMP = 1
  703. NOMTOT(1) = ' '
  704. CALL QUEPOI(IZG3,MELEMF,INDIC,NBCOMP,NOMTOT)
  705. IF(IERR .NE. 0)GOTO 9999
  706. ENDIF
  707. C
  708. C**** Les Masses Volumiques
  709. C
  710. IF(LOGME)THEN
  711. C
  712. C******* D'abord on extrait de la table de pointeur IPGAZ
  713. C la liste des especes splittes dans les equations
  714. C d'Euler
  715. C
  716. TYPE=' '
  717. CALL ACMO(IPGAZ,'ESPEULE ',TYPE,MLMOT2)
  718. IF(IERR .NE. 0) GOTO 9999
  719. IF(TYPE .NE. 'LISTMOTS')THEN
  720. C
  721. C********** Message d'erreur standard
  722. C -301 0 %m1:40
  723. C
  724. MOTERR(1:40) = 'KONV, ARG6 . ESPEULE = ??? '
  725. CALL ERREUR(-301)
  726. C
  727. C********** Message d'erreur standard
  728. C 21 2
  729. C Données incompatibles
  730. C
  731. CALL ERREUR(21)
  732. GOTO 9999
  733. ENDIF
  734. C
  735. SEGACT MLMOT2
  736. NESP = MLMOT2.MOTS(/2)
  737. C
  738. TYPE=' '
  739. ARG = MLMOT1.MOTS(4)
  740. CALL ACMO(KIZG,ARG,TYPE,IZG4)
  741. IF(IERR .NE. 0) GOTO 9999
  742. IF(TYPE .NE. 'CHPOINT ')THEN
  743. NBCOMP = NESP
  744. TYPE='FACE '
  745. C
  746. C********** On cree le chpoint FACE
  747. C
  748. IPT1 = MELEMF
  749. SEGACT IPT1
  750. N=IPT1.NUM(/2)
  751. SEGDES IPT1
  752. NSOUPO=1
  753. NAT=1
  754. NC = NESP
  755. SEGINI, MCHPOI,MSOUPO,MPOVAL
  756. MCHPOI.JATTRI(1)=2
  757. MCHPOI.IFOPOI=IFOUR
  758. MCHPOI.MTYPOI=TYPE
  759. MCHPOI.MOCHDE(1:30)=' '
  760. MCHPOI.MOCHDE(31:60)=' '
  761. MCHPOI.MOCHDE(61:72)=' '
  762. MCHPOI.IPCHP(1)=MSOUPO
  763. SEGDES MCHPOI
  764. MSOUPO.IGEOC=MELEMF
  765. MSOUPO.IPOVAL=MPOVAL
  766. DO I1 = 1, NC
  767. MSOUPO.NOCOMP(I1) = MLMOT2.MOTS(I1)
  768. ENDDO
  769. SEGDES, MSOUPO,MPOVAL
  770. IZG4 = MCHPOI
  771. C
  772. C********** Stokage du pointeur dans KIZG
  773. C
  774. ARG = MLMOT1.MOTS(4)
  775. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG4)
  776. ELSE
  777. INDIC = 1
  778. NBCOMP = NESP
  779. NOMTOT(1) = ' '
  780. CALL QUEPOI(IZG4,MELEMF,INDIC,NBCOMP,NOMTOT)
  781. IF(IERR .NE. 0)GOTO 9999
  782. ENDIF
  783. SEGDES MLMOT2
  784. ENDIF
  785.  
  786. C
  787. C**** Calcul des flux et du pas du temps.
  788. C
  789. IF( IDIM .EQ. 2)THEN
  790. CALL CKON1(LOGME,INDMET,
  791. & IROF,IVITF,IPF,IGAMF,IFRMAF,
  792. & ICHPSU,ICHPDI,
  793. & MELEMC,MELEMF,MELEFE,
  794. & IZG1,IZG2,IZG3,IZG4,DT,DIAMEL,NLCEMI,
  795. & LOGNC,LOGAN,MESERR)
  796. ELSE
  797. CALL CKON2(LOGME,INDMET,
  798. & IROF,IVITF,IPF,IGAMF,IFRMAF,
  799. & ICHPSU,ICHPDI,
  800. & MELEMC,MELEMF,MELEFE,
  801. & IZG1,IZG2,IZG3,IZG4,DT,DIAMEL,NLCEMI,
  802. & LOGNC,LOGAN,MESERR)
  803. ENDIF
  804. C
  805. IF(LOGAN)THEN
  806. C
  807. C******* Anomalie detectée
  808. C
  809. C
  810. C******* Message d'erreur standard
  811. C -301 0
  812. C %m1:40
  813. C
  814. MOTERR(1:40) = MESERR(1:40)
  815. CALL ERREUR(-301)
  816. C
  817. C******* Message d'erreur standard
  818. C 5 3
  819. C Erreur anormale.contactez votre support
  820. C
  821. CALL ERREUR(5)
  822. GOTO 9999
  823. ENDIF
  824. IF(LOGNC)THEN
  825. C
  826. C******* Message d'erreur standard
  827. C -301 0
  828. C %m1:40
  829. C
  830. MOTERR(1:40) = MESERR(1:40)
  831. CALL ERREUR(-301)
  832. C
  833. C******* Message d'erreur standard
  834. C 460 2
  835. C Pas de convergence dans les itérations internes
  836. C
  837. CALL ERREUR(460)
  838. GOTO 9999
  839. ENDIF
  840. C
  841. C**** Ecriture des RESULTATS
  842. C
  843. TYPE = 'TABLE '
  844. CALL ACMO(IEQEX,'PASDETPS',TYPE,MTABT)
  845. IF(IERR .NE. 0) GOTO 9999
  846. IF(TYPE .NE. 'TABLE ')THEN
  847. MOTERR(1:40) = 'EULER, subroutine ckon.eso, PASDETPS = ?'
  848. C
  849. C******* Message d'erreur standard
  850. C -301 0 %m1:40
  851. C
  852. CALL ERREUR(-301)
  853. C
  854. C******* Message d'erreur standard
  855. C 5 3
  856. C Erreur anormale.contactez votre support
  857. C
  858. CALL ERREUR(5)
  859. GO TO 9999
  860. ENDIF
  861. C
  862. C******* On remplie la table d'indice PASDETPS
  863. C
  864. CALL ECMF(MTABT,'DELTAT',DT)
  865. CALL ECMM(MTABT,'OPER','KONV')
  866. CALL ECMM(MTABT,'ZONE',NOMZ)
  867. CALL ECMF(MTABT,'DTCONV',DT)
  868. CALL ECMF(MTABT,'DTDIFU',1.0D50)
  869. CALL ECMF(MTABT,'DIAEL',DIAMEL)
  870. CALL ECME(MTABT,'NUEL',NLCEMI)
  871. C
  872. C**** Ecriture des CHPOINTs increments dans la table KIZG
  873. C déjà faite
  874. C
  875. SEGDES MLMOT1
  876. C
  877. ELSE
  878. C*******************************************************************
  879. C*******************************************************************
  880. C******************* GAZ THERMALLY PERFECT *************************
  881. C*******************************************************************
  882. C*******************************************************************
  883. C
  884. C*****************************
  885. C******* Metode utilisée *****
  886. C*****************************
  887. C
  888. C******* Metode utilisée
  889. C
  890. CALL ACME(IKOPT,'IDCEN',IND)
  891. IF(IERR .NE. 0) GOTO 9999
  892. C
  893. C IND METHODE (voir EQEX)
  894. C
  895. C 9 GODUNOV
  896. C 10 VANLEER (Van Leer FVS)
  897. C 11 VLH (Van Leer-HANEL FVS)
  898. C 12 HUSVL (Van Leer FVS + Osher FDS))
  899. C 13 HUSVLH (Van Leer-HANEL FVS + Osher FDS)
  900. C 14 AUSM (AUSM+, de Liou)
  901. C 15 CG (Colella-Glaz)
  902. C Pour l'instant van Leer - Hanel, Colella-Glaz
  903. C
  904. IF(IND .EQ. 11)THEN
  905. INDMET = 1
  906. ELSEIF(IND .EQ. 15)THEN
  907. INDMET = 2
  908. ELSE
  909. C
  910. C********** Message d'erreur standard
  911. C 251 2
  912. C Tentative d'utilisation d'une option non implémentée
  913. C
  914. CALL ERREUR(251)
  915. ENDIF
  916. C
  917. C********************************************************
  918. C******* Lecture des arguments de KONV KIZX . 'ARG*'*****
  919. C********************************************************
  920. C
  921. C
  922. C**** Lecture de la table qui contient le proprieté du gaz
  923. C Cette table est controlle par l'operateur PRIM
  924. C
  925. MOTLU=' '
  926. CALL ACMM(KIZX,'ARG1 ',MOTLU)
  927. IF(IERR .NE. 0) GOTO 9999
  928. C
  929. TYPE='TABLE '
  930. CALL ACMO(INCO,MOTLU,TYPE,IPGAZ)
  931. IF(IERR .NE. 0) GOTO 9999
  932. IF(TYPE .NE. 'TABLE ')THEN
  933. C
  934. C******* Message d'erreur standard
  935. C 37 2
  936. C On ne trouve pas d'objet de type %m1:8
  937. C
  938. MOTERR(1:8) = 'TABLE '
  939. CALL ERREUR(37)
  940. GOTO 9999
  941. ENDIF
  942. C
  943. C******* Degree des polynoms cv(T)
  944. C
  945. MTYPI = 'MOT '
  946. MTYPR = ' '
  947. CALL ACCTAB(IPGAZ,MTYPI,IVALI,XVALI,'NORD',LOGII,IRETI,
  948. & MTYPR,NORD,XVALR,CHARR,LOGIR,IRETR)
  949. IF(MTYPR .NE. 'ENTIER ')THEN
  950. C
  951. C******* Message d'erreur standard
  952. C -301 0 %m1:40
  953. C
  954. MOTERR(1:40) = 'ARG1 . NORD = ??? '
  955. CALL ERREUR(-301)
  956. C
  957. C******* Message d'erreur standard
  958. C 21 2
  959. C Données incompatibles
  960. C
  961. CALL ERREUR(21)
  962. GOTO 9999
  963. ENDIF
  964. NORDP1 = NORD + 1
  965. C
  966. C******* Nom de l'espece qui n'est pas dans les equations d'Euler
  967. C
  968. MTYPI = 'MOT '
  969. MTYPR = ' '
  970. CALL ACCTAB(IPGAZ,MTYPI,IVALI,XVALI,'ESPNEULE',LOGII,IRETI,
  971. & MTYPR,IVALR,XVALR,CHARR,LOGIR,IESP)
  972. IF(MTYPR .NE. 'MOT ')THEN
  973. C
  974. C******* Message d'erreur standard
  975. C -301 0 %m1:40
  976. C
  977. MOTERR(1:40) = 'ARG1 . ESPNEULE = ??? '
  978. CALL ERREUR(-301)
  979. C
  980. C******* Message d'erreur standard
  981. C 21 2
  982. C Données incompatibles
  983. C
  984. CALL ERREUR(21)
  985. GOTO 9999
  986. ENDIF
  987. C
  988. C**** Les especes qui sont dans les Equations d'Euler
  989. C
  990. MTYPR = ' '
  991. CALL ACMO(IPGAZ,'ESPEULE',MTYPR,MLMOEU)
  992. IF(MTYPR .EQ. ' ')THEN
  993. NESP = 0
  994. IFRMAF = 0
  995. JGN = LOCOMP
  996. JGM = 1
  997. SEGINI MLMOT2
  998. MLMOT2.MOTS(1) = CHARR
  999. LOGME = .FALSE.
  1000. ELSEIF(MTYPR .NE. 'LISTMOTS')THEN
  1001. C
  1002. C******* Message d'erreur standard
  1003. C -301 0 %m1:40
  1004. C
  1005. MOTERR(1:40) = 'ARG1 . ESPEULE = ??? '
  1006. CALL ERREUR(-301)
  1007. C
  1008. C******* Message d'erreur standard
  1009. C 21 2
  1010. C Données incompatibles
  1011. C
  1012. CALL ERREUR(21)
  1013. GOTO 9999
  1014. ELSE
  1015. LOGME = .TRUE.
  1016. SEGACT MLMOEU
  1017. NESP = MLMOEU.MOTS(/2)
  1018. JGN = LOCOMP
  1019. JGM = NESP + 1
  1020. SEGINI MLMOT2
  1021. DO I1 = 1, NESP
  1022. MLMOT2.MOTS(I1) = MLMOEU.MOTS(I1)
  1023. ENDDO
  1024. MLMOT2.MOTS(NESP+1)=CHARR
  1025. ENDIF
  1026. C
  1027. C**** Les scalaires passifs
  1028. C
  1029. MTYPR = ' '
  1030. CALL ACMO(IPGAZ,'SCALPASS',MTYPR,MLMOSC)
  1031. IF(MTYPR .EQ. ' ')THEN
  1032. LOGSCA = .FALSE.
  1033. NSCA = 0
  1034. ISCAF = 0
  1035. ELSEIF(MTYPR .NE. 'LISTMOTS')THEN
  1036. C
  1037. C******* Message d'erreur standard
  1038. C -301 0 %m1:40
  1039. C
  1040. MOTERR(1:40) = 'ARG1 . SCALPASS = ??? '
  1041. CALL ERREUR(-301)
  1042. C
  1043. C******* Message d'erreur standard
  1044. C 21 2
  1045. C Données incompatibles
  1046. C
  1047. CALL ERREUR(21)
  1048. GOTO 9999
  1049. ELSE
  1050. LOGSCA = .TRUE.
  1051. SEGACT MLMOSC
  1052. NSCA = MLMOSC.MOTS(/2)
  1053. ENDIF
  1054. C
  1055. C**** On rempli les segment PROPHY
  1056. C Ordre: IPGAZ . 'ESPEULE' + IPGAZ . 'ESPNEULE'
  1057. C On controlle aussi la compatibilite des
  1058. C donnes de la table
  1059. C
  1060. SEGINI PROPHY
  1061. C
  1062. C**** N.B. NOMTOT est un CHARACTER*(4)
  1063. C
  1064. DO I1 = 1, NESP+1
  1065. NOMTOT(1) = MLMOT2.MOTS(I1)
  1066. C
  1067. C******* CALL ACMF(...) ne marche pas parce que on a
  1068. C des blanches dans nos composantes
  1069. C
  1070. MTYPI = 'MOT '
  1071. MTYPR = ' '
  1072. CALL ACCTAB(IPGAZ,MTYPI,IVALI,XVALI,NOMTOT(1), LOGII,IRETI,
  1073. & MTYPR,IVALR,XVALR,CHARR,LOGIR,IESP)
  1074. C
  1075. C******* En IESP a la table IPGAZ.NOMTOT(1)
  1076. C
  1077. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'TABLE ')) THEN
  1078.  
  1079. C
  1080. C********** Message d'erreur standard
  1081. C -301 0 %m1:40
  1082. C
  1083. MOTERR = ' '
  1084. MOTERR(1:7) = 'ARG1 . '
  1085. MOTERR(8:11) = NOMTOT(1)
  1086. MOTERR(13:17) = '= ???'
  1087. CALL ERREUR(-301)
  1088. C
  1089. C********** Message d'erreur standard
  1090. C 21 2
  1091. C Données incompatibles
  1092. C
  1093. CALL ERREUR(21)
  1094. GOTO 9999
  1095. ENDIF
  1096. C
  1097. C******* R
  1098. C
  1099. MTYPI = 'MOT '
  1100. MTYPR = ' '
  1101. CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'R' , LOGII,IRETI,
  1102. & MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
  1103. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
  1104.  
  1105. C
  1106. C********** Message d'erreur standard
  1107. C -301 0 %m1:40
  1108. C
  1109. MOTERR = ' '
  1110. MOTERR(1:7) = 'ARG1 . '
  1111. MOTERR(8:11) = NOMTOT(1)
  1112. MOTERR(13:23) = ' . R = ??? '
  1113. CALL ERREUR(-301)
  1114. C
  1115. C********** Message d'erreur standard
  1116. C 21 2
  1117. C Données incompatibles
  1118. C
  1119. CALL ERREUR(21)
  1120. GOTO 9999
  1121. ENDIF
  1122. PROPHY.R(I1)=XVALR
  1123. C
  1124. C******* H0K
  1125. C
  1126. MTYPI = 'MOT '
  1127. MTYPR = ' '
  1128. CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'H0K' , LOGII,IRETI,
  1129. & MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
  1130. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
  1131.  
  1132. C
  1133. C********** Message d'erreur standard
  1134. C -301 0 %m1:40
  1135. C
  1136. MOTERR = ' '
  1137. MOTERR(1:7) = 'ARG1 . '
  1138. MOTERR(8:11) = NOMTOT(1)
  1139. MOTERR(13:25) = ' . H0K = ??? '
  1140. CALL ERREUR(-301)
  1141. C
  1142. C********** Message d'erreur standard
  1143. C 21 2
  1144. C Données incompatibles
  1145. C
  1146. CALL ERREUR(21)
  1147. GOTO 9999
  1148. ENDIF
  1149. PROPHY.H0K(I1)=XVALR
  1150. C
  1151. C******* A
  1152. C
  1153. MTYPI = 'MOT '
  1154. MTYPR = ' '
  1155. CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'A' , LOGII,IRETI,
  1156. & MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
  1157. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'LISTREEL')) THEN
  1158.  
  1159. C
  1160. C********** Message d'erreur standard
  1161. C -301 0 %m1:40
  1162. C
  1163. MOTERR = ' '
  1164. MOTERR(1:7) = 'ARG1 . '
  1165. MOTERR(8:11) = NOMTOT(1)
  1166. MOTERR(13:23) = ' . A = ??? '
  1167. CALL ERREUR(-301)
  1168. C
  1169. C********** Message d'erreur standard
  1170. C 21 2
  1171. C Données incompatibles
  1172. C
  1173. CALL ERREUR(21)
  1174. GOTO 9999
  1175. ENDIF
  1176. MLREEL = IRETR
  1177. SEGACT MLREEL
  1178. C
  1179. C******* Dans le calcul, c'est plus utile ACV dans la forme
  1180. C ACV(,exponente,espece)
  1181. C
  1182. DO I2 = 1, NORDP1
  1183. PROPHY.ACV(I2,I1)= MLREEL.PROG(I2)
  1184. ENDDO
  1185. SEGDES MLREEL
  1186. ENDDO
  1187. SEGSUP MLMOT2
  1188. C
  1189. C**** La table IPGAZ donc a ete controllee et PROPHY est rempli
  1190. C
  1191. C
  1192. C**** Lecture du MCHAML 'FACEL' contenant la masse volumique.
  1193. C
  1194. C D'abord on va lire son nom in KIZX . 'ARG1 ' -> MOTLU
  1195. C
  1196. MOTLU=' '
  1197. CALL ACMM(KIZX,'ARG2 ',MOTLU)
  1198. IF(IERR.NE.0) GOTO 9999
  1199. C
  1200. C**** On va lire le pointeur du MCHAML
  1201. C
  1202. TYPE='MCHAML '
  1203. CALL ACMO(INCO,MOTLU,TYPE,IROF)
  1204. IF(IERR.NE.0) GOTO 9999
  1205. IF(TYPE .NE. 'MCHAML ')THEN
  1206. C
  1207. C******* Message d'erreur standard
  1208. C 37 2
  1209. C On ne trouve pas d'objet de type %m1:8
  1210. C
  1211. MOTERR(1:8) = 'MCHAML '
  1212. CALL ERREUR(37)
  1213. GOTO 9999
  1214. ENDIF
  1215. C
  1216. C**** Lecture du MCHAML 'FACEL' vitesse
  1217. C
  1218. MOTLU=' '
  1219. CALL ACMM(KIZX,'ARG3 ',MOTLU)
  1220. IF(IERR.NE.0)GOTO 9999
  1221. C
  1222. TYPE='MCHAML '
  1223. CALL ACMO(INCO,MOTLU,TYPE,IVITF)
  1224. IF(IERR .NE. 0) GOTO 9999
  1225. IF(TYPE .NE. 'MCHAML ')THEN
  1226. C
  1227. C******* Message d'erreur standard
  1228. C 37 2
  1229. C On ne trouve pas d'objet de type %m1:8
  1230. C
  1231. MOTERR(1:8) = 'MCHAML '
  1232. CALL ERREUR(37)
  1233. GOTO 9999
  1234. ENDIF
  1235. C
  1236. C***** Lecture du MCHAML 'FACEL' contenant la temperature
  1237. C
  1238. MOTLU=' '
  1239. CALL ACMM(KIZX,'ARG4 ',MOTLU)
  1240. IF(IERR .NE. 0) GOTO 9999
  1241. C
  1242. TYPE='MCHAML '
  1243. CALL ACMO(INCO,MOTLU,TYPE,IPF)
  1244. IF(IERR .NE. 0) GOTO 9999
  1245. IF(TYPE .NE. 'MCHAML ')THEN
  1246. C
  1247. C******* Message d'erreur standard
  1248. C 37 2
  1249. C On ne trouve pas d'objet de type %m1:8
  1250. C
  1251. MOTERR(1:8) = 'MCHAML '
  1252. CALL ERREUR(37)
  1253. GOTO 9999
  1254. ENDIF
  1255. C
  1256. C
  1257. C**** Multi-especes (LOGME = .TRUE.)
  1258. C Scalaires à transporter (LOGSCA = .TRUE.)
  1259. C
  1260. C
  1261. IF(LOGME .AND. LOGSCA)THEN
  1262. C
  1263. C********** On controle si KIZX . 'ARG5' et KIZX . 'ARG6' existent
  1264. C
  1265. TYPE = ' '
  1266. MOTLU=' '
  1267. CALL ACCTAB(KIZX,'MOT',0,0.D0,'ARG5', .TRUE.,0,
  1268. & TYPE,IENT,XVAL,MOTLU,XLOGI,IRET)
  1269. IF(TYPE .EQ. 'MOT')THEN
  1270. C
  1271. C************* Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  1272. C
  1273. C
  1274. TYPE='MCHAML '
  1275. CALL ACMO(INCO,MOTLU,TYPE,IFRMAF)
  1276. IF(IERR .NE. 0) GOTO 9999
  1277. IF(TYPE .NE. 'MCHAML ')THEN
  1278. C
  1279. C************* Message d'erreur standard
  1280. C 37 2
  1281. C On ne trouve pas d'objet de type %m1:8
  1282. C
  1283. MOTERR(1:8) = 'MCHAML '
  1284. CALL ERREUR(37)
  1285. GOTO 9999
  1286. ENDIF
  1287. ELSE
  1288. C
  1289. C********** Message d'erreur standard
  1290. C 21 2
  1291. C Données incompatibles
  1292. C
  1293. CALL ERREUR(21)
  1294. GO TO 9999
  1295. ENDIF
  1296. C
  1297. TYPE = ' '
  1298. MOTLU=' '
  1299. CALL ACCTAB(KIZX,'MOT',0,0.D0,'ARG6', .TRUE.,0,
  1300. & TYPE,IENT,XVAL,MOTLU,XLOGI,IRET)
  1301. IF(TYPE .EQ. 'MOT')THEN
  1302. C
  1303. C************* Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  1304. C
  1305. C
  1306. TYPE='MCHAML '
  1307. CALL ACMO(INCO,MOTLU,TYPE,ISCAF)
  1308. IF(IERR .NE. 0) GOTO 9999
  1309. IF(TYPE .NE. 'MCHAML ')THEN
  1310. C
  1311. C************* Message d'erreur standard
  1312. C 37 2
  1313. C On ne trouve pas d'objet de type %m1:8
  1314. C
  1315. MOTERR(1:8) = 'MCHAML '
  1316. CALL ERREUR(37)
  1317. GOTO 9999
  1318. ENDIF
  1319. ELSE
  1320. C
  1321. C********** Message d'erreur standard
  1322. C 21 2
  1323. C Données incompatibles
  1324. C
  1325. CALL ERREUR(21)
  1326. GO TO 9999
  1327. ENDIF
  1328. C
  1329. ELSEIF(LOGME)THEN
  1330. C
  1331. C********** On controle si KIZX . 'ARG5' existe
  1332. C
  1333. TYPE = ' '
  1334. MOTLU=' '
  1335. CALL ACCTAB(KIZX,'MOT',0,0.D0,'ARG5', .TRUE.,0,
  1336. & TYPE,IENT,XVAL,MOTLU,XLOGI,IRET)
  1337. IF(TYPE .EQ. 'MOT')THEN
  1338. C
  1339. C************* Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  1340. C
  1341. C
  1342. TYPE='MCHAML '
  1343. CALL ACMO(INCO,MOTLU,TYPE,IFRMAF)
  1344. IF(IERR .NE. 0) GOTO 9999
  1345. IF(TYPE .NE. 'MCHAML ')THEN
  1346. C
  1347. C************* Message d'erreur standard
  1348. C 37 2
  1349. C On ne trouve pas d'objet de type %m1:8
  1350. C
  1351. MOTERR(1:8) = 'MCHAML '
  1352. CALL ERREUR(37)
  1353. GOTO 9999
  1354. ENDIF
  1355. ELSE
  1356. C
  1357. C********** Message d'erreur standard
  1358. C 21 2
  1359. C Données incompatibles
  1360. C
  1361. CALL ERREUR(21)
  1362. GO TO 9999
  1363. ENDIF
  1364. ELSEIF(LOGSCA)THEN
  1365. C
  1366. C********** On controle si KIZX . 'ARG5' existe
  1367. C
  1368. TYPE = ' '
  1369. MOTLU=' '
  1370. CALL ACCTAB(KIZX,'MOT',0,0.D0,'ARG5', .TRUE.,0,
  1371. & TYPE,IENT,XVAL,MOTLU,XLOGI,IRET)
  1372. IF(TYPE .EQ. 'MOT')THEN
  1373. C
  1374. C************* Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  1375. C
  1376. TYPE='MCHAML '
  1377. CALL ACMO(INCO,MOTLU,TYPE,ISCAF)
  1378. IF(IERR .NE. 0) GOTO 9999
  1379. IF(TYPE .NE. 'MCHAML ')THEN
  1380. C
  1381. C************* Message d'erreur standard
  1382. C 37 2
  1383. C On ne trouve pas d'objet de type %m1:8
  1384. C
  1385. MOTERR(1:8) = 'MCHAML '
  1386. CALL ERREUR(37)
  1387. GOTO 9999
  1388. ENDIF
  1389. ELSE
  1390. C
  1391. C********** Message d'erreur standard
  1392. C 21 2
  1393. C Données incompatibles
  1394. C
  1395. CALL ERREUR(21)
  1396. GO TO 9999
  1397. ENDIF
  1398. ENDIF
  1399. C
  1400. C******* Lecture de Nom des Inconnues de KONV (KIZX . 'LISTINCO')
  1401. C
  1402. TYPE='LISTMOTS'
  1403. CALL ACMO(KIZX,'LISTINCO',TYPE,LINCO)
  1404. MLMOT1 = LINCO
  1405. IF(IERR.NE.0)GOTO 9999
  1406. SEGACT MLMOT1
  1407. C
  1408. C******* Verification du Nombre d'inconnues.
  1409. C
  1410. C Eulero mono-espece (+ scalaires passifs) -> NBRINC = 3 (+1)
  1411. C Eulero multi-especies (+ scalaires passifs) -> NBRINC = 4 (+1)
  1412. C
  1413. NBRINC = MLMOT1.MOTS(/2)
  1414. NCELL = 3
  1415. IF(LOGME) NCELL = NCELL + 1
  1416. IF(LOGSCA) NCELL = NCELL + 1
  1417. IF(NBRINC .NE. NCELL)THEN
  1418. C
  1419. C********** Message d'erreur standard
  1420. C -301 0 %m1:40
  1421. C
  1422. MOTERR(1:40) ='EULERMST: LISTINCO = ? '
  1423. CALL ERREUR(-301)
  1424. C
  1425. C*********** Message d'erreur standard
  1426. C 21 2 Données incompatibles
  1427. C
  1428. CALL ERREUR(21)
  1429. GO TO 9999
  1430. ENDIF
  1431. C
  1432. C******* Table DOMAINE en IDOMA (pointeur de la zone de KONV)
  1433. C
  1434. C
  1435. C******* Lecture du MELEME SPG des points CENTRE.
  1436. C
  1437. C
  1438. C CALL LEKTAB(IDOMA,'CENTRE',MELEMC)
  1439. C
  1440. C******* Probleme du LEKTAB: si IDOMA.'CENTRE' n'existe pas,
  1441. C il crèe IDOMA.'CENTRE' sans recrèer 'FACEL'
  1442. C -> la correspondance global des noeuds saut!
  1443. C
  1444. C On peut utilizer ACCTAB ou ACMO
  1445. C
  1446. TYPE = 'MAILLAGE'
  1447. CALL ACMO(IDOMA,'CENTRE',TYPE,MELEMC)
  1448. IF(IERR .NE. 0) GOTO 9999
  1449. IF(TYPE .NE. 'MAILLAGE')THEN
  1450. MOTERR(1:8) = NOMZ
  1451. MOTERR(9:40) = ' . CENTRE = ? '
  1452. C
  1453. C********** Message d'erreur standard
  1454. C -301 0 %m1:40
  1455. C
  1456. CALL ERREUR(-301)
  1457. C
  1458. C********** Message d'erreur standard
  1459. C 21 2
  1460. C Données incompatibles
  1461. C
  1462. CALL ERREUR(21)
  1463. GO TO 9999
  1464. ENDIF
  1465. C
  1466. C******* Lecture du MELEME 'FACE' SPG des points FACE
  1467. C
  1468. CALL ACMO(IDOMA,'FACE',TYPE,MELEMF)
  1469. IF(IERR .NE. 0) GOTO 9999
  1470. IF(TYPE .NE. 'MAILLAGE')THEN
  1471. MOTERR(1:8) = NOMZ
  1472. MOTERR(9:40) = ' . FACE = ? '
  1473. C
  1474. C********** Message d'erreur standard
  1475. C -301 0 %m1:40
  1476. C
  1477. CALL ERREUR(-301)
  1478. C
  1479. C********** Message d'erreur standard
  1480. C 21 2
  1481. C Données incompatibles
  1482. C
  1483. CALL ERREUR(21)
  1484. GO TO 9999
  1485. ENDIF
  1486. C
  1487. C******* Lecture du MELEME 'FACEL' de connect. FACE -> CENTRE
  1488. C
  1489. CALL ACMO(IDOMA,'FACEL',TYPE,MELEFE)
  1490. IF(IERR .NE. 0) GOTO 9999
  1491. IF(TYPE .NE. 'MAILLAGE')THEN
  1492. MOTERR(1:8) = NOMZ
  1493. MOTERR(9:40) = ' . FACEL = ? '
  1494. C
  1495. C******* Message d'erreur standard
  1496. C -301 0 %m1:40
  1497. C
  1498. CALL ERREUR(-301)
  1499. C
  1500. C******* Message d'erreur standard
  1501. C 21 2
  1502. C Données incompatibles
  1503. C
  1504. CALL ERREUR(21)
  1505. GO TO 9999
  1506. ENDIF
  1507. C
  1508. C**** Lecture du CHPOINT contenant les surfaces des faces.
  1509. C
  1510. CALL LEKTAB(IDOMA,'XXSURFAC',ICHPSU)
  1511. IF(IERR .NE. 0) GOTO 9999
  1512. C
  1513. C**** Lecture du CHPOINT contenant les diametres minimums.
  1514. C
  1515. CALL LEKTAB(IDOMA,'XXDIEMIN',ICHPDI)
  1516. IF(IERR .NE. 0) GOTO 9999
  1517. C
  1518. C
  1519. C**** Lecture de la TABLE contenant les FLUX aux interfaces,
  1520. C i.e. KIZX . 'EQEX' . 'KIZG'
  1521. C
  1522. C N.B. On recuper le pointeur des flux relatives aux
  1523. C inconnues de KONV.
  1524. C
  1525. TYPE= ' '
  1526. CALL ACMO(IEQEX,'KIZG',TYPE,KIZG)
  1527. IF(IERR .NE. 0) GOTO 9999
  1528. IF(TYPE .NE. 'TABLE ')THEN
  1529. CALL CRTABL(KIZG)
  1530. CALL ECMM(KIZG,'SOUSTYPE','KIZG')
  1531. CALL ECMO(IEQEX,'KIZG','TABLE ',KIZG)
  1532. ENDIF
  1533. C
  1534. C**** Creation des CHPOINTs increment IZG1-2-3-4 pour les FLUX
  1535. C ou extraction des leurs pointeurs
  1536. C
  1537. C
  1538. C**** La masse volumique
  1539. C
  1540. C
  1541. TYPE=' '
  1542. ARG = MLMOT1.MOTS(1)
  1543. CALL ACMO(KIZG,ARG,TYPE,IZG1)
  1544. IF(IERR .NE. 0) GOTO 9999
  1545. IF(TYPE .NE. 'CHPOINT ')THEN
  1546. TYPE = 'FACE'
  1547. NBCOMP = 1
  1548. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG1)
  1549. IF(IERR .NE. 0)GOTO 9999
  1550. C
  1551. C******* Stokage du pointeur dans KIZG
  1552. C
  1553. ARG = MLMOT1.MOTS(1)
  1554. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG1)
  1555. ELSE
  1556. INDIC = 1
  1557. NBCOMP = 1
  1558. NOMTOT(1) = ' '
  1559. CALL QUEPOI(IZG1,MELEMF,INDIC,NBCOMP,NOMTOT)
  1560. IF(IERR .NE. 0)GOTO 9999
  1561. ENDIF
  1562. C
  1563. C**** Les debits
  1564. C
  1565. TYPE=' '
  1566. ARG = MLMOT1.MOTS(2)
  1567. CALL ACMO(KIZG,ARG,TYPE,IZG2)
  1568. IF(IERR .NE. 0) GOTO 9999
  1569. IF(TYPE .NE. 'CHPOINT ')THEN
  1570. TYPE='FACE'
  1571. NBCOMP = IDIM
  1572. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG2)
  1573. IF(IERR .NE. 0) GOTO 9999
  1574. C
  1575. C******* Stokage du pointeur dans KIZG
  1576. C
  1577. ARG = MLMOT1.MOTS(2)
  1578. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG2)
  1579. ELSE
  1580. INDIC = 1
  1581. NBCOMP = IDIM
  1582. NOMTOT(1) = ' '
  1583. CALL QUEPOI(IZG2,MELEMF,INDIC,NBCOMP,NOMTOT)
  1584. IF(IERR .NE. 0)GOTO 9999
  1585. ENDIF
  1586. C
  1587. C**** L'energie totale volumique
  1588. C
  1589. TYPE=' '
  1590. ARG = MLMOT1.MOTS(3)
  1591. CALL ACMO(KIZG,ARG,TYPE,IZG3)
  1592. IF(IERR .NE. 0) GOTO 9999
  1593. IF(TYPE .NE. 'CHPOINT ')THEN
  1594. TYPE='FACE'
  1595. NBCOMP = 1
  1596. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG3)
  1597. IF(IERR .NE. 0) GOTO 9999
  1598. C
  1599. C******* Stokage du pointeur dans KIZG
  1600. C
  1601. ARG = MLMOT1.MOTS(3)
  1602. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG3)
  1603. ELSE
  1604. INDIC = 1
  1605. NBCOMP = 1
  1606. NOMTOT(1) = ' '
  1607. CALL QUEPOI(IZG3,MELEMF,INDIC,NBCOMP,NOMTOT)
  1608. IF(IERR .NE. 0)GOTO 9999
  1609. ENDIF
  1610. C
  1611. C**** Les Masses Volumiques et les (scalaires passifs * \rho)
  1612. C
  1613. IF(LOGME .AND. LOGSCA)THEN
  1614. C
  1615. C********** Masses volumiques
  1616. C
  1617. TYPE=' '
  1618. ARG = MLMOT1.MOTS(4)
  1619. CALL ACMO(KIZG,ARG,TYPE,IZG4)
  1620. IF(IERR .NE. 0) GOTO 9999
  1621. IF(TYPE .NE. 'CHPOINT ')THEN
  1622. NBCOMP = NESP
  1623. TYPE='FACE '
  1624. C
  1625. C********** On cree le chpoint FACE
  1626. C
  1627. IPT1 = MELEMF
  1628. SEGACT IPT1
  1629. N=IPT1.NUM(/2)
  1630. SEGDES IPT1
  1631. NSOUPO=1
  1632. NAT=1
  1633. NC = NESP
  1634. SEGINI, MCHPOI,MSOUPO,MPOVAL
  1635. MCHPOI.JATTRI(1)=2
  1636. MCHPOI.IFOPOI=IFOUR
  1637. MCHPOI.MTYPOI=TYPE
  1638. MCHPOI.MOCHDE(1:30)=' '
  1639. MCHPOI.MOCHDE(31:60)=' '
  1640. MCHPOI.MOCHDE(61:72)=' '
  1641. MCHPOI.IPCHP(1)=MSOUPO
  1642. SEGDES MCHPOI
  1643. MSOUPO.IGEOC=MELEMF
  1644. MSOUPO.IPOVAL=MPOVAL
  1645. DO I1 = 1, NC
  1646. MSOUPO.NOCOMP(I1) = MLMOEU.MOTS(I1)
  1647. ENDDO
  1648. SEGDES, MSOUPO,MPOVAL
  1649. IZG4 = MCHPOI
  1650. C
  1651. C********** Stokage du pointeur dans KIZG
  1652. C
  1653. ARG = MLMOT1.MOTS(4)
  1654. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG4)
  1655. ELSE
  1656. INDIC = 1
  1657. NBCOMP = NESP
  1658. NOMTOT(1) = ' '
  1659. CALL QUEPOI(IZG4,MELEMF,INDIC,NBCOMP,NOMTOT)
  1660. IF(IERR .NE. 0)GOTO 9999
  1661. ENDIF
  1662. C
  1663. C********** Les scalaires passifs
  1664. C
  1665. TYPE=' '
  1666. ARG = MLMOT1.MOTS(5)
  1667. CALL ACMO(KIZG,ARG,TYPE,IZG5)
  1668. IF(IERR .NE. 0) GOTO 9999
  1669. IF(TYPE .NE. 'CHPOINT ')THEN
  1670. NBCOMP = NSCA
  1671. TYPE='FACE '
  1672. C
  1673. C********** On cree le chpoint FACE
  1674. C
  1675. IPT1 = MELEMF
  1676. SEGACT IPT1
  1677. N=IPT1.NUM(/2)
  1678. SEGDES IPT1
  1679. NSOUPO=1
  1680. NAT=1
  1681. NC = NSCA
  1682. SEGINI, MCHPOI,MSOUPO,MPOVAL
  1683. MCHPOI.JATTRI(1)=2
  1684. MCHPOI.IFOPOI=IFOUR
  1685. MCHPOI.MTYPOI=TYPE
  1686. MCHPOI.MOCHDE(1:30)=' '
  1687. MCHPOI.MOCHDE(31:60)=' '
  1688. MCHPOI.MOCHDE(61:72)=' '
  1689. MCHPOI.IPCHP(1)=MSOUPO
  1690. SEGDES MCHPOI
  1691. MSOUPO.IGEOC=MELEMF
  1692. MSOUPO.IPOVAL=MPOVAL
  1693. DO I1 = 1, NC
  1694. MSOUPO.NOCOMP(I1) = MLMOSC.MOTS(I1)
  1695. ENDDO
  1696. SEGDES, MSOUPO,MPOVAL
  1697. IZG5 = MCHPOI
  1698. C
  1699. C********** Stokage du pointeur dans KIZG
  1700. C
  1701. ARG = MLMOT1.MOTS(5)
  1702. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG5)
  1703. ELSE
  1704. INDIC = 1
  1705. NBCOMP = NSCA
  1706. NOMTOT(1) = ' '
  1707. CALL QUEPOI(IZG5,MELEMF,INDIC,NBCOMP,NOMTOT)
  1708. IF(IERR .NE. 0)GOTO 9999
  1709. ENDIF
  1710. C
  1711. ELSEIF(LOGME)THEN
  1712. C
  1713. C********** Masses volumiques
  1714. C
  1715. TYPE=' '
  1716. ARG = MLMOT1.MOTS(4)
  1717. CALL ACMO(KIZG,ARG,TYPE,IZG4)
  1718. IF(IERR .NE. 0) GOTO 9999
  1719. IF(TYPE .NE. 'CHPOINT ')THEN
  1720. NBCOMP = NESP
  1721. TYPE='FACE '
  1722. C
  1723. C********** On cree le chpoint FACE
  1724. C
  1725. IPT1 = MELEMF
  1726. SEGACT IPT1
  1727. N=IPT1.NUM(/2)
  1728. SEGDES IPT1
  1729. NSOUPO=1
  1730. NAT=1
  1731. NC = NESP
  1732. SEGINI, MCHPOI,MSOUPO,MPOVAL
  1733. MCHPOI.JATTRI(1)=2
  1734. MCHPOI.IFOPOI=IFOUR
  1735. MCHPOI.MTYPOI=TYPE
  1736. MCHPOI.MOCHDE(1:30)=' '
  1737. MCHPOI.MOCHDE(31:60)=' '
  1738. MCHPOI.MOCHDE(61:72)=' '
  1739. MCHPOI.IPCHP(1)=MSOUPO
  1740. SEGDES MCHPOI
  1741. MSOUPO.IGEOC=MELEMF
  1742. MSOUPO.IPOVAL=MPOVAL
  1743. DO I1 = 1, NC
  1744. MSOUPO.NOCOMP(I1) = MLMOEU.MOTS(I1)
  1745. ENDDO
  1746. SEGDES, MSOUPO,MPOVAL
  1747. IZG4 = MCHPOI
  1748. C
  1749. C********** Stokage du pointeur dans KIZG
  1750. C
  1751. ARG = MLMOT1.MOTS(4)
  1752. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG4)
  1753. ELSE
  1754. INDIC = 1
  1755. NBCOMP = NESP
  1756. NOMTOT(1) = ' '
  1757. CALL QUEPOI(IZG4,MELEMF,INDIC,NBCOMP,NOMTOT)
  1758. IF(IERR .NE. 0)GOTO 9999
  1759. ENDIF
  1760. IZG5 = 0
  1761. ELSEIF(LOGSCA)THEN
  1762. C
  1763. C********** Masses volumiques
  1764. C
  1765. IZG4 = 0
  1766. TYPE=' '
  1767. ARG = MLMOT1.MOTS(4)
  1768. CALL ACMO(KIZG,ARG,TYPE,IZG5)
  1769. IF(IERR .NE. 0) GOTO 9999
  1770. IF(TYPE .NE. 'CHPOINT ')THEN
  1771. NBCOMP = NSCA
  1772. TYPE='FACE '
  1773. C
  1774. C********** On cree le chpoint FACE
  1775. C
  1776. IPT1 = MELEMF
  1777. SEGACT IPT1
  1778. N=IPT1.NUM(/2)
  1779. SEGDES IPT1
  1780. NSOUPO=1
  1781. NAT=1
  1782. NC = NSCA
  1783. SEGINI, MCHPOI,MSOUPO,MPOVAL
  1784. MCHPOI.JATTRI(1)=2
  1785. MCHPOI.IFOPOI=IFOUR
  1786. MCHPOI.MTYPOI=TYPE
  1787. MCHPOI.MOCHDE(1:30)=' '
  1788. MCHPOI.MOCHDE(31:60)=' '
  1789. MCHPOI.MOCHDE(61:72)=' '
  1790. MCHPOI.IPCHP(1)=MSOUPO
  1791. SEGDES MCHPOI
  1792. MSOUPO.IGEOC=MELEMF
  1793. MSOUPO.IPOVAL=MPOVAL
  1794. DO I1 = 1, NC
  1795. MSOUPO.NOCOMP(I1) = MLMOSC.MOTS(I1)
  1796. ENDDO
  1797. SEGDES, MSOUPO,MPOVAL
  1798. IZG5 = MCHPOI
  1799. C
  1800. C********** Stokage du pointeur dans KIZG
  1801. C
  1802. ARG = MLMOT1.MOTS(4)
  1803. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG5)
  1804. ELSE
  1805. INDIC = 1
  1806. NBCOMP = NSCA
  1807. NOMTOT(1) = ' '
  1808. CALL QUEPOI(IZG5,MELEMF,INDIC,NBCOMP,NOMTOT)
  1809. IF(IERR .NE. 0)GOTO 9999
  1810. ENDIF
  1811. ELSE
  1812. IZG4 = 0
  1813. IZG5 = 0
  1814. ENDIF
  1815. C
  1816. C**** Calcul des flux et du pas du temps.
  1817. C
  1818. IF( IDIM .EQ. 2)THEN
  1819. C
  1820. C
  1821. C***** 2D
  1822. C
  1823. CALL CKON3(LOGME,INDMET,NORDP1,
  1824. & IROF,IVITF,IPF,IFRMAF,ISCAF,PROPHY,
  1825. & ICHPSU,ICHPDI,
  1826. & MELEMC,MELEMF,MELEFE,
  1827. & IZG1,IZG2,IZG3,IZG4,IZG5,DT,DIAMEL,NLCEMI,
  1828. & LOGNC,LOGAN,MESERR)
  1829. ELSE
  1830. C
  1831. C
  1832. C***** 3D
  1833. C
  1834. CALL CKON4(LOGME,INDMET,NORDP1,
  1835. & IROF,IVITF,IPF,IFRMAF,ISCAF,PROPHY,
  1836. & ICHPSU,ICHPDI,
  1837. & MELEMC,MELEMF,MELEFE,
  1838. & IZG1,IZG2,IZG3,IZG4,IZG5,DT,DIAMEL,NLCEMI,
  1839. & LOGNC,LOGAN,MESERR)
  1840. ENDIF
  1841. C
  1842. IF(LOGAN)THEN
  1843. C
  1844. C******* Anomalie detectée
  1845. C
  1846. C
  1847. C******* Message d'erreur standard
  1848. C -301 0
  1849. C %m1:40
  1850. C
  1851. MOTERR(1:40) = MESERR(1:40)
  1852. CALL ERREUR(-301)
  1853. C
  1854. C******* Message d'erreur standard
  1855. C 5 3
  1856. C Erreur anormale.contactez votre support
  1857. C
  1858. CALL ERREUR(5)
  1859. GOTO 9999
  1860. ENDIF
  1861. IF(LOGNC)THEN
  1862. C
  1863. C******* Message d'erreur standard
  1864. C -301 0
  1865. C %m1:40
  1866. C
  1867. MOTERR(1:40) = MESERR(1:40)
  1868. CALL ERREUR(-301)
  1869. C
  1870. C******* Message d'erreur standard
  1871. C 460 2
  1872. C Pas de convergence dans les itérations internes
  1873. C
  1874. CALL ERREUR(460)
  1875. GOTO 9999
  1876. ENDIF
  1877. C
  1878. C**** Ecriture des RESULTATS
  1879. C
  1880. TYPE = 'TABLE '
  1881. CALL ACMO(IEQEX,'PASDETPS',TYPE,MTABT)
  1882. IF(IERR .NE. 0) GOTO 9999
  1883. IF(TYPE .NE. 'TABLE ')THEN
  1884. MOTERR(1:40) = 'EULER, subroutine ckon.eso, PASDETPS = ?'
  1885. C
  1886. C******* Message d'erreur standard
  1887. C -301 0 %m1:40
  1888. C
  1889. CALL ERREUR(-301)
  1890. C
  1891. C******* Message d'erreur standard
  1892. C 5 3
  1893. C Erreur anormale.contactez votre support
  1894. C
  1895. CALL ERREUR(5)
  1896. GO TO 9999
  1897. ENDIF
  1898. C
  1899. C******* On remplie la table d'indice PASDETPS
  1900. C
  1901. CALL ECMF(MTABT,'DELTAT',DT)
  1902. CALL ECMM(MTABT,'OPER','KONV')
  1903. CALL ECMM(MTABT,'ZONE',NOMZ)
  1904. CALL ECMF(MTABT,'DTCONV',DT)
  1905. CALL ECMF(MTABT,'DTDIFU',1.0D50)
  1906. CALL ECMF(MTABT,'DIAEL',DIAMEL)
  1907. CALL ECME(MTABT,'NUEL',NLCEMI)
  1908. C
  1909. C**** Ecriture des CHPOINTs increments dans la table KIZG
  1910. C déjà faite
  1911. C
  1912. SEGDES MLMOT1
  1913. SEGSUP PROPHY
  1914. IF(LOGME) SEGDES MLMOEU
  1915. IF(LOGSCA) SEGDES MLMOSC
  1916. C
  1917. C
  1918. C
  1919. ENDIF
  1920. 9999 CONTINUE
  1921. RETURN
  1922. END
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.  
  1931.  
  1932.  
  1933.  
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  

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