Télécharger ckon.eso

Retour à la liste

Numérotation des lignes :

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

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